From a1dfce6c7266bf922ab913a922219a554f71ade2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 12 十月 2026 18:27:00 +0800
Subject: [PATCH] 宁夏万通需求:CRM 开票新增时客户、合同改为非必填
---
docs/sql/config_export_all_20260928.sql | 4 ++--
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/invoice/CrmInvoiceServiceImpl.java | 10 ++++++++++
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/invoice/vo/invoice/CrmInvoiceSaveReqVO.java | 7 +++----
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/docs/sql/config_export_all_20260928.sql b/docs/sql/config_export_all_20260928.sql
index 30be983..993a853 100644
--- a/docs/sql/config_export_all_20260928.sql
+++ b/docs/sql/config_export_all_20260928.sql
@@ -2508,8 +2508,8 @@
CREATE TABLE `crm_invoice` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '寮�绁ㄧ紪鍙�',
- `customer_id` bigint NOT NULL COMMENT '瀹㈡埛缂栧彿',
- `contract_id` bigint NOT NULL COMMENT '鍚堝悓缂栧彿',
+ `customer_id` bigint DEFAULT NULL COMMENT '瀹㈡埛缂栧彿',
+ `contract_id` bigint DEFAULT NULL COMMENT '鍚堝悓缂栧彿',
`owner_user_id` bigint NOT NULL COMMENT '璐熻矗浜虹紪鍙�',
`invoice_type` int NOT NULL COMMENT '鍙戠エ绫诲瀷锛堝瓧鍏� crm_invoice_type锛�',
`invoice_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '鍙戠エ鍙风爜',
diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/invoice/vo/invoice/CrmInvoiceSaveReqVO.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/invoice/vo/invoice/CrmInvoiceSaveReqVO.java
index 21cf8be..682279c 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/invoice/vo/invoice/CrmInvoiceSaveReqVO.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/invoice/vo/invoice/CrmInvoiceSaveReqVO.java
@@ -19,11 +19,10 @@
private String no;
@Schema(description = "瀹㈡埛缂栧彿", example = "2")
- private Long customerId; // 璇ュ瓧娈典笉閫氳繃鍓嶇浼犻�掞紝鑰屾槸 contractId 鏌ヨ鍑烘潵璁剧疆杩涘幓
+ private Long customerId; // 浼犱簡 contractId 鏃朵互鍚堝悓涓婄殑瀹㈡埛涓哄噯锛堢敱 Service 瑕嗙洊锛�
- @Schema(description = "鍚堝悓缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
- @NotNull(message = "鍚堝悓缂栧彿涓嶈兘涓虹┖")
- private Long contractId;
+ @Schema(description = "鍚堝悓缂栧彿", example = "1024")
+ private Long contractId; // 闈炲繀濉細鍏佽涓嶅叧鑱斿悎鍚屽紑绁�
@Schema(description = "璐熻矗浜虹紪鍙�", example = "25682")
private Long ownerUserId;
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 d8df5d2..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;
@@ -84,6 +85,8 @@
@Resource
private CrmContractService contractService;
+ @Resource
+ private CrmCustomerService customerService;
@Resource
private CrmPermissionService permissionService;
@@ -347,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());
@@ -376,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