From 5a347be900bf045c947cdbc08167526cd44116db Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 12 十月 2026 18:18:50 +0800
Subject: [PATCH] fix(erp/crm): 单据明细单价口径由「不含税单价」改为「含税单价」

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
index 54d6447..314951b 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -110,8 +110,10 @@
         if (createReqVO.getSupplierId() != null) {
             supplierService.validateSupplier(createReqVO.getSupplierId());
         }
-        // 3. 鐢熸垚鐢宠鍗曞彿
-        String no = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX);
+        // 3. 纭畾鐢宠鍗曞彿锛堝墠绔~鍐欏垯鐢ㄨ嚜瀹氫箟鍗曞彿锛岀暀绌哄垯鑷姩鐢熸垚锛夛紝骞舵牎楠屽敮涓�鎬�
+        String customNo = StrUtil.trim(createReqVO.getNo());
+        String no = StrUtil.isNotBlank(customNo) ? customNo
+                : noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_REQUEST_NO_PREFIX);
         if (purchaseRequestMapper.selectByNo(no) != null) {
             throw exception(PURCHASE_REQUEST_NO_EXISTS);
         }
@@ -363,10 +365,14 @@
     private List<ErpPurchaseRequestItemDO> validatePurchaseRequestItems(List<ErpPurchaseRequestSaveReqVO.Item> list) {
         return convertList(list, o -> BeanUtils.toBean(o, ErpPurchaseRequestItemDO.class, item -> {
             if (item.getProductPrice() != null && item.getCount() != null) {
-                item.setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount()));
+                // 鍗曚环涓哄惈绋庡崟浠凤細鍚◣閲戦 = 鍗曚环 脳 鏁伴噺锛涚◣棰� = 鍚◣閲戦 脳 绋庣巼锛涗笉鍚◣閲戦 = 鍚◣閲戦 - 绋庨
+                BigDecimal taxInclusivePrice = MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount());
+                BigDecimal taxPrice = null;
                 if (item.getTaxPercent() != null) {
-                    item.setTaxPrice(MoneyUtils.priceMultiplyPercent(item.getTotalPrice(), item.getTaxPercent()));
+                    taxPrice = MoneyUtils.priceMultiplyPercent(taxInclusivePrice, item.getTaxPercent());
                 }
+                item.setTaxPrice(taxPrice);
+                item.setTotalPrice(taxPrice != null ? taxInclusivePrice.subtract(taxPrice) : taxInclusivePrice);
             }
         }));
     }

--
Gitblit v1.9.3