Browse Source

累进基数的基准值入库

vian 5 years atrás
parent
commit
4841ee3678

+ 1 - 0
modules/all_models/bills.js

@@ -29,6 +29,7 @@ let billsSchema = new Schema({
     calcBase: String,
     calcBaseValue: String,     // 计算基数表达式的值
     tenderCalcBaseValue: String,     // 调价后计算基数表达式的值
+    baseProgressiveFee: String, // 累进计算中的基准值(报表需要这个中间值)
     // 工程量计算规则
     ruleText: String,
     // 说明

+ 35 - 1
web/building_saas/main/js/models/calc_base.js

@@ -601,18 +601,27 @@ let baseFigureTemplate = {
         //使用累进办法计算,基数为{定额建筑安装工程费(不含定额设备购置费及专项费用)}
         'SGCDJSF': function (tender) {
             let baseFee = this['DEJZAZGCFBHSBZX'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{养护单位(业主)管理费}
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'YHDWYZGLF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '养护单位(业主)管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{信息化费}
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'XXHF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{路线工程监理费}
@@ -620,6 +629,9 @@ let baseFigureTemplate = {
         'LXGCJLF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = calculateUtil.getProgressiveFee(baseFee, '路线工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         //{独立桥梁隧道工程监理费}
@@ -627,6 +639,9 @@ let baseFigureTemplate = {
         'QLSDGCJLF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = calculateUtil.getProgressiveFee(baseFee, '独立桥梁隧道工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         //{设计文件审查费}
@@ -634,24 +649,36 @@ let baseFigureTemplate = {
         'SJWJSCF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender),
                 fee = calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return fee > 0 && fee < 3000 ? 3000 : fee;
         },
         //{路线勘察设计费}
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'LXKCSJF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '路线勘察设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{独立桥梁隧道维修加固勘察设计费}
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'QLSDKCSJF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '独立桥梁隧道维修加固勘察设计费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{招标代理及标底(最高投标限价)编制费} (招标代理及标底编制费ZBDLJBDBZF)
         // 使用累进办法计算,计算基数为{定额建筑安装工程(其中定额设备购置费按 40%计)}
         'ZBDLJBDBZF': function (tender) {
             let baseFee = this['DEJZAZGCSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '招标代理及标底(最高投标限价)编制费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         //{价差预备费}
@@ -1300,7 +1327,10 @@ let cbCalctor = {
 };
 
 let calcBase = {
-    //正在执行计算的节点(计算基数的排除本项可能会用到)
+    // 累进基数中的基准值,报表需要使用这个中间数据,因此需要入库处理,这里作为暂存
+    baseProgressiveFee: 0,
+    //正在执行计算的节点
+    activeNode: null,
     errMsg: '表达式不正确',
     success: false,
     //清单固定行
@@ -1340,6 +1370,7 @@ let calcBase = {
             $CBP = cbParser,
             $CBC = cbCalctor;
         try {
+            me.activeNode = node;
             me.success = false;
             me.errMsg = '表达式不正确';
             //分析输入式合法性
@@ -1372,6 +1403,9 @@ let calcBase = {
             node.updateData.calcBase = exp;
             node.updateData.calcBaseValue = parseFloat(calcBaseValue).toDecimal(decimalObj.decimal('totalPrice', node));
             node.updateData.tenderCalcBaseValue = parseFloat(tenderCalcBaseValue).toDecimal(decimalObj.decimal('totalPrice', node));
+            if (calculateUtil.isProgressive(exp)) {
+                node.updateData.baseProgressiveFee = me.baseProgressiveFee;
+            }
             node.changed = true;
         }
         catch (err){

+ 18 - 0
web/over_write/js/anhui_2019.js

@@ -268,33 +268,51 @@ if (typeof baseFigureTemplate !== 'undefined') {
         // 施工场地建设费 算法:以{定额建筑安装工程费(不含定额设备购置费及专项管理费) }为基数,采用累进办法计算。
         SGCDJSF(tender) {
             const baseFee = this['DEJZAZGCFBHSBZXGLF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 养护单位管理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
         YHDWGLF(tender) {
             const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '养护单位管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 养护项目信息化费 算法:以{定额建筑安装工程费}为基数,采用累进办法计算。(不足20000元时按20000元计算)
         YHXMXXHF(tender) {
             const baseFee = this['DEJZAZGCF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             const fee = calculateUtil.getProgressiveFee(baseFee, '养护项目信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
             return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         // 工程监理费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足20000元时按20000元计算)
         GCJLF(tender) {
             const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             const fee = calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
             return fee > 0 && fee < 20000 ? 20000 : fee;
         },
         // 设计文件审查费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。
         SJWJSCF(tender) {
             const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 前期工作费 算法:以{定额建筑安装工程费(不含专项管理费) }为基数,采用累进办法计算。(不足30000元时按30000元计算)
         QQGZF(tender) {
             const baseFee = this['DEJZAZGCFBHZXGLF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             const fee = calculateUtil.getProgressiveFee(baseFee, '前期工作费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
             return fee > 0 && fee < 30000 ? 30000 : fee;
         },

+ 15 - 0
web/over_write/js/neimeng_2019.js

@@ -238,27 +238,42 @@ if (typeof baseFigureTemplate !== 'undefined') {
         // 养护单位项目管理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
         YHDWXMGLF(tender) {
             const baseFee = this['DEJZAZGCFSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '养护单位项目管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 信息化费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”
         XXHF(tender) {
             const baseFee = this['DEJZAZGCFSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 工程监理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
         GCJLF(tender) {
             const baseFee = this['DEJZAZGCFSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 设计文件审查费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”;设计文件审查费不足3000元的,按3000元计算
         SJWJSCF(tender) {
             const baseFee = this['DEJZAZGCFSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             const fee = calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
             return fee > 0 && fee < 3000 ? 3000 : fee;
         },
         // 前期工作费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
         QQGZF(tender) {
             const baseFee = this['DEJZAZGCFSBSS'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '前期工作费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 价差预备费

+ 3 - 0
web/over_write/js/zhejiang_2005.js

@@ -139,6 +139,9 @@ if (typeof baseFigureTemplate !== 'undefined') {
         // 养护工程管理经费:取清单固定类别是“建筑安装工程费”金额为基数,采用累进办法计算
         YHGCGLJF(tender) {
             const baseFee = this['GLYHGCF'](tender);
+            if (!tender) {
+                calcBase.baseProgressiveFee = baseFee;
+            }
             return calculateUtil.getProgressiveFee(baseFee, '养护工程管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice);
         },
         // 一二三部分合计:取清单固定类别是“一二三部分合计”的金额