U8常用查询语句:采购订单执行状态表


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM