gaoluyang
14 小时以前 9cd4074a456fd5c422506279191b6015836347e5
src/main/resources/mapper/basic/SupplierManageMapper.xml
@@ -13,6 +13,7 @@
        T1.company_phone,
        T1.bank_account_name,
        T1.bank_account_num,
        T1.bank_code,
        T1.contact_user_name,
        T1.contact_user_phone,
        T1.maintain_user_id,
@@ -47,6 +48,7 @@
        T1.company_phone,
        T1.bank_account_name,
        T1.bank_account_num,
        T1.bank_code,
        T1.contact_user_name,
        T1.contact_user_phone,
        T1.maintain_user_id,
@@ -74,9 +76,9 @@
               sm.supplier_name,
               T1.contractAmounts,
               IFNULL(T2.paymentAmount, 0) AS paymentAmount,
               T1.contractAmounts - (IFNULL(T2.paymentAmount, 0) - IFNULL(T4.returnAmount, 0)) AS payableAmount,
               T1.contractAmounts - IFNULL(T2.paymentAmount, 0) - IFNULL(T4.returnAmount, 0) AS payableAmount,
               IFNULL(T4.returnAmount, 0) AS returnAmount
        from (select supplier_id, sum(COALESCE(net_contract_amount, contract_amount)) as contractAmounts from purchase_ledger group by supplier_id) T1
        from (select supplier_id, sum(contract_amount) as contractAmounts from purchase_ledger group by supplier_id) T1
        left join (select supplier_id, sum(payment_amount) as paymentAmount from account_purchase_payment group by supplier_id) T2 on T1.supplier_id = T2.supplier_id
        left join (
            select
@@ -98,25 +100,40 @@
       select pl.id  purchaseLedgerId,
              pl.purchase_contract_number,
              pl.execution_date,
              COALESCE(pl.net_contract_amount, pl.contract_amount) AS contract_amount,
              pl.contract_amount AS contract_amount,
              IFNULL(T1.paymentAmount, 0) AS paymentAmount,
              COALESCE(pl.net_contract_amount, pl.contract_amount) - (IFNULL(T1.paymentAmount, 0) - IFNULL(T3.returnAmount, 0)) AS payableAmount,
              pl.contract_amount - IFNULL(T1.paymentAmount, 0) - IFNULL(T3.returnAmount, 0) AS payableAmount,
              IFNULL(T3.returnAmount, 0) AS returnAmount
       from purchase_ledger pl
       left join (
           select
               pl.id,
               sum(app.payment_amount) as paymentAmount
           from account_purchase_payment app
           left join account_payment_application apa on app.account_payment_application_id = apa.id
           left join stock_in_record sir on FIND_IN_SET(sir.id, apa.stock_in_record_ids) > 0
               -- 10 类型才关联质检表
           LEFT JOIN quality_inspect qi ON sir.record_type = 10 AND sir.record_id = qi.id
               -- 动态关联采购(自动适配 7 和 10)
           LEFT JOIN purchase_ledger pl
                     ON pl.id = IF(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
           WHERE sir.approval_status = 1
             AND sir.record_type IN ('7','10')
               sum(t.payment_amount) as paymentAmount
           from (
               select
                   app.id,
                   app.payment_amount,
                   -- 优先按入库单关联采购合同;入库单未审核/不存在时,回退按付款申请中的采购合同号关联,
                   -- 避免“新增付款”成功后明细中看不到该笔付款
                   COALESCE(
                       (select min(pl_sir.id)
                        from stock_in_record sir
                        left join quality_inspect qi on sir.record_type = 10 and sir.record_id = qi.id
                        left join purchase_ledger pl_sir
                               on pl_sir.id = if(sir.record_type = 7, sir.record_id, qi.purchase_ledger_id)
                        where find_in_set(sir.id, apa.stock_in_record_ids) > 0
                          and sir.approval_status = 1
                          and sir.record_type in ('7','10')),
                       (select pl_no.id
                        from purchase_ledger pl_no
                        where pl_no.purchase_contract_number = apa.payment_content
                        order by pl_no.id
                        limit 1)
                   ) as purchase_ledger_id
               from account_purchase_payment app
               left join account_payment_application apa on app.account_payment_application_id = apa.id
           ) t
           left join purchase_ledger pl on t.purchase_ledger_id = pl.id
           group by pl.id
       )T1 on T1.id = pl.id
       left join (