|
@ -300,28 +300,48 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 下面的计算规则 |
|
|
/* 下面的计算规则 |
|
|
1、不含税总经营成本=不含税人工成本+不含税推广成本+不含税业务成本+不含税管理成本 |
|
|
1、不含税料号估价成本=该料号的BOM物料不含税总采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料不含税总采购成本/不含税总物料成本)*上一年度的总经营不含税成本合计 |
|
|
2、含税总经营成本=不含税总经营成本*(1+0.13) |
|
|
|
|
|
3、不含税经营成本(RMB)=(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 |
|
|
|
|
|
4、含税经营成本(RMB)=(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 |
|
|
|
|
|
5、不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税总经营成本+(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 |
|
|
|
|
|
新版:不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税运输成本+不含税服务成本+不含税开发成本+(该料号的BOM物料总不含税采购成本/总物料不含税成本)*总经营不含税成 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.1、该料号的BOM物料不含税总采购成本=手填的bom物料的总的不含税采购单价的合计 |
|
|
|
|
|
|
|
|
6、含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 |
|
|
2、含税料号估价成本=该料号的BOM物料含税总采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料含税总采购成本/含税总物料成本)*上一年度的总经营含税成本合计 |
|
|
新版:含税料号估价成本:该料号的BOM物料总含税采购成本+含税运输成本+含税服务成本+含税开发成本+(该料号的BOM物料总含税采购成本/总物料含税成本)*总经营含税成本 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1、该料号的BOM物料含税总采购成本=手填的bom物料的总的含税采购单价的合计 |
|
|
|
|
|
|
|
|
7、不含税单价(RMB):该料号不含税估价成本/(1-利润率) |
|
|
3、不含税运输成本:手填(业务填写) |
|
|
8、含税单价(RMB)=该料号含税估价成本/(1-利润率) |
|
|
含税运输成本=(1+0.13)*不含税运输成本 |
|
|
9、不含税总价(RMB)=不含税单价(RMB)*数量 |
|
|
|
|
|
10、含税总价(RMB)=含税单价(RMB)*数量 |
|
|
4、不含税服务成本:手填(业务填写) |
|
|
11、不含税单价(美元)=不税单价(RMB)/美元汇率 |
|
|
含税服务成本=(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、不含税总价(美元)=不含税单价(美元)*数量 |
|
|
13、含税单价(美元)=不含税单价(美元) |
|
|
14、含税总价(美元)=含税单价(美元)*数量 |
|
|
|
|
|
15、总含税物料成本 = 总不含税物料成本*(1+0.13) |
|
|
14、不含税总价(美元)=不含税单价(美元)*数量 |
|
|
|
|
|
|
|
|
|
|
|
15、含税总价(美元)=含税单价(美元)*数量 |
|
|
* */ |
|
|
* */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -360,25 +380,32 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
List<SalesEstimateDetail> salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表
|
|
|
List<SalesEstimateDetail> salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表
|
|
|
|
|
|
|
|
|
for (SalesEstimateDetail salesEstimateDetail : salesEstimateDetailList) { // 遍历销售估价详情列表
|
|
|
for (SalesEstimateDetail salesEstimateDetail : salesEstimateDetailList) { // 遍历销售估价详情列表
|
|
|
BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本
|
|
|
// BigDecimal noTaxLaborCosts = salesEstimateDetail.getNoTaxLaborCosts(); // 获取不含税的人工成本
|
|
|
BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本
|
|
|
// BigDecimal noTaxPromotionalCosts = salesEstimateDetail.getNoTaxPromotionalCosts(); // 获取不含税的推广成本
|
|
|
BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本
|
|
|
// BigDecimal noTaxBusinessCosts = salesEstimateDetail.getNoTaxBusinessCosts(); // 获取不含税的业务成本
|
|
|
BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本
|
|
|
// BigDecimal noTaxManagesCosts = salesEstimateDetail.getNoTaxManagesCosts(); // 获取不含税的管理成本
|
|
|
BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取不含税的物料成本
|
|
|
|
|
|
|
|
|
BigDecimal totalOperatingCosts = salesEstimateDetail.getTotalOperatingCosts(); //上一年度不含税总经营成本
|
|
|
|
|
|
BigDecimal noTaxMaterialCosts = salesEstimateDetail.getNoTaxMaterialCosts(); // 获取上一年度不含税的总物料成本
|
|
|
|
|
|
|
|
|
BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
|
|
|
BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
|
|
|
BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
|
|
|
BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
|
|
|
BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本
|
|
|
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)); // 获取利润率并转换为小数形式
|
|
|
BigDecimal profitRate = salesEstimateDetail.getProfitRate().divide(BigDecimal.valueOf(100)); // 获取利润率并转换为小数形式
|
|
|
Long materialNum = salesEstimateDetail.getMaterialNum(); // 获取物料数量
|
|
|
Long materialNum = salesEstimateDetail.getMaterialNum(); // 获取物料数量
|
|
|
|
|
|
|
|
|
// 计算不含税总经营成本
|
|
|
// // 计算不含税总经营成本
|
|
|
BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts( |
|
|
// BigDecimal noAllTaxOperatingCosts = calculateNoTaxOperatingCosts(
|
|
|
noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts); |
|
|
// noTaxLaborCosts, noTaxPromotionalCosts, noTaxBusinessCosts, noTaxManagesCosts);
|
|
|
|
|
|
|
|
|
// 计算含税总经营成本
|
|
|
// 计算上一年度含税总经营成本
|
|
|
BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(noAllTaxOperatingCosts); |
|
|
BigDecimal allTaxOperatingCosts = calculateTaxOperatingCosts(totalOperatingCosts); |
|
|
|
|
|
|
|
|
// 计算总含税物料成本
|
|
|
// 计算总含税物料成本
|
|
|
BigDecimal taxMaterialCosts = calculateTaxMaterialCosts(noTaxMaterialCosts); |
|
|
BigDecimal taxMaterialCosts = calculateTaxMaterialCosts(noTaxMaterialCosts); |
|
@ -389,18 +416,18 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
// 计算物料总含税采购成本
|
|
|
// 计算物料总含税采购成本
|
|
|
BigDecimal totalTaxPurchaseRmb = calculateTotalTaxPurchaseRmb(estimateDetailMaterialList); |
|
|
BigDecimal totalTaxPurchaseRmb = calculateTotalTaxPurchaseRmb(estimateDetailMaterialList); |
|
|
|
|
|
|
|
|
// 计算不含税经营成本(RMB),并保留两位小数
|
|
|
// 计算该料号的不含税经营成本(RMB),并保留两位小数
|
|
|
BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, noAllTaxOperatingCosts) |
|
|
BigDecimal noTaxOperatingCost = calculateNoTaxOperatingCost(totalNoTaxPurchaseRmb, noTaxMaterialCosts, totalOperatingCosts) |
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
// 计算含税经营成本(RMB),并保留两位小数
|
|
|
// 计算该料号含税经营成本(RMB),并保留两位小数
|
|
|
BigDecimal taxOperatingCost = calculateTaxOperatingCost(totalTaxPurchaseRmb, taxMaterialCosts, allTaxOperatingCosts) |
|
|
BigDecimal taxOperatingCost = calculateTaxOperatingCost(totalTaxPurchaseRmb, taxMaterialCosts, allTaxOperatingCosts) |
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
.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); |
|
|
.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); |
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
|
|
|
|
|
// 计算不含税单价(RMB),并保留两位小数
|
|
|
// 计算不含税单价(RMB),并保留两位小数
|
|
@ -434,8 +461,11 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar); |
|
|
noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar); |
|
|
|
|
|
|
|
|
// 计算含税单价(美元),并保留两位小数
|
|
|
// 计算含税单价(美元),并保留两位小数
|
|
|
BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) |
|
|
// BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate)
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
// .setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
BigDecimal taxUnitPriceDollar = noTaxUnitPriceDollar; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计算主表的含税单价美元
|
|
|
// 计算主表的含税单价美元
|
|
|
taxDollarMain = taxDollarMain.add(taxUnitPriceDollar); |
|
|
taxDollarMain = taxDollarMain.add(taxUnitPriceDollar); |
|
|
|
|
|
|
|
@ -499,8 +529,8 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
BigDecimal totalNoTaxPurchaseRmb = BigDecimal.ZERO; |
|
|
BigDecimal totalNoTaxPurchaseRmb = BigDecimal.ZERO; |
|
|
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { |
|
|
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { |
|
|
BigDecimal noTaxPurchaseRmb = detailMaterial.getNoTaxPurchaseRmb(); // 获取不含税采购单价
|
|
|
BigDecimal noTaxPurchaseRmb = detailMaterial.getNoTaxPurchaseRmb(); // 获取不含税采购单价
|
|
|
Long useNum = detailMaterial.getUseNum(); // 获取用量
|
|
|
//Long useNum = detailMaterial.getUseNum(); // 获取用量
|
|
|
totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总不含税采购成本
|
|
|
totalNoTaxPurchaseRmb = totalNoTaxPurchaseRmb.add(noTaxPurchaseRmb); // 计算总不含税采购成本
|
|
|
} |
|
|
} |
|
|
return totalNoTaxPurchaseRmb; |
|
|
return totalNoTaxPurchaseRmb; |
|
|
} |
|
|
} |
|
@ -510,16 +540,16 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
BigDecimal totalTaxPurchaseRmb = BigDecimal.ZERO; |
|
|
BigDecimal totalTaxPurchaseRmb = BigDecimal.ZERO; |
|
|
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { |
|
|
for (SalesEstimateDetailMaterial detailMaterial : estimateDetailMaterialList) { |
|
|
BigDecimal taxPurchaseRmb = detailMaterial.getTaxPurchaseRmb(); // 获取含税采购单价
|
|
|
BigDecimal taxPurchaseRmb = detailMaterial.getTaxPurchaseRmb(); // 获取含税采购单价
|
|
|
Long useNum = detailMaterial.getUseNum(); // 获取用量
|
|
|
// Long useNum = detailMaterial.getUseNum(); // 获取用量
|
|
|
totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb.multiply(new BigDecimal(useNum))); // 计算总含税采购成本
|
|
|
totalTaxPurchaseRmb = totalTaxPurchaseRmb.add(taxPurchaseRmb); // 计算总含税采购成本
|
|
|
} |
|
|
} |
|
|
return totalTaxPurchaseRmb; |
|
|
return totalTaxPurchaseRmb; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 计算不含税经营成本(RMB)
|
|
|
// 计算该料号的不含税经营成本(RMB)
|
|
|
private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal noAllTaxOperatingCosts) { |
|
|
private BigDecimal calculateNoTaxOperatingCost(BigDecimal totalNoTaxPurchaseRmb, BigDecimal noTaxMaterialCosts, BigDecimal totalOperatingCosts) { |
|
|
return totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) |
|
|
return totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) |
|
|
.multiply(noAllTaxOperatingCosts); |
|
|
.multiply(totalOperatingCosts); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 计算含税经营成本(RMB)
|
|
|
// 计算含税经营成本(RMB)
|
|
@ -531,23 +561,21 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
// 计算不含税料号估价成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
|
|
|
// 计算不含税料号估价成本 BigDecimal noTaxShippingCosts = salesEstimateDetail.getNoTaxShippingCosts(); //不含税运输成本
|
|
|
// BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
|
|
|
// BigDecimal noTaxServiceCosts = salesEstimateDetail.getNoTaxServiceCosts(); //不含税服务成本
|
|
|
// BigDecimal noTaxDevelopmentCosts = salesEstimateDetail.getNoTaxDevelopCosts();//不含税开发成本
|
|
|
// 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 |
|
|
return totalNoTaxPurchaseRmb |
|
|
.add(noTaxShippingCosts) |
|
|
.add(noTaxShippingCosts) |
|
|
.add(noTaxServiceCosts) |
|
|
.add(noTaxServiceCosts) |
|
|
.add(noTaxDevelopmentCosts) |
|
|
.add(noTaxDevelopmentCosts) |
|
|
.add(totalNoTaxPurchaseRmb.divide(noTaxMaterialCosts, 2, RoundingMode.HALF_UP) |
|
|
.add(noTaxOperatingCost); |
|
|
.multiply(noAllTaxOperatingCosts)); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 计算含税料号估价成本
|
|
|
// 计算含税料号估价成本
|
|
|
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 |
|
|
return totalTaxPurchaseRmb |
|
|
.add(noTaxShippingCosts) |
|
|
.add(taxShippingCosts) |
|
|
.add(noTaxServiceCosts) |
|
|
.add(taxServiceCosts) |
|
|
.add(noTaxDevelopmentCosts) |
|
|
.add(taxDevelopmentCosts) |
|
|
.add(totalTaxPurchaseRmb.divide(taxMaterialCosts, 2, RoundingMode.HALF_UP) |
|
|
.add(allTaxOperatingCosts); |
|
|
.multiply(allTaxOperatingCosts)); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 计算不含税单价(RMB)
|
|
|
// 计算不含税单价(RMB)
|
|
|