浏览代码

台账分解、台账修订,检查金额计算

MaiXinRong 4 年之前
父节点
当前提交
9f74a1d561

+ 1 - 0
app/public/js/ledger.js

@@ -2947,6 +2947,7 @@ $(document).ready(function() {
     LedgerChecker({
         ledgerTree: ledgerTree,
         ledgerPos: pos,
+        decimal: tenderInfo.decimal,
         checkList: checkList,
     });
 });

+ 1 - 0
app/public/js/revise.js

@@ -2527,6 +2527,7 @@ $(document).ready(() => {
     LedgerChecker({
         ledgerTree: billsTree,
         ledgerPos: pos,
+        decimal: decimal,
         checkList: checkList,
     });
 

+ 1 - 0
app/view/revise/info.ejs

@@ -225,6 +225,7 @@
     const billsSpreadSetting = JSON.parse('<%- JSON.stringify(ledgerSpread) %>');
     const posSpreadSetting = JSON.parse('<%- JSON.stringify(posSpread) %>');
     const thousandth = <%- ctx.tender.info.display.thousandth %>;
+    const decimal = <%- ctx.tender.info.decimal %>;
     $('.sp-list-btn').click(function () {
         const type = $(this).data('type')
         if (type === 'hide') {

+ 30 - 7
app/view/shares/ledger_check_modal.ejs

@@ -17,24 +17,24 @@
                 <div class="card mb-2 p-2 border-success" id="check-empty-code">
                     <div class="d-flex justify-content-between">
                         项目节、清单编号同时为空
-                        <!-- <span class="text-muted">待检查</span> -->
-                        <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
                         <span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
                     </div>
                 </div>
                 <div class="card mb-2 p-2 border-success" id="check-calc">
                     <div class="d-flex justify-content-between">
                         清单数量不等于计量单元之和
-                        <!-- <span class="text-muted">待检查</span> -->
-                        <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
                         <span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
                     </div>
                 </div>
                 <div class="card mb-2 p-2 border-success" id="check-zero">
                     <div class="d-flex justify-content-between">
                         清单数量或单价为0
-                        <!-- <span class="text-muted">待检查</span> -->
-                        <!-- <span class="text-muted" title="检查中"><i class="fa fa-spinner fa-spin"></i></span> -->
+                        <span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
+                    </div>
+                </div>
+                <div class="card mb-2 p-2 border-success" id="check-tp">
+                    <div class="d-flex justify-content-between">
+                        清单金额≠数量×单价
                         <span class="text-success" title="完成" name="check-status"><i class="fa fa-check"></i></span>
                     </div>
                 </div>
@@ -56,9 +56,10 @@
         empty_code: {value: 2, text: '项目节、清单编号同时为空'},
         calc: {value: 3, text: '清单数量不等于计量单元之和'},
         zero: {value: 4, text: '清单数量或单价为0'},
+        tp: {value: 5, text: '清单金额≠数量×单价'},
     };
     const LedgerChecker = function (setting) {
-        const ledger = setting.ledgerTree, ledgerPos = setting.ledgerPos;
+        const ledger = setting.ledgerTree, ledgerPos = setting.ledgerPos, decimal = setting.decimal;
 
         const initWaitingModal = function () {
             $('.card', '#ledger-check-modal').removeClass('border-success');
@@ -147,6 +148,26 @@
                 }
                 return error;
             },
+            checkTp: function (ledgerTree) {
+                const error = [];
+                for (const node of ledgerTree.nodes) {
+                    if (node.children && node.children.length > 0) continue;
+
+                    const checkData = {
+                        sgfh_tp: node.sgfh_tp || 0, qtcl_tp: node.qtcl_tp || 0, sjcl_tp: node.sjcl_tp || 0,
+                        total_price: node.total_price || 0, deal_tp: node.deal_tp || 0,
+                    };
+                    const calcData = {
+                        sgfh_tp: ZhCalc.mul(node.unit_price, node.sgfh_qty, decimal.tp) || 0,
+                        qtcl_tp: ZhCalc.mul(node.unit_price, node.qtcl_qty, decimal.tp) || 0,
+                        sjcl_tp: ZhCalc.mul(node.unit_price, node.sjcl_qty, decimal.tp) || 0,
+                        total_price: ZhCalc.mul(node.unit_price, node.quantity, decimal.tp) || 0,
+                        deal_tp: ZhCalc.mul(node.unit_price, node.deal_qty, decimal.tp) || 0,
+                    };
+                    if (!_.isMatch(checkData, calcData)) error.push(node);
+                }
+                return error;
+            }
         };
 
         const assignWarningData = function (nodes, checkType, warningData) {
@@ -177,6 +198,8 @@
             assignWarningData(calc, ledgerCheckType.calc.value, checkData.warning_data);
             const zero = doSomeCheck('#check-zero', ledgerCheckUtil.checkZero) || [];
             assignWarningData(zero, ledgerCheckType.zero.value, checkData.warning_data);
+            const tp = doSomeCheck('#check-tp', ledgerCheckUtil.checkTp) || [];
+            assignWarningData(tp, ledgerCheckType.tp.value, checkData.warning_data);
 
             $('#ledger-check-waiting').hide();
             setting.checkList.clearCheckData();

+ 2 - 1
builder_report_index_define.js

@@ -212,7 +212,8 @@ const change_bills = {
         { name: '金额_8', field: 'tp_8', type: dataType.currency, tag: { type: 'tp' } },
         { name: '数量_9', field: 'qty_9', type: dataType.currency, tag: { type: 'qty', unitKey: 5 } },
         { name: '金额_9', field: 'tp_9', type: dataType.currency, tag: { type: 'tp' } },
-
+        { name: '项目节编号', field: 'xmj_code', type: dataType.str },
+        { name: '细目', field: 'xmj_jldy', type: dataType.str },
     ],
 };
 // 期 - 清单