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