;WITH #查询表头名 AS ( SELECT t0.FID,t0_l.FNAME,REPLACE(t1e.FFIELDKEY,'FSeq','') AS 'EntryName' ,FKERNELXML.query('//HeadEntity/TableName').value('(TableName)[1]','varchar(max)') as '单据头表名' ,FKERNELXML 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 = @FromId AND FISTEMPLATE = 0 AND FDEVTYPE != 2 AND FMODELTYPEID = 100 ) SELECT t0.单据头表名 ,CONCAT(t0.单据头表名,'Entry') EntryTableName ,t0.EntryName ,FKERNELXML.query('//EntryEntity[Key="FSaleOrderEntry"]/TableName').value('(TableName)[1]','varchar(max)') '单据体表名' ,FKERNELXML FROM #查询表头名 t0 SELECT TOP 1 FID FROM T_META_CONVERTRULE t0 WHERE 1 = 1 AND t0.FSOURCEFORMID = 'PLN_FORECAST' AND t0.FTARGETFORMID = 'PRD_MO' AND t0.FSTATUS = 1 ORDER BY t0.FISDEFAULT DESC,t0.FMODIFYDATE DESC SELECT t0.FID,t0_l.FNAME,t1e.FFIELDKEY ,t1.FBARCODEFIELDKEY 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 = 'FQTY' WHERE 1=1 AND t0.FID = 'STK_InStock' AND FISTEMPLATE = 0 AND FDEVTYPE != 2 AND FMODELTYPEID = 100 -- 获取 SELECT t0.FID,t0_l.FNAME ,t0.FKERNELXML.query('//HeadEntity/TableName').value('(TableName)[1]','varchar(max)') as '单据头表名' ,REPLACE(t1e.FFIELDKEY,'FSeq','') AS 'SourceEntryKey' ,REPLACE(t2e.FFIELDKEY,'FSeq','') AS 'TargetEntryKey' ,t3e.FFIELDKEY 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' INNER JOIN T_BD_BARCODEITEMENTRY t2e on t2e.FID = t1.FID AND t2e.FBILLFORMID = 'STK_InStock' INNER JOIN T_BD_BARCODEITEMENTRY t3e on t3e.FBILLFORMID = t2e.FBILLFORMID INNER JOIN T_BD_BARCODEITEM t3 on t3.FID = t3e.FID AND t3.FBARCODEFIELDKEY = 'FQTY' WHERE 1=1 AND t0.FID = 'PUR_ReceiveBill' AND FISTEMPLATE = 0 AND FDEVTYPE != 2 AND FMODELTYPEID = 100 SELECT t0.FID,t0_l.FNAME,t1e.FFIELDKEY ,t1.FBARCODEFIELDKEY ,REPLACE(t2e.FFIELDKEY,'FSeq','') AS 'EntryKey' ,t0.FKERNELXML.query('//QtyField[Key="FRealQty"]/PropertyName').value('(PropertyName)[1]','varchar(max)') 'QtyFieldName' ,t0.FKERNELXML 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 = 'FQTY' INNER JOIN T_BD_BARCODEITEMENTRY t2e on t2e.FBILLFORMID = t0.FID INNER JOIN T_BD_BARCODEITEM t2 on t2.FID = t2e.FID AND t2.FBARCODEFIELDKEY = 'FBILLSEQ' WHERE 1 = 1 AND t0.FID = 'STK_InStock' AND t0.FISTEMPLATE = 0 AND t0.FDEVTYPE != 2 AND t0.FMODELTYPEID = 100 SELECT FID ,FKERNELXML.query('//ConvertRule/Policies/DefaultConvertPolicy/SourceEntryKey').value('(SourceEntryKey)[1]','varchar(max)') as 'SourceEntryKey' ,FKERNELXML.query('//ConvertRule/Policies/DefaultConvertPolicy/TargetEntryKey').value('(TargetEntryKey)[1]','varchar(max)') as 'TargetEntryKey' ,FKERNELXML ,t0.FSOURCEFORMID ,t0.FTARGETFORMID ,t0.FISDEFAULT FROM T_META_CONVERTRULE t0 WHERE 1 = 1 --AND t0.FSOURCEFORMID = 'PRD_MO' --AND t0.FTARGETFORMID = 'PRD_INSTOCK' AND t0.FTARGETFORMID = 'STK_InStock' AND t0.FSTATUS = 1 AND t0.FDEVTYPE = 0 ORDER BY t0.FISDEFAULT DESC,t0.FMODIFYDATE DESC -- 20241111 --select * --from T_UN_SCANDEFAULT --SELECT FBILLTYPEID,FBILLFORMID,FISDEFAULT,* --FROM T_BAS_BILLTYPE --WHERE 1=1 -- --AND FBILLFORMID = 'PRD_MO' -- AND FBILLFORMID = 'PUR_ReceiveBill' --SELECT * --INTO #seqSet --FROM ( -- {string.Join(" UNION ALL ", unionTableList)} --)tt SELECT t0.FBILLNO,t0.FID BillId ,t0e.FENTRYID BillEntryId,t0e.FSEQ --,ss.Qty FROM T_PRD_MO t0 INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID INNER JOIN T_PRD_MORPTENTRY t1e on t1e.FMOENTRYID = t0e.FENTRYID --INNER JOIN #seqSet ss on ss.BillNo = t0.FBILLNO AND ss.FSEQ = t0e.FSEQ WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' SELECT t0e.FENTRYID FROM T_PUR_RECEIVE t0 INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.fid = t0e.FID WHERE t0.FBILLNO = 'CGSL000026' SELECT t0e.FMOENTRYID,t0.FBILLNO,t0e.FEntryID FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID SELECT t0e.FENTRYID,t0e_f.FROWID,t0e_f.FPARENTROWID,t0e_f.FPARENTMATID FROM T_SAL_OUTSTOCK t0 INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0.FID = t0e.FID INNER JOIN T_SAL_OUTSTOCKENTRY_F t0e_f on t0e_f.FENTRYID = t0e.FENTRYID WHERE t0.FID = 112202 ORDER BY t0.FDATE DESC WITH #基础数据 AS ( SELECT 100125 FENTRYID,'ZZRK202411130003' BillNo ) SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID,ISNULL(tt.FENTRYID,0) 'EntryId' ,t0e.FQTY,t0e.FZGSQTY,t0e.FGZLQty FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID INNER JOIN #基础数据 t1 on t1.BillNo = t0.FBILLNO LEFT JOIN #基础数据 tt on tt.FENTRYID = t0e.FEntryID WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' --AND t0.FBILLNO = 'ZZRK202411130003' WITH #基础数据 AS ( SELECT 100125 FENTRYID,'ZZRK202411130003' BillNo, 50 QTY ) SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID,t0.FQTY AS 'PQty' ,t0.FOUTSTOCKQTY ,t0e.FQTY,t0e.FZGSQTY,t0e.FGZLQty,t1.baseQty,t2.dataQty ,t3e.FNUMERATOR,t3e.FDENOMINATOR FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID CROSS APPLY ( SELECT COUNT(1) AS baseQty FROM #基础数据 t1 WHERE t1.BillNo = t0.FBILLNO GROUP BY t1.BillNo ) t1 CROSS APPLY ( SELECT COUNT(1) AS dataQty FROM T_PRD_PACKAGEINSTOCKENTRY t2e WHERE t2e.FID = t0e.FID ) t2 INNER JOIN T_ENG_BOM t3 on t3.FID = t0.FBOMID INNER JOIN T_ENG_BOMCHILD t3e on t3e.FID = t3.FID AND t3e.FMATERIALID = t0e.FMATERIALID WHERE 1 = 1 SELECT t0e.FENTRYID,t0e.FQTY ,ISNULL(t1.选单入库合格数量,0) '选单入库合格数量' --,ISNULL(t2.选单入库合格数量,0) '已下推未审核合格数量' ,t3e.FRPTQTY FROM T_PRD_MO t0 INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID OUTER APPLY ( SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,SUM(t1e.FFINISHQTY) '选单入库合格数量' FROM T_PRD_MORPT t1 INNER JOIN T_PRD_MORPTENTRY t1e on t1.FID = t1e.FID INNER JOIN T_PRD_MORPTENTRY_A t1e_a on t1e_a.FENTRYID = t1e.FENTRYID WHERE t1e.FMOENTRYID = t0e.FENTRYID AND t1.FDOCUMENTSTATUS = 'C' GROUP BY t1e.FMOENTRYID,t1e.FMOBILLNO ) t1 --OUTER APPLY ( -- SELECT t2e.FMOENTRYID,t2e.FMOBILLNO,SUM(t2e_a.FSTOCKINQUASELQTY) '选单入库合格数量' -- FROM T_PRD_MORPT t2 -- INNER JOIN T_PRD_MORPTENTRY t2e on t2.FID = t2e.FID -- INNER JOIN T_PRD_MORPTENTRY_A t2e_a on t2e_a.FENTRYID = t2e.FENTRYID -- WHERE t2e.FMOENTRYID = t0e.FENTRYID AND t2.FDOCUMENTSTATUS != 'C' -- GROUP BY t2e.FMOENTRYID,t2e.FMOBILLNO --) t2 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t3e on t3e.FMOENTRYID = t0e.FENTRYID WHERE 1 = 1 AND t0.FDOCUMENTSTATUS = 'C' --20241211 销售出库单 WITH #基础数据 AS ( SELECT 156743 'MaterialId',144096 'EntryId',1 'EntrySeq' ,'' AS 'PackBarCode',1 'FRowType','3473790b-c91b-a08a-11ef-b7645430fc76' rowId,'' pRwoId UNION ALL SELECT 125771 'MaterialId',144097 'EntryId',2 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f75' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId UNION ALL SELECT 126471 'MaterialId',144098 'EntryId',3 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f76' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId UNION ALL SELECT 126146 'MaterialId',144099 'EntryId',4 'EntrySeq' ,'000107' AS 'PackBarCode',2 'FRowType','3473790b-c91b-a08a-11ef-b76464352f77' rowId,'3473790b-c91b-a08a-11ef-b7645430fc76' pRwoId ) , #初步处理 AS ( SELECT t0.MaterialId,t0.EntryId,t0.EntrySeq ,CASE WHEN t0.PackBarCode = '' and t0.FRowType = 1 THEN ( SELECT TOP 1 t1.PackBarCode FROM #基础数据 t1 WHERE t1.pRwoId = t0.rowId ) ELSE t0.PackBarCode END 'PackBarCode' ,t0.FRowType,t0.rowId,t0.pRwoId FROM #基础数据 t0 ) SELECT tt.*,t0.FBARCODE,t0.FBILLNO,t0.FBILLID,t0.FBILLENTRYID,t0.FBILLSEQ,t0.FBILLFORMID ,t1.*,t2.FNUMERATOR,t2.FDENOMINATOR FROM #初步处理 tt INNER JOIN T_UNW_WMS_BARCODE t0 on t0.FBARCODE = tt.PackBarCode CROSS APPLY ( SELECT t1.FBILLNO,t1e.FEntryID,t1e.FSeq,t1e.FQTY,t1e.FGZLQTY,t1e.FZGSQTY,t1e.FUNITID,t1e.FFYLQTY,t1.FBOMID,t1e.FMATERIALID ,t1.FQTY AS 'MainQty' FROM T_PRD_PACKAGEINSTOCK t1 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t1e on t1.FID = t1e.FID WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID AND t1e.FMATERIALID = tt.MaterialId AND tt.FRowType = t1e.FPRODUCTTYPE UNION ALL SELECT t1.FBILLNO,0 FEntryID,0,t1.FQTY,0,0,0,t1.FFYLQTY,t1.FBOMID,t1.FMATERIALID ,t1.FQTY AS 'MainQty' FROM T_PRD_PACKAGEINSTOCK t1 WHERE t1.FSRCBILLENTRYID = t0.FBILLENTRYID AND t1.FMATERIALID = tt.MaterialId AND tt.FRowType = t1.FPRODUCTTYPE ) t1 LEFT JOIN T_ENG_BOMCHILD t2 on t2.FID = t1.FBOMID AND t1.FMATERIALID = t2.FMATERIALID ORDER BY tt.EntrySeq --2024-12-13 WITH #基础数据 AS ( SELECT 100304 FENTRYID,'ZZRK202412130001' BillNo, 0.100 QTY ,0 FYLCK UNION ALL SELECT 100305 FENTRYID,'ZZRK202412130001' BillNo, 1.25 QTY ,0 FYLCK UNION ALL SELECT 100306 FENTRYID,'ZZRK202412130001' BillNo, 0.051 QTY ,0 FYLCK ) , #关联数据 AS ( SELECT t0.FBILLNO,t0e.FEntryID,t0e.FID ,t0.FQTY AS 'PQty' ,(t0e.FQTY - t0e.FFYLQTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR AS '父项数量' ,(t6.QTY)/ t2e.FNUMERATOR * t2e.FDENOMINATOR * t5.F_UNITIDHS AS '实际出库父项数量' ,(t0e.FFYLQTY) /t2e.FNUMERATOR * t2e.FDENOMINATOR AS '富余量' ,t0.FOUTSTOCKQTY ,t0e.FQTY ,t0e.FZGSQTY,t0e.FGZLQty ,t0e.FFYLQTY ,t2e.FNUMERATOR,t2e.FDENOMINATOR ,t5.F_UNITIDHS ,t6.FYLCK ,ROW_NUMBER() OVER (PARTITION BY t0.FID ORDER BY t0e.FENTRYID) RN FROM T_PRD_PACKAGEINSTOCK t0 INNER JOIN T_PRD_PACKAGEINSTOCKENTRY t0e on t0.FID = t0e.FID INNER JOIN T_ENG_BOM t2 on t2.FID = t0.FBOMID INNER JOIN T_ENG_BOMCHILD t2e on t2e.FID = t2.FID AND t2e.FMATERIALID = t0e.FMATERIALID INNER JOIN T_BD_MATERIAL t5 on t5.FMATERIALID = t0e.FMATERIALID INNER JOIN #基础数据 t6 on t6.FENTRYID = t0e.FEntryID WHERE 1 = 1 ) UPDATE t1 SET t1.FQTY = t1.FQTY - t0.实际出库父项数量 ,t1.FOUTSTOCKQTY = t1.FOUTSTOCKQTY + t0.实际出库父项数量 FROM #关联数据 t0 INNER JOIN T_PRD_PACKAGEINSTOCK t1 on t1.FID = t0.FID CROSS APPLY ( SELECT COUNT(1) bQty FROM #关联数据 t2 WHERE t2.FID = t0.FID GROUP BY t2.FID HAVING AVG(t2.实际出库父项数量) = t0.实际出库父项数量 ) t2 CROSS APPLY ( SELECT COUNT(1) AS dQty FROM T_PRD_PACKAGEINSTOCKENTRY t4e WHERE t4e.FID = t0.FID GROUP BY t4e.FID ) t4 WHERE t2.bQty = t4.dQty AND t0.FYLCK = 0 AND t0.RN = 1 --2024-12-16 关联优联扫描记录 SELECT t0.FTOROWID,t0.FBARCODEID,t0.FBOXCODEID,t0.* FROM T_UNW_WMS_NORMALRECORD t0 WHERE t0.FTOFORMID = 'SAL_OUTSTOCK' ORDER BY t0.FTOROWID