From 0b37ca51f1d90aedaad7fa883e7248cd2ebe7b45 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 06 七月 2026 11:51:21 +0800
Subject: [PATCH] fix(database): 修正客户和供应商应收应付金额计算逻辑 公式:应收/应付 = 合同金额 - 回款/付款金额 - 退货金额

---
 src/main/resources/mapper/sales/SalesLedgerProductMapper.xml |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 14d5f1d..9e6839f 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -96,6 +96,22 @@
             AND so.product_model_id = slp.product_model_id
         WHERE slp.type = 2
         GROUP BY slp.id
+
+        UNION ALL
+
+        -- 閿�鍞彴璐�(type=1): shipping_info 鐩存帴鎸� sales_ledger_product_id,鍙粺璁″嚭搴撳鏍搁�氳繃(approval_status=1)鐨勫彂璐ч噺,涓� t5 鐨� pending 閫昏緫浜掕ˉ
+        SELECT
+            si.sales_ledger_product_id AS sales_ledger_product_id,
+            IFNULL(SUM(spd.quantity), 0) AS shipped_quantity
+        FROM shipping_info si
+        INNER JOIN shipping_product_detail spd ON si.id = spd.shipping_info_id
+        INNER JOIN stock_out_record sor
+            ON sor.record_id = si.id
+           AND TRIM(sor.record_type) = '13'
+           AND sor.approval_status = 1
+        WHERE si.status IN ('瀹℃牳閫氳繃', '宸插彂璐�')
+          AND si.sales_ledger_product_id IS NOT NULL
+        GROUP BY si.sales_ledger_product_id
         ) t3 ON t3.sales_ledger_product_id = T1.id
         LEFT JOIN (
         SELECT rel.sales_ledger_product_id,
@@ -151,6 +167,20 @@
             LEFT JOIN purchase_return_orders pro
                 ON pro.id = prop.purchase_return_order_id
             GROUP BY prop.sales_ledger_product_id
+
+            UNION ALL
+
+            SELECT
+                si.sales_ledger_product_id,
+                IFNULL(SUM(rsp.num), 0) AS return_quantity
+            FROM return_sale_product rsp
+            INNER JOIN return_management rm ON rm.id = rsp.return_management_id
+            INNER JOIN shipping_info si ON si.id = rm.shipping_id
+            INNER JOIN stock_in_record sir ON sir.record_id = rsp.id
+                AND TRIM(sir.record_type) IN ('14','15')
+                AND sir.approval_status = 1
+            WHERE si.sales_ledger_product_id IS NOT NULL
+            GROUP BY si.sales_ledger_product_id
         ) t6 ON t6.sales_ledger_product_id = T1.id
         left join product_model pm ON T1.product_model_id = pm.id
         left join product p ON pm.product_id = p.id

--
Gitblit v1.9.3