个人能力有限,在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 = '订单号'