|
|
@@ -175,6 +175,13 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
|
|
|
pick: false
|
|
|
},
|
|
|
+ // 显示:仅清单固定类别是“安全生产费”行可显示
|
|
|
+ '建筑安装工程费(不含安全生产费)': {
|
|
|
+ base: 'JZAZGCFBHSC',
|
|
|
+ fixedFlag: null, // 防止触发循环计算
|
|
|
+ filter: [fixedFlag.SAFE_COST],
|
|
|
+ pick: true
|
|
|
+ },
|
|
|
// 显示:仅清单固定类别是“工程建设其他费”部分可显示
|
|
|
'建筑安装工程费(不含设备费)': {
|
|
|
base: 'JZAZGCFBHSB',
|
|
|
@@ -189,11 +196,11 @@ if (typeof baseFigureMap !== 'undefined') {
|
|
|
filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true
|
|
|
},
|
|
|
- // 显示:仅清单固定类别是“工程建设其他费”、“专项费用”部分可显示
|
|
|
+ // 显示:仅清单固定类别是“工程建设其他费”可显示
|
|
|
'定额建筑安装工程费(不含定额设备购置费、专项费用)': {
|
|
|
base: 'DEJZAZGCFBHSBZX',
|
|
|
fixedFlag: null,
|
|
|
- filter: [fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.SPECIAL_COST],
|
|
|
+ filter: [fixedFlag.MAINTENANCE_EXPENSES],
|
|
|
pick: true,
|
|
|
},
|
|
|
// 显示:仅清单固定类别是“施工场地建设费”的可显示
|
|
|
@@ -296,24 +303,17 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
DEJZAZGCF(tender) {
|
|
|
return cbTools.getBaseFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, tender, 'rationCommon');
|
|
|
},
|
|
|
+ // 建筑安装工程费(不含安全生产费) 算法:取固定类别是“建筑安装工程费”的“建安费”,扣除固定类别是“安全生产费”的“建安费”
|
|
|
+ JZAZGCFBHSC(tender) {
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const safeFee = cbTools.getBaseFee(fixedFlag.SAFE_COST, tender, 'rationCommon');
|
|
|
+ return (baseFee - safeFee).toDecimal(decimalObj.bills.totalPrice);
|
|
|
+ },
|
|
|
// 建设安装工程费(不含设备费) 算法:取固定类别是“建筑安装工程费”的金额。扣除设备的金额。(全国造价云版中,没有固定的设备购置行,需要扣除所有类别是“设备”的金额,仅指设备行,不包括定额工料机的设备)
|
|
|
JZAZGCFBHSB(tender) {
|
|
|
let baseFee = this['JZAZGCF'](tender);
|
|
|
const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
- const allSubNodes = [];
|
|
|
- projectObj.project.mainTree.getAllSubNode(fixedNode, allSubNodes);
|
|
|
- const equipmentNodes = allSubNodes.filter(node => node.data.type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
|
|
|
- const feeField = 'common';
|
|
|
- const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
|
|
|
- let totalEquipmentFee = 0;
|
|
|
- for (const node of equipmentNodes) {
|
|
|
- const data = node.data;
|
|
|
- if (cbTools.isUnDef(data.feesIndex) || _.isEmpty(data.feesIndex) ||
|
|
|
- cbTools.isUnDef(data.feesIndex[feeField]) || cbTools.isUnDef(data.feesIndex[feeField][subFeeField])) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- totalEquipmentFee = (totalEquipmentFee + data.feesIndex[feeField][subFeeField]).toDecimal(decimalObj.process);
|
|
|
- }
|
|
|
+ const totalEquipmentFee = cbTools.getEquipmentFee(fixedNode, tender);
|
|
|
baseFee = (baseFee - totalEquipmentFee).toDecimal(decimalObj.process);
|
|
|
return baseFee.toDecimal(decimalObj.bills.totalPrice);
|
|
|
},
|
|
|
@@ -321,20 +321,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
DEJZAZGCFSBSS(tender) {
|
|
|
let baseFee = this['JZAZGCF'](tender);
|
|
|
const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
- const allSubNodes = [];
|
|
|
- projectObj.project.mainTree.getAllSubNode(fixedNode, allSubNodes);
|
|
|
- const equipmentNodes = allSubNodes.filter(node => node.data.type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
|
|
|
- const feeField = 'common';
|
|
|
- const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
|
|
|
- let totalEquipmentFee = 0;
|
|
|
- for (const node of equipmentNodes) {
|
|
|
- const data = node.data;
|
|
|
- if (cbTools.isUnDef(data.feesIndex) || _.isEmpty(data.feesIndex) ||
|
|
|
- cbTools.isUnDef(data.feesIndex[feeField]) || cbTools.isUnDef(data.feesIndex[feeField][subFeeField])) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- totalEquipmentFee = (totalEquipmentFee + data.feesIndex[feeField][subFeeField]).toDecimal(decimalObj.process);
|
|
|
- }
|
|
|
+ const totalEquipmentFee = cbTools.getEquipmentFee(fixedNode, tender);
|
|
|
baseFee = (baseFee - totalEquipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
return baseFee.toDecimal(decimalObj.bills.totalPrice);
|
|
|
},
|
|
|
@@ -344,7 +331,7 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
const allSubNodes = [];
|
|
|
projectObj.project.mainTree.getAllSubNode(fixedNode, allSubNodes);
|
|
|
- const equipmentNodes = allSubNodes.filter(node => node.data.type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
|
|
|
+ const equipmentNodes = allSubNodes.filter(node => node.data. type === rationType.gljRation && node.data.subType === gljType.EQUIPMENT);
|
|
|
const feeField = 'common';
|
|
|
const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
|
|
|
let diffFee = 0;
|
|
|
@@ -362,50 +349,74 @@ if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
return baseFee.toDecimal(decimalObj.bills.totalPrice);
|
|
|
},
|
|
|
// 施工场地建设费 算法:按“定额建筑安装工程费”扣除专项费为基数,以累进办法计算
|
|
|
+ // 【变更】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除固定类别是“专项费用”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算
|
|
|
SGCDJSF(tender) {
|
|
|
let baseFee = this['DEJZAZGCF'](tender);
|
|
|
- const specialFee = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, 'common');
|
|
|
+ const specialFee = cbTools.getBaseFee(fixedFlag.SPECIAL_COST, tender, 'rationCommon');
|
|
|
baseFee = (baseFee - specialFee).toDecimal(decimalObj.process);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '施工场地建设费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
// 建设单位(业主)管理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
|
|
|
+ // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
|
|
|
JSDWYZGLF(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '建设单位(业主)管理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
// 建设项目信息化费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
|
|
|
+ // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
|
|
|
JSXMXXHF(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '建设项目信息化费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
// 工程监理费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
|
|
|
+ // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
|
|
|
GCJLF(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '工程监理费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
// 设计文件审查费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
|
|
|
+ // 【变更】:算法:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
|
|
|
SJWJSCF(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|
|
|
return calculateUtil.getProgressiveFee(baseFee, '设计文件审查费', projectObj.project.property.progressiveInterval, decimalObj.bills.totalPrice, deficiency);
|
|
|
},
|
|
|
// 前期工作费 算法:按“定额建筑安装工程费”总和为基数,以累进办法计算
|
|
|
+ // 变更:【算法】:按【固定类别是“建筑安装工程费”的“定额建安费”,扣除“设备”的“定额设备费”*60%】为基数,以累进办法计算。
|
|
|
QQGZF(tender) {
|
|
|
- const baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ let baseFee = this['DEJZAZGCF'](tender);
|
|
|
+ const fixedNode = projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.CONSTRUCTION_INSTALL_FEE);
|
|
|
+ const equipmentFee = cbTools.getEquipmentFee(fixedNode, tender, 'rationCommon');
|
|
|
+ baseFee = (baseFee - equipmentFee * 0.6).toDecimal(decimalObj.process);
|
|
|
if (!tender) {
|
|
|
calcBase.baseProgressiveFee = baseFee;
|
|
|
}
|