neimeng_2019.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. /**
  2. * Created by CSL on 2019/09/23. 内蒙计算程序、基数 等覆盖。
  3. */
  4. let isNM2019 = true;
  5. function overwriteRationCalcBases (){
  6. if (typeof rationCalcBases == 'undefined') return;
  7. for (let key in rationCalcBases) delete rationCalcBases[key];
  8. rationCalcBases['人工费'] = function (node, isTender) {
  9. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptMarketPrice, isTender);
  10. };
  11. rationCalcBases['材料费'] = function (node, isTender) {
  12. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptMarketPrice, isTender);
  13. };
  14. rationCalcBases['施工机械使用费'] = function (node, isTender) {
  15. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptMarketPrice, isTender);
  16. };
  17. rationCalcBases['施工机械人工费'] = function (node, isTender) {
  18. return calcTools.rationBaseFee(node, [gljType.MACHINE_LABOUR], priceTypes.ptDiffPrice, isTender);
  19. };
  20. rationCalcBases['设备购置费'] = function (node, isTender) {
  21. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptMarketPrice, isTender);
  22. };
  23. rationCalcBases['定额人工费'] = function (node, isTender) {
  24. return calcTools.rationBaseFee(node, [gljType.LABOUR], priceTypes.ptBasePrice, isTender);
  25. };
  26. rationCalcBases['定额材料费'] = function (node, isTender) {
  27. return calcTools.rationBaseFee(node, baseMaterialTypes, priceTypes.ptBasePrice, isTender);
  28. };
  29. rationCalcBases['定额施工机械使用费'] = function (node, isTender) {
  30. return calcTools.rationBaseFee(node, baseMachineTypes, priceTypes.ptBasePrice, isTender);
  31. };
  32. rationCalcBases['定额商品砼费'] = function (node, isTender) {
  33. return calcTools.rationBaseFee(node, [gljType.COMMERCIAL_CONCRETE, gljType.COMMERCIAL_MORTAR], priceTypes.ptBasePrice, isTender);
  34. };
  35. rationCalcBases['定额设备费'] = function (node, isTender) {
  36. return calcTools.rationBaseFee(node, [gljType.EQUIPMENT], priceTypes.ptBasePrice, isTender);
  37. };
  38. rationCalcBases['定额外购砼构件费'] = function (node, isTender) {
  39. return calcTools.rationBaseFee(node, [gljType.PURCHASE_COMPONENT], priceTypes.ptBasePrice, isTender);
  40. };
  41. rationCalcBases['定额绿化苗木费'] = function (node, isTender) {
  42. return calcTools.rationBaseFee(node, [gljType.GREEN_SEEDLING], priceTypes.ptBasePrice, isTender);
  43. };
  44. };
  45. (function overwriteFeeTypes() {
  46. if (typeof cpFeeTypes == 'undefined') return;
  47. cpFeeTypes = [
  48. {type: 'marketLabour', name: '人工费'},
  49. {type: 'marketMaterial', name: '材料费'},
  50. {type: 'marketMachine', name: '施工机械使用费'},
  51. {type: 'marketEquipment', name: '设备购置费'},
  52. {type: 'marketDirect', name: '直接费'},
  53. {type: 'labour', name: '定额人工费'},
  54. {type: 'material', name: '定额材料费'},
  55. {type: 'machine', name: '定额施工机械使用费'},
  56. {type: 'equipment', name: '定额设备购置费'},
  57. {type: 'direct', name: '定额直接费'},
  58. {type: 'measure', name: '措施费'},
  59. {type: 'manage', name: '企业管理费'},
  60. {type: 'force', name: '规费'},
  61. {type: 'profit', name: '利润'},
  62. {type: 'tax', name: '税金'},
  63. {type: 'common', name: '建安费'},
  64. {type: 'rationCommon', name: '定额建安费'},
  65. {type: 'safeProduce', name: '安全生产费'}
  66. ];
  67. })();
  68. // 清单基数,工程量清单的基数没有变化,只修改预算的
  69. if (typeof baseFigureMap !== 'undefined' && baseFigureMap.budget) {
  70. baseFigureMap.budget = {
  71. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  72. '定额建筑安装工程费(定额设备购置费按40%计)': {
  73. base: 'DEJZAZGCFSBSS',
  74. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  75. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  76. pick: false,
  77. },
  78. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  79. '建筑安装工程费(不含设备费)': {
  80. base: 'JZAZGCFBHSB',
  81. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  82. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  83. pick: false,
  84. },
  85. // 清单固定类别是“建筑安装工程费”的以外部分可显示
  86. '建筑安装工程费': {
  87. base: 'JZAZGCF',
  88. fixedFlag: fixedFlag.CONSTRUCTION_INSTALL_FEE,
  89. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE],
  90. pick: false,
  91. },
  92. // “建筑安装工程费”、“土地使用及拆迁补偿费”以外部分可显示
  93. '土地使用及拆迁补偿费': {
  94. base: 'TDSYJCQBCF',
  95. fixedFlag: fixedFlag.LAND_USED_DEMOLITION,
  96. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION],
  97. pick: false,
  98. },
  99. // “建筑安装工程费”、“土地使用及拆迁补偿费”、“养护工程其他费用”以外部分可显示
  100. '养护工程其他费用': {
  101. base: 'YHGCQTFY',
  102. fixedFlag: fixedFlag.MAINTENANCE_EXPENSES,
  103. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES],
  104. pick: false,
  105. },
  106. // “建筑安装工程费”、“土地使用及拆迁补偿费”、“养护工程其他费用”以外部分可显示
  107. '预备费': {
  108. base: 'YBF',
  109. fixedFlag: fixedFlag.BUDGET_FEE,
  110. filter: [fixedFlag.CONSTRUCTION_INSTALL_FEE, fixedFlag.LAND_USED_DEMOLITION, fixedFlag.MAINTENANCE_EXPENSES, fixedFlag.BUDGET_FEE],
  111. pick: false,
  112. },
  113. // 仅在清单固定类别是“养护单位项目管理费”的清单显示
  114. '养护单位项目管理费': {
  115. base: 'YHDWXMGLF',
  116. fixedFlag: null,
  117. filter: [fixedFlag.MAINTENANCE_MANAGENENT_FEE],
  118. pick: true,
  119. },
  120. // 仅在清单固定类别是“信息化费”的清单显示
  121. '信息化费': {
  122. base: 'XXHF',
  123. fixedFlag: null,
  124. filter: [fixedFlag.INFORMATIZATION_FEE],
  125. pick: true,
  126. },
  127. // 仅在清单固定类别是“工程监理费”的清单显示
  128. '工程监理费': {
  129. base: 'GCJLF',
  130. fixedFlag: null,
  131. filter: [fixedFlag.ENGINEERING_SUP_FEE],
  132. pick: true,
  133. },
  134. // 仅在清单固定类别是“设计文件审查费”的清单显示
  135. '设计文件审查费': {
  136. base: 'SJWJSCF',
  137. fixedFlag: null,
  138. filter: [fixedFlag.DOCUMENT_REVIEW_FEE],
  139. pick: true,
  140. },
  141. '前期工作费': {
  142. base: 'QQGZF',
  143. fixedFlag: null,
  144. filter: [fixedFlag.PRELIMINARY_WORK],
  145. pick: true,
  146. },
  147. '价差预备费': {
  148. base: 'JCYBF',
  149. fixedFlag: null,
  150. filter: [fixedFlag.SPREAD_BUDGET_FEE],
  151. pick: true,
  152. },
  153. }
  154. }
  155. // 清单基数,工程量清单的基数没有变化,只修改预算的
  156. if (typeof baseFigureTemplate !== 'undefined' && baseFigureTemplate.budget) {
  157. baseFigureTemplate.budget = {
  158. // 定额建筑安装工程费(定额设备购置费按40%计):取清单固定类别是“建筑安装工程”的定额建安费,其中定额设备购置费按40%计算
  159. DEJZAZGCFSBSS(tender) {
  160. const feeField = 'rCommon';
  161. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  162. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  163. //建安费扣除定额设备购置费
  164. const afterDeductFee = cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, `${feeField}.${subFeeField}`);
  165. //定额设备购置费
  166. const equipmentAcFee = cbTools.getBillsFee(deductFlags[0], feeField, subFeeField);
  167. return (afterDeductFee + equipmentAcFee * 0.4).toDecimal(decimalObj.bills.totalPrice);
  168. },
  169. // 建筑安装工程费(不含设备费):取清单固定类别是“建筑安装工程”的金额,但要扣除清单固定类别是“设备购置费”的金额
  170. JZAZGCFBHSB(tender) {
  171. const fullFeeField = tender ? 'common.tenderTotalFee' : 'common.totalFee';
  172. const deductFlags = [fixedFlag.EQUIPMENT_ACQUISITION_FEE];
  173. //建安费扣除设备费
  174. return cbTools.getFeeWithDeduction(fixedFlag.CONSTRUCTION_INSTALL_FEE, deductFlags, fullFeeField).toDecimal(decimalObj.bills.totalPrice);
  175. },
  176. // 建筑安装工程费:取清单固定类别是“建筑安装工程”的金额
  177. JZAZGCF(tender) {
  178. const feeField = 'common';
  179. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  180. return cbTools.getBillsFee(fixedFlag.CONSTRUCTION_INSTALL_FEE, feeField, subFeeField);
  181. },
  182. // 土地使用及拆迁补偿费:取清单固定类别是“土地使用及拆迁补偿费”的金额
  183. TDSYJCQBCF(tender) {
  184. const feeField = 'common';
  185. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  186. return cbTools.getBillsFee(fixedFlag.LAND_USED_DEMOLITION, feeField, subFeeField);
  187. },
  188. // 养护工程其他费用:取清单固定类别是“养护工程其他费用”的金额
  189. YHGCQTFY(tender) {
  190. const feeField = 'common';
  191. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  192. return cbTools.getBillsFee(fixedFlag.MAINTENANCE_EXPENSES, feeField, subFeeField);
  193. },
  194. // 预备费:取清单固定类别是“预备费”的金额
  195. YBF(tender) {
  196. const feeField = 'common';
  197. const subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
  198. return cbTools.getBillsFee(fixedFlag.BUDGET_FEE, feeField, subFeeField);
  199. },
  200. // 养护单位项目管理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  201. YHDWXMGLF(tender) {
  202. const baseFee = this['DEJZAZGCFSBSS'](tender);
  203. return cbTools.getProgressiveFee(baseFee, '养护单位项目管理费');
  204. },
  205. // 信息化费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”
  206. XXHF(tender) {
  207. const baseFee = this['DEJZAZGCFSBSS'](tender);
  208. return cbTools.getProgressiveFee(baseFee, '信息化费');
  209. },
  210. // 工程监理费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  211. GCJLF(tender) {
  212. const baseFee = this['DEJZAZGCFSBSS'](tender);
  213. return cbTools.getProgressiveFee(baseFee, '工程监理费');
  214. },
  215. // 设计文件审查费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)”;设计文件审查费不足3000元的,按3000元计算
  216. SJWJSCF(tender) {
  217. const baseFee = this['DEJZAZGCFSBSS'](tender);
  218. const fee = cbTools.getProgressiveFee(baseFee, '设计文件审查费');
  219. return fee > 0 && fee < 3000 ? 3000 : fee;
  220. },
  221. // 前期工作费:以累进办法计算,计算基数为“定额建筑安装工程费(定额设备购置费按40%计)
  222. QQGZF(tender) {
  223. const baseFee = this['DEJZAZGCFSBSS'](tender);
  224. return cbTools.getProgressiveFee(baseFee, '前期工作费');
  225. },
  226. // 价差预备费
  227. JCYBF(tender) {
  228. //建筑安装工程费作为基数
  229. const installFee = this['JZAZGCF'](tender);
  230. //年造价增涨
  231. const costGrowthRate = calcBase.project.property.costGrowthRate ?
  232. calcBase.project.property.costGrowthRate : 0;
  233. //增涨计费年限
  234. const growthPeriod = projectObj.project.property.growthPeriod ?
  235. calcBase.project.property.growthPeriod : 0;
  236. //= P * [(1+i)^(n-1) -1]
  237. return (installFee * (Math.pow(1 + costGrowthRate, growthPeriod - 1) - 1)).toDecimal(decimalObj.bills.totalPrice);
  238. },
  239. };
  240. }