From a1dfce6c7266bf922ab913a922219a554f71ade2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 12 十月 2026 18:27:00 +0800
Subject: [PATCH] 宁夏万通需求:CRM 开票新增时客户、合同改为非必填
---
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java
index a59c979..0216598 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java
@@ -26,6 +26,7 @@
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
+import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
@@ -85,6 +86,8 @@
@Resource
private CrmContractService contractService;
@Resource
+ private CrmCustomerService customerService;
+ @Resource
private CrmPermissionService permissionService;
@Resource
@@ -103,8 +106,10 @@
validateInvoicePriceExceedsLimit(createReqVO);
// 1.2 鏍¢獙鍏宠仈鏁版嵁瀛樺湪
validateRelationDataExists(createReqVO);
- // 1.3 鐢熸垚寮�绁ㄧ紪鍙�
- String no = noRedisDAO.generate(CrmNoRedisDAO.INVOICE_PREFIX);
+ // 1.3 纭畾寮�绁ㄧ紪鍙凤紙鍓嶇濉啓鍒欑敤鑷畾涔夊崟鍙凤紝鐣欑┖鍒欒嚜鍔ㄧ敓鎴愶級锛屽苟鏍¢獙鍞竴鎬�
+ String customNo = StrUtil.trim(createReqVO.getNo());
+ String no = StrUtil.isNotBlank(customNo) ? customNo
+ : noRedisDAO.generate(CrmNoRedisDAO.INVOICE_PREFIX);
if (invoiceMapper.selectByNo(no) != null) {
throw exception(INVOICE_NO_EXISTS);
}
@@ -345,6 +350,10 @@
}
private void validateInvoicePriceExceedsLimit(CrmInvoiceSaveReqVO reqVO) {
+ // 鏈叧鑱斿悎鍚岀殑锛堝悎鍚岄潪蹇呭~锛夛紝涓嶅崰鐢ㄤ换浣曞悎鍚岀殑寮�绁ㄩ搴︼紝鏃犻渶鏍¢獙涓婇檺
+ if (reqVO.getContractId() == null) {
+ return;
+ }
// 1. 璁$畻鍓╀綑鍙紑绁ㄩ噾棰濓紝涓嶅寘鎷� reqVO 鑷韩锛堝鎵逛腑涔熷崰鐢ㄩ搴︼紝闃叉绱寮�绁ㄨ秴杩囧悎鍚岄噾棰濓級
CrmContractDO contract = contractService.validateContract(reqVO.getContractId());
BigDecimal notInvoicePrice = getRemainingInvoicePrice(contract, reqVO.getId());
@@ -374,6 +383,9 @@
if (reqVO.getOwnerUserId() != null) {
adminUserApi.validateUser(reqVO.getOwnerUserId()); // 鏍¢獙璐熻矗浜哄瓨鍦�
}
+ if (reqVO.getCustomerId() != null) {
+ customerService.validateCustomer(reqVO.getCustomerId()); // 鏍¢獙瀹㈡埛瀛樺湪
+ }
if (reqVO.getContractId() != null) {
CrmContractDO contract = contractService.validateContract(reqVO.getContractId());
if (ObjectUtil.notEqual(contract.getAuditStatus(), CrmAuditStatusEnum.APPROVE.getStatus())) {
--
Gitblit v1.9.3