فهرست منبع

周期服务计算成本

zhangyao 1 ماه پیش
والد
کامیت
3be0768700

+ 30 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractServiceAdj.java

@@ -559,6 +559,26 @@ public class contractServiceAdj {
             return false;
         }
         String PERIOD_TYPE = contractService.getString("PURCHASE_PERIOD_TYPE");
+
+        int periodMonths;
+        switch (contractService.getString("PURCHASE_PERIOD_TYPE")) {
+            case "610":
+                periodMonths = 1; // 按月
+                break;
+            case "611":
+                periodMonths = 3; // 按季度
+                break;
+            case "612":
+                periodMonths = 6; // 按半年
+                break;
+            case "613":
+                periodMonths = 12; // 按年
+                break;
+            default:
+                periodMonths = 1;
+                break;
+        }
+
         if (StringUtils.isBlank(boName)) {
             boName = "BO_EU_DNIVT_ORDER_PAYMENT_PLAN";
         } else {
@@ -625,6 +645,12 @@ public class contractServiceAdj {
                     SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, lastContractService.get("QUANTITY"));
                 } else {
                     SERVICE_UNIT_COST = TypeUtil.convert(lastContractService.get("UNIT_COST"), BigDecimal.class);
+
+                    //拆算成月成本
+                    if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH")) {
+                        SERVICE_UNIT_COST = SERVICE_UNIT_COST.divide(new BigDecimal(periodMonths), 10, BigDecimal.ROUND_HALF_UP);
+                    }
+
                     SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, lastContractService.get("QUANTITY"));
                 }
 
@@ -649,6 +675,10 @@ public class contractServiceAdj {
 
 
             SERVICE_UNIT_COST = TypeUtil.convert(contractService.get("UNIT_COST"), BigDecimal.class);
+            //拆算成月成本
+            if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH")) {
+                SERVICE_UNIT_COST = SERVICE_UNIT_COST.divide(new BigDecimal(periodMonths), 10, BigDecimal.ROUND_HALF_UP);
+            }
 
             SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, contractService.get("QUANTITY"));
             RowMap costProduct = DBSql.getMap("select * from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});

+ 24 - 0
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/service/PaymentPlanService.java

@@ -137,6 +137,26 @@ public class PaymentPlanService {
         BO service = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", SERVICE_ID);
         String RULE_CATE = service.getString("PURCHASE_PERIOD_TYPE");//采购周期
 
+
+        int periodMonths;
+        switch (service.getString("PURCHASE_PERIOD_TYPE")) {
+            case "610":
+                periodMonths = 1; // 按月
+                break;
+            case "611":
+                periodMonths = 3; // 按季度
+                break;
+            case "612":
+                periodMonths = 6; // 按半年
+                break;
+            case "613":
+                periodMonths = 12; // 按年
+                break;
+            default:
+                periodMonths = 1;
+                break;
+        }
+
         if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH"))//按月采购
             RULE_CATE = "610";
 
@@ -211,6 +231,10 @@ public class PaymentPlanService {
 
         List<PeriodCalculationUtil.Period> periods = PeriodCalculationUtil.getPeriodListByConfig(RULE_CATE, START_DATE, PERIOD_BEGIN_DATE, PERIOD_END_DATE, PURCHASE_CALC_METHOD_1STPERIOD, service.getString("CALC_METHOD_1STYEAR"), service.getString("MONTH_1STQUARTER"));
 
+        //拆成每月成本
+        if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH"))
+            TOTAL_COST = TOTAL_COST.divide(new BigDecimal(periodMonths), 10, BigDecimal.ROUND_HALF_UP);
+
         int i = 0;
         for (PeriodCalculationUtil.Period period : periods) {
             i++;