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

单价调整,变更清单重算调整

MaiXinRong преди 2 месеца
родител
ревизия
40064ad1d8
променени са 1 файла, в които са добавени 27 реда и са изтрити 5 реда
  1. 27 5
      app/lib/revise_price.js

+ 27 - 5
app/lib/revise_price.js

@@ -218,7 +218,7 @@ class revisePriceCalc {
         const decimal = this.ctx.tender.info.decimal;
         const changeBills = await this.ctx.service.changeAuditList.getAllDataByCondition({ where: { cid: change.cid } });
         const updateBills = [];
-        let total_price = 0, positive_tp = 0, negative_tp = 0;
+        const sumBills = [];
         for (const b of changeBills) {
             const p = this.findChangeBillsPrice(b.code, b.name, b.unit, b.unit_price, change.cid);
             const settleGcl = b.gcl_id ? this.settleBills.find(x => { return x.lid === b.gcl_id; }) : null;
@@ -231,16 +231,38 @@ class revisePriceCalc {
             } else {
                 bills_tp = this.ctx.helper.mul(b.unit_price, b.spamount, change.tp_decimal || decimal.tp);
             }
-            total_price = this.ctx.helper.add(total_price, bills_tp);
+            let sb = sumBills.find(x => { return x.gcl_id === b.gcl_id });
+            if (!sb) {
+                sb = {gcl_id: b.gcl_id, unit_price: b.unit_price, v_qty: 0, uv_qty: 0, p_qty: 0, n_qty: 0 };
+                sumBills.push(sb);
+            }
             if (b.spamount >= 0) {
-                positive_tp = this.ctx.helper.add(positive_tp, bills_tp);
+                sb.p_qty = this.ctx.helper.add(sb.p_qty, b.spamount);
+            } else {
+                sb.n_qty = this.ctx.helper.add(sb.n_qty, b.spamount);
+            }
+            if (b.is_valuation) {
+                sb.v_qty = this.ctx.helper.add(sb.v_qty, b.spamount);
             } else {
-                negative_tp = this.ctx.helper.add(negative_tp, bills_tp);
+                sb.uv_qty = this.ctx.helper.add(sb.uv_qty, b.spamount);
             }
         }
+        let positive_tp = 0, negative_tp = 0, valuation_tp = 0, unvaluation_tp = 0;
+        for (const sb of sumBills) {
+            sb.v_tp = this.ctx.helper.mul(sb.v_qty, sb.unit_price, change.tp_decimal || decimal.tp);
+            sb.uv_tp = this.ctx.helper.mul(sb.uv_qty, sb.unit_price, change.tp_decimal || decimal.tp);
+            sb.p_tp = this.ctx.helper.mul(sb.p_qty, sb.unit_price, change.tp_decimal || decimal.tp);
+            sb.n_tp = this.ctx.helper.mul(sb.n_qty, sb.unit_price, change.tp_decimal || decimal.tp);
+
+            valuation_tp = this.ctx.helper.add(sb.v_tp, valuation_tp);
+            unvaluation_tp = this.ctx.helper.add(sb.uv_tp, unvaluation_tp);
+            positive_tp = this.ctx.helper.add(sb.p_tp, positive_tp);
+            negative_tp = this.ctx.helper.add(sb.n_tp, negative_tp);
+        }
+        const total_price = this.ctx.helper.add(valuation_tp, unvaluation_tp);
         if (updateBills.length > 0) {
             await transaction.updateRows(this.ctx.service.changeAuditList.tableName, updateBills);
-            await transaction.update(this.ctx.service.change.tableName, { total_price, positive_tp, negative_tp }, { where: { cid: change.cid } });
+            await transaction.update(this.ctx.service.change.tableName, { total_price, positive_tp, negative_tp, valuation_tp, unvaluation_tp }, { where: { cid: change.cid } });
         }
     }
     /**