#引入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.ServiceHelper')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App.Core')
clr.AddReference('Kingdee.BOS.DataEntity')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Metadata.ElementMetadata import*
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.List import*
from Kingdee.BOS.Core.List.PlugIn import *
from Kingdee.BOS.Core.SqlBuilder import *
from Kingdee.BOS.Core.Metadata import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.App.Core import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Newtonsoft.Json import JsonConvert
from Newtonsoft.Json.Linq import *
from Kingdee.BOS.JSON import*
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DependencyRules import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from System.Reflection import *
from Kingdee.BOS.Util import*
from Kingdee.BOS.Orm.DataEntity import *
from clr import StrongBox
defAfterConvert(e):
headEntity = e.Result.FindByEntityKey("FBillHead");
for entity in headEntity:
setSubEn(entity.DataEntity,e);
defsetSubEn(billObj,e):
entityRows=billObj["POOrderEntry"]
billSdate=billObj['Date']
Edate=billSdate.ToString("yyyy-MM-dd");
billEdate=billSdate.AddDays(-365)
Sdate=billEdate.ToString("yyyy-MM-dd");
billOrg=billObj['PurchaseOrgId_id']
# msg=JsonConvert.SerializeObject(Edate);#将数据包转换成JSON格式显示出来,测试时使用# raise Exception(msg)for enObj in entityRows:
Metid=enObj['MaterialId_Id']
msterID=enObj['MaterialId']['msterID']
row=enObj['Seq']
#msg=JsonConvert.SerializeObject(enObj['MaterialId']['msterID']);#将数据包转换成JSON格式显示出来,测试时使用#raise Exception(msg)
pkIds=List[object]()
pkIds.Add(Metid)
sql = ("""/*dialect*/select top 1 b.FMATERIALID,d.FPRICE,sl.FNAME,b.FGIVEAWAY,convert(varchar,CONVERT(decimal(18,6),d.FPRICE))+' '+sl.FNAME as t,h.FPURCHASEORGID
from t_PUR_POOrder h
left join t_PUR_POOrderEntry b on h.FID=b.FID
left join T_PUR_POORDERENTRY_F d on b.FENTRYID=d.FENTRYID
left join t_BD_Supplier s on s.FSUPPLIERID=h.FSUPPLIERID
left join t_BD_Supplier_L sl on sl.FSUPPLIERID=s.FSUPPLIERID
where h.FDOCUMENTSTATUS='c' and b.FGIVEAWAY='0'and b.FMATERIALID={0} and h.FPURCHASEORGID='{1}'and d.FPRICE>0 and h.FDATE between '{2}' and '{3}'
order by FPRICE """).format(Metid,billOrg,Sdate,Edate);
ds = DBServiceHelper.ExecuteDataSet(this.Context,sql);
tab = ds.Tables[0];
for dr in tab.Rows:
enObj['F_SSQX_ZZZDJ']=dr['t']
#Matemeta = MetaDataServiceHelper.Load(this.Context,"BD_MATERIAL");#dynamicObjects = BusinessDataServiceHelper.Load(this.Context,pkIds.ToArray(),Matemeta.BusinessInfo.GetDynamicObjectType());#MateObj=dynamicObjects[0]# msg=JsonConvert.SerializeObject(MateObj);#将数据包转换成JSON格式显示出来,测试时使用# raise Exception(msg)
sql = ("""/*dialect*/SELECT TOP 1 t2.FMATERIALID ,sl.FNAME,CAST(t2.FPRICE AS decimal(18,6)) AS FPrice,sl.FNAME as t,t1.FPURCHASEORGID ,t2.FDISABLERID
FROM T_PUR_PRICELIST t1
LEFT JOIN T_PUR_PRICELISTENTRY t2 ON t1.FID =t2.FID
left join t_BD_Supplier s on s.FSUPPLIERID=t1.FSUPPLIERID
left join t_BD_Supplier_L sl on sl.FSUPPLIERID=s.FSUPPLIERID
LEFT JOIN T_BD_MATERIAL tbm ON tbm.FMATERIALID =t2.FMATERIALID
WHERE t2.FDISABLERID =0 AND t1.FFORBIDSTATUS='A' AND t1.FDOCUMENTSTATUS='C'
AND CONVERT(varchar(100), t2.FEXPIRYDATE, 23)>=CONVERT(DATE, GETDATE())
AND sl.FNAME NOT LIKE '%西典%'
and tbm.FMASTERID={0} and t2.FPRICE>0
order by t2.FPRICE """).format(msterID);
#raise Exception("问题SQL:"+sql);
ds = DBServiceHelper.ExecuteDataSet(this.Context,sql);
tab = ds.Tables[0];
for dr in tab.Rows:
enObj['F_SSQX_JMBGYS']=dr['t']
enObj['F_SSQX_JMB']=dr['FPrice']
Matemeta = MetaDataServiceHelper.Load(this.Context,"BD_MATERIAL");
dynamicObjects = BusinessDataServiceHelper.Load(this.Context,pkIds.ToArray(),Matemeta.BusinessInfo.GetDynamicObjectType());
MateObj=dynamicObjects[0]
# msg=JsonConvert.SerializeObject(MateObj);#将数据包转换成JSON格式显示出来,测试时使用# raise Exception(msg)
MastID=MateObj['msterID']
sql = ("""/*dialect*/select top 1 b.FMATERIALID,d.FPRICE,sl.FNAME,b.FGIVEAWAY ,convert(varchar,CONVERT(decimal(18,6),d.FPRICE))+' '+sl.FNAME as t,h.FPURCHASEORGID,g.FMASTERID
from t_PUR_POOrder h
left join t_PUR_POOrderEntry b on h.FID=b.FID
left join T_PUR_POORDERENTRY_F d on b.FENTRYID=d.FENTRYID
left join t_BD_Supplier s on s.FSUPPLIERID=h.FSUPPLIERID
left join t_BD_Supplier_L sl on sl.FSUPPLIERID=s.FSUPPLIERID
left join T_BD_MATERIAL g on b.FMATERIALID=g.FMATERIALID
where h.FDOCUMENTSTATUS='c' and b.FGIVEAWAY='0' and d.FPRICE>0 and g.FMASTERID={0} and h.FDATE between '{1}' and '{2}'
Order by FPRICE """).format(MastID,Sdate,Edate);
ds = DBServiceHelper.ExecuteDataSet(this.Context,sql);
tab = ds.Tables[0];
for dr in tab.Rows:
enObj['F_SSQX_JTZDJ']=dr['t']