From c5dfd00d511914ee59b10f5c6cc84a1d1ae50bb9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 20:35:45 +0800
Subject: [PATCH] feat(crm): 回款合同与关联开票改为非必填

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java |   34 ++++++++++++++++++++++------------
 1 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
index 02dad68..f1c7916 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableServiceImpl.java
@@ -80,12 +80,17 @@
     public Long createReceivable(CrmReceivableSaveReqVO createReqVO) {
         // 1.1 鏍¢獙鍏宠仈鏁版嵁瀛樺湪
         validateRelationDataExists(createReqVO);
-        // 1.2 鏍¢獙鍏宠仈寮�绁ㄥ悎鏍硷紙瀹℃壒閫氳繃 + 宸蹭笂浼犲彂绁ㄩ檮浠� + 涓庡悎鍚屽尮閰嶏級
-        validateInvoiceForReceivable(createReqVO);
-        // 1.3 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃鍚堝悓鍓╀綑鍙洖娆鹃噾棰�
-        validateReceivablePriceExceedsLimit(createReqVO);
-        // 1.4 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃璇ュ紑绁ㄥ墿浣欏彲鍥炴閲戦锛堝厛寮�绁ㄥ悗鍥炴锛�
-        validateReceivablePriceExceedsInvoiceRemaining(createReqVO);
+        // 1.2 鍚堝悓銆佸叧鑱斿紑绁ㄥ潎涓洪潪蹇呭~锛氭湭閫夋嫨鏃惰烦杩囧搴旀牎楠岋紝浠呮寜宸插~鍐欑殑缁村害绾︽潫閲戦
+        if (createReqVO.getContractId() != null) {
+            // 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃鍚堝悓鍓╀綑鍙洖娆鹃噾棰�
+            validateReceivablePriceExceedsLimit(createReqVO);
+        }
+        if (createReqVO.getInvoiceId() != null) {
+            // 鏍¢獙鍏宠仈寮�绁ㄥ悎鏍硷紙瀹℃壒閫氳繃 + 宸蹭笂浼犲彂绁ㄩ檮浠� + 涓庡悎鍚屽尮閰嶏級
+            validateInvoiceForReceivable(createReqVO);
+            // 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃璇ュ紑绁ㄥ墿浣欏彲鍥炴閲戦锛堝厛寮�绁ㄥ悗鍥炴锛�
+            validateReceivablePriceExceedsInvoiceRemaining(createReqVO);
+        }
         // 1.5 鐢熸垚鍥炴缂栧彿
         String no = noRedisDAO.generate(CrmNoRedisDAO.RECEIVABLE_PREFIX);
         if (receivableMapper.selectByNo(no) != null) {
@@ -220,12 +225,17 @@
         if (updateReqVO.getInvoiceId() == null) {
             updateReqVO.setInvoiceId(oldReceivable.getInvoiceId());
         }
-        // 1.3 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃鍚堝悓鍓╀綑鍙洖娆鹃噾棰�
-        validateReceivablePriceExceedsLimit(updateReqVO);
-        // 1.4 鏍¢獙鍏宠仈寮�绁ㄥ悎鏍�
-        validateInvoiceForReceivable(updateReqVO);
-        // 1.5 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃璇ュ紑绁ㄥ墿浣欏彲鍥炴閲戦
-        validateReceivablePriceExceedsInvoiceRemaining(updateReqVO);
+        // 1.3 鍚堝悓銆佸叧鑱斿紑绁ㄥ潎涓洪潪蹇呭~锛氭湭濉啓鏃惰烦杩囧搴旀牎楠�
+        if (updateReqVO.getContractId() != null) {
+            // 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃鍚堝悓鍓╀綑鍙洖娆鹃噾棰�
+            validateReceivablePriceExceedsLimit(updateReqVO);
+        }
+        if (updateReqVO.getInvoiceId() != null) {
+            // 鏍¢獙鍏宠仈寮�绁ㄥ悎鏍�
+            validateInvoiceForReceivable(updateReqVO);
+            // 鏍¢獙鍙洖娆鹃噾棰濅笉瓒呰繃璇ュ紑绁ㄥ墿浣欏彲鍥炴閲戦
+            validateReceivablePriceExceedsInvoiceRemaining(updateReqVO);
+        }
 
         // 1.6 鍙湁鏈鏍革紝鍙互缂栬緫锛�
         if (ObjectUtil.notEqual(oldReceivable.getAuditStatus(), CrmAuditStatusEnum.PROCESS.getStatus())) {

--
Gitblit v1.9.3