金蝶云星空python二开根据物料旧编码链接物料编码做单据

一、需求分析

(一)、问题描述

        分公司提出需求、在销售、直接调拨单据上面根据旧物料编码组织单据,因旧物料编码无法快黏贴。

(二)、解决思路

        1、在销售订单上增加自定义字段(文本)取名为旧物料编码。

        2、在销售订单新增按钮(获取旧物料编码)。

        3、编写python插件。

        4、实现点击(获取旧物料编码)系统根据旧物料编码找到物料编码。

        5、调用物料编码值更新服务。

二、功能实现(python代码)

import clr     
clr.AddReference('System') 
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.App.Core')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('mscorlib')
from System import *   
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DependencyRules import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Metadata.FieldElement import *
from Kingdee.BOS.Orm.DataEntity import *
def BarItemClick(e):  #按键调用方法
	if e.BarItemKey=="QWE":  #按键调用方法
		billObj = this.Model.DataObject;  #获取数据包
		entity=billObj["SaleOrderEntry"]  #获取但行数
		e=len(entity)  #编译获取行数转换装好为int型
		er=e-1         #减去一行因为快黏贴会自动增加一行
		supplierObj=billObj["SaleOrgId"]    #获取但具体数据包
		supplierNum=("{0}").format(supplierObj["Number"])  #获取组织编码
		for i in range(0, er): #循环表体
			
			lli=this.View.Model.GetValue("F_JLSZ_JWLBM",i) #获取自定义字段
			sql="select   应.FMATERIALID   from T_BD_MATERIAL  应 LEFT JOIN T_ORG_ORGANIZATIONS AS 组织编码 ON 应.FUSEORGID=组织编码.FORGID where 组织编码.FNUMBER='"+supplierNum+"'  and  应. FOLDNUMBER='"+lli+"'"  #查询数据库物料编码(旧物料编码根据组织查询)
			count = DBUtils.ExecuteScalar(this.Context,sql,None) #执行sql
			this.View.Model.SetValue("FMaterialId",count,i)  #写入物料编码
			this.View.InvokeFieldUpdateService("FMaterialId", i) #执行表体物料编码值更新
		this.View.ShowMessage("运行完成"+str(er)+"行受引响请注意检查"+supplierNum) #执行信息提示        
	

你可能感兴趣的:(ERP,python,sql)