|
|
@ -275,6 +275,28 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
return salesEstimateMapper.updateSalesEstimate(salesEstimate); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 下面的计算规则 |
|
|
|
1、不含税总经营成本=不含税人工成本+不含税推广成本+不含税业务成本+不含税管理成本 |
|
|
|
2、含税总经营成本=不含税总经营成本*(1+0.13) |
|
|
|
3、不含税经营成本(RMB)=(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 |
|
|
|
4、含税经营成本(RMB)=(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 |
|
|
|
5、不含税料号估价成本:该料号的BOM物料总不含税采购成本+不含税总经营成本+(该料号的BOM物料总不含税采购成本/总不含税物料成本)*总不含税经营成本 |
|
|
|
6、含税料号估价成本:该料号的BOM物料总含税采购成本+含税总经营成本+(该料号的BOM物料总含税采购成本/总含税物料成本)*总含税经营成本 |
|
|
|
7、不含税单价(RMB):该料号不含税估价成本/(1-利润率) |
|
|
|
8、含税单价(RMB)=该料号含税估价成本/(1-利润率) |
|
|
|
9、不含税总价(RMB)=不含税单价(RMB)*数量 |
|
|
|
10、含税总价(RMB)=含税单价(RMB)*数量 |
|
|
|
11、不含税单价(美元)=不税单价(RMB)/美元汇率 |
|
|
|
注:换算后,保留小数点后两位,超过后的四舍五入 |
|
|
|
12、含税单价(美元)=不含税单价(美元) |
|
|
|
13、不含税总价(美元)=不含税单价(美元)*数量 |
|
|
|
14、含税总价(美元)=含税单价(美元)*数量 |
|
|
|
15、总含税物料成本 = 总不含税物料成本*(1+0.13) |
|
|
|
* */ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 总经理添加销售估价 |
|
|
|
* |
|
|
@ -289,6 +311,23 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
salesEstimate.setUpdateTime(new Date()); // 设置更新时间
|
|
|
|
salesEstimate.setEstimateStatus("3"); // 设置销售估价的状态
|
|
|
|
|
|
|
|
//主表的不含税单价RMB
|
|
|
|
BigDecimal noTaxRmbMain = BigDecimal.ZERO; |
|
|
|
//含税单价RMB
|
|
|
|
BigDecimal taxRmbMain = BigDecimal.ZERO; |
|
|
|
//主表的不含税单价美元
|
|
|
|
BigDecimal noTaxDollarMain = BigDecimal.ZERO; |
|
|
|
//主表的含税单价美元
|
|
|
|
BigDecimal taxDollarMain = BigDecimal.ZERO; |
|
|
|
//主表的不含税总价RMB
|
|
|
|
BigDecimal allNoTaxRmbMain = BigDecimal.ZERO; |
|
|
|
//主表的含税总价RMB
|
|
|
|
BigDecimal allTaxRmbMain = BigDecimal.ZERO; |
|
|
|
//主表的不含税总价美元
|
|
|
|
BigDecimal allNoTaxDollarMain = BigDecimal.ZERO; |
|
|
|
//主表的含税总价美元
|
|
|
|
BigDecimal allTaxDollarMain = BigDecimal.ZERO; |
|
|
|
|
|
|
|
BigDecimal usdRate = salesEstimate.getUsdRate(); // 获取美元汇率
|
|
|
|
List<SalesEstimateDetail> salesEstimateDetailList = salesEstimate.getSalesEstimateDetailList(); // 获取销售估价详情列表
|
|
|
|
|
|
|
@ -334,30 +373,50 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
// 计算不含税单价(RMB),并保留两位小数
|
|
|
|
BigDecimal noTaxUnitPriceRmb = calculateNoTaxUnitPriceRmb(noTaxEstimateCost, profitRate) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
//计算主表的不含税单价RMB
|
|
|
|
noTaxRmbMain = noTaxRmbMain.add(noTaxUnitPriceRmb); |
|
|
|
|
|
|
|
// 计算含税单价(RMB),并保留两位小数
|
|
|
|
BigDecimal taxUnitPriceRmb = calculateTaxUnitPriceRmb(taxEstimateCost, profitRate) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
//计算主表的含税单价RMB
|
|
|
|
taxRmbMain = taxRmbMain.add(taxUnitPriceRmb); |
|
|
|
|
|
|
|
// 计算不含税总价(RMB),并保留两位小数
|
|
|
|
BigDecimal allNoTaxRmb = calculateAllNoTaxRmb(noTaxUnitPriceRmb, materialNum) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的不含税总价RMB
|
|
|
|
allNoTaxRmbMain = allNoTaxRmbMain.add(allNoTaxRmb); |
|
|
|
|
|
|
|
// 计算含税总价(RMB),并保留两位小数
|
|
|
|
BigDecimal allTaxRmb = calculateAllTaxRmb(taxUnitPriceRmb, materialNum) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的含税总价RMB
|
|
|
|
allTaxRmbMain = allTaxRmbMain.add(allTaxRmb); |
|
|
|
|
|
|
|
// 计算不含税单价(美元),并保留两位小数
|
|
|
|
BigDecimal noTaxUnitPriceDollar = calculateNoTaxUnitPriceDollar(noTaxUnitPriceRmb, usdRate) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的不含税单价美元
|
|
|
|
noTaxDollarMain = noTaxDollarMain.add(noTaxUnitPriceDollar); |
|
|
|
|
|
|
|
// 计算含税单价(美元),并保留两位小数
|
|
|
|
BigDecimal taxUnitPriceDollar = calculateTaxUnitPriceDollar(taxUnitPriceRmb, usdRate) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的含税单价美元
|
|
|
|
taxDollarMain = taxDollarMain.add(taxUnitPriceDollar); |
|
|
|
|
|
|
|
// 计算不含税总价(美元),并保留两位小数
|
|
|
|
BigDecimal allNoTaxDollar = calculateAllNoTaxDollar(noTaxUnitPriceDollar, materialNum) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的不含税总价美元
|
|
|
|
allNoTaxDollarMain = allNoTaxDollarMain.add(allNoTaxDollar); |
|
|
|
|
|
|
|
// 计算含税总价(美元),并保留两位小数
|
|
|
|
BigDecimal allTaxDollar = calculateAllTaxDollar(taxUnitPriceDollar, materialNum) |
|
|
|
.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// 计算主表的含税总价美元
|
|
|
|
allTaxDollarMain = allTaxDollarMain.add(allTaxDollar); |
|
|
|
|
|
|
|
// 更新 SalesEstimateDetail 对象中的值
|
|
|
|
updateSalesEstimateDetail(salesEstimateDetail, |
|
|
@ -374,6 +433,15 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
salesEstimate.setAllNoTaxDollar(allNoTaxDollarMain); |
|
|
|
salesEstimate.setAllNoTaxRmb(allNoTaxRmbMain); |
|
|
|
salesEstimate.setAllTaxDollar(allTaxDollarMain); |
|
|
|
salesEstimate.setAllTaxRmb(allTaxRmbMain); |
|
|
|
salesEstimate.setNoTaxDollar(noTaxDollarMain); |
|
|
|
salesEstimate.setNoTaxRmb(noTaxRmbMain); |
|
|
|
salesEstimate.setTaxDollar(taxDollarMain); |
|
|
|
salesEstimate.setTaxRmb(taxRmbMain); |
|
|
|
|
|
|
|
// 更新销售估价数据
|
|
|
|
return salesEstimateMapper.updateSalesEstimate(salesEstimate); |
|
|
|
} |
|
|
@ -498,5 +566,7 @@ public class SalesEstimateServiceImpl implements ISalesEstimateService |
|
|
|
salesEstimateDetail.setTaxDollar(taxUnitPriceDollar); |
|
|
|
salesEstimateDetail.setAllNoTaxDollar(allNoTaxDollar); |
|
|
|
salesEstimateDetail.setAllTaxDollar(allTaxDollar); |
|
|
|
salesEstimateDetail.setUpdateBy(ShiroUtils.getLoginName()); |
|
|
|
salesEstimateDetail.setUpdateTime(new Date()); |
|
|
|
} |
|
|
|
} |
|
|
|