From 7dfff767d0fae788ba2bf67a707ce41836bd0f42 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 13 十月 2026 14:03:35 +0800
Subject: [PATCH] fix: 优化客户往来查询逻辑,调整应收金额计算方式以避免尾差问题
---
src/main/resources/mapper/basic/SupplierManageMapper.xml | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/main/resources/mapper/basic/SupplierManageMapper.xml b/src/main/resources/mapper/basic/SupplierManageMapper.xml
index 8496792..f76c819 100644
--- a/src/main/resources/mapper/basic/SupplierManageMapper.xml
+++ b/src/main/resources/mapper/basic/SupplierManageMapper.xml
@@ -75,18 +75,20 @@
c.contractAmounts,
-- 浠樻閲戦锛氶�愬悎鍚屾寜鍚堝悓閲戦灏侀《鍚庡啀姹囨�伙紝閬垮厤閲嶅浠樻瀵艰嚧浠樻閲戦澶т簬鍚堝悓閲戦
c.paymentAmount,
- -- 搴斾粯閲戦锛氶�愬悎鍚屻�屽彇(鍏ュ簱閲戦, 鍚堝悓閲戦)杈冨皬鑰� - 灏侀《鍚庝粯娆鹃噾棰� - 閫�璐ч噾棰濄�嶅悗鍐嶆眹鎬伙紝涓嬮檺涓� 0
+ -- 搴斾粯閲戦锛氶�愬悎鍚屻�屽彇(鍏ュ簱閲戦, 鍚堝悓閲戦)杈冨皬鑰� - 灏侀《鍚庝粯娆鹃噾棰� - 閫�璐ч噾棰濄�嶅悗鍐嶆眹鎬伙紝涓嬮檺涓� 0銆�
+ -- 鍏ュ簱閲戦鐢� 6 浣嶅皬鏁扮殑鍚◣鍗曚环绱姞鑰屾潵锛屼細甯﹀嚭銆屽帢銆嶅強浠ヤ笅鐨勫皬鏁帮紝
+ -- 鍥犳閫愬悎鍚屽厛鍥涜垗浜斿叆鍒板垎鍐嶆眹鎬伙紝淇濊瘉銆屼緵搴斿晢搴斾粯閲戦 = 鍚勫悎鍚屽簲浠橀噾棰濅箣鍜屻�嶃�佷笖椤甸潰涓婂彧鍑虹幇 2 浣嶅皬鏁般��
c.payableAmount
from (
select pl.supplier_id,
sum(COALESCE(pl.contract_amount, 0)) as contractAmounts,
sum(LEAST(IFNULL(pay.paymentAmount, 0), COALESCE(pl.contract_amount, 0))) as paymentAmount,
- sum(GREATEST(
+ sum(ROUND(GREATEST(
IFNULL(ib.InboundAmount, 0)
- IF(ib.InboundAmount <![CDATA[ > ]]> COALESCE(pl.contract_amount, 0), ib.InboundAmount - COALESCE(pl.contract_amount, 0), 0)
- LEAST(IFNULL(pay.paymentAmount, 0), COALESCE(pl.contract_amount, 0))
- IFNULL(rt.returnAmount, 0)
- , 0)) as payableAmount
+ , 0), 2)) as payableAmount
from purchase_ledger pl
left join (
select
@@ -150,12 +152,13 @@
-- 搴斾粯閲戦 = 鍙�(鍏ュ簱閲戦, 鍚堝悓閲戦)鐨勮緝灏忚�� - 灏侀《鍚庝粯娆鹃噾棰� - 閫�璐ч噾棰�
-- 鍏ュ簱閲戦鎸夊悎鍚岄噾棰濆皝椤讹紝閬垮厤鍏ュ簱娴佺▼閲嶅鎻愪氦瀵艰嚧搴斾粯閲戦澶т簬鍚堝悓閲戦锛�
-- 宸蹭粯娆鹃噾棰濓紙鍥炴/浠樻鍗曪級涓庨��璐ч噾棰濆潎闇�浠庡簲浠樹腑鎵e噺銆�
- GREATEST(
+ -- 閫愬悎鍚屽洓鑸嶄簲鍏ュ埌鍒嗭紙涓� supplierTransactions 姹囨�诲彛寰勪竴鑷达級锛岄伩鍏嶅嚭鐜� 3 浣嶄互涓婂皬鏁�
+ ROUND(GREATEST(
IFNULL(T2.InboundAmount, 0)
- IF(T2.InboundAmount <![CDATA[ > ]]> COALESCE(pl.contract_amount, 0), T2.InboundAmount - COALESCE(pl.contract_amount, 0), 0)
- LEAST(IFNULL(T1.paymentAmount, 0), COALESCE(pl.contract_amount, 0))
- IFNULL(T3.returnAmount, 0)
- , 0) AS payableAmount
+ , 0), 2) AS payableAmount
from purchase_ledger pl
left join (
select
--
Gitblit v1.9.3