Browse Source

[feat] 销售管理

总经理添加销售估价后端接口:新增销售估价主表不含税单价、含税总价、不含税总价等等的计算,并更新销售主表的数据库;新增销售估价详情表的更吓人,更新时间
dev
liuxiaoxu 4 months ago
parent
commit
1ba45a80b2
  1. 70
      ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java

70
ruoyi-admin/src/main/java/com/ruoyi/sales/service/impl/SalesEstimateServiceImpl.java

@ -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());
}
}

Loading…
Cancel
Save