From 55d694aaae4e421b5e55cd941500e08f85cb5d4d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 27 八月 2026 18:21:33 +0800
Subject: [PATCH] feat(sales): 添加框架合同订单功能并优化销售台账管理

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

diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 14d5f1d..4ea9439 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -33,7 +33,7 @@
         WHEN (IFNULL(t2.qualitity, 0) - IFNULL(t2.locked_quantity, 0)) >0 THEN 1
         ELSE 0
         END as has_sufficient_stock,
-        (IFNULL(T1.quantity, 0) - IFNULL(t3.shipped_quantity, 0) - IFNULL(t5.pending_approval_quantity, 0)) as no_quantity,
+        NULL as no_quantity,
         IFNULL(t3.shipped_quantity, 0) as shipped_quantity,
         IFNULL(t6.return_quantity, 0) as return_quantity,
         IFNULL(t4.approved_stock_in_num, 0) as approved_stock_in_num,
@@ -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