Просмотр исходного кода

feat: 增加湖南养护2014清单基数

vian 5 лет назад
Родитель
Сommit
3901f06470
1 измененных файлов с 263 добавлено и 0 удалено
  1. 263 0
      web/over_write/js/hunan_2014.js

+ 263 - 0
web/over_write/js/hunan_2014.js

@@ -0,0 +1,263 @@
+// 清单基数
+const progression = ['养护工程管理经费(大修工程)', '养护工程管理经费(中修工程)', '养护工程监理费(路线工程)', '养护工程监理费(桥梁及隧道工程)', '养护工程设计文件审查费', '工程设计费(路线工程)', '工程设计费(桥梁、隧道工程)'];
+const deficiency = { '养护工程设计文件审查费': 4500 };
+const beyond = { '养护工程设计文件审查费': 600000 };
+if (typeof baseFigureMap !== 'undefined') {
+  const { fixedFlag } = commonConstants;
+  const budgetMap = {
+    // 显示:除清单固定类别是“建筑安装工程费”的以外部分可显示
+    '公路养护工程费': {
+      base: 'GLYHGCF',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
+      pick: false,
+    },
+    // 除清单固定类别是“建筑安装工程费”、“设备购置费”的以外部分可显示
+    '设备购置费用': {
+      base: 'SBGZFY',
+      fixedFlag: fixedFlag.EQUIPMENT_ACQUISITION_FEE,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.EQUIPMENT_ACQUISITION_FEE],
+      pick: false,
+    },
+    // 除清单固定类别是“建筑安装工程费”、“设备购置费”、“养护工程其他费用”的以外部分可显示
+    '养护工程其他费用': {
+      base: 'YHGCQTFY',
+      fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
+      filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.EQUIPMENT_ACQUISITION_FEE, fixedFlag.MAINTENANCE_EXPENSES],
+      pick: false,
+    },
+    // 只有清单固定类别是“养护工程其他费用”部分可显示
+    '养护工程管理经费(大修工程)': {
+      isProgressive: true,
+      base: 'YHGCGLJFDXGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 只有清单固定类别是“养护工程其他费用”部分可显示
+    '养护工程管理经费(中修工程)': {
+      isProgressive: true,
+      base: 'YHGCGLJFZXGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 只有清单固定类别是“养护工程其他费用”部分可显示
+    '养护工程监理费(路线工程)': {
+      isProgressive: true,
+      base: 'YHGCJLFLXGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 只有清单固定类别是“养护工程其他费用”部分可显示
+    '养护工程监理费(桥梁及隧道工程)': {
+      isProgressive: true,
+      base: 'YHGCJLFQLJSDGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
+    '养护工程设计文件审查费': {
+      isProgressive: true,
+      base: 'YHGCSJWJSCF',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
+    '工程设计费(路线工程)': {
+      isProgressive: true,
+      base: 'GCSJFLXGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:只有清单固定类别是“养护工程其他费用”部分可显示。
+    '工程设计费(桥梁、隧道工程)': {
+      isProgressive: true,
+      base: 'GCSJFQLSDGC',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      filter: [fixedFlag.MAINTENANCE_EXPENSES],
+      pick: true,
+    },
+    // 显示:仅“价差预备费”可显示
+    '价差预备费': {
+      base: 'JCYBF',
+      fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
+      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');
+    },
+    // 设备购置费用:取清单固定类别是“设备购置费”的金额
+    SBGZFY(tender) {
+      return cbTools.getBaseFee(calcBase.fixedFlag.EQUIPMENT_ACQUISITION_FEE, tender, 'common');
+    },
+    // 养护工程其他费用: 取清单固定类别是“养护工程其他费用”的金额。
+    YHGCQTFY(tender) {
+      return cbTools.getBaseFee(calcBase.fixedFlag.MAINTENANCE_EXPENSES, tender, 'common');
+    },
+    // 养护工程管理经费(大修工程): 按“公路养护工程费”为基数,以累进办法计算。
+    YHGCGLJFDXGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '养护工程管理经费(大修工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 养护工程管理经费(中修工程): 按“公路养护工程费”为基数,以累进办法计算。
+    YHGCGLJFZXGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '养护工程管理经费(中修工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 养护工程监理费(路线工程): 按“公路养护工程费”为基数,以累进办法计算。
+    YHGCJLFLXGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '养护工程监理费(路线工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 养护工程监理费(桥梁及隧道工程): 按“公路养护工程费”为基数,以累进办法计算。
+    YHGCJLFQLJSDGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '养护工程监理费(桥梁及隧道工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 养护工程设计文件审查费: 按“公路养护工程费”为基数,以累进办法计算。
+    YHGCSJWJSCF(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '养护工程设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 工程设计费(路线工程): 按“公路养护工程费”为基数,以累进办法计算。
+    GCSJFLXGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '工程设计费(路线工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    // 工程设计费(桥梁、隧道工程): 按“公路养护工程费”为基数,以累进办法计算。
+    GCSJFQLSDGC(tender) {
+      const baseFee = this['GLYHGCF'](tender);
+      if (!tender) {
+        calcBase.baseProgressiveFee = baseFee;
+      }
+      return calculateUtil.getProgressiveFee(baseFee, '工程设计费(桥梁、隧道工程)', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
+    },
+    /*  价差预备费 算法:以建筑安装工程费为基数,按设计文件编制年始至养护项目工程竣工年终的年数和年工程造价增涨率计算。
+        价差预备费 P * [(1+i)^(n-1) -1]
+        P——建筑安装工程费总额(元);
+        i——年工程造价增涨率(%);
+        n——设计文件编制年至养护项目开工年+养护项目建设期限(年)。
+    */
+    JCYBF(tender) {
+      //建筑安装工程费作为基数
+      const installFee = this['YHGCF'](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 = {
+      progression,
+      deficiency,
+      beyond,
+  };
+}