|
@@ -74,7 +74,7 @@ function overwriteRationCalcBases() {
|
|
|
];
|
|
];
|
|
|
})();
|
|
})();
|
|
|
|
|
|
|
|
-// 清单基数,工程量清单的基数没有变化,只修改预算的
|
|
|
|
|
|
|
+// 清单基数
|
|
|
if (typeof baseFigureMap !== 'undefined' && baseFigureMap.budget) {
|
|
if (typeof baseFigureMap !== 'undefined' && baseFigureMap.budget) {
|
|
|
baseFigureMap.budget = {
|
|
baseFigureMap.budget = {
|
|
|
// 清单固定类别是“建筑安装工程费”的以外部分可显示
|
|
// 清单固定类别是“建筑安装工程费”的以外部分可显示
|
|
@@ -159,11 +159,39 @@ if (typeof baseFigureMap !== 'undefined' && baseFigureMap.budget) {
|
|
|
filter: [fixedFlag.SPREAD_BUDGET_FEE],
|
|
filter: [fixedFlag.SPREAD_BUDGET_FEE],
|
|
|
pick: true,
|
|
pick: true,
|
|
|
},
|
|
},
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ baseFigureMap.boq = {
|
|
|
|
|
+ //仅允许用于固定类别是“第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
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// 清单基数,工程量清单的基数没有变化,只修改预算的
|
|
|
|
|
-if (typeof baseFigureTemplate !== 'undefined' && baseFigureTemplate.budget) {
|
|
|
|
|
|
|
+// 清单基数
|
|
|
|
|
+if (typeof baseFigureTemplate !== 'undefined') {
|
|
|
baseFigureTemplate.budget = {
|
|
baseFigureTemplate.budget = {
|
|
|
// 定额建筑安装工程费(定额设备购置费按40%计):取清单固定类别是“建筑安装工程”的定额建安费,其中定额设备购置费按40%计算
|
|
// 定额建筑安装工程费(定额设备购置费按40%计):取清单固定类别是“建筑安装工程”的定额建安费,其中定额设备购置费按40%计算
|
|
|
DEJZAZGCFSBSS(tender) {
|
|
DEJZAZGCFSBSS(tender) {
|
|
@@ -247,6 +275,60 @@ if (typeof baseFigureTemplate !== 'undefined' && baseFigureTemplate.budget) {
|
|
|
return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
|
|
return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
|
|
+ baseFigureTemplate.boq = {
|
|
|
|
|
+ //{各章清单合计}
|
|
|
|
|
+ // 取清单固定类别是“第100章至700章清单”的金额
|
|
|
|
|
+ 'GZQDHJ': function (tender) {
|
|
|
|
|
+ let feeField = 'common',
|
|
|
|
|
+ subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
|
|
|
|
|
+ return cbTools.getBillsFee(calcBase.fixedFlag.ONE_SEVEN_BILLS, feeField, subFeeField);
|
|
|
|
|
+ },
|
|
|
|
|
+ //{专项暂定合计}
|
|
|
|
|
+ // 汇总专项暂定列有值的清单的金额
|
|
|
|
|
+ 'ZXZDHJ': function (tender) {
|
|
|
|
|
+ let rst = 0,
|
|
|
|
|
+ feeField = 'common',
|
|
|
|
|
+ subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
|
|
|
|
|
+ let billsData = calcBase.project.Bills.datas,
|
|
|
|
|
+ filterData = billsData.filter(function (data) {
|
|
|
|
|
+ return data.specialProvisional;
|
|
|
|
|
+ });
|
|
|
|
|
+ for (let data of filterData) {
|
|
|
|
|
+ if (cbTools.isUnDef(data.feesIndex) || _.isEmpty(data.feesIndex) ||
|
|
|
|
|
+ cbTools.isUnDef(data.feesIndex[feeField]) || cbTools.isUnDef(data.feesIndex[feeField][subFeeField])) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ rst += data.feesIndex[feeField][subFeeField];
|
|
|
|
|
+ }
|
|
|
|
|
+ return rst.toDecimal(decimalObj.bills.totalPrice);
|
|
|
|
|
+ },
|
|
|
|
|
+ //{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 materialCalcObj !== 'undefined' && materialCalcObj.rationSetting){
|
|
if(typeof materialCalcObj !== 'undefined' && materialCalcObj.rationSetting){
|