diff --git a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java index 764f3d23..13e5f09e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java @@ -300,28 +300,48 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService /* 下面的计算规则 -1、不含税总经营成本=不含税人工成本+不含税推广成本+不含税业务成本+不含税管理成本 -2、含税总经营成本=不含税总经营成本*(1+0.13) -3、不含税经营成本(RMB)=(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 -4、含税经营成本(RMB)=(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 -5、不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税总经营成本+(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 -新版:不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料总不含税采购成本/总物料不含税成本)*总经营不含税成 +1、不含税料号估价成本=该料号的BOM物料不含税总采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料不含税总采购成本/不含税总物料成本)*上一年度的总经营不含税成本合计 +1.1、该料号的BOM物料不含税总采购成本=手填的bom物料的总的不含税采购单价的合计 -6、含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 -新版:含税料号估价成本:该料号的BOM物料总含税采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料总含税采购成本/总物料含税成本)*总经营含税成本 +2、含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计 +2.1、该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计 -7、不含税单价(RMB):该料号不含税估价成本/(1-利润率) -8、含税单价(RMB)=该料号含税估价成本/(1-利润率) -9、不含税总价(RMB)=不含税单价(RMB)*数量 -10、含税总价(RMB)=含税单价(RMB)*数量 -11、不含税单价(美元)=不税单价(RMB)/美元汇率 +3、不含税运输成本:手填(业务填写) +含税运输成本=(1+0.13)*不含税运输成本 + +4、不含税服务成本:手填(业务填写) +含税服务成本=(1+0.13)*不含税服务成本 + +5、不含税开发成本:手填(工程填写) +含税开发成本=(1+0.13)*不含税开发成本 + +6.1、该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 +6.1.1、上一年度的总经营不含税成本合计:手填(总经理填) +6.1.2、上一年度总物料不含税成本合计:手填(总经理填) + +7.1、该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + +7.1.1、上一年度的总经营含税成本合计:(1+0.13)*上一年度的总经营不含税成本合计 +7.1.2、上一年度总物料含税成本合计:(1+0.13)*上一年度总物料不含税成本合计 + +8、被估价物料的不含税单价(RMB)=被估价物料的不含税总成本/(1-利润率) + +9、被估价物料的含税单价(RMB)=被估价物料的含税总成本/(1-利润率) + +10、不含税总价(RMB)=被估价物料的不含税单价(RMB)*数量 + +11、含税总价(RMB)=被估价物料的含税单价(RMB)*数量 + +12、不含税单价(美元)=被估价物料的不含税单价(RMB)/美元汇率 注:换算后,保留小数点后两位,超过后的四舍五入 -12、含税单价(美元)=不含税单价(美元) -13、不含税总价(美元)=不含税单价(美元)*数量 -14、含税总价(美元)=含税单价(美元)*数量 -15、总含税物料成本 = 总不含税物料成本*(1+0.13) + +13、含税单价(美元)=不含税单价(美元) + +14、不含税总价(美元)=不含税单价(美元)*数量 + +15、含税总价(美元)=含税单价(美元)*数量 * */ @@ -360,25 +380,32 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService List salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表 for (SalesEstimateDetail salesEstimateDetail : salesEstimateDetailList) { // 遍历销售估价详情列表 - BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本 - BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本 - BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本 - BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本 - BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取不含税的物料成本 +// BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本 +// BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本 +// BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本 +// BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本 + + BigDecimal totalOperatingCosts = salesEstimateDetail.getTotalOperatingCosts(); //上一年度不含税总经营成本 + BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取上一年度不含税的总物料成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本 BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本 BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本 + + BigDecimal taxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts().multiply(BigDecimal.valueOf(1.13)) ; //含税运输成本 + BigDecimal taxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts().multiply(BigDecimal.valueOf(1.13)); //含税服务成本 + BigDecimal taxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts().multiply(BigDecimal.valueOf(1.13));//含税开发成本 + BigDecimal profitRate = salesEstimateDetail.getProfitRate().divide(BigDecimal.valueOf(100)); // 获取利润率并转换为小数形式 Long materialNum = salesEstimateDetail.getMaterialNum(); // 获取物料数量 - // 计算不含税总经营成本 - BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts( - noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts); +// // 计算不含税总经营成本 +// BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts( +// noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts); - // 计算含税总经营成本 - BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(noAllTaxOperatingCosts); + // 计算上一年度含税总经营成本 + BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(totalOperatingCosts); // 计算总含税物料成本 BigDecimal taxMaterialCosts = calculateTaxMaterialCosts(noTaxMaterialCosts); @@ -389,18 +416,18 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService // 计算物料总含税采购成本 BigDecimal totalTaxPurchaseRmb = calculateTotalTaxPurchaseRmb(estimateDetailMaterialList); - // 计算不含税经营成本(RMB),并保留两位小数 - BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, noAllTaxOperatingCosts) + // 计算该料号的不含税经营成本(RMB),并保留两位小数 + BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, totalOperatingCosts) .setScale(2, RoundingMode.HALF_UP); - // 计算含税经营成本(RMB),并保留两位小数 + // 计算该料号含税经营成本(RMB),并保留两位小数 BigDecimal taxOperatingCost = calculateTaxOperatingCost(totalTaxPurchaseRmb, taxMaterialCosts, allTaxOperatingCosts) .setScale(2, RoundingMode.HALF_UP); - // 计算不含税料号估价成本,并保留两位小数 - BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noAllTaxOperatingCosts, noTaxMaterialCosts) + // 计算该料号的不含税料号估价成本,并保留两位小数 + BigDecimal noTaxEstimateCost = calculateNoTaxEstimateCost(totalNoTaxPurchaseRmb, noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts,noTaxOperatingCost) .setScale(2, RoundingMode.HALF_UP); - // 计算含税料号估价成本,并保留两位小数 - BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,noTaxShippingCosts,noTaxServiceCosts,noTaxDevelopmentCosts, allTaxOperatingCosts, taxMaterialCosts) + // 计算该料号的含税料号估价成本,并保留两位小数 + BigDecimal taxEstimateCost = calculateTaxEstimateCost(totalTaxPurchaseRmb,taxShippingCosts,taxServiceCosts,taxDevelopmentCosts, allTaxOperatingCosts) .setScale(2, RoundingMode.HALF_UP); // 计算不含税单价(RMB),并保留两位小数 @@ -434,8 +461,11 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar); // 计算含税单价(美元),并保留两位小数 - BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) - .setScale(2, RoundingMode.HALF_UP); +// BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) +// .setScale(2, RoundingMode.HALF_UP); + BigDecimal taxUnitPriceDollar = noTaxUnitPriceDollar; + + // 计算主表的含税单价美元 taxDollarMain = taxDollarMain.add(taxUnitPriceDollar); @@ -499,8 +529,8 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService BigDecimal totalNoTaxPurchaseRmb = BigDecimal.ZERO; for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { BigDecimal noTaxPurchaseRmb = detailMaterial.getNoTaxPurchaseRmb(); // 获取不含税采购单价 - Long useNum = detailMaterial.getUseNum(); // 获取用量 - totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总不含税采购成本 + //Long useNum = detailMaterial.getUseNum(); // 获取用量 + totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb); // 计算总不含税采购成本 } return totalNoTaxPurchaseRmb; } @@ -510,16 +540,16 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService BigDecimal totalTaxPurchaseRmb = BigDecimal.ZERO; for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { BigDecimal taxPurchaseRmb = detailMaterial.getTaxPurchaseRmb(); // 获取含税采购单价 - Long useNum = detailMaterial.getUseNum(); // 获取用量 - totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总含税采购成本 + // Long useNum = detailMaterial.getUseNum(); // 获取用量 + totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb); // 计算总含税采购成本 } return totalTaxPurchaseRmb; } - // 计算不含税经营成本(RMB) - private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal noAllTaxOperatingCosts) { + // 计算该料号的不含税经营成本(RMB) + private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal totalOperatingCosts) { return totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(noAllTaxOperatingCosts); + .multiply(totalOperatingCosts); } // 计算含税经营成本(RMB) @@ -531,23 +561,21 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService // 计算不含税料号估价成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本 // BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本 // BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本 - private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noAllTaxOperatingCosts,BigDecimal noTaxMaterialCosts) { + private BigDecimal calculateNoTaxEstimateCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal noTaxOperatingCost) { return totalNoTaxPurchaseRmb .add(noTaxShippingCosts) .add(noTaxServiceCosts) .add(noTaxDevelopmentCosts) - .add(totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(noAllTaxOperatingCosts)); + .add(noTaxOperatingCost); } // 计算含税料号估价成本 - private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal noTaxShippingCosts ,BigDecimal noTaxServiceCosts,BigDecimal noTaxDevelopmentCosts ,BigDecimal allTaxOperatingCosts, BigDecimal taxMaterialCosts) { + private BigDecimal calculateTaxEstimateCost(BigDecimal totalTaxPurchaseRmb, BigDecimal taxShippingCosts ,BigDecimal taxServiceCosts,BigDecimal taxDevelopmentCosts ,BigDecimal allTaxOperatingCosts) { return totalTaxPurchaseRmb - .add(noTaxShippingCosts) - .add(noTaxServiceCosts) - .add(noTaxDevelopmentCosts) - .add(totalTaxPurchaseRmb.divide(taxMaterialCosts, 2, RoundingMode.HALF_UP) - .multiply(allTaxOperatingCosts)); + .add(taxShippingCosts) + .add(taxServiceCosts) + .add(taxDevelopmentCosts) + .add(allTaxOperatingCosts); } // 计算不含税单价(RMB) diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html index e92a1b4a..4e350c59 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html @@ -132,6 +132,7 @@ "noTaxDevelopCosts": null, // 初始化为 null 或 0 "noTaxShippingCosts": null, "noTaxServiceCosts": null, + "totalOperatingCosts": null, "noTaxMaterialCosts": null, "noTaxOperatingCosts": null, "taxOperatingCosts": null, @@ -145,6 +146,7 @@ var noTaxDevelopCosts = $('#noTaxDevelopCosts' + index).val(); var noTaxShippingCosts = $('#noTaxShippingCosts' + index).val(); var noTaxServiceCosts = $('#noTaxServiceCosts' + index).val(); + var totalOperatingCosts = $('#totalOperatingCosts' + index).val(); var noTaxMaterialCosts = $('#noTaxMaterialCosts' + index).val(); var noTaxOperatingCosts = $('#noTaxOperatingCosts' + index).val(); var taxOperatingCosts = $('#taxOperatingCosts' + index).val(); @@ -166,18 +168,23 @@ hasError = true; return; // 退出循环,阻止进一步处理 } + if (!totalOperatingCosts && totalOperatingCosts !== '0') { + $.modal.alertWarning("不含税总经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税总经营成本"); + hasError = true; + return; // 退出循环,阻止进一步处理 + } if (!noTaxMaterialCosts && noTaxMaterialCosts !== '0') { - $.modal.alertWarning("物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的物料成本"); + $.modal.alertWarning("不含税物料成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税物料成本"); hasError = true; return; // 退出循环,阻止进一步处理 } if (!noTaxOperatingCosts && noTaxOperatingCosts !== '0') { - $.modal.alertWarning("经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的经营成本"); + $.modal.alertWarning("不含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的不含税经营成本"); hasError = true; return; // 退出循环,阻止进一步处理 } if (!taxOperatingCosts && taxOperatingCosts !== '0') { - $.modal.alertWarning("税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的税经营成本"); + $.modal.alertWarning("含税经营成本不能为空,请填写第 " + (parseInt(index) + 1) + " 行的含税经营成本"); hasError = true; return; // 退出循环,阻止进一步处理 } @@ -191,6 +198,7 @@ estimateMaterialDataList[index].noTaxDevelopCosts = noTaxDevelopCosts; estimateMaterialDataList[index].noTaxShippingCosts = noTaxShippingCosts; estimateMaterialDataList[index].noTaxServiceCosts = noTaxServiceCosts; + estimateMaterialDataList[index].totalOperatingCosts = totalOperatingCosts; estimateMaterialDataList[index].noTaxMaterialCosts = noTaxMaterialCosts; estimateMaterialDataList[index].noTaxOperatingCosts = noTaxOperatingCosts; estimateMaterialDataList[index].taxOperatingCosts = taxOperatingCosts; @@ -510,6 +518,8 @@ const taxOperatingCosts = ( (taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts ).toFixed(2) || ''; + + // 根据 `parentRow.profitRate` 设置利润率 let profitRateKey = 'aprofitRate'; switch (parentRow.profitRate) { @@ -651,8 +661,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; @@ -681,8 +694,11 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; diff --git a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html index a9dc3d0c..087c8032 100644 --- a/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html +++ b/ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html @@ -354,33 +354,33 @@ // 从 `salesEstimateDetailVo` 中获取其他成本信息 const { - noTaxLaborCosts = '', - noTaxPromotionalCosts = '', - noTaxBusinessCosts = '', - noTaxManagesCosts = '', - noTaxMaterialCosts = '' + totalOperatingCosts = '', //上一年度的总经营不含税成本合计 + noTaxMaterialCosts = '' // 上一年度总物料不含税成本合计 } = salesEstimateDetailVo || {}; - // 计算不含税总经营成本 - const noAllTaxOperatingCosts = ( - parseFloat(noTaxLaborCosts) + - parseFloat(noTaxBusinessCosts) + - parseFloat(noTaxManagesCosts) + - parseFloat(noTaxPromotionalCosts) + // 计算上一年度含税总经营成本,假设增值税率为 13% + const allTaxOperatingCosts = ( + parseFloat(totalOperatingCosts) * 1.13 ).toFixed(2) || ''; - // 计算含税总经营成本,假设增值税率为 13% - const allTaxOperatingCosts = ( - parseFloat(noAllTaxOperatingCosts) * 1.13 + //上一年度总物料含税成本合计 + const allTaxMaterialCosts = ( + parseFloat(noTaxMaterialCosts) * 1.13 ).toFixed(2) || ''; - //该料号的不含税经营成本 + + + //该料号的不含税经营成本 (RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 const noTaxOperatingCosts = ( - (noTaxPurchaseRmb/noTaxMaterialCosts) * noAllTaxOperatingCosts + (noTaxPurchaseRmb/noTaxMaterialCosts) * totalOperatingCosts ).toFixed(2) || ''; - // 该料号的含税经营成本 + + + // 该料号的含税经营成本 (RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 const taxOperatingCosts = ( - (taxPurchaseRmb/noTaxMaterialCosts) * allTaxOperatingCosts + (taxPurchaseRmb/allTaxMaterialCosts) * allTaxOperatingCosts ).toFixed(2) || ''; + + // 根据 `parentRow.profitRate` 设置利润率 let profitRateKey = 'aprofitRate'; switch (parentRow.profitRate) { @@ -409,10 +409,7 @@ noTaxDevelopCosts, noTaxShippingCosts, noTaxServiceCosts, - noTaxLaborCosts, - noTaxPromotionalCosts, - noTaxBusinessCosts, - noTaxManagesCosts, + totalOperatingCosts, noTaxMaterialCosts, noTaxOperatingCosts, taxOperatingCosts, @@ -427,10 +424,7 @@ noTaxDevelopCosts: '', noTaxShippingCosts: '', noTaxServiceCosts: '', - noTaxLaborCosts: '', - noTaxPromotionalCosts: '', - noTaxBusinessCosts: '', - noTaxManagesCosts: '', + totalOperatingCosts: '', noTaxMaterialCosts: '', noTaxOperatingCosts: '', taxOperatingCosts: '', @@ -453,24 +447,12 @@ formHtml += ''; formHtml += ''; formHtml += ''; - formHtml += '

总经营成本

'; + formHtml += '

上一年度总经营成本

'; formHtml += '
'; - formHtml += ''; - formHtml += ''; + formHtml += ''; + formHtml += ''; formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '
'; - formHtml += ''; - formHtml += ''; - formHtml += '
'; - formHtml += '

总物料成本

'; + formHtml += '

上一年度总物料成本

'; formHtml += '
'; formHtml += ''; formHtml += ''; @@ -506,17 +488,8 @@ // 根据 input 的 id 或 name 进行相应的计算 switch (inputId) { - case 'noTaxLaborCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxLaborCosts'); - break; - case 'noTaxPromotionalCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxPromotionalCosts'); - break; - case 'noTaxBusinessCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxBusinessCosts'); - break; - case 'noTaxManagesCosts' + index: - calculateOperatingCosts(inputValue, 'noTaxManagesCosts'); + case 'totalOperatingCosts' + index: + calculateOperatingCosts(inputValue, 'totalOperatingCosts'); break; case 'noTaxMaterialCosts' + index: updateMaterialCosts(inputValue); @@ -529,41 +502,47 @@ }); function calculateOperatingCosts(value, costType) { - var noAllTaxOperatingCosts = 0; + // var totalOperatingCosts = 0; var allNoTaxPurchaseRmb = 0; var allTaxPurchaseRmb = 0; - // 获取所有相关的不含税成本 - ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { - var currentCost = parseFloat($form.find('#' + cost + index).val()); - noAllTaxOperatingCosts += currentCost; - }); + // // 获取所有相关的不含税成本 + // ['noTaxLaborCosts', 'noTaxPromotionalCosts', 'noTaxBusinessCosts', 'noTaxManagesCosts'].forEach(function(cost) { + // var currentCost = parseFloat($form.find('#' + cost + index).val()); + // noAllTaxOperatingCosts += currentCost; + // }); - // 更新不含税总经营成本 - $form.find('#noAllTaxOperatingCosts' + index).val(noAllTaxOperatingCosts.toFixed(2)); + // 更新上一年度不含税总经营成本 + var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); - // 计算含税总经营成本 - var allTaxOperatingCosts = noAllTaxOperatingCosts * 1.13; + // 计算上一年度含税总经营成本 + var allTaxOperatingCosts = totalOperatingCosts * 1.13; $form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; }); }); - // 该料号的不含税经营成本 - var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); - var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * noAllTaxOperatingCosts; + + var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val());//不含税总物料成本 + var allTaxMaterialCosts = noTaxMaterialCosts * 1.13;//含税总物料成本 + + // 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 + var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); - // 该料号的含税经营成本 - var taxOperatingCosts = (allTaxPurchaseRmb / noTaxMaterialCosts) * allTaxOperatingCosts; + // 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); } @@ -576,23 +555,46 @@ // 遍历数据集计算不含税采购成本和含税采购成本 data.forEach(function(item) { item.rows.forEach(function(row) { - var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; - var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + // var noTaxPurchaseRmb = row.noTaxPurchaseRmb * row.useNum; + // var taxPurchaseRmb = row.taxPurchaseRmb * row.useNum; + + var noTaxPurchaseRmb = row.noTaxPurchaseRmb; + var taxPurchaseRmb = row.taxPurchaseRmb; allNoTaxPurchaseRmb += noTaxPurchaseRmb; allTaxPurchaseRmb += taxPurchaseRmb; }); }); - // 更新不含税经营成本 - var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); - var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; + // // 更新不含税经营成本 + // var noAllTaxOperatingCosts = parseFloat($form.find('#noAllTaxOperatingCosts' + index).val()); + // var noTaxOperatingCosts = (noTaxPurchaseRmb / value) * noAllTaxOperatingCosts; + // $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); + // + // // 更新含税经营成本 + // var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; + // $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); + + // 更新上一年度不含税总经营成本 + var totalOperatingCosts = parseFloat($form.find('#totalOperatingCosts' + index).val()); + + // 计算上一年度含税总经营成本 + var allTaxOperatingCosts = totalOperatingCosts * 1.13; + $form.find('#allTaxOperatingCosts' + index).val(allTaxOperatingCosts.toFixed(2)); + + // 该料号的不含税经营成本(RMB)=(该料号的BOM物料不含税总采购成本/上一年度总物料不含税成本合计)*上一年度的总经营不含税成本合计 + var noTaxMaterialCosts = parseFloat($form.find('#noTaxMaterialCosts' + index).val()); + var allTaxMaterialCosts = noTaxMaterialCosts * 1.13; + var noTaxOperatingCosts = (allNoTaxPurchaseRmb / noTaxMaterialCosts) * totalOperatingCosts; $form.find('#noTaxOperatingCosts' + index).val(noTaxOperatingCosts.toFixed(2)); - // 更新含税经营成本 - var taxOperatingCosts = (taxPurchaseRmb / value) * noAllTaxOperatingCosts; + // 该料号含税经营成本(RMB)=(该料号的BOM物料含税总采购成本/上一年度总物料含税成本合计)*上一年度的总经营含税成本合计 + var taxOperatingCosts = (allTaxPurchaseRmb / allTaxMaterialCosts) * allTaxOperatingCosts; $form.find('#taxOperatingCosts' + index).val(taxOperatingCosts.toFixed(2)); + + } + } });