From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
index 59f92fa..1afad6a 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
@@ -49,6 +49,11 @@
     ErrorCode RECEIVABLE_DELETE_FAIL_IS_APPROVE = new ErrorCode(1_020_004_008, "鍒犻櫎鍥炴澶辫触锛屽師鍥狅細鍥炴瀹℃壒宸查�氳繃");
     ErrorCode RECEIVABLE_APPROVE_FAIL = new ErrorCode(1_020_004_009, "瀹℃牳澶辫触锛屽彧鏈夋湭瀹℃牳鐨勫洖娆炬墠鑳藉鏍�");
     ErrorCode RECEIVABLE_PROCESS_FAIL = new ErrorCode(1_020_004_010, "鍙嶅鏍稿け璐ワ紝鍙湁宸插鏍哥殑鍥炴鎵嶈兘鍙嶅鏍�");
+    ErrorCode RECEIVABLE_ITEM_BIZ_TYPE_INVALID = new ErrorCode(1_020_004_011, "鏍搁攢鏄庣粏鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛岀殑涓氬姟绫诲瀷[{}]涓嶆纭紝鍙�� 20閿�鍞鍗曘��21閿�鍞嚭搴撱��23寮�绁ㄣ�傝閲嶆柊閫夋嫨");
+    ErrorCode RECEIVABLE_ITEM_BIZ_NOT_EXISTS = new ErrorCode(1_020_004_012, "鏍搁攢鏄庣粏鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛岄�夋嫨鐨剓}[{}]涓嶅瓨鍦ㄣ�傝閲嶆柊閫夋嫨鍏宠仈鍗曟嵁");
+    ErrorCode RECEIVABLE_ITEM_PRICE_INVALID = new ErrorCode(1_020_004_013, "鏍搁攢鏄庣粏鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛寋}[{}]鐨勬湰娆℃牳閿�閲戦涓� {}锛屽繀椤诲ぇ浜� 0銆傝淇敼璇ヨ鏍搁攢閲戦");
+    ErrorCode RECEIVABLE_ITEM_SUM_MISMATCH = new ErrorCode(1_020_004_014, "鏍搁攢鏄庣粏鏍¢獙澶辫触锛屽師鍥狅細鏍搁攢鏄庣粏鍚堣 {} 鍏冿紝涓庡洖娆鹃噾棰� {} 鍏冧笉涓�鑷淬�傝璋冩暣鏄庣粏閲戦锛屼娇涓よ�呯浉绛�");
+    ErrorCode RECEIVABLE_ITEM_PRICE_EXCEEDS = new ErrorCode(1_020_004_015, "鏍搁攢鏄庣粏鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛寋}[{}]鏈鏍搁攢 {} 鍏冿紝瓒呭嚭璇ュ崟鎹墿浣欏簲鏀� {} 鍏冿紙搴旀敹 {} 鍏冿紝宸叉牳閿� {} 鍏冿級銆傝璋冨皬璇ヨ閲戦锛屾垨鏀归�夊叾浠栧崟鎹�");
 
     // ========== 鍥炴璁″垝 1-020-005-000 ==========
     ErrorCode RECEIVABLE_PLAN_NOT_EXISTS = new ErrorCode(1_020_005_000, "鍥炴璁″垝涓嶅瓨鍦�");
@@ -114,7 +119,7 @@
 
     // ========== 閿�鍞姤浠� 1_020_015_000 ==========
     ErrorCode SALE_QUOTATION_NOT_EXISTS = new ErrorCode(1_020_015_000, "閿�鍞姤浠峰崟涓嶅瓨鍦�");
-    ErrorCode SALE_QUOTATION_NO_EXISTS = new ErrorCode(1_020_015_001, "閿�鍞姤浠峰崟鍙峰凡瀛樺湪");
+    ErrorCode SALE_QUOTATION_NO_EXISTS = new ErrorCode(1_020_015_001, "鎶ヤ环鍗曞彿銆恵}銆戝凡琚崰鐢紝涓嶈兘閲嶅浣跨敤銆傝鎹竴涓紪鍙凤紝鎴栨竻绌虹紪鍙风敱绯荤粺鑷姩鐢熸垚锛堝凡鍒犻櫎鐨勬姤浠峰崟涔熶細鍗犵敤鍏跺師缂栧彿锛�");
     ErrorCode SALE_QUOTATION_UPDATE_FAIL_NOT_DRAFT = new ErrorCode(1_020_015_002, "閿�鍞姤浠峰崟({})涓嶆槸鑽夌鐘舵�侊紝鏃犳硶淇敼");
     ErrorCode SALE_QUOTATION_DELETE_FAIL_NOT_DRAFT = new ErrorCode(1_020_015_003, "閿�鍞姤浠峰崟({})涓嶆槸鑽夌鐘舵�侊紝鏃犳硶鍒犻櫎");
     ErrorCode SALE_QUOTATION_CONVERT_FAIL_NOT_DRAFT = new ErrorCode(1_020_015_004, "閿�鍞姤浠峰崟({})涓嶆槸鑽夌鐘舵�侊紝鏃犳硶杞悎鍚�");
@@ -124,7 +129,7 @@
     // ========== 寮�绁� 1_020_016_000 ==========
     ErrorCode INVOICE_NOT_EXISTS = new ErrorCode(1_020_016_000, "寮�绁ㄤ笉瀛樺湪");
     ErrorCode INVOICE_NO_EXISTS = new ErrorCode(1_020_016_001, "鐢熸垚寮�绁ㄥ簭鍒楀彿閲嶅锛岃閲嶈瘯");
-    ErrorCode INVOICE_UPDATE_FAIL_EDITING_PROHIBITED = new ErrorCode(1_020_016_002, "鏇存柊寮�绁ㄥけ璐ワ紝鍘熷洜锛氱姝㈢紪杈�");
+    ErrorCode INVOICE_UPDATE_FAIL_EDITING_PROHIBITED = new ErrorCode(1_020_016_002, "鏇存柊寮�绁ㄥけ璐ワ細褰撳墠鐘舵�佷负銆恵}銆戯紝浠呮湭鎻愪氦銆佸鎵逛腑鐨勫紑绁ㄥ崟鍏佽缂栬緫");
     ErrorCode INVOICE_DELETE_FAIL_IS_APPROVE = new ErrorCode(1_020_016_003, "鍒犻櫎寮�绁ㄥけ璐ワ紝鍘熷洜锛氬紑绁ㄥ鎵瑰凡閫氳繃");
     ErrorCode INVOICE_SUBMIT_FAIL_NOT_DRAFT = new ErrorCode(1_020_016_004, "寮�绁ㄦ彁浜ゅ鏍稿け璐ワ紝鍘熷洜锛氬紑绁ㄦ病澶勫湪鏈彁浜ょ姸鎬�");
     ErrorCode INVOICE_UPDATE_AUDIT_STATUS_FAIL_NOT_PROCESS = new ErrorCode(1_020_016_005, "鏇存柊寮�绁ㄥ鏍哥姸鎬佸け璐ワ紝鍘熷洜锛氬紑绁ㄤ笉鏄鏍镐腑鐘舵��");
@@ -135,5 +140,25 @@
     ErrorCode RECEIVABLE_CREATE_FAIL_INVOICE_NOT_ATTACHMENT = new ErrorCode(1_020_016_010, "鍒涘缓鍥炴澶辫触锛屽師鍥狅細鍏宠仈鐨勫紑绁ㄦ湭涓婁紶鍙戠エ闄勪欢");
     ErrorCode RECEIVABLE_CREATE_FAIL_INVOICE_CONTRACT_MISMATCH = new ErrorCode(1_020_016_011, "鍒涘缓鍥炴澶辫触锛屽師鍥狅細鍏宠仈鐨勫紑绁ㄤ笌鎵�閫夊悎鍚屼笉鍖归厤");
     ErrorCode RECEIVABLE_CREATE_FAIL_INVOICE_PRICE_EXCEEDS = new ErrorCode(1_020_016_012, "鍒涘缓鍥炴澶辫触锛屽師鍥狅細鍥炴閲戦瓒呭嚭璇ュ紑绁ㄥ墿浣欏彲鍥炴閲戦锛岀洰鍓嶅彲鍥炴锛歿} 鍏�");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_020_016_013, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氶攢鍞鍗昜{}]涓嶅瓨鍦ㄣ�傝鍦ㄥ紑绁ㄥ崟閫夋嫨宸插鏍哥殑閿�鍞鍗曪紝鎴栧厛鍒般�岄攢鍞鍗曘�嶄腑鍒涘缓骞跺鏍歌璁㈠崟");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_ORDER_NOT_APPROVE = new ErrorCode(1_020_016_014, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氶攢鍞鍗昜{}]褰撳墠鐘舵�佷负銆恵}銆戯紝鍙湁銆屽凡瀹℃牳銆嶇殑閿�鍞鍗曟墠鑳藉紑绁ㄣ�傝鍏堝畬鎴愯璁㈠崟瀹℃牳锛屾垨鏀归�夊叾浠栧凡瀹℃牳璁㈠崟");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_ORDER_MISMATCH = new ErrorCode(1_020_016_015, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氶攢鍞鍗昜{}]鐨勫鎴锋垨鍚堝悓涓庡綋鍓嶅紑绁ㄥ崟涓嶄竴鑷达紙璁㈠崟瀹㈡埛={}銆佽鍗曞悎鍚�={}锛涘紑绁ㄥ鎴�={}銆佸紑绁ㄥ悎鍚�={}锛夈�傝鏀归�変笌褰撳墠鍚堝悓銆佸鎴蜂竴鑷寸殑閿�鍞鍗�");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_OUT_NOT_EXISTS = new ErrorCode(1_020_016_016, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬嚭搴撳崟(ID={})涓嶅瓨鍦ㄦ垨宸插垹闄ゃ�傝閲嶆柊閫夋嫨璇ラ攢鍞鍗曚笅鐨勫嚭搴撳崟");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_OUT_NOT_FINISHED = new ErrorCode(1_020_016_017, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬嚭搴撳崟[{}]褰撳墠鐘舵�佷负銆恵}銆戯紝鍙湁銆屽凡瀹屾垚銆嶇殑鍑哄簱鍗曟墠鑳藉紑绁ㄣ�傝绛夊緟鍑哄簱瀹屾垚鍚庡啀寮�绁紝鎴栨敼閫夊叾浠栧凡瀹屾垚鍑哄簱鍗�");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_OUT_MISMATCH_ORDER = new ErrorCode(1_020_016_018, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬嚭搴撳崟[{}]涓嶅睘浜庢墍閫夐攢鍞鍗昜{}]锛堝嚭搴撳崟瀹為檯璁㈠崟={}锛夈�傝鏀归�夎閿�鍞鍗曚笅鐨勫嚭搴撳崟");
+    ErrorCode INVOICE_CREATE_FAIL_SALE_OUT_MISMATCH_CUSTOMER = new ErrorCode(1_020_016_019, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬嚭搴撳崟[{}]鐨勫鎴�(ID={})涓庡紑绁ㄥ鎴�(ID={})涓嶄竴鑷淬�傝鏀归�夊綋鍓嶅鎴峰悕涓嬬殑鍑哄簱鍗�");
+    ErrorCode INVOICE_CREATE_FAIL_PRICE_EXCEEDS_SALE_ORDER = new ErrorCode(1_020_016_020, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬紑绁ㄩ噾棰濊秴鍑洪攢鍞鍗昜{}]鍓╀綑鍙紑绁ㄩ噾棰� {} 鍏冿紙璁㈠崟閲戦 {} 鍏冿紝宸插紑绁� {} 鍏冿級銆傝璋冩暣寮�绁ㄩ噾棰濓紝鎴栧厛鏍稿宸插紑绁ㄩ噾棰�");
+    ErrorCode INVOICE_CREATE_FAIL_PRICE_EXCEEDS_SALE_OUT = new ErrorCode(1_020_016_021, "鍒涘缓寮�绁ㄥけ璐ワ紝鍘熷洜锛氬紑绁ㄩ噾棰濊秴鍑哄嚭搴撳崟[{}]鍓╀綑鍙紑绁ㄩ噾棰� {} 鍏冿紙鍑哄簱閲戦 {} 鍏冿紝宸插紑绁� {} 鍏冿級銆傝璋冩暣寮�绁ㄩ噾棰濓紝鎴栨敼閫夊叾浠栧嚭搴撳崟");
+    ErrorCode INVOICE_ENTRY_FAIL_NOT_APPROVE = new ErrorCode(1_020_016_022, "褰曞叆鍙戠エ澶辫触锛屽師鍥狅細寮�绁ㄥ崟[{}]褰撳墠瀹℃壒鐘舵�佷负銆恵}銆戯紝鍙湁銆屽鎵归�氳繃銆嶇殑寮�绁ㄧ敵璇锋墠鑳藉綍鍏ュ彂绁ㄣ�傝鍏堝畬鎴愬紑绁ㄧ敵璇峰鎵�");
+    ErrorCode INVOICE_ENTRY_FAIL_INVOICE_NO_EXISTS = new ErrorCode(1_020_016_023, "褰曞叆鍙戠エ澶辫触锛屽師鍥狅細鍙戠エ鍙风爜[{}]宸茶寮�绁ㄥ崟[{}]浣跨敤銆傝鏍稿鍙戠エ鍙风爜锛屾垨鍒拌寮�绁ㄥ崟涓煡鐪�");
+    ErrorCode INVOICE_PAYMENT_NODE_INVALID = new ErrorCode(1_020_016_024, "鏀舵鑺傜偣鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛岄樁娈礫{}]鐨勯噾棰濅负 {}锛屽繀椤诲ぇ浜� 0銆傝淇敼璇ヨ妭鐐归噾棰�");
+    ErrorCode INVOICE_PAYMENT_NODE_TIME_REQUIRED = new ErrorCode(1_020_016_025, "鏀舵鑺傜偣鏍¢獙澶辫触锛屽師鍥狅細闃舵[{}]鏈�夋嫨璁″垝鍥炴鏃堕棿銆傝涓鸿鑺傜偣閫夋嫨鏃堕棿鑺傜偣");
+    ErrorCode INVOICE_PAYMENT_NODE_STAGE_INVALID = new ErrorCode(1_020_016_026, "鏀舵鑺傜偣鏍¢獙澶辫触锛屽師鍥狅細绗� {} 琛岀殑闃舵鍊糩{}]涓嶆纭紝鍙�� 1鍚堝悓娆俱��2棰勪粯娆俱��3鍒拌揣娆俱��4楠屾敹娆俱��5璐ㄤ繚閲戙�傝閲嶆柊閫夋嫨");
+    ErrorCode INVOICE_PAYMENT_NODE_STAGE_DUPLICATE = new ErrorCode(1_020_016_027, "鏀舵鑺傜偣鏍¢獙澶辫触锛屽師鍥狅細闃舵[{}]閲嶅鍑虹幇銆傚悓涓�闃舵鍙兘濉啓涓�涓妭鐐癸紝璇峰悎骞舵垨鍒犻櫎閲嶅琛�");
+    ErrorCode INVOICE_PAYMENT_NODE_ALREADY_RECEIPTED = new ErrorCode(1_020_016_028, "淇濆瓨鏀舵鑺傜偣澶辫触锛屽師鍥狅細闃舵[{}]宸叉湁鍥炴璁板綍锛堝凡鍥炴 {} 鍏冿級锛屼笉鑳藉垹闄ゆ垨淇敼銆傝鍏堝湪銆屽洖娆剧鐞嗐�嶄腑鍒犻櫎瀵瑰簲鍥炴锛屾垨淇濈暀璇ヨ妭鐐�");
+
+    ErrorCode CRM_SALES_TARGET_NOT_EXISTS = new ErrorCode(1_020_017_000, "閿�鍞洰鏍囦笉瀛樺湪");
+    ErrorCode CRM_SALES_TARGET_PERIOD_VALUE_INVALID = new ErrorCode(1_020_017_001, "鍛ㄦ湡鍊笺�恵}銆戞牸寮忎笉姝g‘锛屽簲涓� {}");
+    ErrorCode CRM_SALES_TARGET_DIMENSION_TARGET_MISSING = new ErrorCode(1_020_017_002, "璇峰~鍐欑洰鏍噞}缂栧彿");
 
 }

--
Gitblit v1.9.3