From 6bacf93d628a974bb4882029e3a8847d5715572f Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 25 六月 2026 15:19:38 +0800
Subject: [PATCH] feat(purchase): 采购添加实际合同金额字段并实现退货扣减逻辑

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
index 318c36d..dd8fa0f 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -14,6 +14,7 @@
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
 import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.purchase.pojo.PurchaseReturnOrderProducts;
 import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
 import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
@@ -28,6 +29,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -76,6 +78,18 @@
         }else {
             throw new RuntimeException("璇烽�夋嫨閫�璐у晢鍝�");
         }
+
+        // 鏇存柊閲囪喘鍙拌处鐨勫疄闄呭悎鍚岄噾棰�
+        if (purchaseReturnOrderDto.getPurchaseLedgerId() != null && purchaseReturnOrderDto.getTotalAmount() != null) {
+            PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseReturnOrderDto.getPurchaseLedgerId());
+            if (purchaseLedger != null) {
+                BigDecimal baseAmount = purchaseLedger.getNetContractAmount() != null
+                        ? purchaseLedger.getNetContractAmount()
+                        : purchaseLedger.getContractAmount();
+                purchaseLedger.setNetContractAmount(baseAmount.subtract(purchaseReturnOrderDto.getTotalAmount()));
+                purchaseLedgerMapper.updateById(purchaseLedger);
+            }
+        }
         return true;
     }
 

--
Gitblit v1.9.3