|
|
@@ -0,0 +1,532 @@
|
|
|
+/**
|
|
|
+ * Created by CSL on 2022/12/19. 内蒙古高速养护(2022)。
|
|
|
+ */
|
|
|
+
|
|
|
+function overwriteRationCalcBases() {
|
|
|
+ if (typeof rationCalcBases == "undefined") return;
|
|
|
+ for (let key in rationCalcBases) delete rationCalcBases[key];
|
|
|
+
|
|
|
+ rationCalcBases["人工费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["材料费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["施工机械使用费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["设备购置费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额人工费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额材料费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额施工机械使用费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额商品砼费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额设备费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额外购砼构件费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+ rationCalcBases["定额绿化苗木费"] = function (node, isTender) {
|
|
|
+ return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+(function overwriteFeeTypes() {
|
|
|
+ if (typeof cpFeeTypes == "undefined") return;
|
|
|
+ cpFeeTypes = [
|
|
|
+ { type: "marketDirect", name: "直接费" },
|
|
|
+ { type: "marketLabour", name: "人工费" },
|
|
|
+ { type: "marketMaterial", name: "材料费" },
|
|
|
+ { type: "marketMachine", name: "施工机械使用费" },
|
|
|
+ { type: "marketEquipment", name: "设备购置费" },
|
|
|
+
|
|
|
+ { type: "labour", name: "定额人工费" },
|
|
|
+ { type: "material", name: "定额材料费" },
|
|
|
+ { type: "machine", name: "定额施工机械使用费" },
|
|
|
+ { type: "equipment", name: "定额设备购置费" },
|
|
|
+ { type: "direct", name: "定额直接费" },
|
|
|
+
|
|
|
+ { type: "measure", name: "措施费" },
|
|
|
+ { type: "manage", name: "企业管理费" },
|
|
|
+ { type: "force", name: "规费" },
|
|
|
+ { type: "profit", name: "利润" },
|
|
|
+ { type: "tax", name: "税金" },
|
|
|
+ { type: "common", name: "建安费" },
|
|
|
+ { type: "rationCommon", name: "定额建安费" },
|
|
|
+ ];
|
|
|
+})();
|
|
|
+
|
|
|
+// 清单基数
|
|
|
+const progression = ["养护单位项目管理费", "信息化费", "工程监理费", "设计文件审查费", "前期工作费"];
|
|
|
+const deficiency = { 设计文件审查费: 3000 };
|
|
|
+if (typeof baseFigureMap !== "undefined") {
|
|
|
+ const { fixedFlag } = commonConstants;
|
|
|
+ const budgetMap = {
|
|
|
+ // 清单固定类别是“建筑安装工程费”的以外部分可显示
|
|
|
+ 建筑安装工程费: {
|
|
|
+ base: "JZAZGCF",
|
|
|
+ fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
|
|
|
+ filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
|
|
|
+ pick: false,
|
|
|
+ },
|
|
|
+ // 清单固定类别是“建筑安装工程费”的以外部分可显示。(定额设备购置费按40%计)
|
|
|
+ 定额建筑安装工程费: {
|
|
|
+ base: "DEJZAZGCFSBSS",
|
|
|
+ fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
|
|
|
+ filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
|
|
|
+ pick: false,
|
|
|
+ },
|
|
|
+ // 清单固定类别是“建筑安装工程费”的以外部分可显示
|
|
|
+ "建筑安装工程费(不含设备费)": {
|
|
|
+ base: "JZAZGCFBHSB",
|
|
|
+ fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
|
|
|
+ filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
|
|
|
+ pick: false,
|
|
|
+ },
|
|
|
+ "定额建筑安装工程费(不含专项费用)": {
|
|
|
+ base: "DEJZAZGCFBHZXF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.SPECIAL_COST],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ "建筑安装工程费(不含安全生产费)": {
|
|
|
+ base: "JZAZGCFBHAQSCF",
|
|
|
+ // fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.SAFE_COST],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 取清单固定类别是“养护工程其他费”的金额。“建筑安装工程费”、“养护工程其他费”以外部分可显示。
|
|
|
+ 养护工程其他费: {
|
|
|
+ base: "YHGCQTFY",
|
|
|
+ fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
|
|
|
+ filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: false,
|
|
|
+ },
|
|
|
+ // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
|
|
|
+ 养护管理单位项目管理费: {
|
|
|
+ isProgressive: true,
|
|
|
+ base: "YHDWXMGLF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 养护管理单位项目管理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
|
|
|
+ 养护项目信息化费: {
|
|
|
+ isProgressive: true,
|
|
|
+ base: "XXHF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 工程监理费: 按“定额建筑安装工程费”为基数,以累进办法计算。仅在清单固定类别是“养护工程其他费”的清单显示
|
|
|
+ 工程监理费: {
|
|
|
+ isProgressive: true,
|
|
|
+ base: "GCJLF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 设计文件审查费(一阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
|
|
|
+ "设计文件审查费(一阶段)": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 3000,
|
|
|
+ base: "SJWJSCFYJD",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 设计文件审查费(二阶段): 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足3000元,按3000元计取。
|
|
|
+ "设计文件审查费(二阶段)": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 3000,
|
|
|
+ base: "SJWJSCFEJD",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 采用一阶段施工图设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ 采用一阶段施工图设计的养护工程项目前期工作费: {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "SGTSJQQGZF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 采用一阶段技术(方案)设计的养护工程项目前期工作费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ "采用一阶段技术(方案)设计的养护工程项目前期工作费": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "JSFASJQQGZF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 独立进行维修、加固的一般桥梁工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ "独立进行维修、加固的一般桥梁工程设计费": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "DLLXJXWXJGDYBQLGCSJF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 独立进行维修、加固的技术复杂大桥工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ "独立进行维修、加固的技术复杂大桥工程设计费": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "DLLXJXWXJGDJSFZDQGCSJF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 独立进行维修、加固的隧道工程设计费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ "独立进行维修、加固的隧道工程设计费": {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "DLLXJXWXJGDSDGCSJF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 招标费: 按“定额建筑安装工程费”为基数,以累进办法计算。只有清单固定类别是“养护工程其他费用”部分可显示。不足5000元,按5000元计取。
|
|
|
+ 招标费: {
|
|
|
+ isProgressive: true,
|
|
|
+ deficiency: 5000,
|
|
|
+ base: "ZBF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ // 工程保险费: 按“定额建筑安装工程费(不含设备费)”为基数,以0.4费率计算。仅清单固定类别是“养护工程其他费”可显示。
|
|
|
+ 工程保险费: {
|
|
|
+ base: "GCBXF",
|
|
|
+ fixedFlag: null,
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
+ pick: true,
|
|
|
+ },
|
|
|
+ 价差预备费: {
|
|
|
+ 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 = {
|
|
|
+ // 定额建筑安装工程费(定额设备购置费按40%计):取清单固定类别是“建筑安装工程”的定额建安费,其中定额设备购置费按40%计算
|
|
|
+ DEJZAZGCFSBSS(tender) {
|
|
|
+ const feeField = "rationCommon";
|
|
|
+ const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
|
|
|
+ //建安费扣除定额设备购置费
|
|
|
+ const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, tender, feeField, false);
|
|
|
+ //定额设备购置费
|
|
|
+ const equipmentAcFee = cbTools.getBaseFee(deductFlags[0], tender, feeField);
|
|
|
+ return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ },
|
|
|
+ // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
|
|
|
+ JZAZGCFBHSB(tender) {
|
|
|
+ //建安费扣除设备费
|
|
|
+ return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "common");
|
|
|
+ },
|
|
|
+ // 定额建筑安装工程费(不含设备费)
|
|
|
+ DEJZAZGCFBHSB(tender) {
|
|
|
+ //建安费扣除设备费
|
|
|
+ return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.EQUIPMENT_ACQUISITION_FEE], tender, "rationCommon");
|
|
|
+ },
|
|
|
+ // 建筑安装工程费:取清单固定类别是“建筑安装工程”的金额
|
|
|
+ JZAZGCF(tender) {
|
|
|
+ return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, "common");
|
|
|
+ },
|
|
|
+ // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
|
|
|
+ TDSYJCQBCF(tender) {
|
|
|
+ return cbTools.getBaseFee(fixedFlag.LAND_USED_DEMOLITION, tender, "common");
|
|
|
+ },
|
|
|
+ // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
|
|
|
+ YHGCQTFY(tender) {
|
|
|
+ return cbTools.getBaseFee(fixedFlag.MAINTENANCE_EXPENSES, tender, "common");
|
|
|
+ },
|
|
|
+ // 预备费:取清单固定类别是“预备费”的金额
|
|
|
+ YBF(tender) {
|
|
|
+ return cbTools.getBaseFee(fixedFlag.BUDGET_FEE, tender, "common");
|
|
|
+ },
|
|
|
+ // 养护单位项目管理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
|
|
|
+ YHDWXMGLF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFSBSS"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "养护单位项目管理费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ // 信息化费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”
|
|
|
+ XXHF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFSBSS"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, "信息化费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
+ },
|
|
|
+ // 工程监理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
|
|
|
+ GCJLF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFSBSS"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, "工程监理费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
+ },
|
|
|
+ // 前期工作费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
|
|
|
+ QQGZF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFSBSS"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, "前期工作费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
+ },
|
|
|
+ // 价差预备费
|
|
|
+ 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);
|
|
|
+ },
|
|
|
+ DEJZAZGCFBHZXF(tender) {
|
|
|
+ // 定额建筑安装工程费(不含专项费用)
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ const zxf = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, "rationCommon");
|
|
|
+ return (baseFee - zxf).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ },
|
|
|
+ // {建筑安装工程费(不含安全生产费)}
|
|
|
+ JZAZGCFBHAQSCF(tender) {
|
|
|
+ return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, [fixedFlag.SAFE_COST], tender, "common");
|
|
|
+ },
|
|
|
+ // 设计文件审查费(一阶段)和 设计文件审查费(二阶段)两个基数计算后金额不满2000元均应按2000元计。
|
|
|
+ SJWJSCFYJD(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "设计文件审查费(一阶段)",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ SJWJSCFEJD(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "设计文件审查费(二阶段)",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ DLLXJXWXJGDYBQLGCSJF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "独立进行维修、加固的一般桥梁工程设计费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ DLLXJXWXJGDJSFZDQGCSJF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "独立进行维修、加固的技术复杂大桥工程设计费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ DLLXJXWXJGDSDGCSJF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "独立进行维修、加固的隧道工程设计费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ ZBF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(baseFee, "招标费", projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
+ },
|
|
|
+ SGTSJQQGZF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFBHZXGLF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "采用一阶段施工图设计的养护工程项目前期工作费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ JSFASJQQGZF(tender) {
|
|
|
+ const baseFee = this["DEJZAZGCFBHZXGLF"](tender);
|
|
|
+ if (!tender) {
|
|
|
+ calcBase.baseProgressiveFee = baseFee;
|
|
|
+ }
|
|
|
+ return calculateUtil.getProgressiveFee(
|
|
|
+ baseFee,
|
|
|
+ "采用一阶段技术(方案)设计的养护工程项目前期工作费",
|
|
|
+ projectObj.project.property.progressiveInterval,
|
|
|
+ decimalObj.bills.totalPrice,
|
|
|
+ deficiency
|
|
|
+ );
|
|
|
+ },
|
|
|
+ GCBXF(tender) {
|
|
|
+ return (DEJZAZGCFBHSB(tender) * 0.4).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);
|
|
|
+ },
|
|
|
+ // 清单项目基数:{定额建筑安装工程费(定额设备购置费按40%计)} 算法:取清单固定类别是“第100章至700章清单”的定额建安费(其中定额设备费+设备税金之和按40%计算)。显示:只有清单固定类别是“第100章清单总则”的部分可显示。
|
|
|
+ DEJZAZGCF(tender) {
|
|
|
+ const baseFee = cbTools.getBaseFee(fixedFlag.ONE_SEVEN_BILLS, tender, "rationCommon");
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find((node) => node.getFlag() === fixedFlag.ONE_SEVEN_BILLS);
|
|
|
+ const equipmentTaxFee = cbTools.getEquipmentFee(fixedNode, tender, "rationCommon");
|
|
|
+ return (baseFee - equipmentTaxFee * 0.6).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ },
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+if (typeof materialCalcObj !== "undefined" && materialCalcObj.rationSetting) {
|
|
|
+ let h = _.find(materialCalcObj.rationSetting.header, { dataCode: "feeType" });
|
|
|
+ if (h) h.visible = true;
|
|
|
+ let mt = _.find(materialCalcObj.freightSetting.header, { dataCode: "materialType" });
|
|
|
+ if (mt) mt.visible = true;
|
|
|
+}
|
|
|
+
|
|
|
+//内蒙施工进出场(km)费率值修改特殊处理
|
|
|
+
|
|
|
+if (typeof feeRateObject !== "undefined") {
|
|
|
+ feeRateObject.feeRateSpecialHandle = function (subRate, value) {
|
|
|
+ let result = {};
|
|
|
+ if (subRate.name == "施工进出场(km)" && value && value < 5) {
|
|
|
+ //输入的数值(公里数)< 5时,该项费用不计取。
|
|
|
+ result.valueKey = "0";
|
|
|
+ result.value = scMathUtil.roundForObj(value, getDecimal("feeRate")); //设置显示的节点值
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+if (typeof module !== "undefined") {
|
|
|
+ module.exports = {
|
|
|
+ progression,
|
|
|
+ deficiency,
|
|
|
+ };
|
|
|
+}
|