2024-03-28 11:30:14 +08:00
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 " )
2024-03-18 11:42:45 +08:00
2024-03-28 11:30:14 +08:00
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
, <EFBFBD> <EFBFBD> <EFBFBD> ϴ <EFBFBD> <EFBFBD> <EFBFBD> varchar ( 100 ) default ' '
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> varchar ( 100 ) default ' '
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> ܶ <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> ; <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ʵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> decimal ( 23 , 6 ) default 0
, BOMLEVEL int
, IsProduct int
, <EFBFBD> <EFBFBD> <EFBFBD> ϸ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϼ <EFBFBD> int
)
SELECT t0 . FMATERIALID
, ISNULL ( t3 . sumQTY , 0 ) AS <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, ISNULL ( t4 . sumBASENOPICKEDQTY , 0 ) AS δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, ISNULL ( t5 . sumNoStockInQty , 0 ) AS <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, ISNULL ( t1 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - t1 . δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 ) AS ' <EFBFBD> ܶ<EFBFBD> <EFBFBD> <EFBFBD> '
, ISNULL ( t2 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - t2 . <EFBFBD> <EFBFBD> <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 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - t1 . δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 ) + ISNULL ( t2 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - t2 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 ) ) AS ' <EFBFBD> <EFBFBD> <EFBFBD> ÿ<EFBFBD> <EFBFBD> <EFBFBD> '
, ISNULL ( t6 . <EFBFBD> <EFBFBD> <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 . <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> ܶ <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> ; <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD>
, ( CASE
WHEN t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD> > t0 . ProMaterialQty THEN 0
ELSE t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD> - t0 . ProMaterialQty
END )
, t3 . <EFBFBD> <EFBFBD> <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 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
, t3 . <EFBFBD> <EFBFBD> ʱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . δ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> ܶ <EFBFBD> <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> ; <EFBFBD> <EFBFBD>
, t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD>
, ( CASE
WHEN t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD> > ( ABS ( tt . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ) + ISNULL ( t4 . <EFBFBD> ϼ <EFBFBD> _ʵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 ) ) THEN 0
ELSE t3 . <EFBFBD> <EFBFBD> <EFBFBD> ÿ <EFBFBD> <EFBFBD> <EFBFBD> - ( ABS ( tt . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ) + ISNULL ( t4 . <EFBFBD> ϼ <EFBFBD> _ʵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 0 ) )
END ) AS ' ʵ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> '
, t3 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
, @level + 1
, tt . co
, 0
FROM (
SELECT
t1 . FMATERIALID
, SUM ( t0 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ʵ <EFBFBD> <EFBFBD> <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 . <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> _ʵ <EFBFBD> <EFBFBD> <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 . <EFBFBD> <EFBFBD> <EFBFBD> ϴ <EFBFBD> <EFBFBD> <EFBFBD> = t1 . FNUMBER
, t0 . <EFBFBD> <EFBFBD> <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 , <EFBFBD> <EFBFBD> <EFBFBD> ϴ <EFBFBD> <EFBFBD> <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 " )