Browse Source

[feat] 销售管理

修改销售估价的总经理添加前端页面,提交方法新增不含税总经营成本不能为空的判断条件
去掉不含税采购成本和含税采购成本乘以用量的计算规则
按照销售估价总经理添加前端页面,重写详情页面
修改 总经理添加销售估价后端方法,按照以下计算规则计算
1、不含税料号估价成本=该料号的BOM物料不含税总采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料不含税总采购成本/不含税总物料成本)*上一年度的总经营不含税成本合计
1.1、该料号的BOM物料不含税总采购成本=手填的bom物料的总的不含税采购单价的合计
2、含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计
2.1、该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计
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)/美元汇率
注:换算后,保留小数点后两位,超过后的四舍五入
13、含税单价(美元)=不含税单价(美元)
14、不含税总价(美元)=不含税单价(美元)*数量
15、含税总价(美元)=含税单价(美元)*数量
dev
liuxiaoxu 3 months ago
parent
commit
1b63514992
  1. 132
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java
  2. 30
      ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAdd.html
  3. 156
      ruoyi-admin/src/main/resources/templates/sales/estimate/ceoAddDetail.html

132
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<SalesEstimateDetail> 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)

30
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;

156
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 += '<label for="noTaxServiceCosts' + index + '">不含税服务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxServiceCosts' + index + '" name="noTaxServiceCosts' + index + '" value="' + costs.noTaxServiceCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<h3>总经营成本</h3>';
formHtml += '<h3>上一年度总经营成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxLaborCosts' + index + '">不含税人工成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxLaborCosts' + index + '" name="noTaxLaborCosts' + index + '" value="' + costs.noTaxLaborCosts + '" readonly>';
formHtml += '<label for="totalOperatingCosts' + index + '">不含税总经营成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="totalOperatingCosts' + index + '" name="totalOperatingCosts' + index + '" value="' + costs.totalOperatingCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxPromotionalCosts' + index + '">不含税推广成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxPromotionalCosts' + index + '" name="noTaxPromotionalCosts' + index + '" value="' + costs.noTaxPromotionalCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxBusinessCosts' + index + '">不含税业务成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxBusinessCosts' + index + '" name="noTaxBusinessCosts' + index + '" value="' + costs.noTaxBusinessCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxManagesCosts' + index + '">不含税管理成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxManagesCosts' + index + '" name="noTaxManagesCosts' + index + '" value="' + costs.noTaxManagesCosts + '" readonly>';
formHtml += '</div>';
formHtml += '<h3>总物料成本</h3>';
formHtml += '<h3>上一年度总物料成本</h3>';
formHtml += '<div class="form-group">';
formHtml += '<label for="noTaxMaterialCosts' + index + '">不含税总物料成本(RMB):</label>';
formHtml += '<input type="text" class="form-control" id="noTaxMaterialCosts' + index + '" name="noTaxMaterialCosts' + index + '" value="' + costs.noTaxMaterialCosts + '" readonly>';
@ -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));
}
}
});

Loading…
Cancel
Save