Преглед изворни кода

feat: 四川养护2013清单基数

vian пре 3 година
родитељ
комит
1cd1462534
1 измењених фајлова са 210 додато и 1 уклоњено
  1. 210 1
      web/over_write/js/sichuan_2013.js

+ 210 - 1
web/over_write/js/sichuan_2013.js

@@ -7,11 +7,220 @@ if (typeof gljUtil !== "undefined") {
   }
 }
 
+// 清单基数
+const progression = [
+  '养护单位管理费', '养护工程监理费', '技术文件审查费'
+];
+const deficiency = { 
+};
+if (typeof baseFigureMap !== 'undefined') {
+  const { fixedFlag } = commonConstants;
+  const budgetMap = {
+      // 显示:除清单固定类别是“公路养护工程费”的以外部分可显示
+      '公路养护工程费': {
+          base: 'GLYHGCF',
+          fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+          filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
+          pick: false,
+      },
+      // 显示:除清单固定类别是“土地征用及拆迁补偿费”的以外部分可显示
+      '土地征用及拆迁补偿费': {
+          base: 'TDZYJCQBCF',
+          fixedFlag: fixedFlag.LAND_USED_DEMOLITION,
+          filter: [fixedFlag.LAND_USED_DEMOLITION],
+          pick: false
+      },
+      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+      '养护单位管理费': {
+        isProgressive: true,
+        base: 'YHDWGLF',
+        fixedFlag: null,
+        filter: [fixedFlag.MAINTENANCE_EXPENSES],
+        pick: true,
+      },
+      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+      '养护工程监理费': {
+        isProgressive: true,
+        base: 'YHGCJLF',
+        fixedFlag: null,
+        filter: [fixedFlag.MAINTENANCE_EXPENSES],
+        pick: true,
+      },
+      // 显示:仅清单固定类别是“养护工程其他费用”部分可显示。
+      '技术文件审查费': {
+        isProgressive: true,
+        base: 'JSWJSCF',
+        fixedFlag: null,
+        filter: [fixedFlag.MAINTENANCE_EXPENSES],
+        pick: true,
+      },
+      // 显示:除清单固定类别是“公路养护工程费”、“设备购置费用”、“养护公路工程其他费用”、“一二三部分合计”的以外部分可显示
+      '一、二、三部分合计': {
+        base: 'YESBFHJ',
+        fixedFlag: fixedFlag.ONE_TO_THREE_TOTAL,
+        filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.EQUIPMENT_ACQUISITION_FEE, fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.ONE_TO_THREE_TOTAL],
+        pick: false,
+      },
+      // 显示:除清单固定类别是“公路养护工程费”、“设备购置费用”、“养护公路工程其他费用”、“一二三部分合计”的以外部分可显示
+      '基本预备费': {
+        base: 'JBYBF',
+        fixedFlag: fixedFlag.ONE_TO_THREE_TOTAL,
+        filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.EQUIPMENT_ACQUISITION_FEE, fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.ONE_TO_THREE_TOTAL],
+        pick: false,
+      },
+      // 显示:仅“价差预备费”可显示
+      '价差预备费': {
+          base: 'JCYBF',
+          fixedFlag: null,
+          filter: [fixedFlag.SPREAD_BUDGET_FEE],
+          pick: true,
+      },
+  };
+  const boqMap = {
+      //仅允许用于固定类别是“第100章至700章清单”以外的清单
+      '各章清单合计': {
+          base: 'GZQDHJ',
+          fixedFlag: fixedFlag.ONE_SEVEN_BILLS,
+          filter: [fixedFlag.ONE_SEVEN_BILLS],
+          pick: false
+      },
+      //仅允许用于固定类别是“第100章至700章清单”以外的清单
+      '专项暂定合计': {
+          base: 'ZXZDHJ',
+          fixedFlag: null,
+          filter: [fixedFlag.ONE_SEVEN_BILLS],
+          pick: false
+      },
+      /*
+      *  清单固定行[第100章至700章清单]下的[第100章清单]需要允许清单可使用基数{100章以外合计}
+      *  因此{100章以外合计}不设置关联的清单固定行
+      * */
+      //仅允许用于固定类别为“100章清单”引用
+      '100章以外清单合计': {
+          base: 'YBZYHQDHJ',
+          fixedFlag: null,
+          filter: [fixedFlag.ONE_HUNDRED_BILLS],
+          pick: true
+      }
+  };
+  baseFigureMap.budget = budgetMap;
+  baseFigureMap.boq = boqMap;
+}
+
+if (typeof baseFigureTemplate !== 'undefined') {
+  const { fixedFlag } = commonConstants;
+  baseFigureTemplate.budget = {
+      // 公路养护工程费 算法:取清单固定类别是“建筑安装工程费”的金额。
+      GLYHGCF(tender) {
+          return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'common');
+      },
+      // 土地征用及拆迁补偿费 算法:取清单固定类别是“土地征用及拆迁补偿费”的金额
+      TDZYJCQBCF(tender) {
+        return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, 'common');
+      },
+      // 养护单位管理费 算法:以{公路养护工程费总额}为基数,采用累进办法计算
+      YHDWGLF(tender) {
+        const baseFee = this['GLYHGCF'](tender);
+        if (!tender) {
+            calcBase.baseProgressiveFee = baseFee;
+        }
+        return calculateUtil.getProgressiveFee(baseFee, '养护单位管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+      },
+      // 养护工程监理费 算法:以{公路养护工程费总额}为基数,采用累进办法计算
+      YHGCJLF(tender) {
+        const baseFee = this['GLYHGCF'](tender);
+        if (!tender) {
+            calcBase.baseProgressiveFee = baseFee;
+        }
+        return calculateUtil.getProgressiveFee(baseFee, '养护工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+      },
+      // 技术文件审查费 算法:以{公路养护工程费总额}为基数,采用累进办法计算
+      JSWJSCF(tender) {
+        const baseFee = this['GLYHGCF'](tender);
+        if (!tender) {
+            calcBase.baseProgressiveFee = baseFee;
+        }
+        return calculateUtil.getProgressiveFee(baseFee, '技术文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+      },
+      // 二三部分合计 算法:取清单固定类别是“一二三部分合计”的金额
+      YESBFHJ(tender) {
+        return cbTools.getBaseFee(fixedFlag.ONE_TO_THREE_TOTAL, tender, 'common');
+      },
+      // 基本预备费 算法:以第一、二、三部分费用之和为基数按3%计取
+      JBYBF(tender) {
+        const baseFee = this['YESBFHJ'](tender);
+        return (baseFee * 0.03).toDecimal(decimalObj.bills.totalPrice);
+      },
+      /*  价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
+          价差预备费 P * [(1+i)^(n-1) -1]
+          P——建筑安装工程费总额(元);
+          i——年工程造价增涨率(%);
+          n——设计文件编制年至养护项目开工年+养护项目建设期限(年)。
+      */
+      JCYBF(tender) {
+          //建筑安装工程费作为基数
+          const installFee = this['JZAZGCF'](tender);
+          //年造价增涨
+          const costGrowthRate = calcBase.project.property.costGrowthRate
+              ? calcBase.project.property.costGrowthRate
+              : 0;
+          //增涨计费年限
+          const growthPeriod = projectObj.project.property.growthPeriod
+              ? calcBase.project.property.growthPeriod
+              : 0;
+          //= P * [(1+i)^(n-1) -1]
+          return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
+      }
+
+  };
+
+  baseFigureTemplate.boq = {
+      //{各章清单合计}
+      // 取清单固定类别是“第100章至700章清单”的金额
+      'GZQDHJ': function (tender) {
+          return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, 'common');
+      },
+      //{专项暂定合计}
+      // 第100章至700章清单行的暂估合价
+      'ZXZDHJ': function (tender) {
+          return cbTools.getBaseFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, tender, 'estimate');
+      },
+      //{100章以外清单合计}
+      // 取清单固定清单[第100章至700章清单]的金额,但扣除清单100章下的金额。
+      // 如果是固定清单[第100章至700章清单]下100章以外清单引用此基数,要排除自身(目前只允许100章的清单使用,所以暂时不需要此判断)
+      'YBZYHQDHJ': function (tender) {
+          let oneToSeven = cbTools.findNodeByFlag(fixedFlag.ONE_SEVEN_BILLS);
+          if (!oneToSeven) {
+              return 0;
+          }
+          //100-700章固定节点的所有子节点
+          let allChildren = [];
+          function getChildren(nodes) {
+              allChildren = allChildren.concat(nodes);
+              for (let node of nodes) {
+                  if (node.children.length > 0) {
+                      getChildren(node.children);
+                  }
+              }
+          }
+          getChildren(oneToSeven.children);
+          //扣除的节点:100章的节点[100-200)
+          let deductNodes = allChildren.filter(cbTools.withingOneHundred);
+          //计算金额
+          let fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
+          return projectObj.project.calcProgram.getTotalFee([oneToSeven], deductNodes, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
+      }
+  };
+}
+
+
 
 if (typeof module !== 'undefined') {
   module.exports = { 
       getDefalutAssistProductionFeeRate: function () {
           return 5
-      }
+      },
+      progression,
+      deficiency,
   };
 }