Sfoglia il codice sorgente

付款计划针对按月计算 首月从1号开始的,进行特殊处理

zhangyao 1 mese fa
parent
commit
6d7f73d091

+ 25 - 3
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractServiceAdj.java

@@ -704,11 +704,33 @@ public class contractServiceAdj {
                     SERVICE_UNIT_COST = TypeUtil.convert(contractService.get("UNIT_COST_1STMONTH"), BigDecimal.class);
                     SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, contractService.get("QUANTITY"));
 
-                    BigDecimal ratio = new BigDecimal(EFFECTIVE_DATE.lengthOfMonth() - EFFECTIVE_DATE.getDayOfMonth() + 1).divide(new BigDecimal(EFFECTIVE_DATE.lengthOfMonth()), 10, BigDecimal.ROUND_HALF_UP);
+                    //按月收费,且从1号开始
+                    if (EFFECTIVE_DATE.getDayOfMonth() == 1 && PERIOD_TYPE.equals("610") && boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
 
-                    COST_1STMONTH = SERVICE_TOTAL_COST.multiply(ratio);
+                        //下月一号
+                        EFFECTIVE_DATE = EFFECTIVE_DATE.plusMonths(1).withDayOfMonth(1);//下个月1号
+                        BO paymentPlan = new BO();
+                        paymentPlan.set("ORDER_ID", orderId);
+                        paymentPlan.set("PLAN_DATE", teshuchuliBeginDate);
+                        paymentPlan.set("PERIOD_BEGIN_DATE", teshuchuliBeginDate);
+                        paymentPlan.set("PERIOD_END_DATE", EFFECTIVE_DATE.minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                        paymentPlan.set("PLAN_AMOUNT", SERVICE_TOTAL_COST);
+                        paymentPlan.set("REMAIN_AMOUNT", paymentPlan.get("PLAN_AMOUNT"));
+                        paymentPlan.set("CONTRACT_COST_ID", CONTRACT_COST_ID);
+                        paymentPlan.set("CONTRACT_SERVICE_ID", orgContractService.getId());
+                        paymentPlan.set("PAY_DESC", orgContractService.getString("NAME"));
+                        paymentPlan.set("ACCOUNT_PAYEE", VENDOR_ACCOUNT_ID);//收款单位
+                        ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_5cb4ae4a42944fd0a9a284ff4c64c65d", uc.getUID(), "付款计划");
+                        paymentPlan.setBindId(processInstance.getId());
+                        SDK.getBOAPI().create("BO_EU_DNIVT_ORDER_PAYMENT_PLAN", paymentPlan, processInstance, uc, conn);
+                        COST_1STMONTH = BigDecimal.ZERO;
+                        teshuchuli = false;
 
-                    EFFECTIVE_DATE = EFFECTIVE_DATE.plusMonths(1).withDayOfMonth(1);//下个月1号
+                    } else {
+                        BigDecimal ratio = new BigDecimal(EFFECTIVE_DATE.lengthOfMonth() - EFFECTIVE_DATE.getDayOfMonth() + 1).divide(new BigDecimal(EFFECTIVE_DATE.lengthOfMonth()), 10, BigDecimal.ROUND_HALF_UP);
+                        COST_1STMONTH = SERVICE_TOTAL_COST.multiply(ratio);
+                        EFFECTIVE_DATE = EFFECTIVE_DATE.plusMonths(1).withDayOfMonth(1);//下个月1号
+                    }
 
                     //首月单独一条
                     if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH") && !PERIOD_TYPE.equals("609")) {