Commit 35c1a573 by lzxry

单价计算错误

parent aada9b27
...@@ -338,26 +338,28 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -338,26 +338,28 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
for (int j = 0; j < i; j++) { for (int j = 0; j < i; j++) {
totalFlow+=contractsArray[j].getTrackFlow(); totalFlow+=contractsArray[j].getTrackFlow();
totalprice+=contractsArray[j].getMoney();
double currentFlow = contractsArray[j].getTrackFlow()+accruingFlow;
double currentMoney = contractsArray[j].getMoney()+accruingAmounts;
contractsArray[j].setUnitPriceAccurate(new BigDecimal(currentMoney / 1.06 / currentFlow) totalprice+=new BigDecimal(contractsArray[j].getMoney()/1.06).setScale(16, BigDecimal.ROUND_HALF_UP).doubleValue();
double currentFlow = totalFlow-accruingFlow;
double currentMoney = totalprice-accruingAmounts;
contractsArray[j].setUnitPriceAccurate(new BigDecimal(currentMoney / currentFlow)
.setScale(16, BigDecimal.ROUND_HALF_UP));//存储16位单价 .setScale(16, BigDecimal.ROUND_HALF_UP));//存储16位单价
accruingAmounts+= new BigDecimal(currentMoney/1.06/currentFlow*contractsArray[j].getHistoryTkioFlow()) accruingAmounts+= new BigDecimal(currentMoney/currentFlow*contractsArray[j].getHistoryTkioFlow())
.setScale(16, BigDecimal.ROUND_HALF_UP).doubleValue();//当前合同之前的累计消耗金额 .setScale(16, BigDecimal.ROUND_HALF_UP).doubleValue();//当前合同之前的累计消耗金额
accruingFlow+=contractsArray[j].getHistoryTkioFlow();//当前合同之前的累计消耗流量,万单位 accruingFlow+=contractsArray[j].getHistoryTkioFlow();//当前合同之前的累计消耗流量,万单位
} }
totalFlow=totalFlow-accruingFlow<0?0:totalFlow-accruingFlow; totalFlow=totalFlow-accruingFlow<0?0:totalFlow-accruingFlow;
totalFlow=totalFlow+contract.getTrackFlow(); totalFlow=totalFlow+contract.getTrackFlow();
totalprice = totalprice-accruingAmounts<0?0:totalprice-accruingAmounts; totalprice = totalprice-accruingAmounts<0?0:totalprice-accruingAmounts;
totalprice=totalprice+contract.getMoney(); totalprice=totalprice+new BigDecimal(contract.getMoney()/1.06).setScale(16, BigDecimal.ROUND_HALF_UP).doubleValue();
contract.setIncomeExcludingTax(new BigDecimal(totalprice/1.06)
contract.setIncomeExcludingTax(new BigDecimal(totalprice)
.setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100L)).longValue()); .setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100L)).longValue());
BigDecimal unitPriceAccurate =null; BigDecimal unitPriceAccurate =null;
if(!contract.getPriceLevel().equals(Constant.tkioPriceLevelNotLimit)){ if(!contract.getPriceLevel().equals(Constant.tkioPriceLevelNotLimit)){
unitPriceAccurate = new BigDecimal(totalprice/1.06/totalFlow) unitPriceAccurate = new BigDecimal(totalprice/totalFlow)
.setScale(16, BigDecimal.ROUND_HALF_UP);//当前合同的单价 .setScale(16, BigDecimal.ROUND_HALF_UP);//当前合同的单价
//四舍五入单价 //四舍五入单价
double unitPrice = unitPriceAccurate.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); double unitPrice = unitPriceAccurate.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
...@@ -547,7 +549,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -547,7 +549,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund()); contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund());
}else{//不限量套餐 }else{//不限量套餐
int contractAllDay = getDayRange(contractPart[0], contractPart[1]) + 1;//合同总天数 int contractAllDay = getDayRange(contractPart[0], contractPart[1]) + 1;//合同总天数
BigDecimal dayShareIncome = new BigDecimal(totalprice/1.06/contractAllDay) BigDecimal dayShareIncome = new BigDecimal(totalprice/contractAllDay)
.setScale(16, BigDecimal.ROUND_HALF_UP); .setScale(16, BigDecimal.ROUND_HALF_UP);
contract.setUnitPrice(dayShareIncome.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());//设置不限量套餐的单价 contract.setUnitPrice(dayShareIncome.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());//设置不限量套餐的单价
int betweenMonth = Months.monthsBetween(contractPart[0], creatPoints[0]).getMonths(); int betweenMonth = Months.monthsBetween(contractPart[0], creatPoints[0]).getMonths();
...@@ -736,10 +738,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -736,10 +738,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create, //录入日 create, //录入日
create.dayOfMonth().withMinimumValue() //录入月1日 create.dayOfMonth().withMinimumValue() //录入月1日
}; };
this.afterContractFlow(contract,unitPriceAccurate, contractPart, usePart, selected, creatPoints); this.afterContractFlow(contract,unitPriceAccurate, contractPart, usePart, selected, creatPoints,isMore);
} }
private void afterContractFlow(Contract contract, BigDecimal unitPriceAccurate, DateTime[] contractPart, DateTime[] usePart, DateTime[] selected, DateTime[] creatPoints) { private void afterContractFlow(Contract contract, BigDecimal unitPriceAccurate, DateTime[] contractPart, DateTime[] usePart, DateTime[] selected, DateTime[] creatPoints, Boolean isMore) {
Long adjustmentFund = 0L;//调整金 Long adjustmentFund = 0L;//调整金
contract.setClickFlow(0.0); contract.setClickFlow(0.0);
boolean isLateContract = false; // 是否为晚录合同(为了兼容历史数据 此处做冗余判断) boolean isLateContract = false; // 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
...@@ -835,7 +837,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService { ...@@ -835,7 +837,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
} }
} }
if (checkTwoTime(contractPart[1], selected[1])) { if (!isMore&&checkTwoTime(contractPart[1], selected[1])) {
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入) //最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long lastDay; Long lastDay;
DateTime lastDate[]; DateTime lastDate[];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment