Commit 35c1a573 by lzxry

单价计算错误

parent aada9b27
......@@ -338,26 +338,28 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
for (int j = 0; j < i; j++) {
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位单价
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();//当前合同之前的累计消耗金额
accruingFlow+=contractsArray[j].getHistoryTkioFlow();//当前合同之前的累计消耗流量,万单位
}
totalFlow=totalFlow-accruingFlow<0?0:totalFlow-accruingFlow;
totalFlow=totalFlow+contract.getTrackFlow();
totalprice = totalprice-accruingAmounts<0?0:totalprice-accruingAmounts;
totalprice=totalprice+contract.getMoney();
contract.setIncomeExcludingTax(new BigDecimal(totalprice/1.06)
totalprice=totalprice+new BigDecimal(contract.getMoney()/1.06).setScale(16, BigDecimal.ROUND_HALF_UP).doubleValue();
contract.setIncomeExcludingTax(new BigDecimal(totalprice)
.setScale(2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100L)).longValue());
BigDecimal unitPriceAccurate =null;
if(!contract.getPriceLevel().equals(Constant.tkioPriceLevelNotLimit)){
unitPriceAccurate = new BigDecimal(totalprice/1.06/totalFlow)
unitPriceAccurate = new BigDecimal(totalprice/totalFlow)
.setScale(16, BigDecimal.ROUND_HALF_UP);//当前合同的单价
//四舍五入单价
double unitPrice = unitPriceAccurate.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
......@@ -547,7 +549,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
contract.setIncomeShareAll(contract.getIntervaIncomeShare() + contract.getAdjustmentFund());
}else{//不限量套餐
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);
contract.setUnitPrice(dayShareIncome.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());//设置不限量套餐的单价
int betweenMonth = Months.monthsBetween(contractPart[0], creatPoints[0]).getMonths();
......@@ -736,10 +738,10 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
create, //录入日
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;//调整金
contract.setClickFlow(0.0);
boolean isLateContract = false; // 是否为晚录合同(为了兼容历史数据 此处做冗余判断)
......@@ -835,7 +837,7 @@ public class ShareIncomeServiceImpl implements ShareIncomeService {
}
}
if (checkTwoTime(contractPart[1], selected[1])) {
if (!isMore&&checkTwoTime(contractPart[1], selected[1])) {
//最后一日分摊收入计算处理(合同的最后一天,不管流量剩余多少,都算作做最后一天的收入)
Long lastDay;
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