MaiXinRong 1 рік тому
батько
коміт
594e53b426
2 змінених файлів з 31 додано та 4 видалено
  1. 29 3
      app/lib/settle.js
  2. 2 1
      app/public/js/settle_select.js

+ 29 - 3
app/lib/settle.js

@@ -80,9 +80,11 @@ class Settle {
             const sp = this.stagePos.getPos(pp.pid);
             if (sp) {
                 sp.pre_settle = true;
-                sp.pre_contract_qty = sp.end_contract_qty;
-                sp.pre_qc_qty = sp.end_qc_qty;
-                sp.pre_qc_minus_qty = sp.pre_qc_minus_qty;
+                sp.pre_contract_qty = pp.end_contract_qty;
+                sp.pre_qc_qty = pp.end_qc_qty;
+                sp.pre_qc_minus_qty = pp.pre_qc_minus_qty;
+                sp.settle_status = pp.settle_status;
+                sp.settle_done_order = pp.settle_done_order;
             }
         }
         const preBills = await this.ctx.service.settleBills.getAllDataByCondition({ where: { tid: this.settle.tid, settle_order: this.settle.settle_order - 1 } });
@@ -95,12 +97,15 @@ class Settle {
                 sb.pre_qc_qty = pb.pre_qc_qty;
                 sb.pre_qc_tp = pb.pre_qc_tp;
                 sb.pre_qc_minus_qty = pb.pre_qc_minus_qty;
+                sb.settle_status = pb.settle_status;
+                sb.settle_done_order = pb.settle_done_order;
             }
         }
     }
 
     calculateSettle() {
         const helper = this.ctx.helper;
+        const settle = this.settle;
         this.stagePos.calculateAll(function(p) {
             if (p.is_settle || !p.pre_settle) {
                 p.cur_contract_qty = p.settle_contract_qty;
@@ -112,6 +117,10 @@ class Settle {
                 p.end_qc_qty = helper.add(p.cur_qc_qty, p.pre_qc_qty);
                 p.end_qc_minus_qty = helper.add(p.cur_qc_minus_qty, p.pre_qc_minus_qty);
             }
+            if (helper.checkNumEqual(p.end_contract_qty, p.quantity)) {
+                p.settle_status = 2;
+                p.settle_done_order = p.settle_done_order || settle.settle_order;
+            }
         });
         const self = this, decimal = this.ctx.tender.info.decimal;
         this.stageTree.calculateAll(function(b) {
@@ -142,6 +151,21 @@ class Settle {
                 b.end_qc_tp = helper.add(b.cur_qc_tp, b.pre_qc_tp);
                 b.end_qc_minus_qty = helper.add(b.cur_qc_minus_qty, b.pre_qc_minus_qty);
             }
+            if (b.is_tp) {
+                if (helper.checkNumEqual(b.end_contract_tp, b.total_price)) {
+                    b.settle_status = 2;
+                    b.settle_done_order = b.settle_done_order || settle.settle_order;
+                } else {
+                    b.settle_status = 1;
+                }
+            } else {
+                if (helper.checkNumEqual(b.end_contract_qty, b.quantity)) {
+                    b.settle_status = 2;
+                    b.settle_done_order = b.settle_done_order || settle.settle_order;
+                } else {
+                    b.settle_status = 1;
+                }
+            }
         })
     }
 
@@ -163,6 +187,7 @@ class Settle {
                 end_contract_qty: node.end_contract_qty || 0, end_contract_tp: node.end_contract_tp || 0,
                 end_qc_qty: node.end_qc_qty || 0, end_qc_tp: node.end_qc_tp || 0, end_qc_minus_qty: node.end_qc_minus_qty || 0,
                 is_settle: node.is_settle ? 1 : 0, pre_settle: node.pre_settle ? 1 : 0,
+                settle_status: node.settle_status || 0, settle_done_order: node.settle_done_order,
             });
         }
         const settlePos = [];
@@ -176,6 +201,7 @@ class Settle {
                 pre_contract_qty: pos.pre_contract_qty || 0, pre_qc_qty: pos.pre_qc_qty || 0, pre_qc_minus_qty: pos.pre_qc_minus_qty || 0,
                 end_contract_qty: pos.end_contract_qty || 0, end_qc_qty: pos.end_qc_qty || 0, end_qc_minus_qty: pos.end_qc_minus_qty || 0,
                 is_settle: pos.is_settle ? 1 : 0, pre_settle: pos.pre_settle ? 1 : 0,
+                settle_status: pos.settle_status || 0, settle_done_order: pos.settle_done_order,
             });
         }
         return [settleBills, settlePos];

+ 2 - 1
app/public/js/settle_select.js

@@ -110,7 +110,7 @@ $(document).ready(() => {
     const settleCheck = {
         _analysisPos(pos) {
             pos.undoneDeal = pos.quantity ? !checkZero(ZhCalc.sub(pos.end_contract_qty, pos.quantity)) : false;
-            pos.undone = pos.undoneDeal || pos.undoneChange;
+            pos.undone = !!pos.undoneDeal || !!pos.undoneChange;
         },
         _analysisNode(node) {
             if (node.undoneDeal === undefined) node.undoneDeal = false;
@@ -130,6 +130,7 @@ $(document).ready(() => {
                         if (pos.undoneDeal) node.undoneDeal = true;
                         if (pos.undoneChange) node.undoneChange = true;
                     }
+                    node.undone = !!node.undoneDeal || !!node.undoneChange;
                 } else {
                     node.undoneDeal = node.end_contract_qty
                         ? !checkZero(ZhCalc.sub(node.end_contract_qty, node.quantity))