169 lines
6.6 KiB
Python
169 lines
6.6 KiB
Python
import clr
|
|
clr.AddReference("System")
|
|
clr.AddReference("System.Xml")
|
|
clr.AddReference("Kingdee.BOS")
|
|
clr.AddReference("Kingdee.BOS.Core")
|
|
clr.AddReference("Kingdee.BOS.DataEntity")
|
|
clr.AddReference("Kingdee.BOS.App")
|
|
clr.AddReference("Kingdee.BOS.Contracts")
|
|
clr.AddReference("Kingdee.BOS.ServiceHelper")
|
|
clr.AddReference("Kingdee.K3.BD.BarCode.Business.PlugIn")
|
|
clr.AddReference("Kingdee.K3.BD.BarCode.ServiceHelper")
|
|
|
|
from Kingdee.BOS import *
|
|
from Kingdee.BOS.Contracts import *
|
|
from Kingdee.BOS.Core import *
|
|
from Kingdee.BOS.Core.List import *
|
|
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
|
|
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
|
|
from Kingdee.BOS.Core.Metadata.EntityElement import *
|
|
from Kingdee.BOS.Core.Bill import *
|
|
from Kingdee.BOS.Core.Metadata import *
|
|
from Kingdee.BOS.Orm.DataEntity import *
|
|
from Kingdee.BOS.Util import *
|
|
from Kingdee.BOS.Core.Util import *
|
|
from System import *
|
|
from System.Xml import *
|
|
from System.ComponentModel import *
|
|
from System.Collections.Generic import *
|
|
from System.Text import*
|
|
from Kingdee.BOS.ServiceHelper import *
|
|
from Kingdee.K3.BD.BarCode.Business.PlugIn import *
|
|
from Kingdee.K3.BD.BarCode.ServiceHelper import *
|
|
|
|
# 条码扫描
|
|
|
|
_isFormisFromBillEx = 0
|
|
_sFormIdEx = ""
|
|
_billTypeId = ""
|
|
_billId = ""
|
|
|
|
def FirstOrDefault(collection, func):
|
|
"""仿Linq的FirstOrDefault
|
|
|
|
Args:
|
|
collection (_type_): 数据集
|
|
func (_type_): lambda公式
|
|
|
|
Returns:
|
|
_type_: 获取数据集第一个或null
|
|
"""
|
|
result = filter(func, collection)
|
|
|
|
if len(result) == 0: return None
|
|
|
|
return result[0]
|
|
|
|
def OnInitialize(e):
|
|
# tbBarCodeScanEx
|
|
_isFromBillObj = e.Paramter.GetCustomParameter("isFromBill");
|
|
global _isFormisFromBillEx
|
|
_isFormisFromBillEx = 0 if _isFromBillObj == None else int(_isFromBillObj)
|
|
|
|
if _isFormisFromBillEx == 1:
|
|
_sFormIdExObj = e.Paramter.GetCustomParameter("SourceFormId")
|
|
global _sFormIdEx;
|
|
_sFormIdEx = "" if _sFormIdExObj == None else _sFormIdExObj
|
|
|
|
global _billTypeId
|
|
_billTypeId = e.Paramter.GetCustomParameter("billTypeId");
|
|
|
|
global _billId
|
|
_billId = e.Paramter.GetCustomParameter("SourceId")
|
|
|
|
def OnLoad(e):
|
|
if _isFormisFromBillEx == 1:
|
|
this.View.Model.SetValue("FSourceBillName", _sFormIdEx);
|
|
this.View.Model.SetValue("FSourceBillId", _billId);
|
|
this.View.Model.SetValue("FIsSave","1")
|
|
|
|
if _sFormIdEx != None and _sFormIdEx != "":
|
|
if _sFormIdEx == "PUR_ReceiveBill":
|
|
this.View.Model.SetValue("FCreatedBillName", "STK_InStock");
|
|
this.View.Model.SetItemValueByNumber("FCreatedBillType", "RKD01_SYS",0);
|
|
# this.View.InvokeFieldUpdateService("FCreatedBillType", 0);
|
|
if _sFormIdEx == "PRD_MO":
|
|
this.View.Model.SetValue("FCreatedBillName", "PRD_INSTOCK");
|
|
this.View.Model.SetItemValueByNumber("FCreatedBillType", "SCRKD01_SYS",0);
|
|
|
|
# this.View.UpdateView();
|
|
|
|
def DataChanged(e):
|
|
if e.Field.Key.upper() == "FBARCODE":
|
|
barCodeInfos = e.NewValue.split("_")
|
|
rowIndex = e.Row
|
|
# raise Exception(barCodeInfos[0])
|
|
FSOURCEBILLNAME = this.View.Model.GetValue("FSOURCEBILLNAME")
|
|
# 源单单据类型
|
|
sourceBillTypeId = FSOURCEBILLNAME["Id"]
|
|
# 源单单据单号
|
|
sourceBillNo = this.View.Model.GetValue("FSOURCEBILLID")
|
|
if sourceBillNo == None or sourceBillNo == "":
|
|
# this.View.Model.SetValue("FSOURCEBILLID",barCodeInfos[4])
|
|
this.View.Model.SetValue("FISMAPTOSOURCEBILL","1")
|
|
tableNamesql = """/*dialect*/
|
|
;WITH #查询表头名 AS (
|
|
SELECT t0.FID,t0_l.FNAME,REPLACE(t1e.FFIELDKEY,'FSeq','') AS 'EntryName'
|
|
,FKERNELXML.query('//HeadEntity/TableName').value('(TableName)[1]','varchar(max)') as '单据头表名'
|
|
FROM T_META_OBJECTTYPE t0
|
|
INNER JOIN T_META_OBJECTTYPE_L t0_l on t0.FID = t0_l.FID AND t0_l.FLOCALEID = 2052
|
|
INNER JOIN T_BD_BARCODEITEMENTRY t1e on t1e.FBILLFORMID = t0.FID
|
|
INNER JOIN T_BD_BARCODEITEM t1 on t1.FID = t1e.FID AND t1.FBARCODEFIELDKEY = 'FBILLSEQ'
|
|
WHERE 1=1
|
|
AND t0.FID = '{0}'
|
|
AND FISTEMPLATE = 0
|
|
AND FDEVTYPE != 2
|
|
AND FMODELTYPEID = 100
|
|
)
|
|
|
|
SELECT t0.单据头表名 AS 'HeadTableName'
|
|
,CONCAT(t0.单据头表名,'Entry') EntryTableName
|
|
,t0.EntryName
|
|
FROM #查询表头名 t0
|
|
"""
|
|
nameSet = DBServiceHelper.ExecuteDynamicObject(this.Context, tableNamesql);
|
|
|
|
if nameSet != None and nameSet.Count > 0:
|
|
sqlL = """/*dialect*/
|
|
SELECT t0.FID,t0.FBILLNO
|
|
,t0e.FENTRYID,t0e.FSEQ
|
|
FROM {1} t0
|
|
INNER JOIN {2} t0e on t0.FID = t0e.FID
|
|
INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID
|
|
WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C'
|
|
AND t0.FBILLNO = '{0}'
|
|
AND t1.FNUMBER = '{3}'
|
|
|
|
""".format(sourceBillNo ,nameSet[0]["HeadTableName"] ,nameSet[0]["EntryTableName"] ,barCodeInfos[0]);
|
|
|
|
dataRes = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
|
|
if dataRes != None and dataRes.Count > 0:
|
|
data = dataRes[0];
|
|
|
|
this.View.Model.SetValue("FBillType", data["FBILLTYPEID"], rowIndex)
|
|
materialEntity = this.View.Model.BillBusinessInfo.GetEntryEntity("FScanDetailEntity")
|
|
materialRows = this.View.Model.GetEntityDataObject(materialEntity)
|
|
materialRows[rowIndex]["BillCode"] = data["FBILLNO"];
|
|
materialRows[rowIndex]["BillSeq"] = data["FSEQ"];
|
|
|
|
# if sourceBillTypeId == "PUR_ReceiveBill":
|
|
# sqlL = """/*dialect*/
|
|
# SELECT t0.FBILLNO,t0.FBILLTYPEID,t0.FID,t0.FSUPPLIERID,t0.FRECEIVERID
|
|
# ,t0e.FENTRYID,t0e.FSEQ,t1.FNUMBER,t0e.FMATERIALID,t0e.FUNITID
|
|
# FROM T_PUR_RECEIVE t0
|
|
# INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID
|
|
# INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID
|
|
# WHERE t1.FDOCUMENTSTATUS = 'C' AND t1.FFORBIDSTATUS = 'A'
|
|
# AND t0.FBILLNO = '{0}' AND t1.FNUMBER = '{1}'
|
|
# """.format(sourceBillNo, barCodeInfos[0])
|
|
|
|
# dataRes = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
|
|
# if dataRes != None and dataRes.Count > 0:
|
|
# data = dataRes[0];
|
|
|
|
# this.View.Model.SetValue("FBillType", data["FBILLTYPEID"], rowIndex)
|
|
# materialEntity = this.View.Model.BillBusinessInfo.GetEntryEntity("FScanDetailEntity")
|
|
# materialRows = this.View.Model.GetEntityDataObject(materialEntity)
|
|
# materialRows[rowIndex]["BillCode"] = data["FBILLNO"];
|
|
# materialRows[rowIndex]["BillSeq"] = data["FSEQ"];
|