单据转换插件之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') #导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.Contracts import * from Kingdee.BOS.App import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from System import * from System.Data import * from System.Text import * from System.Collections import * from Kingdee.BOS.App.Data import * from System.Collections.Generic import List from Kingdee.BOS.ServiceHelper import * def AfterConvert(e): #单据转换完成后触发的事件,在表单服务策略之后,获取推出来的下游单据数据包,对其做二次处理 headEntity = e.Result.FindByEntityKey("FBillHead");#获取生成的所有下游单据 for entity in headEntity:#循环每一个下游单据,这里是下游单据的完整数据包 setBase_WFYHZH(entity.DataEntity);#自定义处理下游单据的方法 def setBase_WFYHZH(billObj): #自定义处理下游单据的方法 #billHead = billObj["RECEIVEBILL"]; entityRows = billObj["RECEIVEBILLENTRY"];#获取到明细实体数据包,Orm实体标识 SRCentityRows = billObj["RECEIVEBILLSRCENTRY"];#获取到源单明细实体数据包,Orm实体标识 i=0; sumAmtyf=0; sumAmtsf=0; sumAmtfk=0; entityRows.Clear();#构建明细单据体时,先清空原来的数据,系统默认有1行空白行,问题Q1不加这个 for srcRow in SRCentityRows: #构建明细行 #问题Q1将这2行改成,newRow=entityRows[i];请考虑源单明细和明细行数不一致的问题,自行添加处理逻辑 newRow=DynamicObject(entityRows.DynamicCollectionItemPropertyType); entityRows.Add(newRow);#添加到明细行数据包中 #下面将源单明细字段赋值给明细字段,使用的是实体属性标识,问题Q1只需要构建自定义携带的字段 entityRows[i]["Seq"] = i+1;#行序号赋值 entityRows[i]["FPOSTDATE"] = billObj["DATE"] entityRows[i]["F_XVKJ_fksqdh"] = srcRow["SRCBILLNO"];#付款申请单号<-源单编号 entityRows[i]["F_XVKJ_fksqddh"] = srcRow["F_XVKJ_fksqddhy"];#付款申请订单号 entityRows[i]["F_XVKJ_fksqyd"] = srcRow["F_XVKJ_fksqydy"];#付款申请源单号 entityRows[i]["F_XVKJ_fksqje"] = srcRow["F_XVKJ_fksqjey"];#付款单申请金额 #entityRows[i]["PAYTOTALAMOUNTFOR"] = srcRow["REALPAYAMOUNT"]; #entityRows[i]["REALPAYAMOUNTFOR"] = srcRow["REALPAYAMOUNT"]; #entityRows[i]["PAYAMOUNTFOR_E"] = srcRow["REALPAYAMOUNT"]; #普通字段,直接赋值即可,特别说明:基础资料/赋值资料字段,需要按照如下2行进行赋值(字段数据包+ID) #字段的"实体属性标识_Id",即字段的内码 entityRows[i]["PURPOSEID_Id"] = srcRow["FSRCPURPOSEID_Id"]; entityRows[i]["PURPOSEID"] = srcRow["FSRCPURPOSEID"];#收款用途 entityRows[i]["SETTLETYPEID_Id"] = srcRow["SRCSETTLETYPEID_Id"];#结算方式 entityRows[i]["SETTLETYPEID"] = srcRow["SRCSETTLETYPEID"]; entityRows[i]["RECTOTALAMOUNTFOR"] = srcRow["AFTTAXTOTALAMOUNT"];#应收金额 entityRows[i]["RECAMOUNTFOR_E"] = srcRow["REALRECAMOUNT"];#本次收款金额 entityRows[i]["RECTOTALAMOUNTFOR"] = srcRow["REALRECAMOUNT"];#表体-应收金额 entityRows[i]["REALRECAMOUNTFOR"] = srcRow["AFTTAXTOTALAMOUNT"];#表体-实收金额 entityRows[i]["SETTLERECAMOUNTFOR"] = srcRow["AFTTAXTOTALAMOUNT"];#表体-实收金额 entityRows[i]["SETTLERECAMOUNT"] = srcRow["AFTTAXTOTALAMOUNT"];#折后金额本位币 entityRows[i]["RECAMOUNT_E"] = srcRow["AFTTAXTOTALAMOUNT"];#收款金额本位币 entityRows[i]["FMATERIALID_Id"] = srcRow["FSRCMATERIALID_Id"]; entityRows[i]["FMATERIALID"] = srcRow["FSRCMATERIALID"]; entityRows[i]["FPRICEUNITID"] = srcRow["FSRCPRICEUNITID"]; entityRows[i]["FPrice"] = srcRow["FSRCPRICE"]; entityRows[i]["FQTY"] = srcRow["FSRCQTY"]; entityRows[i]["F_XVKJ_sokh"] = srcRow["F_XVKJ_sokhY"];#客户 entityRows[i]["FSALEORDERNO"] = srcRow["ORDERBILLNO"];#销售订单号 entityRows[i]["FMATERIALSEQ"] = srcRow["FSRCMATERIALSEQ"];#订单行号 entityRows[i]["FORDERENTRYID"] = srcRow["FSRCORDERENTRYID"];#销售订单明细内码 entityRows[i]["FLINKROWID"] = srcRow["FSRCLINKROWID"];#关联行ID sumAmtyf=sumAmtyf+Double(entityRows[i]["RECTOTALAMOUNTFOR"]); i=i+1; #下面给单据头的总金额字段赋值 billObj["REALRECAMOUNTFOR"]=sumAmtyf;#表头-实收金额 billObj["RECEIVEAMOUNTFOR"]=sumAmtyf;#表头-应收金额 billObj["RECAMOUNTFOR"]=sumAmtyf;#表头-收款金额 billObj["RECAMOUNT"]=sumAmtyf;#表头-收款金额本位币
本文参考周大师的收款单代码修改而成。
https://wenku.my7c.com/article/271310474510186752?productLineId=1&lang=zh-CN
及反写教程:
单据转换插件之Python,单据体一对多
#引入clr运行库import clr#添加对cloud插件开发的常用组件的引用clr.AddReference('System')clr.AddReference('System.Data')clr.AddRefere...
点击下载文档
本文2024-09-16 18:08:03发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-20165.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章