From 3481d209ec847542b73fa16616ffe0e13c949e80 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 18 四月 2026 18:11:03 +0800
Subject: [PATCH] fix: 入库与出库数量绑定
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 26 +++++++++++++++++---------
1 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index ab45874..ac28c29 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -193,19 +193,27 @@
if (item.getFutureTicketsAmount() == null || item.getFutureTicketsAmount().compareTo(BigDecimal.ZERO) == 0) {
item.setFutureTicketsAmount(BigDecimal.ZERO);
}
- if (item.getApproveStatus() == null || item.getApproveStatus() != 2) {
- Integer hasSufficientStock = item.getHasSufficientStock();
- if (hasSufficientStock != null && hasSufficientStock == 0) {
- item.setApproveStatus(0);
- } else {
- item.setApproveStatus(1);
- }
- }
BigDecimal returnQuality = finalReturnOrderGroupDtoMap.getOrDefault(item.getId(), BigDecimal.ZERO);
item.setReturnQuality(returnQuality);
BigDecimal quantity = item.getQuantity() == null ? BigDecimal.ZERO : item.getQuantity();
- item.setAvailableQuality(quantity.subtract(returnQuality));
+ BigDecimal shipped = item.getShippedQuantity() == null ? BigDecimal.ZERO : item.getShippedQuantity();
+ BigDecimal available = quantity.subtract(returnQuality).subtract(shipped);
+ item.setAvailableQuality(available.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : available);
item.fillRemainingQuantity();
+ if (item.getApproveStatus() == null || item.getApproveStatus() != 2) {
+ BigDecimal remainingShipped = item.getRemainingShippedQuantity() == null ? BigDecimal.ZERO : item.getRemainingShippedQuantity();
+ boolean hasOutbound = shipped.compareTo(BigDecimal.ZERO) > 0;
+ if (hasOutbound && remainingShipped.compareTo(BigDecimal.ZERO) <= 0) {
+ item.setApproveStatus(0);
+ } else {
+ Integer hasSufficientStock = item.getHasSufficientStock();
+ if (hasSufficientStock != null && hasSufficientStock == 0) {
+ item.setApproveStatus(0);
+ } else {
+ item.setApproveStatus(1);
+ }
+ }
+ }
ProductModel productModel = finalProductModelMap.get(item.getProductModelId());
if (productModel != null) {
item.setThickness(productModel.getThickness());
--
Gitblit v1.9.3