| | |
| | | SELECT |
| | | T1.id , |
| | | T1.sales_ledger_id , |
| | | T1.sales_contract_no , |
| | | T1.customer_id , |
| | | T1.invoice_no , |
| | | T1.invoice_amount , |
| | | T1.tax_rate , |
| | | T3.sales_contract_no AS sales_contract_no, |
| | | T3.customer_id AS customer_id, |
| | | T4.invoice_no AS invoice_no, |
| | | T4.invoice_total AS invoice_amount, |
| | | T5.tax_rate AS tax_rate, |
| | | T1.receipt_payment_type , |
| | | T1.receipt_payment_amount , |
| | | T1.registrant , |
| | |
| | | T3.customer_contract_no, |
| | | T2.customer_name |
| | | FROM receipt_payment T1 |
| | | LEFT JOIN customer T2 ON T1.customer_id = T2.id |
| | | LEFT JOIN sales_ledger T3 ON T1.sales_ledger_id = T3.id |
| | | <!-- 2026-10-12 修复:receipt_payment 表里没有 sales_contract_no / customer_id / invoice_no / |
| | | invoice_amount / tax_rate 这 5 列,原来的 T1.xxx 必然抛 ER_BAD_FIELD_ERROR。 |
| | | 客户与合同号从 sales_ledger 取,发票信息从 invoice_ledger / invoice_registration_product 取。 --> |
| | | LEFT JOIN sales_ledger T3 ON T3.id = T1.sales_ledger_id |
| | | LEFT JOIN customer T2 ON T2.id = T3.customer_id |
| | | LEFT JOIN invoice_ledger T4 ON T4.id = T1.invoice_ledger_id |
| | | LEFT JOIN invoice_registration_product T5 ON T5.id = T4.invoice_registration_product_id |
| | | WHERE T1.id = #{id} |
| | | </select> |
| | | |
| | |
| | | FROM invoice_ledger_file |
| | | GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1 |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and T5.type = 1 |
| | | LEFT JOIN ( |
| | | SELECT |
| | | SUM(receipt_payment_amount) AS receipt_payment_amount_total, |
| | |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1 |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and T5.type = 1 |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_id |
| | |
| | | GROUP_CONCAT( name ORDER BY id ASC SEPARATOR ' | ') AS invoiceFileName |
| | | FROM invoice_ledger_file GROUP BY invoice_ledger_id |
| | | ) T4 ON T4.invoice_ledger_id = T1.id |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and slp.type = 1 |
| | | LEFT JOIN sales_ledger_product T5 ON T2.sales_ledger_product_id = T5.id and T5.type = 1 |
| | | LEFT JOIN ( |
| | | SELECT SUM(receipt_payment_amount) AS receipt_payment_amount_total,invoice_ledger_id FROM receipt_payment GROUP |
| | | BY invoice_ledger_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, |
| | | <!-- 2026-10-13 修复:原来写的是「合同额 − 本日期这一笔回款」,再叠加 GROUP BY receipt_payment_date, |
| | | 一笔台账有几笔回款就会拆成几行,每行都显示一个假的"应收"(例如 XS202605001 已全额回款, |
| | | 却显示应收 1544.40)。应收金额应当是**该合同当前真正的未回款额 = 合同额 − 全部回款**。 --> |
| | | GREATEST(T1.contract_amount - IFNULL(( |
| | | SELECT SUM(T3.receipt_payment_amount) FROM receipt_payment T3 |
| | | WHERE T3.sales_ledger_id = T1.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 |
| | |
| | | </if> |
| | | </where> |
| | | GROUP BY T1.id, T1.sales_contract_no, T1.contract_amount, T2.receipt_payment_date |
| | | ORDER BY T1.entry_date ASC, T2.receipt_payment_date ASC |
| | | </select> |
| | | |
| | | </mapper> |