95 lines
4.9 KiB
Python
95 lines
4.9 KiB
Python
#引入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:
|
||
Audit2DoUpdDownstreamDocument(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); |