From 03403ba333c3c0b7e6b0ae6895a5481edbfb5d08 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 02 七月 2026 14:40:39 +0800
Subject: [PATCH] 采购台账,可用数量为实际入库数量。存在采购质检部分合格入库情况。只有可用数量大于0进行采购退货操作

---
 src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index 60d6f4a..8b94eb7 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -139,6 +139,46 @@
         ORDER BY result.entry_date DESC
     </select>
 
+    <select id="selectReturnablePurchaseLedgerList" resultType="com.ruoyi.purchase.pojo.PurchaseLedger">
+        SELECT DISTINCT pl.*
+        FROM purchase_ledger pl
+        WHERE 1 = 1
+        <if test="c.purchaseContractNumber != null and c.purchaseContractNumber != ''">
+            AND pl.purchase_contract_number LIKE CONCAT('%', #{c.purchaseContractNumber}, '%')
+        </if>
+        <if test="c.supplierId != null">
+            AND pl.supplier_id = #{c.supplierId}
+        </if>
+        <if test="c.approvalStatus != null">
+            AND pl.approval_status = #{c.approvalStatus}
+        </if>
+        AND EXISTS (
+            SELECT 1
+            FROM stock_in_record sir
+            LEFT JOIN quality_inspect qi
+                ON sir.record_type = '10'
+               AND sir.record_id = qi.id
+            LEFT JOIN sales_ledger_product slp
+                ON slp.sales_ledger_id = pl.id
+               AND slp.product_model_id = sir.product_model_id
+               AND slp.type = 2
+            LEFT JOIN (
+                SELECT stock_in_record_id, SUM(return_quantity) AS total_return_num
+                FROM purchase_return_order_products
+                GROUP BY stock_in_record_id
+            ) rs ON rs.stock_in_record_id = sir.id
+            WHERE sir.approval_status = 1
+              AND sir.record_type IN ('7','10')
+              AND (
+                  (sir.record_type = '7' AND sir.record_id = pl.id)
+                  OR (sir.record_type = '10' AND qi.purchase_ledger_id = pl.id)
+              )
+              AND slp.id IS NOT NULL
+              AND GREATEST(sir.stock_in_num - COALESCE(rs.total_return_num, 0), 0) > 0
+        )
+        ORDER BY pl.entry_date DESC
+    </select>
+
     <select id="selectTotalPurchaseAmount" resultType="java.math.BigDecimal">
         SELECT IFNULL(SUM(contract_amount), 0)
         FROM purchase_ledger

--
Gitblit v1.9.3