From b9ff70814c4f8fffb7646fb0ea72a2a60b4068b0 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期三, 14 十月 2026 14:11:09 +0800
Subject: [PATCH] fix: 更新出库金额计算逻辑,确保按销售明细的含税总额折算,避免因小数位数导致的应收差异

---
 src/main/resources/mapper/basic/CustomerMapper.xml |   49 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/src/main/resources/mapper/basic/CustomerMapper.xml b/src/main/resources/mapper/basic/CustomerMapper.xml
index 404fdd9..86345e5 100644
--- a/src/main/resources/mapper/basic/CustomerMapper.xml
+++ b/src/main/resources/mapper/basic/CustomerMapper.xml
@@ -119,6 +119,15 @@
            鍥犳鍗曟潯鍙拌处鐨勫簲鏀堕噾棰濇寜鍒嗚绠楋紝鍒嗕互涓嬬殑灏惧樊涓嶈鍏ャ��
       娉ㄦ剰 蹇呴』鍏堟寜鍙拌处绠楀ソ搴旀敹銆佸啀鎸夊鎴锋眹鎬伙紙涓� customewTransactionsDetails 鍙e緞涓�鑷达級銆�
            鑻ュ厛鎸夊鎴锋眹鎬诲啀鍙栨暣锛屽悇瀹跺彴璐︾殑灏惧樊浼氱疮鍔狅紝鍑虹幇銆屼富琛� 0.01銆佹槑缁嗗叏鏄� 0銆嶇殑瀵逛笉涓婇棶棰樸��
+      娉ㄦ剰 鈽� 鍑哄簱閲戦鎸夈�岄攢鍞槑缁嗙殑鍚◣鎬婚銆嶆姌绠楋紝涓嶈兘鐩存帴鐢ㄣ�屽嚭搴撴暟閲� 脳 鍚◣鍗曚环銆嶏細
+              鍑哄簱閲戦 = 危 ROUND( 璇ユ槑缁嗗惈绋庢�婚 脳 LEAST(1, 璇ユ槑缁嗗凡鍑哄簱閲� / 璇ユ槑缁嗛攢鍞暟閲�), 2 )
+            鍘熷洜锛氶攢鍞暟閲忓彲鑳藉甫 3 浣嶅皬鏁帮紙濡� 47.328锛夛紝鑰屽嚭搴撴暟閲忔寜鎵嬪唽 搂5.6 鍙繚鐣� 2 浣嶏紙47.33锛夈��
+            鐩存帴鐩镐箻寰� 47.33 脳 172 = 8140.76锛岃�屽紑绁ㄩ噾棰濇槸 47.328 脳 172 = 8140.42锛�
+            鍑┖澶氬嚭 0.34 鐨勫簲鏀� 鈥斺�� 瀹炴祴榛戦緳姹熷寳鐩涘6鍏冲垎鍏徃 13370.02 宸插叏棰濆洖娆撅紝
+            椤甸潰涓婂嵈浠嶆樉绀烘瑺 0.34銆�
+            路 LEAST(1, ...) 鐢ㄦ潵灏侀《锛氬嚭搴撻噺 鈮� 閿�鍞暟閲忔椂鏈�澶氱畻鏁存潯鏄庣粏鐨勫紑绁ㄩ噾棰濓紝瓒呭彂涓嶅鍔犲簲鏀讹紱
+              鍑哄簱閲� < 閿�鍞暟閲忥紙閮ㄥ垎鍙戣揣锛夋椂鎸夋瘮渚嬭銆�
+            路 姣忔潯鏄庣粏鍗曠嫭 ROUND 鍒板垎锛岄伩鍏� 0.095 杩欑被鍒嗕互涓嬮浂澶寸疮绉垚搴旀敹銆�
       娉ㄦ剰 鍑哄簱閲戦鎸夊彴璐� (sales_ledger.id) 鑱氬悎锛屽悓涓�鍙戣揣鍗曞鎵瑰彿鍑哄簱鏃朵笉浼氶噸澶嶈鏁般��
     -->
     <select id="customewTransactions" resultType="com.ruoyi.sales.vo.CustomerTransactionsVo">
@@ -158,14 +167,18 @@
             left join (
                 SELECT
                     sl.id,
-                    sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
-                FROM stock_out_record sor
-                    left join shipping_info s on sor.record_id = s.id
-                    LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
-                    LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
-                WHERE sor.record_type='13'
-                    and sor.approval_status=1
-                    and slp.type = 1
+                    sum(ROUND(slp.tax_inclusive_total_price
+                              * LEAST(1, ship.out_qty / NULLIF(slp.quantity, 0)), 2)) as outboundAmount
+                FROM (
+                    SELECT sor.record_id AS shipping_id, SUM(sor.stock_out_num) AS out_qty
+                    FROM stock_out_record sor
+                    WHERE sor.record_type='13' AND sor.approval_status=1
+                    GROUP BY sor.record_id
+                ) ship
+                JOIN shipping_info s ON s.id = ship.shipping_id
+                LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+                LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
+                WHERE slp.type = 1
                 group by sl.id
             ) T3 on T3.id = sl.id
             left join (
@@ -227,14 +240,18 @@
         left join (
             SELECT
                 sl.id,
-                sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount
-            FROM stock_out_record sor
-                     left join shipping_info s on sor.record_id = s.id
-                     LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
-                     LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
-            WHERE sor.record_type='13'
-              and sor.approval_status=1
-              and slp.type = 1
+                sum(ROUND(slp.tax_inclusive_total_price
+                          * LEAST(1, ship.out_qty / NULLIF(slp.quantity, 0)), 2)) as outboundAmount
+            FROM (
+                SELECT sor.record_id AS shipping_id, SUM(sor.stock_out_num) AS out_qty
+                FROM stock_out_record sor
+                WHERE sor.record_type='13' AND sor.approval_status=1
+                GROUP BY sor.record_id
+            ) ship
+            JOIN shipping_info s ON s.id = ship.shipping_id
+            LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
+            LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id
+            WHERE slp.type = 1
             group by  sl.id
         )T2 on T2.id = sl.id
         left join (

--
Gitblit v1.9.3