Files
GateDge2023_ljy/03.珠海市汇威精密制造有限公司/HW.PRD_LackAnalyeBill.Python/HW.PRD_LackAnalyeBill.Python.py
PastSaid 912bea60ac 1
2024-03-28 11:30:14 +08:00

306 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import clr
clr.AddReference("System")
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("ExtensionMethods")
from Kingdee.BOS import*
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata.EntityElement import *
from Kingdee.BOS.Orm.DataEntity import*
from Kingdee.BOS.Orm.Metadata.DataEntity import*
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from System import *
from System.ComponentModel import*
from System.Collections.Generic import*
from System.Text import*
from Kingdee.BOS.ServiceHelper import *
from ExtensionMethods import BooleanExtension as boolObjEx
from ExtensionMethods import DateTimeExtension as dateObjEx
from ExtensionMethods import ObjectExtension as objEx
from ExtensionMethods import StringExtension as strObjEx
def ButtonClick(e):
if e.Key.EndsWith("FToAnalyzeBtn", StringComparison.OrdinalIgnoreCase):
proEntity = this.View.Model.BusinessInfo.GetEntryEntity("FAnalyzeProEntity")
proRows = this.View.Model.GetEntityDataObject(proEntity)
this.View.Model.BeginIniti()
if proRows != None and proRows.Count > 0:
sDate = this.View.Model.GetValue("FBillSDate")
eDate = this.View.Model.GetValue("FBillEDate")
proStrList = List[str]();
for row in proRows:
proStrList.Add("SELECT {0} AS 'MATERIALID' ,{1} needNum".format(row["FAnalyzeProId"]["Id"],row["FAnalyzeProQty"]))
sql = """/*dialect*/
DECLARE @needNum DECIMAL(23,6)
,@sDate varchar(100)
,@eDate varchar(100)
SET @needNum = 20
SET @sDate = '{1}'
SET @eDate = '{2}'
SELECT tt.MATERIALID,SUM(tt.needNum) needNum
INTO #TMPMATERIALNUM
FROM ({0}) tt
GROUP BY tt.MATERIALID
SELECT t0.FMASTERID
,t0.FMATERIALID
,t0.FNUMBER
,t0.FUSEORGID
,t1.needNum AS 'ProMaterialQty'
INTO #ProMaterial
FROM T_BD_MATERIAL t0
INNER JOIN #TMPMATERIALNUM t1 on t0.FMATERIALID = t1.MATERIALID
WHERE t0.FDOCUMENTSTATUS = 'C'
CREATE TABLE #MATERIAL_LACKANALYE(
FIDENTITYID int not null default 0
,MaterialId int not null default 0
,BomId int
,<2C><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> varchar(100) default ''
,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> varchar(100) default ''
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD><5F><CEB4><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F>;<EFBFBD><CDBE> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> decimal(23,6) default 0
,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD> decimal(23,6) default 0
,BOMLEVEL int
,IsProduct int
,<2C><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD> int
)
SELECT t0.FMATERIALID
,ISNULL(t3.sumQTY,0) AS <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
,ISNULL(t4.sumBASENOPICKEDQTY,0) AS δ<><CEB4><EFBFBD><EFBFBD>
,ISNULL(t5.sumNoStockInQty,0) AS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,ISNULL(t1.<2E><><EFBFBD><EFBFBD> - t1.δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t2.<2E><><EFBFBD><EFBFBD> - t2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>'
,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.<2E><><EFBFBD><EFBFBD> - t1.δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t2.<2E><><EFBFBD><EFBFBD> - t2.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0)) AS '<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>'
,ISNULL(t6.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
INTO #Material_Stock_Statu
FROM T_BD_MATERIAL t0
LEFT JOIN (
SELECT
t0e.FMATERIALID,SUM(t0e.FQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS 'δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
FROM T_SAL_ORDER t0
INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
AND t0.FCANCELSTATUS = 'A'
AND t0.FCLOSESTATUS = 'A'
AND t0.FDATE between @sDate AND @eDate
GROUP BY t0e.FMATERIALID
) t1 on t1.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT
t0e.FMATERIALID,SUM(t0e.FQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t0e_r.FREMAINSTOCKINQTY) AS 'ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,SUM(t0e_r.FBASESTOCKINQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
FROM T_PUR_POORDER t0
INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG'
INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
AND t0.FCANCELSTATUS = 'A'
AND t0.FCLOSESTATUS = 'A'
AND t0.FDATE BETWEEN @sDate AND @eDate
GROUP BY t0e.FMATERIALID
) t2 on t2.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY
FROM T_STK_INVENTORY tt0
GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID
) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID
LEFT JOIN (
SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY
FROM T_PRD_PPBOMENTRY t0e
INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID
WHERE t0e_a.FSTATUS = 4
GROUP BY t0e.FMATERIALID
) t4 on t4.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty
FROM T_PRD_MOENTRY t0e
INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
WHERE t0e_a.FSTATUS = 4
GROUP BY t0e.FMATERIALID
) t5 on t5.FMATERIALID = t0.FMATERIALID
LEFT JOIN (
SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
FROM T_PUR_RECEIVE t0
INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID
INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
AND t0.FCANCELSTATUS = 'A'
AND t0.FCLOSESTATUS = 'A'
AND t0.FDATE BETWEEN @sDate AND @eDate
GROUP BY t0e.FMATERIALID
) t6 on t6.FMATERIALID = t0.FMATERIALID
WHERE t0.FDOCUMENTSTATUS = 'C'
AND t0.FFORBIDSTATUS = 'A'
INSERT INTO #MATERIAL_LACKANALYE
SELECT
ROW_NUMBER() OVER (ORDER BY t0.FMATERIALID)
,t0.FMATERIALID
,t1.FID
,t2.FNUMBER
,t2_l.FNAME
,t0.ProMaterialQty
,t3.<2E><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
,t3.δ<><CEB4><EFBFBD><EFBFBD>
,t3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t3.<2E>ܶ<EFBFBD><DCB6><EFBFBD>
,t3.<2E><>;<EFBFBD><CDBE>
,t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
,(CASE
WHEN t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> > t0.ProMaterialQty THEN 0
ELSE t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> - t0.ProMaterialQty
END)
,t3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,0
,1
,1
FROM #ProMaterial t0
INNER JOIN (
SELECT tt.FID,tt.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt.FMATERIALID ORDER BY tt.FID DESC) AS 'rn' FROM T_ENG_BOM tt
WHERE 1 = 1
AND tt.FDOCUMENTSTATUS = 'C'
AND tt.FFORBIDSTATUS = 'A'
) t1 on t0.FMATERIALID = t1.FMATERIALID AND t1.rn = 1 --AND t0.FUSEORGID = t1.FUSEORGID
INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t1.FMATERIALID
INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t1.FMATERIALID AND t2_l.FLOCALEID = 2052
LEFT JOIN #Material_Stock_Statu t3 on t1.FMATERIALID = t3.FMATERIALID
WHERE 1 = 1
ORDER BY
t0.FNUMBER
DECLARE @num INT,@level int,@LoopCount int
SET @num = 1
SET @level =0
SET @LoopCount = 0;
WHILE (@num <> 0 AND @LoopCount < 10)
BEGIN
INSERT INTO #MATERIAL_LACKANALYE(MaterialId,BomId,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><5F><CEB4><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>_<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD>,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F>;<EFBFBD><CDBE>,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,BOMLEVEL,<2C><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>,IsProduct)
SELECT
tt.FMATERIALID
,ISNULL(t2.FID,0) AS BomId
,ABS(tt.<2E><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
,t3.<2E><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
,t3.δ<><CEB4><EFBFBD><EFBFBD>
,t3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,t3.<2E>ܶ<EFBFBD><DCB6><EFBFBD>
,t3.<2E><>;<EFBFBD><CDBE>
,t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>
,(CASE
WHEN t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> > (ABS(tt.<2E><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) + ISNULL(t4.<2E>ϼ<EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0)) THEN 0
ELSE t3.<2E><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> - (ABS(tt.<2E><><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) + ISNULL(t4.<2E>ϼ<EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0))
END) AS 'ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,t3.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,@level + 1
,tt.co
,0
FROM (
SELECT
t1.FMATERIALID
,SUM(t0.<2E><><EFBFBD><EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * (t1.FNUMERATOR / t1.FDENOMINATOR)) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,count(1) co
FROM
#MATERIAL_LACKANALYE t0
INNER JOIN T_ENG_BOMCHILD t1 on t0.BomId = t1.FID
WHERE 1 = 1
AND t0.BOMLEVEL = @level
GROUP BY t1.FMATERIALID
) tt
LEFT JOIN (
SELECT tt3.FID,tt3.FNUMBER,tt3.FMATERIALID,ROW_NUMBER() OVER (PARTITION BY tt3.FMATERIALID ORDER BY tt3.FID DESC) AS 'rn'
FROM T_ENG_BOM tt3
WHERE 1 = 1 AND tt3.FDOCUMENTSTATUS = 'C' AND tt3.FFORBIDSTATUS = 'A'
) t2 ON t2.rn = 1 AND tt.FMATERIALID = t2.FMATERIALID
LEFT JOIN #Material_Stock_Statu t3 on t3.FMATERIALID = tt.FMATERIALID
LEFT JOIN (
SELECT tt.MaterialId,sum(tt.<2E><><EFBFBD><EFBFBD><5F><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' FROM #MATERIAL_LACKANALYE tt GROUP BY tt.MaterialId
) t4 on t4.MaterialId = tt.FMATERIALID
SET @num = @@ROWCOUNT
SET @level += 1
SET @LoopCount += 1
END
UPDATE t0 SET
t0.<2E><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> = t1.FNUMBER
,t0.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = t1_l.FNAME
,t0.FIDENTITYID = t2.rn
FROM #MATERIAL_LACKANALYE t0
INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID
INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052
INNER JOIN (SELECT MaterialId,ROW_NUMBER() OVER (ORDER BY bomlevel,<2C><><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>) 'rn' FROM #MATERIAL_LACKANALYE) t2 on t0.MaterialId = t2.MaterialId
SELECT t0.* FROM #MATERIAL_LACKANALYE t0 ORDER BY FIDENTITYID
DROP TABLE #ProMaterial
DROP TABLE #TMPMATERIALNUM
DROP TABLE #MATERIAL_LACKANALYE
DROP TABLE #Material_Stock_Statu
""".format(" union ".join(proStrList),sDate,eDate)
proRows.Clear()
# this.View.UpdateView("FAnalyzeProEntity");
materialEntity = this.View.Model.BillBusinessInfo.GetEntryEntity("FAnalyzeMaterialEntity")
materialRows = this.View.Model.GetEntityDataObject(materialEntity)
materialRows.Clear()
res = DBServiceHelper.ExecuteDynamicObject(this.Context,sql)
if res != None and res.Count > 0:
for item in res:
row = DynamicObject(materialEntity.DynamicObjectType)
isPro = item["IsProduct"]
matId = item["MaterialId"]
matFld = this.View.BillBusinessInfo.GetField("FAnalyzeMaterialId");#<23><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>Ԫ<EFBFBD><D4AA>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD>ֶα<D6B6>ʶ
matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType)
row["FAnalyzeMaterialId_Id"] = matId
row["FAnalyzeMaterialId"] = matObj
row["FAnalyzeMQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FStkQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FNotIssueQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FInMakingQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FOrderMQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>"]
row["FInTransitQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>"]
row["FAvailableQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FActualQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
row["FDetectionQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
materialRows.Add(row)
if isPro == 1:
proRow = DynamicObject(proEntity.DynamicObjectType)
proRow["FAnalyzeProId_Id"] = matId
proRow["FAnalyzeProId"] = matObj
proRow["FAnalyzeProQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProStkQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProNotIssueQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProInMakingQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProOrderQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProInTransitQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>"]
proRow["FProAvailableQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRow["FProActualQty"] = item["<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"]
proRows.Add(proRow);
this.View.UpdateView("FAnalyzeProEntity")
this.View.UpdateView("FAnalyzeMaterialEntity")