|
@@ -97,7 +97,6 @@ let defaultBillTemplate = {
|
|
|
}
|
|
|
]
|
|
|
};*/
|
|
|
-
|
|
|
let calcTools = {
|
|
|
getNodeByFlag: function (flag) {
|
|
|
let bill = cbTools.findBill(flag);
|
|
@@ -249,10 +248,10 @@ let calcTools = {
|
|
|
}
|
|
|
return result;
|
|
|
},
|
|
|
- // 这里的小数取舍比较复杂,必须严格遵循需求,不能随意改动,否则计算结果会差1分钱。
|
|
|
+ // 父清单暂估费的汇总计算走计算程序逻辑,不在这里。这里的小数取舍比较复杂,必须严格遵循需求,不能随意改动,否则计算结果会有误差:如差1分钱。
|
|
|
estimateFee: function (treeNode, isBase = false){
|
|
|
let me = this, sumU = 0, sumT = 0;
|
|
|
- // 父清单暂估费的汇总计算走计算程序逻辑,不在这里。
|
|
|
+ // 总造价暂估费
|
|
|
if (me.isTotalCostBill(treeNode)){
|
|
|
let nodes = projectObj.project.mainTree.roots;
|
|
|
for (let node of nodes){
|
|
@@ -348,11 +347,11 @@ let calcTools = {
|
|
|
if (treeNode.data.type != rationType.volumePrice && treeNode.data.type != rationType.gljRation) return;
|
|
|
let result = 0, me = this;
|
|
|
if (
|
|
|
- (treeNode.data.subType === gljType.LABOUR && baseName === '定额基价人工费') ||
|
|
|
- (baseMaterialTypes.includes(treeNode.data.subType) && baseName === '定额基价材料费') ||
|
|
|
- (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '定额基价机械费') ||
|
|
|
- (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === '主材费') ||
|
|
|
- (treeNode.data.subType === gljType.EQUIPMENT && baseName === '设备费')) {
|
|
|
+ (treeNode.data.subType === gljType.LABOUR && baseName === calcBaseNames.DEJJRGF) ||
|
|
|
+ (baseMaterialTypes.includes(treeNode.data.subType) && baseName === calcBaseNames.DEJJCLF) ||
|
|
|
+ (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === calcBaseNames.DEJJJXF) ||
|
|
|
+ (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName === calcBaseNames.ZCF) ||
|
|
|
+ (treeNode.data.subType === gljType.EQUIPMENT && baseName === calcBaseNames.SBF)) {
|
|
|
if (treeNode.data.type == rationType.volumePrice)
|
|
|
result = treeNode.data.marketUnitFee ? parseFloat(treeNode.data.marketUnitFee).toDecimal(decimalObj.ration.unitPrice) : 0
|
|
|
else if (treeNode.data.type == rationType.gljRation)
|
|
@@ -360,7 +359,7 @@ let calcTools = {
|
|
|
// 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
|
|
|
result = gljOprObj.getBasePrice(treeNode);
|
|
|
}
|
|
|
- else if (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '定额基价机上人工费') {
|
|
|
+ else if (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === calcBaseNames.DEJJJSRGF) {
|
|
|
let glj = {
|
|
|
'code': treeNode.data.code,
|
|
|
'name': treeNode.data.name,
|
|
@@ -373,9 +372,9 @@ let calcTools = {
|
|
|
}
|
|
|
else if (
|
|
|
(treeNode.data.type == rationType.gljRation) &&
|
|
|
- ((treeNode.data.subType === gljType.LABOUR && baseName === '人工费价差') ||
|
|
|
- (baseMaterialTypes.includes(treeNode.data.subType) && baseName === '材料费价差') ||
|
|
|
- (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === '机械费价差'))
|
|
|
+ ((treeNode.data.subType === gljType.LABOUR && baseName === calcBaseNames.RGFJC) ||
|
|
|
+ (baseMaterialTypes.includes(treeNode.data.subType) && baseName === calcBaseNames.CLFJC) ||
|
|
|
+ (treeNode.data.subType === gljType.GENERAL_MACHINE && baseName === calcBaseNames.JXFJC))
|
|
|
) {
|
|
|
let aprice = me.uiGLJPrice(treeNode.data.adjustPrice);
|
|
|
let mprice = me.uiGLJPrice(treeNode.data.marketUnitFee);
|
|
@@ -383,6 +382,56 @@ let calcTools = {
|
|
|
}
|
|
|
return result;
|
|
|
},
|
|
|
+ supplyABFee: function (treeNode, baseName) {
|
|
|
+ if (!treeNode.data.gljList) return 0;
|
|
|
+ let projectGLJ = projectObj.project.projectGLJ;
|
|
|
+
|
|
|
+ let supplyT = [];
|
|
|
+ if (baseName.includes('甲供'))
|
|
|
+ supplyT = [supplyType.BFJG, supplyType.WQJG]
|
|
|
+ else if (baseName.includes('甲定'))
|
|
|
+ supplyT = [supplyType.JDYG];
|
|
|
+
|
|
|
+ let gljT = [], compositionArr = [];
|
|
|
+ if (baseName == calcBaseNames.JGDEJJRGF || baseName == calcBaseNames.JDDEJJRGF){
|
|
|
+ gljT = [gljType.LABOUR];
|
|
|
+ }
|
|
|
+ else if (baseName == calcBaseNames.JGDEJJCLF || baseName == calcBaseNames.JDDEJJCLF){
|
|
|
+ gljT = baseMaterialTypes;
|
|
|
+ compositionArr = compositionTypes;
|
|
|
+ }
|
|
|
+ else if (baseName == calcBaseNames.JGDEJJJXF || baseName == calcBaseNames.JDDEJJJXF){
|
|
|
+ gljT = baseMachineTypes;
|
|
|
+ compositionArr = [gljType.GENERAL_MACHINE];
|
|
|
+ }
|
|
|
+ else if (baseName == calcBaseNames.JGZCF || baseName == calcBaseNames.JDZCF){
|
|
|
+ gljT = [gljType.MAIN_MATERIAL];
|
|
|
+ compositionArr = [gljType.MAIN_MATERIAL];
|
|
|
+ }
|
|
|
+ else if (baseName == calcBaseNames.JGSBF || baseName == calcBaseNames.JDSBF){
|
|
|
+ gljT = [gljType.EQUIPMENT];
|
|
|
+ };
|
|
|
+
|
|
|
+ let pGLJs = projectGLJ.getGLJsBySupply(supplyT, gljT);
|
|
|
+ if (pGLJs.length == 0) return 0;
|
|
|
+
|
|
|
+ let pGLJIdx = {};
|
|
|
+ for (let pglj of pGLJs){pGLJIdx[pglj.GLJID] = pglj};
|
|
|
+
|
|
|
+ let sum = 0;
|
|
|
+ for (let glj of treeNode.data.gljList){
|
|
|
+ if (pGLJIdx[glj.GLJID]) {
|
|
|
+ if (compositionArr.includes(glj.type) && 1) {
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sum = sum + glj.basePrice * glj.quantity;
|
|
|
+ };
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+ sum = sum.toDecimal(decimalObj.ration.unitPrice);
|
|
|
+ return sum;
|
|
|
+ },
|
|
|
getCalcType: function (treeNode) {
|
|
|
if (this.isRationCategory(treeNode)){
|
|
|
return treeNodeCalcType.ctRationCalcProgram;
|
|
@@ -467,6 +516,36 @@ let calcTools = {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+const calcBaseNames = {
|
|
|
+ DEJJRGF: '定额基价人工费',
|
|
|
+ DEJJCLF: '定额基价材料费',
|
|
|
+ DEJJJXF: '定额基价机械费',
|
|
|
+ DEJJJSRGF: '定额基价机上人工费',
|
|
|
+ RGFJC: '人工费价差',
|
|
|
+ CLFJC: '材料费价差',
|
|
|
+ JXFJC: '机械费价差',
|
|
|
+ ZCF: '主材费',
|
|
|
+ SBF: '设备费',
|
|
|
+ RGGR: '人工工日',
|
|
|
+ JGDEJJRGF: '甲供定额基价人工费',
|
|
|
+ JGDEJJCLF: '甲供定额基价材料费',
|
|
|
+ JGDEJJJXF: '甲供定额基价机械费',
|
|
|
+ JGZCF: '甲供主材费',
|
|
|
+ JGSBF: '甲供设备费',
|
|
|
+ JDDEJJRGF: '甲定定额基价人工费',
|
|
|
+ JDDEJJCLF: '甲定定额基价材料费',
|
|
|
+ JDDEJJJXF: '甲定定额基价机械费',
|
|
|
+ JDZCF: '甲定主材费',
|
|
|
+ JDSBF: '甲定设备费',
|
|
|
+ ZGCLF: '暂估材料费',
|
|
|
+ FBDEJJRGF: '分包定额基价人工费',
|
|
|
+ FBDEJJCLF: '分包定额基价材料费',
|
|
|
+ FBDEJJJXF: '分包定额基价机械费',
|
|
|
+ FBZCF: '分包主材费',
|
|
|
+ FBSBF: '分包设备费',
|
|
|
+ FBRGGR: '分包人工工日'
|
|
|
+};
|
|
|
+
|
|
|
const rationCalcBases = {
|
|
|
'定额基价人工费': function (node) {
|
|
|
return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice);
|
|
@@ -1012,8 +1091,8 @@ class CalcProgram {
|
|
|
rttf = parseFloatPlus(node.data.feesIndex[ft.type].tenderTotalFee).toDecimal(decimalObj.bills.totalPrice);
|
|
|
};
|
|
|
if (me.project.property.billsCalcMode === leafBillGetFeeType.rationContent) {
|
|
|
- buf = (buf + (ruf * rq / bq).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.bills.unitPrice);
|
|
|
- btuf = (btuf + (rtuf * rq / bq).toDecimal(decimalObj.bills.unitPrice)).toDecimal(decimalObj.bills.unitPrice);
|
|
|
+ buf = (buf + (ruf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
|
|
|
+ btuf = (btuf + (rtuf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
|
|
|
};
|
|
|
sum_rtf = (sum_rtf + rtf).toDecimal(decimalObj.process);
|
|
|
sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
|