瀏覽代碼

设备费计算不正确

chenshilong 6 年之前
父節點
當前提交
4417b44031

+ 16 - 13
web/building_saas/main/js/models/calc_program.js

@@ -49,7 +49,7 @@ let calcTools = {
     },
     },
     isTotalCostBill: function (treeNode) {
     isTotalCostBill: function (treeNode) {
         return treeNode.data.flagsIndex && treeNode.data.flagsIndex.fixed && treeNode.data.flagsIndex.fixed.flag &&
         return treeNode.data.flagsIndex && treeNode.data.flagsIndex.fixed && treeNode.data.flagsIndex.fixed.flag &&
-            treeNode.data.flagsIndex.fixed.flag == fixedFlag.ENGINEERINGCOST;
+            treeNode.data.flagsIndex.fixed.flag == fixedFlag.TOTAL_COST;
     },
     },
     isRationCategory: function(treeNode){
     isRationCategory: function(treeNode){
         return treeNode.sourceType === ModuleNames.ration;
         return treeNode.sourceType === ModuleNames.ration;
@@ -492,17 +492,20 @@ let calcTools = {
             (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'));
             (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'));
 
 
         if (rcj ||
         if (rcj ||
-            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'))
-            ) {
+            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'))) {
+            let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 0;
             if (treeNode.data.type == rationType.volumePrice){
             if (treeNode.data.type == rationType.volumePrice){
-                let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 0;
                 result = treeNode.data.marketUnitFee ? (parseFloat(treeNode.data.marketUnitFee) * nodeQ).toDecimal(decimalObj.ration.unitPrice) : 0
                 result = treeNode.data.marketUnitFee ? (parseFloat(treeNode.data.marketUnitFee) * nodeQ).toDecimal(decimalObj.ration.unitPrice) : 0
             }
             }
+            else if (treeNode.data.type == rationType.gljRation){
+                let prc = 0;
+                if (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'))
+                    prc = gljOprObj.getMarketPrice(treeNode)
+                else
+                    prc = gljOprObj.getBasePrice(treeNode);
+                result = (prc * nodeQ).toDecimal(decimalObj.ration.unitPrice);
+            }
 
 
-            else if (treeNode.data.type == rationType.gljRation)
-            // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
-            // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
-                result = gljOprObj.getBasePrice(treeNode);
         }
         }
         else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
         else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
             let glj = {
             let glj = {
@@ -1729,7 +1732,7 @@ class CalcProgram {
 
 
             // 第1、2部分以外的叶子清单在没有公式的情况下可以手工修改综合单价并参与计算。
             // 第1、2部分以外的叶子清单在没有公式的情况下可以手工修改综合单价并参与计算。
             // 2017-09-27 需求改了,除了第 1 、 2.2部分以外,都可以手工修改综合单价、综合合价并参与计算
             // 2017-09-27 需求改了,除了第 1 、 2.2部分以外,都可以手工修改综合单价、综合合价并参与计算
-            if(!calcTools.isFBFX(treeNode) && !calcTools.isTechMeasure(treeNode)){ // if(!calcTools.isInheritFrom(treeNode, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]))
+            if(!calcTools.isFBFX(treeNode) && !calcTools.isTechMeasure(treeNode)){
                 if (treeNode.data.feesIndex && treeNode.data.feesIndex.common){
                 if (treeNode.data.feesIndex && treeNode.data.feesIndex.common){
                     let ftObj = {};
                     let ftObj = {};
                     ftObj.fieldName = 'common';
                     ftObj.fieldName = 'common';
@@ -1782,8 +1785,8 @@ class CalcProgram {
                 calcTools.initSummaryFee(treeNode);
                 calcTools.initSummaryFee(treeNode);
                 treeNode.data.summaryFees.totalFee = tf;
                 treeNode.data.summaryFees.totalFee = tf;
                 treeNode.data.summaryFees.estimateFee = calcTools.getFee(treeNode, 'estimate.totalFee');
                 treeNode.data.summaryFees.estimateFee = calcTools.getFee(treeNode, 'estimate.totalFee');
-                treeNode.data.summaryFees.safetyFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.SAFETY_CONSTRUCTION), 'common.totalFee');
-                treeNode.data.summaryFees.chargeFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.CHARGE), 'common.totalFee');
+                // treeNode.data.summaryFees.safetyFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.SAFETY_CONSTRUCTION), 'common.totalFee');
+                // treeNode.data.summaryFees.chargeFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.CHARGE), 'common.totalFee');
             }
             }
 
 
             treeNode.data.calcTemplate = {"calcItems": []};
             treeNode.data.calcTemplate = {"calcItems": []};
@@ -2080,8 +2083,8 @@ class CalcProgram {
         let baseNodes = [], me = this;
         let baseNodes = [], me = this;
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.SUB_ENGINERRING));
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.SUB_ENGINERRING));
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.MEASURE));
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.MEASURE));
-        baseNodes.push(calcTools.getNodeByFlag(fixedFlag.OTHER));
-        baseNodes.push(calcTools.getNodeByFlag(fixedFlag.CHARGE));
+        // baseNodes.push(calcTools.getNodeByFlag(fixedFlag.OTHER));
+        // baseNodes.push(calcTools.getNodeByFlag(fixedFlag.CHARGE));
         return me.getTotalFee(baseNodes, excludeNodes, tender);
         return me.getTotalFee(baseNodes, excludeNodes, tender);
     };
     };
 
 

+ 8 - 2
web/building_saas/main/js/views/glj_view.js

@@ -759,6 +759,11 @@ var gljOprObj = {
             return scMathUtil.roundForObj(treeNode.data.marketUnitFee,getDecimal("glj.unitPrice"));
             return scMathUtil.roundForObj(treeNode.data.marketUnitFee,getDecimal("glj.unitPrice"));
         }
         }
     },
     },
+    getMarketPrice:function (treeNode) {//造价书中的工料机修改的节点要用到
+        let proGLJ =  projectObj.project.projectGLJ;
+        let glj =_.find(proGLJ.datas.gljList, {'id': treeNode.data.projectGLJID});
+        return proGLJ.getMarketPrice(glj);
+    },
     calcPriceDiff:function (glj) {
     calcPriceDiff:function (glj) {
         let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
         let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
         return gljUtil.calcPriceDiff(glj,calcOptions);
         return gljUtil.calcPriceDiff(glj,calcOptions);
@@ -922,7 +927,7 @@ var gljOprObj = {
     updateRationTypeGLJ: function (value, node, fieldName,editingText) {
     updateRationTypeGLJ: function (value, node, fieldName,editingText) {
         let newval;
         let newval;
         let updatePrice = false;
         let updatePrice = false;
-        if (fieldName == "marketUnitFee") {
+        if (fieldName == "marketUnitFee" || fieldName == "feesIndex.common.unitFee") {
             updatePrice = true;
             updatePrice = true;
             if (value == null) {
             if (value == null) {
                 newval = 0;
                 newval = 0;
@@ -930,7 +935,8 @@ var gljOprObj = {
                 var decimal = getDecimal("glj.unitPrice");
                 var decimal = getDecimal("glj.unitPrice");
                 newval = number_util.checkNumberValue(value, decimal);
                 newval = number_util.checkNumberValue(value, decimal);
             }
             }
-        } else {
+        }
+        else {
             if (value != null) {
             if (value != null) {
                 projectObj.project.projectGLJ.updatePropertyFromMainSpread(node, fieldName, value,editingText);
                 projectObj.project.projectGLJ.updatePropertyFromMainSpread(node, fieldName, value,editingText);
                 return;
                 return;

+ 9 - 5
web/building_saas/main/js/views/project_view.js

@@ -449,11 +449,14 @@ var projectObj = {
         } else if (value !== calcFees.getFee(node.data, fieldName)||fieldName == 'quantity') {//工程量需要进行转换,所以做特殊处理
         } else if (value !== calcFees.getFee(node.data, fieldName)||fieldName == 'quantity') {//工程量需要进行转换,所以做特殊处理
             if (fieldName === 'code' && value != '' && !calcTools.isVolumePrice(node)) {
             if (fieldName === 'code' && value != '' && !calcTools.isVolumePrice(node)) {
                 projectObj.updateCode(node, value);
                 projectObj.updateCode(node, value);
-            } else if(fieldName ==='feeRate'){
+            }
+            else if(fieldName ==='feeRate'){
                 project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
                 project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
-            } else if(fieldName ==='contain'){//编辑含量
+            }
+            else if(fieldName ==='contain'){//编辑含量
                 project.Ration.updateContain(value,node);
                 project.Ration.updateContain(value,node);
-            } else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee' || fieldName === 'programID' ||
+            }
+            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee' || fieldName === 'programID' ||
                 fieldName === 'subType' || fieldName === 'calcBase' || fieldName === 'isSubcontract'){
                 fieldName === 'subType' || fieldName === 'calcBase' || fieldName === 'isSubcontract'){
                 if (fieldName === 'quantity') {
                 if (fieldName === 'quantity') {
                     quantityEditObj.checkingAndUpdate(editingText,node);
                     quantityEditObj.checkingAndUpdate(editingText,node);
@@ -474,7 +477,7 @@ var projectObj = {
                                 fieldName = 'marketUnitFee';
                                 fieldName = 'marketUnitFee';
                             }
                             }
                         }
                         }
-                        if(fieldName === 'feesIndex.common.totalFee'){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
+                        else if(fieldName === 'feesIndex.common.totalFee'){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
                             let unitfee = 0;
                             let unitfee = 0;
                             if(node.data.quantity){//如果工程量为0或空,综合合单直接填到综合单价
                             if(node.data.quantity){//如果工程量为0或空,综合合单直接填到综合单价
                                 let t_quantity = scMathUtil.roundForObj(node.data.quantity,getDecimal("quantity",node));
                                 let t_quantity = scMathUtil.roundForObj(node.data.quantity,getDecimal("quantity",node));
@@ -511,7 +514,8 @@ var projectObj = {
                 };
                 };
                 project.calcProgram.calcAndSave(node);
                 project.calcProgram.calcAndSave(node);
                 gljOprObj.showRationGLJSheetData();
                 gljOprObj.showRationGLJSheetData();
-            } else if (node.sourceType === project.Bills.getSourceType()&&fieldName === 'unit'){
+            }
+            else if (node.sourceType === project.Bills.getSourceType()&&fieldName === 'unit'){
                 node.updateData[fieldName] = value;
                 node.updateData[fieldName] = value;
                 node.changed = true;
                 node.changed = true;
                 if(node.data.quantity){
                 if(node.data.quantity){