Эх сурвалжийг харах

fix:5851华泰【销售订单-发货】此销售订单发货单被驳回,我换仓库发货,实际库存有货,提示大于订单剩余数量,合同

mlchen 1 долоо хоног өмнө
parent
commit
10b56be495

+ 2 - 0
AGENTS.md

@@ -1,5 +1,7 @@
 # 前端数据契约
 
+- 销售发货的订单来源产品在编辑初始化、重新选择时,必须在清空 `id` 前保留 `orderProductId || id`;换仓和换批次只改变实际库存身份,不能覆盖订单明细身份。不同订单行即使物品和批次相同,也分别使用各自剩余额度;同一订单行拆为多条发货明细时累计校验,雪花ID保持字符串。
+
 - 库存台账返回的 `provenance` 是展示字符串;向 EOM 发货接口提交产地时,使用 `purchaseOrigins` 产地编码数组转换为字符串数组。替代料与普通发货物品均需遵守此契约,不能把库存记录中的 `"[]"` 原样提交给 `JSONArray` 字段。
 - 客户抽屉内打开客户历史版本详情时,详情 `ele-modal` 必须设置 `append-to-body`,避免弹窗遮罩受抽屉层叠上下文影响而覆盖弹窗内容。
 - 客户与供应商共用 `saleManage/contact/components/addContactDialog.vue` 的新建并提交入口;保存主档后必须等待新建证照的 `saveOrEdit` 请求全部成功,再开启 `contact_approve` 提交弹窗。证照保存失败须提示并停止提交,避免服务端按已持久化证照校验时误判。

+ 4 - 1
src/views/saleManage/saleOrder/invoice/components/addInvoiceDialog.vue

@@ -596,6 +596,10 @@
             .toString()
         };
 
+        // 编辑初始化也要保留订单明细身份,供重选物品后按原订单行校验额度。
+        data.productList.forEach((item) => {
+          item.orderProductId = item.orderProductId || item.id;
+        });
         this.loading = false;
         this.saleOrderNeedProduce = data.needProduce ?? '';
         this.saleOrderValue = JSON.parse(JSON.stringify(data));
@@ -630,7 +634,6 @@
           if (productList && productList.length > 0) {
             productList.forEach((v) => {
               v.orderTotalCount = v.totalCount;
-              v.orderProductId = v.orderProductId || v.id;
               v.extField = {};
             });
           }

+ 2 - 0
src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue

@@ -1460,6 +1460,8 @@
         console.log(obj, 'obj');
         obj.forEach((item) => {
           item.orderTotalCount = item.totalCount;
+          // 清空选入行ID前保留订单来源,避免换成同一批次后误合并额度。
+          item.orderProductId = item.orderProductId || item.id;
           item.id = '';
         });
         this.putTableValue(copyObj(obj));