Files
GateDge2023_ljy/05.长园/CYG.Python/SAL_SaleOrder/OperationEventPlugInEx.py
PastSaid b2419eec9c 2
2024-04-10 10:39:04 +08:00

95 lines
4.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#引入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);