Ver código fonte

1、内蒙建筑费用类别。
2、改进甲供、甲定分地区算法通用性。
3、改进量价、工料机形式定额的市场价或定额价直接作为基数金额,分地区算法通用性。

chenshilong 6 anos atrás
pai
commit
ffea1d995b

+ 47 - 93
web/building_saas/main/js/models/calc_program.js

@@ -594,49 +594,50 @@ let calcTools = {
         if (treeNode.data.type != rationType.volumePrice && treeNode.data.type != rationType.gljRation) return;
         if (treeNode.data.type != rationType.volumePrice && treeNode.data.type != rationType.gljRation) return;
         let result = 0, me = this;
         let result = 0, me = this;
 
 
-        let rcj = (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'RGF')) ||
-            (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'CLF')) ||
-            (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JXF'));
-
-        if (typeof isJX2017 != 'undefined') {
-            rcj = rcj || (treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'SC_RGF')) ||
-                (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'SC_CLF')) ||
-                (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'SC_JXF'))
-        };
-
-        if (rcj ||
-            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF')) ||
-            (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, '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)
-            // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
-            // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
-                result = gljOprObj.getBasePrice(treeNode);
+        function isRCJZC(treeNode, baseName) {         // 基数名称中是否包含人材机主设,且树结点类型要匹配一致
+            let rst = (treeNode.data.subType === gljType.LABOUR && baseName.includes('人工')) ||    // 人工费、市场人工费
+                (baseMaterialTypes.includes(treeNode.data.subType) && baseName.includes('材料')) ||
+                (treeNode.data.subType === gljType.GENERAL_MACHINE && (baseName.includes('机械') || baseName.includes('机具'))) ||
+                (treeNode.data.subType === gljType.MAIN_MATERIAL && baseName.includes('主材')) ||
+                (treeNode.data.subType === gljType.EQUIPMENT && baseName.includes('设备'));
+            return rst;
         }
         }
-        else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
-            let glj = {
-                'code': treeNode.data.code,
-                'name': treeNode.data.name,
-                'specs': treeNode.data.specs,
-                'unit': treeNode.data.unit,
-                'quantity': 1,
-                'type': treeNode.data.subType      // 注意:这里要取subType
-            };
-            result = me.machineDetailFee(treeNode, [glj], [], gljType.MACHINE_LABOUR, isTender);
+
+        if (baseName.includes('甲供') || baseName.includes('甲定') || baseName.includes('分包')) {
+            result = 0;
+        }
+        else if (baseName.includes('价差')) {
+            if (treeNode.data.type == rationType.gljRation) {
+                if (isRCJZC(treeNode, baseName)) {
+                    let aprice = me.uiGLJPrice(treeNode.data.basePrice);   // 量价虚拟的工料机不可能有发文,这里直接取定额价。
+                    let mprice = me.uiGLJPrice(treeNode.data.marketUnitFee);
+                    result = (mprice - aprice).toDecimal(decimalObj.ration.unitPrice);
+                }
+            }
         }
         }
-        else if (
-            (treeNode.data.type == rationType.gljRation) &&
-            ((treeNode.data.subType === gljType.LABOUR && calcTools.inBase(baseName, 'JC_RGF')) ||
-                (baseMaterialTypes.includes(treeNode.data.subType) && calcTools.inBase(baseName, 'JC_CLF')) ||
-                (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JC_JXF')) ||
-                (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'JC_ZCF')) ||
-                (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'JC_SBF')))
-        ) {
-            let aprice = me.uiGLJPrice(treeNode.data.basePrice);   // 量价虚拟的工料机不可能有发文,这里直接取定额价。
-            let mprice = me.uiGLJPrice(treeNode.data.marketUnitFee);
-            result = (mprice - aprice).toDecimal(decimalObj.ration.unitPrice);
+        else if (baseName.includes('机上人工')) {
+            if (treeNode.data.subType === gljType.GENERAL_MACHINE) {
+                let glj = {
+                    'code': treeNode.data.code,
+                    'name': treeNode.data.name,
+                    'specs': treeNode.data.specs,
+                    'unit': treeNode.data.unit,
+                    'quantity': 1,
+                    'type': treeNode.data.subType      // 注意:这里要取subType
+                };
+                result = me.machineDetailFee(treeNode, [glj], [], gljType.MACHINE_LABOUR, isTender);
+            }
         }
         }
+        else {
+            if (isRCJZC(treeNode, baseName)) {
+                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)
+                // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
+                // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
+                    result = gljOprObj.getBasePrice(treeNode);
+            }
+        };
         return result;
         return result;
     },
     },
     partASupplyFee: function (treeNode, baseName, isTender, isRationPirce = true) {
     partASupplyFee: function (treeNode, baseName, isTender, isRationPirce = true) {
@@ -650,22 +651,20 @@ let calcTools = {
             supplyT = [supplyType.JDYG];
             supplyT = [supplyType.JDYG];
 
 
         let gljT = [], compT = [];
         let gljT = [], compT = [];
-        if (calcTools.inBase(baseName, 'JG_RGF') || calcTools.inBase(baseName, 'JD_RGF')){
-            gljT = [gljType.LABOUR];
-        }
-        else if (calcTools.inBase(baseName, 'JG_CLF') || calcTools.inBase(baseName, 'JD_CLF')){             // 甲供、甲定材料
+        if (baseName.includes('人工')) gljT = [gljType.LABOUR];       // 含人工的:如甲供人工、甲定人工
+        else if (baseName.includes('材料')){
             gljT = baseMaterialTypes;
             gljT = baseMaterialTypes;
             compT = compositionTypes;
             compT = compositionTypes;
         }
         }
-        else if (calcTools.inBase(baseName, 'JG_JXF') || calcTools.inBase(baseName, 'JD_JXF')) {            // 甲供、甲定机械
+        else if (baseName.includes('机械') || baseName.includes('机具')) {
             gljT = baseMachineTypes;
             gljT = baseMachineTypes;
             compT = [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED];              // 取并集,兼容重庆2018新定额
             compT = [gljType.GENERAL_MACHINE, gljType.INSTRUMENT, gljType.OTHER_MACHINE_USED];              // 取并集,兼容重庆2018新定额
         }
         }
-        else if (calcTools.inBase(baseName, 'JG_ZCF') || calcTools.inBase(baseName, 'JD_ZCF')) {            // 甲供、甲定主材
+        else if (baseName.includes('主材')) {
             gljT = [gljType.MAIN_MATERIAL];
             gljT = [gljType.MAIN_MATERIAL];
             compT = [gljType.MAIN_MATERIAL];
             compT = [gljType.MAIN_MATERIAL];
         }
         }
-        else if (calcTools.inBase(baseName, 'JG_SBF') || calcTools.inBase(baseName, 'JD_SBF')) {           // 甲供、甲定设备
+        else if (baseName.includes('设备')) {
             gljT = [gljType.EQUIPMENT];
             gljT = [gljType.EQUIPMENT];
         };
         };
         // alert(JSON.stringify(projectGLJ.testGLJs()));
         // alert(JSON.stringify(projectGLJ.testGLJs()));
@@ -951,52 +950,7 @@ let calcTools = {
                   return o.value;
                   return o.value;
               }
               }
         };
         };
-    },
-    inBase(baseName, kindName){
-        return rationCalcBasesNameKinds[kindName].includes(baseName);
-    }
-};
-
-let rationCalcBasesNameKinds = {
-    RGF:        ['定额基价人工费', '定额人工费'],
-    CLF:        ['定额基价材料费', '定额材料费'],
-    QTCLF:      ['定额其他材料费'],
-    JXF:        ['定额基价机械费', '定额机械费', '定额施工机具使用费'],
-    JSRGF:      ['定额基价机上人工费'],
-    ZCF:        ['主材费', '市场价主材费'],
-    SBF:        ['设备费'],
-    RGGR:       ['人工工日'],
-    ZGCLF:      ['暂估材料费'],
-
-    // 市场价人工费、市场价材料费、市场价机械费。江西用,跟重庆区分开,概念上不太统一,这里要注意区分。
-    SC_RGF:     ['人工费'],
-    SC_CLF:     ['材料费'],
-    SC_JXF:     ['机械费'],
-
-    JC_RGF:     ['人工费价差'],
-    JC_CLF:     ['材料费价差'],
-    JC_JXF:     ['机械费价差'],
-    JC_ZCF:     ['主材费价差'],
-    JC_SBF:     ['设备费价差'],
-
-    JG_RGF:     ['甲供定额基价人工费', '甲供定额人工费', '甲供人工费'],
-    JG_CLF:     ['甲供定额基价材料费', '甲供定额材料费', '甲供材料费'],
-    JG_JXF:     ['甲供定额基价机械费', '甲供定额机械费', '甲供机械费', '甲供定额施工机具费'],
-    JG_ZCF:     ['甲供主材费'],
-    JG_SBF:     ['甲供设备费'],
-
-    JD_RGF:     ['甲定定额基价人工费', '甲定定额人工费', '甲定人工费'],
-    JD_CLF:     ['甲定定额基价材料费', '甲定定额材料费', '甲定材料费'],
-    JD_JXF:     ['甲定定额基价机械费', '甲定定额机械费', '甲定机械费', '甲定定额施工机具费'],
-    JD_ZCF:     ['甲定主材费'],
-    JD_SBF:     ['甲定设备费'],
-
-    FB_RGF:     ['分包定额基价人工费', '分包人工费'],
-    FB_CLF:     ['分包定额基价材料费', '分包材料费'],
-    FB_JXF:     ['分包定额基价机械费', '分包机械费'],
-    FB_ZCF:     ['分包主材费'],
-    FB_SBF:     ['分包设备费'],
-    FB_RGGR:    ['分包人工工日']
+     }
 };
 };
 
 
 let rationCalcBases = {
 let rationCalcBases = {

+ 71 - 5
web/over_write/js/neimenggu_2017.js

@@ -7,13 +7,11 @@
     cpFeeTypes = [
     cpFeeTypes = [
         {type: 'marketLabour', name: '市场价人工费'},
         {type: 'marketLabour', name: '市场价人工费'},
         {type: 'marketMaterial', name: '市场价材料费'},
         {type: 'marketMaterial', name: '市场价材料费'},
-        {type: 'marketMachine', name: '市场价机械费'},
-        {type: 'equipment', name: '设备费'},
+        {type: 'marketMachine', name: '施工机具使用费'},
         {type: 'mainMaterial', name: '主材费'},
         {type: 'mainMaterial', name: '主材费'},
+        {type: 'equipment', name: '设备费'},
         {type: 'manage', name: '管理费'},
         {type: 'manage', name: '管理费'},
         {type: 'profit', name: '利润'},
         {type: 'profit', name: '利润'},
-        {type: 'risk', name: '风险费'},
-        {type: 'safeMeasures', name: '安全文明施工费'},
         {type: 'safeAndEnvironment', name: '安全文明施工与环境保护费'},
         {type: 'safeAndEnvironment', name: '安全文明施工与环境保护费'},
         {type: 'tempFacility', name: '临时设施费'},
         {type: 'tempFacility', name: '临时设施费'},
         {type: 'rain', name: '雨季施工增加费'},
         {type: 'rain', name: '雨季施工增加费'},
@@ -22,10 +20,78 @@
         {type: 'secondHandling', name: '二次搬运费'},
         {type: 'secondHandling', name: '二次搬运费'},
         {type: 'specialArea', name: '特殊地区施工增加费'},
         {type: 'specialArea', name: '特殊地区施工增加费'},
         {type: 'night', name: '夜间施工增加费'},
         {type: 'night', name: '夜间施工增加费'},
+        // {type: 'safeMeasures', name: '安全文明施工费'},
         {type: 'basement', name: '白天在地下室施工增加费'},
         {type: 'basement', name: '白天在地下室施工增加费'},
         {type: 'winter', name: '冬季施工增加费'},
         {type: 'winter', name: '冬季施工增加费'},
+        {type: 'risk', name: '风险费'},
         {type: 'force', name: '规费'},
         {type: 'force', name: '规费'},
         {type: 'tax', name: '税金'},
         {type: 'tax', name: '税金'},
         {type: 'common', name: '工程造价'}
         {type: 'common', name: '工程造价'}
     ];
     ];
-})();
+})();
+
+function overwriteRationCalcBases (taxType){
+    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.MAIN_MATERIAL], 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.labourDays(node, isTender);
+    };
+    rationCalcBases['甲供人工费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供人工费', isTender, false);
+    };
+    rationCalcBases['甲供材料费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供材料费', isTender, false);
+    };
+    rationCalcBases['甲供施工机具使用费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供施工机具使用费', isTender, false);
+    };
+    rationCalcBases['甲供主材费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供主材费', isTender, false);
+    };
+    rationCalcBases['甲供设备费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲供设备费', isTender, false);
+    };
+    rationCalcBases['甲定人工费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定人工费', isTender, false);
+    };
+    rationCalcBases['甲定材料费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定材料费', isTender, false);
+    };
+    rationCalcBases['甲定施工机具使用费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定施工机具使用费', isTender, false);
+    };
+    rationCalcBases['甲定主材费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定主材费', isTender, false);
+    };
+    rationCalcBases['甲定设备费'] = function (node, isTender) {
+        return calcTools.partASupplyFee(node, '甲定设备费', isTender, false);
+    };
+    rationCalcBases['暂估材料费'] = function (node, isTender) {
+        return calcTools.estimateFee(node, true, isTender);
+    };
+};