Explorar o código

采购单 按年收费 使用 首月成本单独计费

zhangyao hai 1 mes
pai
achega
7888511b4d

+ 2 - 1
com.awspaas.user.apps.donenow_crm/src/com/awspaas/user/apps/donenow_crm/controller/accountController.java

@@ -42,7 +42,8 @@ public class accountController extends BaseController {
 
         //引用校验
         String result = verifyDel(tableName, ids);
-        if (result != null) return ResponseObject.newErrResponse(result);
+        if (result != null)
+            return ResponseObject.newErrResponse(result);
 
         Connection conn = null;
         try {

+ 3 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/PeriodCalculationUtil.java

@@ -2,6 +2,7 @@ package com.awspaas.user.apps.donenow_ctt;
 
 import com.actionsoft.sdk.local.SDK;
 import com.actionsoft.sdk.local.api.Logger;
+import com.alibaba.fastjson.JSON;
 import org.apache.commons.lang3.StringUtils;
 
 import java.math.BigDecimal;
@@ -321,6 +322,8 @@ public class PeriodCalculationUtil {
             }
         }
 
+        LOGGERU.info("周期列表个数:" + periodList.size());
+        LOGGERU.info("周期列表:" + JSON.toJSONString(periodList));
         return periodList;
     }
 

+ 3 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -2057,7 +2057,7 @@ public class contractService {
 
 
             } else {
-                BigDecimal rate = periodList.stream().skip(1).map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal rate = periodList.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
                 EXTENDED_COST = EXTENDED_COST.multiply(rate);
                 contractCost.set("EXTENDED_COST", EXTENDED_COST);
             }
@@ -2068,6 +2068,8 @@ public class contractService {
             contractCost.set("EXTENDED_COST", EXTENDED_COST);
         }
 
+        contractServiceLogger.info("计算合同成本周期结束:" + EXTENDED_COST);
+
 
         //单元成本
         contractCost.set("UNIT_COST", divideToBigDecimal(contractCost.get("EXTENDED_COST"), contractCost.get("QUANTITY")));

+ 15 - 3
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/service/PaymentPlanService.java

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

+ 3 - 1
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/utils/PeriodCalculationUtil.java

@@ -2,6 +2,7 @@ package com.awspaas.user.apps.donenow_ivt.utils;
 
 import com.actionsoft.sdk.local.SDK;
 import com.actionsoft.sdk.local.api.Logger;
+import com.alibaba.fastjson.JSON;
 import org.apache.commons.lang3.StringUtils;
 
 import java.math.BigDecimal;
@@ -320,7 +321,8 @@ public class PeriodCalculationUtil {
                 startDate = periodEnd.plusDays(1);
             }
         }
-
+        LOGGERU.info("周期列表个数:" + periodList.size());
+        LOGGERU.info("周期列表:" + JSON.toJSONString(periodList));
         return periodList;
     }