批量生成领料单
import clr
clr.AddReference("System")
clr.AddReference("System.IO")
clr.AddReference("System.Web.Extensions")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Newtonsoft.Json")
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.WebApi.Client')
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.ServiceFacade.Common")
import sys
import System
import System.IO
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DependencyRules import *
from Kingdee.BOS.Core.Bill 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.Net import *
from System.Text import *
from System.IO import *
from Kingdee.BOS.App.Data import *
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Core.Metadata.FieldElement import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.ServiceFacade import *
from System.Collections.Generic import *
from System.Threading import *
from System.Security.Cryptography import *
from System.Web.Script.Serialization import *
from System.Collections.Generic import Dictionary
from Newtonsoft.Json.Linq import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.WebApi.Client import K3CloudApiClient
from Kingdee.BOS.JSON import *
#reload(sys)
sys.setdefaultencoding('utf-8')
def dynamicobjecttojson(dyobject):
jsonSerializerProxy = JsonSerializerProxy(Encoding.UTF8, False)
jsonData = jsonSerializerProxy.Serialize(dyobject)
return jsonData
def BarItemClick(e):
if e.BarItemKey=="SRMB_tbButton_PickUpSubstance":
user = this.Context.UserName;
url = 'http://0.0.0.111/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';
client =K3CloudApiClient(url);
fromID = this.View.BillBusinessInfo.GetForm().Id;
sql="exec xxxx_GetApiAdress";
dbs = DBServiceHelper.ExecuteDynamicObject(this.Context, sql, None);
for i in range (len(dbs)):
db = dbs[i];
loginResult=client.Login(db['vvv'],db['ccc'],db['FPASSWORD'],2052);
selectedRowsInfo = this.ListView.SelectedRowsInfo;
datas = this.ListModel.GetData(selectedRowsInfo);
if (datas.Count <= 0):
this.View.ShowWarnningMessage("请至少选择一行数据!");
return;
fidlist="";
for row in selectedRowsInfo:
fidlist=fidlist+str(row.EntryPrimaryKeyValue)+",";
opResult = OperationResult();
words = fidlist.split(",");
words2=list(set(words));
iok=0;
obj0Arr=JSONArray();
root=JSONObject();
strArr=JSONArray();
root.Put("NeedUpDateFields",strArr);
root.Put("IsDeleteEntry","false");
flagcheck=0;
for fid in words2:
objArr=JSONArray();
obj0=JSONObject();
sql="exec xxxx_GET_GlassPickUpBill "+fid;
listvalue="";
dbs = DBServiceHelper.ExecuteDynamicObject(this.Context, sql, None);
for i in range (len(dbs)):
db = dbs[0];
obj0.Put("FID",0);
obj1=JSONObject();
obj1.Put("FNumber","SCLLD01_SYS");
obj0.Put("FBillType",obj1);
obj0.Put("F_UNW_Text_ca9",db['FSALEORDERNO']);
obj0.Put("F_SRMB_Text_qtr",db['FMOBILLNO']);
obj1=JSONObject();
obj1.Put("FNumber",db['dept']);
obj0.Put("FWorkShopId",obj1);
iok=0;
for i in range (len(dbs)):
db = dbs[i];
obj=JSONObject();
obj.Put("FEntryID",0);
obj1=JSONObject();
obj2=JSONObject();
obj1.Put("FNumber",db['mofnumber']);
obj.Put("FParentMaterialId",obj1);
obj.Put("FMoBillNo",db['FMOBILLNO']);
obj.Put("FMoEntryId",db['FMOENTRYID']);
obj1=JSONObject();
obj1.Put("FNumber",db['fnumber']);
obj.Put("FMaterialId",obj1);
obj1=JSONObject();
obj1.Put("FNumber",db['dw']);
obj.Put("FUnitID",obj1);
obj.Put("FAppQty",db['truecount']);
obj.Put("FActualQty",db['truecount']);
obj1=JSONObject();
obj1.Put("FNumber","01");
obj.Put("FStockId",obj1);
obj.Put("FSrcBillNo",db['FBILLNO']);
obj.Put("FEntrySrcEnteryId",db['fentryid']);
obj.Put("FPPBomBillNo",db['FBILLNO']);
obj.Put("FPPBomEntryId",db['fentryid']);
obj.Put("FBaseStockActualQty",db['truecount']);
obj.Put("FBaseActualQty",db['truecount']);
obj1=JSONObject();
obj1.Put("FNumber","100");
obj.Put("FOwnerId",obj1);
obj1=JSONObject();
obj1.Put("FNumber","100");
obj.Put("FParentOwnerId",obj1);
obj1=JSONObject();
obj1.Put("FNumber",db['dept']);
obj.Put("FEntryWorkShopId",obj1);
obj1=JSONObject();
obj1.Put("FNumber",db['dw']);
obj.Put("FBaseUnitId",obj1);
obj1=JSONObject();
obj1.Put("FNumber",db['dw']);
obj.Put("FStockUnitId",obj1);
if db['fdatavalue']=="包装组":
obj1=JSONObject();
obj1.Put("FNumber","01");
obj.Put("F_SRMB_Assistant",obj1);
else:
obj1=JSONObject();
obj1.Put("FNumber","02");
obj.Put("F_SRMB_Assistant",obj1);
objArr.Add(obj);
flagcheck=1;
iok=iok+1;
obj0.Put("FEntity",objArr);
if iok>0:
obj0Arr.Add(obj0);
root.Put("Model",obj0Arr);
root.Put("BatchCount",1);
root.Put("IsVerifyBaseDataField","false");
root.Put("IsAutoAdjustField","false");
root.Put("IgnoreInterationFlag","false");
root.Put("IsControlPrecision","false");
root.Put("ValidateRepeatJson","false");
if flagcheck==1:
saveR=client.BatchSave("PRD_PickMtrl",dynamicobjecttojson(root));
result_dict = str(saveR)
count1 = result_dict.find("true");
count2 = result_dict.find("false");
if count1>0:
operate2 = OperateResult(Name = "执行结果" ,Message = saveR ,SuccessStatus = True);
opResult.OperateResult.Add(operate2);
if count2>0:
operate2 = OperateResult(Name = "执行结果" ,Message = saveR ,SuccessStatus = False);
opResult.OperateResult.Add(operate2);
#this.View.Refresh();
if flagcheck==0:
operate2 = OperateResult(Name = "执行结果" ,Message = "没有符合条件的玻璃数据" ,SuccessStatus = False);
opResult.OperateResult.Add(operate2);
this.View.ShowOperateResult(opResult.OperateResult)