gongchunyi
2026-04-24 c848c1bdbe9ed9268de3d181721a8b52905032cd
fix: 应付金额去重并扣减历史记录
已修改2个文件
59 ■■■■■ 文件已修改
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -209,21 +209,33 @@
    </select>
    <select id="supplierNameListPageDetails" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
         SELECT
    T1.purchase_contract_number,
    T1.contract_amount AS invoiceAmount,
    IFNULL(SUM(T2.current_payment_amount), 0) AS paymentAmount,
    IFNULL((T1.contract_amount - IFNULL(SUM(T2.current_payment_amount), 0)), 0) AS payableAmount,
    T2.payment_date
    FROM purchase_ledger T1
    INNER JOIN payment_registration T2 ON T1.id = T2.purchase_ledger_id
    <where>
        T1.supplier_id = #{req.supplierId}
        <if test="req.supplierName != null and req.supplierName != '' ">
            AND T1.supplier_name LIKE CONCAT ('%', #{req.supplierName}, '%')
        </if>
    </where>
    GROUP BY T1.id, T1.purchase_contract_number, T1.contract_amount, T2.payment_date
        SELECT
        T2.id,
        T1.purchase_contract_number,
        T1.contract_amount AS invoiceAmount,
        IFNULL(T2.current_payment_amount, 0) AS paymentAmount,
        IFNULL((
        T1.contract_amount - IFNULL((
        SELECT SUM(T3.current_payment_amount)
        FROM payment_registration T3
        WHERE T3.purchase_ledger_id = T1.id
        AND (
        T3.payment_date &lt; T2.payment_date
        OR (T3.payment_date = T2.payment_date AND T3.id &lt;= T2.id)
        )
        ), 0)
        ), 0) AS payableAmount,
        T2.payment_date
        FROM purchase_ledger T1
        INNER JOIN payment_registration T2 ON T1.id = T2.purchase_ledger_id
        <where>
            T1.supplier_id = #{req.supplierId}
            <if test="req.supplierName != null and req.supplierName != '' ">
                AND T1.supplier_name LIKE CONCAT ('%', #{req.supplierName}, '%')
            </if>
        </where>
        ORDER BY T2.payment_date ASC, T2.id ASC
    </select>
</mapper>
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -435,10 +435,21 @@
    <select id="invoiceLedgerSalesAccount" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto">
        SELECT
        T2.id,
        T1.sales_contract_no,
        T1.contract_amount AS invoice_total,
        IFNULL(SUM(T2.receipt_payment_amount), 0) AS receipt_payment_amount,
        IFNULL((T1.contract_amount - IFNULL(SUM(T2.receipt_payment_amount), 0)), 0) AS unReceipt_payment_amount,
        IFNULL(T2.receipt_payment_amount, 0) AS receipt_payment_amount,
        IFNULL((
        T1.contract_amount - IFNULL((
        SELECT SUM(T3.receipt_payment_amount)
        FROM receipt_payment T3
        WHERE T3.sales_ledger_id = T1.id
        AND (
        T3.receipt_payment_date &lt; T2.receipt_payment_date
        OR (T3.receipt_payment_date = T2.receipt_payment_date AND T3.id &lt;= T2.id)
        )
        ), 0)
        ), 0) AS unReceipt_payment_amount,
        T2.receipt_payment_date
        FROM sales_ledger T1
        INNER JOIN receipt_payment T2 ON T1.id = T2.sales_ledger_id
@@ -448,7 +459,7 @@
                AND T1.customer_name LIKE CONCAT ('%', #{invoiceLedgerDto.searchText}, '%')
            </if>
        </where>
        GROUP BY T1.id, T1.sales_contract_no, T1.contract_amount, T2.receipt_payment_date
        ORDER BY T2.receipt_payment_date ASC, T2.id ASC
    </select>
</mapper>