Преглед на файлове

fix(收款校验): 修复收款比例校验后金额不一致的问题

liujt преди 4 месеца
родител
ревизия
1caff9fbad
променени са 2 файла, в които са добавени 34 реда и са изтрити 13 реда
  1. 17 7
      src/views/contractManage/contractBook/components/addDialog.vue
  2. 17 6
      src/views/saleManage/saleOrder/components/addDialogNew.vue

+ 17 - 7
src/views/contractManage/contractBook/components/addDialog.vue

@@ -1954,19 +1954,29 @@
             }
           );
 
-          const receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
-          console.log('receiptPaymentListSum~~~', receiptPaymentListSum, commitData.contract.discountTotalPrice)
-          if(+receiptPaymentListSum != +commitData.contract.discountTotalPrice){
-            this.$message.error('计划收款金额合计与优惠后金额不一致');
-            return;
-          }
-
           const ratioSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.ratio, 0);
           if(+ratioSum != 100){
             this.$message.error('比例合计必须为100%');
             return;
           }
 
+          let receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
+          const payAmount = +commitData.payAmount;
+          
+          if(+ratioSum == 100) {
+            const difference = payAmount - receiptPaymentListSum;
+            if (Math.abs(difference) > 0 && commitData.receiptPaymentList.length > 0) {
+              const lastIndex = commitData.receiptPaymentList.length - 1;
+              commitData.receiptPaymentList[lastIndex].price = (+commitData.receiptPaymentList[lastIndex].price + difference).toFixed(2);
+              receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
+            }
+          }
+
+          if(Math.abs(+receiptPaymentListSum - payAmount) > 0){
+            this.$message.error('计划收款金额合计与优惠后金额不一致');
+            return;
+          }
+
           // commitData.productList.forEach((item) => {
           //   if (!item.productCode) {
           //     isTemporary.push(item.productName);

+ 17 - 6
src/views/saleManage/saleOrder/components/addDialogNew.vue

@@ -1926,17 +1926,28 @@
           }
 
           if(commitData.needProduce != 2 && commitData.needProduce != 4) {
-            const receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
-            if(+receiptPaymentListSum != +commitData.payAmount){
-              this.$message.error('计划收款金额合计与优惠后金额不一致');
-              return;
-            }
-
             const ratioSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.ratio, 0);
             if(+ratioSum != 100){
               this.$message.error('比例合计必须为100%');
               return;
             }
+
+            let receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
+            const payAmount = +commitData.payAmount;
+            
+            if(+ratioSum == 100) {
+              const difference = payAmount - receiptPaymentListSum;
+              if (Math.abs(difference) > 0 && commitData.receiptPaymentList.length > 0) {
+                const lastIndex = commitData.receiptPaymentList.length - 1;
+                commitData.receiptPaymentList[lastIndex].price = (+commitData.receiptPaymentList[lastIndex].price + difference).toFixed(2);
+                receiptPaymentListSum = commitData.receiptPaymentList.reduce((acc, cur) => acc + +cur.price, 0);
+              }
+            }
+
+            if(Math.abs(+receiptPaymentListSum - payAmount) > 0){
+              this.$message.error('计划收款金额合计与优惠后金额不一致');
+              return;
+            }
           }
           
           if (isTemporary.length > 0) {