关于:即时库存查询脚本示例
【即时库存SQL示例】
SELECT TI.FSTOCKORGID,TI.FKEEPERTYPEID,TI.FKEEPERID,TI.FOWNERTYPEID,TI.FOWNERID, TI.FMATERIALID,TI.FSTOCKID,TI.FSTOCKLOCID,TI.FAUXPROPID,TI.FSTOCKSTATUSID, TI.FLOT,TI.FBOMID,TI.FMTONO,TI.FPROJECTNO, (CASE WHEN TMS.FISEXPPARTOFLOT = '1' THEN TL.FPRODUCEDATE ELSE TI.FPRODUCEDATE END) AS FPRODUCEDATE, (CASE WHEN TMS.FISEXPPARTOFLOT = '1' THEN TL.FEXPIRYDATE ELSE TI.FEXPIRYDATE END) AS FEXPIRYDATE, --基本单位库存量、辅助单位库存量 TI.FBASEUNITID,TI.FBASEQTY,TI.FSECUNITID,TI.FSECQTY --基本单位锁库量、辅助单位锁库量 ,TSUB.FBASELOCKQTY AS FBASELOCKQTY,TSUB.FSECLOCKQTY AS FSECLOCKQTY FROM T_STK_INVENTORY TI INNER JOIN T_BD_MATERIAL TM ON TI.FMATERIALID = TM.FMASTERID AND TI.FSTOCKORGID = TM.FUSEORGID INNER JOIN T_BD_MATERIALSTOCK TMS ON TM.FMATERIALID = TMS.FMATERIALID LEFT JOIN T_BD_LOTMASTER TL ON TI.FLOT = TL.FMASTERID AND TI.FSTOCKORGID=TL.FUSEORGID AND TL.FBIZTYPE = '1' --以下锁库和预留 LEFT JOIN (SELECT TLKE.FSUPPLYINTERID AS FINVENTRYID, SUM(TLKE.FBASEQTY) AS FBASELOCKQTY,SUM(TLKE.FSECQTY) AS FSECLOCKQTY FROM T_PLN_RESERVELINKENTRY TLKE INNER JOIN T_PLN_RESERVELINK TLKH ON TLKE.FID = TLKH.FID WHERE TLKE.FSUPPLYFORMID = 'STK_Inventory' AND TLKE.FLINKTYPE = '4' GROUP BY TLKE.FSUPPLYINTERID) TSUB ON TI.FID = TSUB.FINVENTRYID WHERE TI.FISEFFECTIVED = '1'
以上仅取库存维度各个内码字段,编码和名称需要关联各自表取数,避免关联过多表引发性能问题。
即时库存表中关于生产日期FPRODUCEDATE、和有效期至FEXPIRYDATE,需要根据是否启用附属信息判断取数。
即时库存表中 仅FBASEQTY、FSECQTY 准确可用,其他业务单位数量需要自行取出换算计算。
即时库存表中 的所有锁库数量也是需要根据预留表来取数计算,其中条件(AND TLKE.FLINKTYPE = '4')需要根据系统是否启用预留来决定是否需要添加该条件,启用预留则不需要该条件,不启用则限定只获取锁库数据。
即时库存表中 FISEFFECTIVED 标识该行库存是否有效,取数仅取有效数据即可。