Files
GateDge2023_ljy/14.宝锐/GZ.LJY000.Biori/UHIK_PRD_PACKAGE_INSTOCK/OperationEventPlugInEx.py
PastSaid 3d15fd4b7e a
2025-01-01 08:21:58 +08:00

118 lines
4.6 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.App.Core')
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.List 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 Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.App import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.Contracts import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.App.Core import *
def OnPreparePropertys(e):
# e.FieldKeys.Add("FPMoBillTypeId_Id")
e.FieldKeys.Add("FPMoBillTypeId")
e.FieldKeys.Add("FMoId")
e.FieldKeys.Add("FMoEntryId")
e.FieldKeys.Add("FMoBillTypeId")
e.FieldKeys.Add("FMOBillNo")
def EndOperationTransaction(e):
# * 保存8提交9审核1反审核26删除3
if this.FormOperation.OperationId == 1:
billNos = List[str]();
for item in e.DataEntitys:
DoCreatePackCode(item["BillNo"])
# 建立条码组装单
def DoCreatePackCode(billNo):
if billNo != "":
sqlL = """/*dialect*/
WITH #基础数据 AS (
SELECT t0.FBILLNO AS 'packBillNo',t0.FMATERIALID,0 packEntryId,0 packSeq
,ISNULL(t2.FID,0) 'barCodeId'
,t2.FBARCODE
,ISNULL(t2.FQTY,0) FQTY,ISNULL(t3.FID,0) packId
,t0.FBILLNO,1 IS_Main,1 FYLRate
FROM T_PRD_PACKAGEINSTOCK t0
LEFT JOIN T_UNW_WMS_BARCODE t2 on t2.FBILLENTRYID = t0.FSRCBILLENTRYID AND t2.FBILLFORMID = 'PLN_FORECAST'
LEFT JOIN T_UNW_WMS_PACKING t3 on t3.FBOXCODEID = t2.FID
UNION ALL
SELECT t0.FBILLNO AS 'packBillNo',t0e.FMATERIALID
,t0e.FEntryID
,t0e.FSeq
,ISNULL(t2.FID,0) 'barCodeId'
,t2.FBARCODE
,ISNULL(t2.FQTY,0) FQTY,ISNULL(t3e.FID,0) packId
,t0.FBILLNO,0,1.05
FROM T_PRD_PACKAGEINSTOCK t0
INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID
LEFT JOIN T_UNW_WMS_BARCODE t2 on t2.FBILLENTRYID = t0e.FMOENTRYID AND t2.FBILLFORMID = 'PRD_MO'
LEFT JOIN T_UNW_WMS_PACKINGENTRY t3e on t3e.FBARCODEID = t2.FID
)
SELECT t0.packBillNo,t0.IS_Main,t0.FMATERIALID,SUM(t0.FQTY) / t0.FYLRate FQTY,MAX(t0.barCodeId) barCodeId
FROM #基础数据 t0
WHERE t0.FBILLNO = '{0}'
GROUP BY t0.packBillNo,t0.IS_Main,t0.FMATERIALID,t0.FYLRate
ORDER BY t0.IS_Main DESC
""".format(billNo)
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
if dataList != None and dataList.Count > 0:
formID = "UNW_WMS_PACKING";
meta = MetaDataServiceHelper.Load(this.Context, formID)
objType = meta.BusinessInfo.GetDynamicObjectType();
newObj = DynamicObject(objType)
main = dataList[0];
if main["IS_Main"] == 1:
if main["barCodeId"] == 0:
raise Exception("条码装箱单套件码未生成!")
newObj["BoxCodeId_Id"] = main["barCodeId"]
newObj["Capacity"] = main["FQTY"]
newObj["CreateOrgId_Id"] = this.Context.CurrentOrganizationInfo.ID
newObj["CreatorId_Id"] = this.Context.UserId
newObj["ModifierId_Id"] = this.Context.UserId
entry = newObj["List"]
for item in dataList:
if item["IS_Main"] == 0:
if item["barCodeId"] == 0:
raise Exception("分录【{0}】条码未生成!".format(item["packSeq"]))
entity = entry.DynamicCollectionItemPropertyType.CreateInstance()
entity["BarCodeId_Id"] = item["barCodeId"]
entity["Qty"] = item["FQTY"]
entry.Add(entity)
ObjList = List[DynamicObject]();#单据的数据包集合
if entry.Count > 0:
ObjList.Add(newObj);
saveRslt = BusinessDataServiceHelper.Save(this.Context, meta.BusinessInfo ,ObjList.ToArray(), None, "Save");
# raise Exception(JsonUtil.Serialize(newObj))