|
|
@@ -108,11 +108,23 @@ public class PaymentPlanService {
|
|
|
|
|
|
BigDecimal RATE_TOTAL = periods.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
+ //首月总价需要单独计算 613 按年支付 4591 开通日期所在月
|
|
|
+ if (service.get("PURCHASE_CALC_METHOD_1STPERIOD").equals("4591")) {
|
|
|
+ PeriodCalculationUtil.Period period = periods.get(0);
|
|
|
+ if (period.getRate().compareTo(BigDecimal.ONE) < 0) {
|
|
|
+ BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
+ UNIT_COST_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
+ RATE_TOTAL = RATE_TOTAL.subtract(period.getRate());//减去首月
|
|
|
+ COST_TOTAL = COST_TOTAL.subtract(UNIT_COST_1STMONTH);//减去首月
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if (RATE_TOTAL.equals(BigDecimal.ZERO) || COST_TOTAL == null || COST_TOTAL.equals(BigDecimal.ZERO))
|
|
|
continue;
|
|
|
|
|
|
BigDecimal UNIT_COST = COST_TOTAL.divide(RATE_TOTAL, 10, RoundingMode.HALF_UP);
|
|
|
- int i=0;
|
|
|
+ int i = 0;
|
|
|
for (PeriodCalculationUtil.Period period : periods) {
|
|
|
total++;
|
|
|
ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_5cb4ae4a42944fd0a9a284ff4c64c65d", uc.getUID(), "付款计划");
|
|
|
@@ -128,11 +140,11 @@ public class PaymentPlanService {
|
|
|
if (period.getRate().compareTo(BigDecimal.ONE) < 0) {
|
|
|
BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
UNIT_COST_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
- paymentPlan.set("PLAN_AMOUNT", period.getRate().multiply(UNIT_COST_1STMONTH));
|
|
|
+ paymentPlan.set("PLAN_AMOUNT", period.getRate().multiply(UNIT_COST_1STMONTH));
|
|
|
} else {
|
|
|
paymentPlan.set("PLAN_AMOUNT", UNIT_COST.multiply(period.getRate()));
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
paymentPlan.set("PLAN_AMOUNT", UNIT_COST.multiply(period.getRate()));
|
|
|
}
|
|
|
|