個人能力有限,在U8內沒有找到現成的報表,可以批量查詢采購單執行狀態。。。
借鑒了一下:https://blog.csdn.net/yanming8888/article/details/84722720
實現以下2個功能:
(1)總表:統計從未入過庫的采購訂單,可用於期初上線切換。
SELECT a.ivtid,
a.cpoid AS 訂單號碼,
a.dpodate 采購日期,
a.cbustype AS 業務類型,
a.cvencode AS 供應單位,
a.cvenname AS 供應商名稱,
a.cmemo AS 備注,
a.cexch_name AS 幣種,
a.cmaker AS 創建人,
a.cverifier AS 審批人,
a.cptname AS 采購類型,
a.cvenaddress AS 地址,
a.cvoucherstate 訂單狀態,
b.行數,
b.數量,
b.累計入庫數量,
b.數量 - b.累計入庫數量 剩余數量
FROM zpurpoheader a
LEFT JOIN
(
SELECT poid,
COUNT(*) 行數,
SUM(CONVERT(FLOAT, iquantity)) 數量,
SUM(CONVERT(FLOAT, iarrqty)) 累計到貨數量,
SUM(CONVERT(FLOAT, ireceivedqty)) 累計入庫數量
FROM dbo.zpurpotail
GROUP BY poid
) b
ON b.poid = a.poid
WHERE b.累計入庫數量 = 0
(3)明細表:從采購單入手,獲取采購明細;再根據行號,獲取相應入庫單。
SELECT a.cpoid AS 訂單號碼,
a.dpodate 采購日期,
a.cbustype AS 業務類型,
a.cvenname AS 供應商名稱,
a.cvenaddress 地址,
a.cvoucherstate 采購單狀態,
a.cmemo 備注,
a.cexch_name 幣種,
RIGHT(REPLICATE('0', 6) + LTRIM(b.ivouchrowno), 6) 行號,
b.cinvcode 存貨編碼,
b.cinvname 存貨名稱,
b.cinvstd 規格型號,
CONVERT(FLOAT, b.iquantity) 數量,
CONVERT(FLOAT, b.ireceivedqty) 累計入庫數量,
CONVERT(FLOAT, b.iinvqty) 累計開票數量,
rd.cBatch 批號,
PARSENAME(REPLACE(STUFF(rd.cbsysbarcode, 1, 2, ''), '|', '.'), 2) 入庫單號,
a.cmaker 創建人,
a.cverifier 審批人,
a.cptname 采購類型
FROM zpurpoheader a --采購訂單
LEFT JOIN zpurpotail b
ON a.poid = b.poid
LEFT JOIN rdrecords01 rd
ON rd.cPOID = a.cpoid
AND rd.irowno = b.ivouchrowno
WHERE a.cpoid = '訂單號'