Browse Source

fix:5739【销售订单-退货单】销售的产品有同一个物品,但是不同价格,取退货操作,退货没关系单价不对,取得是最后的价格

mlchen 3 days ago
parent
commit
a991d23cd3

+ 1 - 0
src/BIZComponents/outdetails.vue

@@ -686,6 +686,7 @@
                     categoryName: productItem.categoryName,
                     categoryCode: productItem.categoryCode,
                     bizNo: productItem.bizNo,
+                    deliveryDetailId: productItem.deliveryDetailId,
                     materialDetailList: packingItem.materialDetailList.map(
                       (materialItem) => {
                         return {

+ 19 - 9
src/views/bpm/handleTask/components/saleOrder/returnGoods/addReturnGoodsDialog.vue

@@ -713,21 +713,31 @@
           this.$refs.outboundDetailsDialogRef.init(this.form, list);
         });
       },
-      saveDate(data) {
-        data.forEach((item) => {
+      saveDate(data, closeDialog) {
+        const priceSources = data.map((item) =>
+          item.deliveryDetailId
+            ? this.productList.find(
+                (val) => String(val.sendProductId || val.id) === String(item.deliveryDetailId)
+              )
+            : null
+        );
+        if (priceSources.some((source) => !source)) {
+          this.$message.error('未找到对应的发货明细,无法确定退货单价');
+          return;
+        }
+        data.forEach((item, index) => {
           item['totalCount'] = item.measureQuantity;
           item['orderId'] = this.orderOption[0]?.orderId;
           item['orderNo'] = this.orderOption[0]?.orderNo;
-          this.productList.forEach((val) => {
-            if (item.productCode == val.productCode) {
-              item['singlePrice'] = val.singlePrice;
-              item['clientCode'] = item.clientCode || val.customerMark;
-              item['pricingWay'] = item.pricingWay || val.pricingWay;
-            }
-          });
+          const priceSource = priceSources[index];
+          item['sendProductId'] = priceSource.sendProductId || priceSource.id;
+          item['singlePrice'] = priceSource.singlePrice;
+          item['clientCode'] = item.clientCode || priceSource.customerMark;
+          item['pricingWay'] = item.pricingWay || priceSource.pricingWay;
         });
         this.$refs.inventoryTableref &&
           this.$refs.inventoryTableref.putTableValue(data);
+        if (closeDialog) closeDialog();
       },
       cancel() {
         this.$nextTick(() => {

+ 2 - 3
src/views/bpm/handleTask/components/saleOrder/returnGoods/outboundDetailsDialog.vue

@@ -58,10 +58,9 @@ export default {
   
     handleSave() {
       const list = this.$refs.outboundDetailsDialogRef.getValue()||[]
-      if (list.lenght==0) return this.$message.warning('请选择退货明细')
+      if (list.length==0) return this.$message.warning('请选择退货明细')
 
-      this.$emit('saveDate',list)
-      this.cancel()
+      this.$emit('saveDate',list, () => this.cancel())
     },
     cancel() {
       this.$emit('update:outboundDetailsDialogFlag', false)