#引入clr运行库 import clr #添加对cloud插件开发的常用组件引用 clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.ServiceHelper') #dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from Kingdee.BOS.Core import * from Kingdee.BOS.Util import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.Bill.PlugIn import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args 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 * def EndOperationTransaction(e): # 保存8提交9审核1反审核26删除3 if this.FormOperation.OperationId == 8: Save2DoUpdDownstreamDocument(e) def Save2DoUpdDownstreamDocument(e): for data in e.DataEntitys: documentStatus = data["DocumentStatus"] if documentStatus == "C": # entry = data["SaleOrderEntry"] billId = data["Id"] # formId = data["FFormId"] sqlLList = List[str](); # 发货通知单 sqlLList.Add("""/*dialect*/ UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 FROM T_SAL_ORDERENTRY t0e --销售订单 INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --发货通知单关系表 ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE t1e_lk.FENTRYID = tt.FENTRYID --拼接关联字段 FOR XML PATH('') ),1,1,'') --stuff 列转行后拼接 FROM T_SAL_DELIVERYNOTICEENTRY tt WHERE EXISTS (SELECT 1 FROM T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk WHERE t1e_lk.FSBILLID = {0} AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' AND t1e_lk.FENTRYID = tt.FENTRYID) """.format(billId)) # 销售出库单 sqlLList.Add(""" UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 FROM T_SAL_ORDERENTRY t0e --销售订单 INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --发货通知单关系表 ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --发货通知单 INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --销售出库单关系表 ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' WHERE t2e_lk.FENTRYID = tt.FENTRYID --拼接关联字段 FOR XML PATH('') ),1,1,'') --stuff 列转行后拼接 FROM T_SAL_OUTSTOCKENTRY tt WHERE EXISTS ( SELECT 1 FROM T_SAL_OUTSTOCKENTRY_LK t2e_lk INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE t2e_lk.FENTRYID = tt.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' AND t1e_lk.FSBILLID = {0}) """.format(billId)) # 应收单 sqlLList.Add(""" UPDATE tt SET tt.F_CYG_TEXT1 = STUFF((SELECT distinct ','+ t0e.F_CYG_TEXT4 FROM T_SAL_ORDERENTRY t0e --销售订单 INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk --发货通知单关系表 ON t0e.FID = t1e_lk.FSBILLID AND t0e.FENTRYID = t1e_lk.FSID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e ON t1e.FENTRYID = t1e_lk.FENTRYID --发货通知单 INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk --销售出库单关系表 ON t1e.FID = t2e_lk.FSBILLID AND t1e.FENTRYID = t2e_lk.FSID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FENTRYID = t2e_lk.FENTRYID INNER JOIN T_AR_RECEIVABLEENTRY_LK t3e_lk on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' WHERE t3e_lk.FENTRYID = tt.FENTRYID --拼接关联字段 FOR XML PATH('') ),1,1,'') --stuff 列转行后拼接 FROM T_AR_RECEIVABLEENTRY tt WHERE EXISTS ( SELECT 1 FROM T_AR_RECEIVABLEENTRY_LK t3e_lk INNER JOIN T_SAL_OUTSTOCKENTRY t2e on t2e.FID = t3e_lk.FSBILLID AND t2e.FENTRYID = t3e_lk.FSID INNER JOIN T_SAL_OUTSTOCKENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t2e_lk.FSBILLID = t1e.FID AND t2e_lk.FSID = t1e.FENTRYID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e_lk.FENTRYID = t1e.FENTRYID AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE t3e_lk.FENTRYID = tt.FENTRYID AND t3e_lk.FSTABLENAME = 'T_SAL_OUTSTOCKENTRY' AND t1e_lk.FSBILLID = {0}) """.format(billId)) DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count);