采购对帐单相关SQL

#采购对帐单pi_purchase_statement
SELECT
    pps.PURCHASE_STATEMENT_ID,
    pps. CODE,
    pps.OWNER_ID,
    pps.SUPPLIER_ID,
    pps.ORDER_TYPE,
    pps.TOTAL_AMOUNT,
    pps.TOTAL_NOW_AMOUNT,
    pps.STATEMENT_DATE_FROM,
    pps.STATEMENT_DATE_TO,
    pps.OP_STAFF_ID,
    pps.DEPARTMENT_ID,
    pps. STATUS,
    pps.PRINT_COUNT,
    pps.PRINT_STAFF_ID,
    pps.PRINT_TIME,
    pps.REMARK,
    pps.VERIFY_STAFF_ID,
    pps.VERIFY_TIME,
    pps.CREATE_STAFF_ID,
    pps.CREATE_TIME,
    pps.UPDATE_TIME,
    pps.UPDATE_STAFF_ID,
    pps.COMPANY_ID,
    pps.SYSTEM_ID,
    pis. NAME SUPPLIER_NAME,
    adp. NAME DEPARTMENT_NAME,
    pio. NAME OWNER_NAME,
    adsa. NAME OP_STAFF_NAME,
    adsb. NAME VERIFY_STAFF_NAME,
    adsc. NAME CREATE_STAFF_NAME
FROM
    pi_purchase_statement pps
LEFT JOIN pi_suppliers pis ON pis.id = pps.supplier_id
LEFT JOIN ad_department adp ON adp.DEPARTMENT_ID = pps.department_id
LEFT JOIN pi_owner pio ON pio.id = pps.owner_id
LEFT JOIN ad_staff adsa ON adsa.staff_id = pps.OP_STAFF_ID
LEFT JOIN ad_staff adsb ON adsb.staff_id = pps.VERIFY_STAFF_ID
LEFT JOIN ad_staff adsc ON adsc.staff_id = pps.CREATE_STAFF_ID
LEFT JOIN pi_purchase_statement_list pssl ON pssl.PURCHASE_STATEMENT_ID = pps.PURCHASE_STATEMENT_ID
LEFT JOIN pi_purchase_balance ppb ON ppb.ORDER_ID = pps.PURCHASE_STATEMENT_ID
WHERE
    1 = 1
#AND pps. STATUS IN (?, ?, ?, ?)
AND pps.COMPANY_ID = '1000001425'
GROUP BY
    pps.PURCHASE_STATEMENT_ID
ORDER BY
    pps.CREATE_TIME DESC
LIMIT 50;

#采购对帐单-对账明细列表
SELECT
    IFNULL(
        IFNULL(
            ppi.ID,
            ppe.PURCHASE_EXPENSE_ID
        ),
        pppb.PRTMANUFACT_PRICE_BILL_ID
    ) AS ORDER_ID,
    IFNULL(
        IFNULL(ppi. CODE, ppe. CODE),
        pppb. CODE
    ) AS ORDER_CODE,
    IFNULL(
        IFNULL(
            ppi.ORDER_TYPE,
            ppe.ORDER_TYPE
        ),
        pppb.ORDER_TYPE
    ) AS ORDER_TYPE,
    get_lookup_code_name (
        IFNULL(
            IFNULL(
                ppi.ORDER_TYPE,
                ppe.ORDER_TYPE
            ),
            pppb.ORDER_TYPE
        )
    ) AS ORDER_TYPE_NAME,
    IFNULL(
        IFNULL(
            ppi.STOCK_INOUT_TIME,
            ppe.STOCK_TIME
        ),
        pppb.STOCK_TIME
    ) AS STATEMENT_DATE_FROM,
    IFNULL(
        IFNULL(
            ppe.ACCOUNT_DATE,
            ppi.ACCOUNT_DATE
        ),
        pppb.ACCOUNT_DATE
    ) AS ACCOUNT_DATE,
    IFNULL(ppi.TOTAL_QTY, 0) AS TOTAL_QTY,
    IFNULL(
        IFNULL(
            ppi.TOTAL_AMOUNT,
            ppe.TOTAL_AMOUNT
        ),
        pppb.TOTAL_MANUFACT_AMOUNT
    ) AS TOTAL_AMOUNT,
    IFNULL(ppb.CHECK_AMOUNT, 0) AS ALREADY_AMOUNT,
    IFNULL(
        IFNULL(adsa. NAME, adsb. NAME),
        adsc. NAME
    ) AS CREATE_STAFF_NAME,
    IFNULL(

        IF (
            pppb.BANYIN_REAL = NULL,
            IFNULL(mmp1. NAME, mmp2. NAME),
            CONCAT(
                IFNULL(mmp1. NAME, mmp2. NAME),
                '(',
                pppb.BANYIN_REAL,
                ')'
            )
        ),

    IF (
        ppe.BANYIN_REAL = NULL,
        IFNULL(mmp1. NAME, mmp2. NAME),
        CONCAT(
            IFNULL(mmp1. NAME, mmp2. NAME),
            '(',
            ppe.BANYIN_REAL,
            ')'
        )
    )
    ) AS PRODUCT_NAME,
    ppsl.REMARK,
    ppsl.NOW_AMOUNT,
    ppsl.PURCHASE_STATEMENT_LIST_ID,
    ppsl.PURCHASE_STATEMENT_ID,
    ppsl.PRIORITY,
    ppsl.ORDER_AMOUNT
FROM
    pi_purchase_statement_list ppsl
LEFT JOIN pi_purchase_balance ppb ON ppsl.order_type = ppb.order_type AND ppsl.order_id = ppb.order_id
LEFT JOIN pi_purchase_inout ppi ON ppsl.order_type = ppi.ORDER_TYPE AND ppsl.order_id = ppi.ID
LEFT JOIN pi_purchase_expense ppe ON ppsl.order_type = ppe.ORDER_TYPE AND ppsl.order_id = ppe.PURCHASE_EXPENSE_ID
LEFT JOIN mm_product mmp1 ON mmp1.PRODUCT_ID = ppe.PRODUCT_ID 
LEFT JOIN pi_prtmanufact_price_bill pppb ON ppsl.order_type = pppb.order_type AND ppsl.order_id = pppb.PRTMANUFACT_PRICE_BILL_ID
LEFT JOIN mm_product mmp2 ON mmp2.PRODUCT_ID = pppb.PRODUCT_ID
LEFT JOIN ad_staff adsa ON adsa.staff_id = ppi.CREATE_STAFF_ID
LEFT JOIN ad_staff adsb ON adsb.staff_id = ppe.CREATE_STAFF_ID
LEFT JOIN ad_staff adsc ON adsc.staff_id = pppb.CREATE_STAFF_ID
WHERE
    1 = 1
AND ppsl.PURCHASE_STATEMENT_ID = '1039264095'
GROUP BY
    IFNULL(
        IFNULL(
            ppi.ID,
            ppe.PURCHASE_EXPENSE_ID
        ),
        pppb.PRTMANUFACT_PRICE_BILL_ID
    )

#采购对帐单-材料明细列表
SELECT
    ppi.ID AS ORDER_ID,
    ppi.`CODE` AS ORDER_CODE,
    get_lookup_code_name (ppi.ORDER_TYPE) AS ORDER_TYPE_NAME,
    ppi.STOCK_INOUT_TIME AS STATEMENT_DATE_FROM,
    ppi.TOTAL_AMOUNT,
    ppil.QTY,
    ppil.LIST_TOTAL_AMOUNT AS ROW_AMOUNT,
    pm.`CODE` AS META_CODE,
    pm.META_NAME,
    pm.META_GWIGHT,
    pm.META_LENGTH,
    pm.META_WIDTH
FROM
    pi_purchase_statement_list ppsl
LEFT JOIN pi_purchase_inout ppi ON ppsl.order_type = ppi.ORDER_TYPE AND ppsl.order_id = ppi.ID
LEFT JOIN pi_purchase_inout_list ppil ON ppi.id = ppil.PURCHASE_INOUT_ID
LEFT JOIN pi_metarials pm ON ppil.meta_id = pm.id
WHERE
    1 = 1
AND ppi.ID IS NOT NULL
AND ppsl.PURCHASE_STATEMENT_ID = '1039264095'
ORDER BY
    ppi. CODE DESC,
    ppi.ORDER_TYPE DESC,
    META_CODE DESC

转载于:https://my.oschina.net/marlon520/blog/833195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值