|
|
@@ -346,32 +346,43 @@ public class contractServiceAdj {
|
|
|
|
|
|
RowMap lastServicePeriod = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=? ORDER BY PERIOD_BEGIN_DATE DESC", new Object[]{serviceId});//最后一笔服务周期
|
|
|
|
|
|
+
|
|
|
LocalDate PERIOD_BEGIN_DATE = TypeUtil.convert(lastServicePeriod.get("PERIOD_BEGIN_DATE"), LocalDate.class);
|
|
|
LocalDate PERIOD_END_DATE = TypeUtil.convert(lastServicePeriod.get("PERIOD_END_DATE"), LocalDate.class);
|
|
|
+ if (PERIOD_END_DATE.equals(newEndDate))
|
|
|
+ return "无需修改";
|
|
|
+
|
|
|
+ String EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_DATE IS NOT NULL and CONTRACT_SERVICE_ID=? AND PERIOD_END_DATE >=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+ if (StringUtils.isBlank(EFFECTIVE_DATE))
|
|
|
+ return "已审批不能修改了";
|
|
|
+
|
|
|
|
|
|
String bindId = editServiceSale(uc, serviceId, "修改结束日期");
|
|
|
|
|
|
BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", bindId);
|
|
|
|
|
|
- if (PERIOD_END_DATE.equals(newEndDate))
|
|
|
- return "无需修改";
|
|
|
-
|
|
|
if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
//缩短
|
|
|
|
|
|
if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
- if (lastServicePeriod.get("APPROVE_AND_POST_DATE") != null && StringUtils.isNotBlank(lastServicePeriod.getString("APPROVE_AND_POST_USER_ID")))
|
|
|
- return "已审批不能修改了";
|
|
|
|
|
|
adjBO.set("EFFECTIVE_DATE", PERIOD_BEGIN_DATE);
|
|
|
+
|
|
|
} else {
|
|
|
|
|
|
- String EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_DATE IS NULL and CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+ EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_DATE IS NULL and CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
|
|
|
- LocalDate EFFECTIVE_DATE1 = TypeUtil.convert(lastServicePeriod.get("EFFECTIVE_DATE"), LocalDate.class);
|
|
|
+ LocalDate EFFECTIVE_DATE1 = null;
|
|
|
+ if (StringUtils.isBlank(EFFECTIVE_DATE)) {
|
|
|
+ EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_END_DATE) as PERIOD_END_DATE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
+ EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
+ }
|
|
|
|
|
|
- if (EFFECTIVE_DATE1.isAfter(newEndDate))
|
|
|
- return "已审批不能修改了";
|
|
|
|
|
|
adjBO.set("EFFECTIVE_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
|
@@ -480,28 +491,40 @@ public class contractServiceAdj {
|
|
|
LocalDate PERIOD_BEGIN_DATE = TypeUtil.convert(lastServicePeriod.get("PERIOD_BEGIN_DATE"), LocalDate.class);
|
|
|
LocalDate PERIOD_END_DATE = TypeUtil.convert(lastServicePeriod.get("PERIOD_END_DATE"), LocalDate.class);
|
|
|
|
|
|
- String bindId = editServiceSale(uc, serviceId, "修改结束日期");
|
|
|
-
|
|
|
- BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", bindId);
|
|
|
|
|
|
if (PERIOD_END_DATE.equals(newEndDate))
|
|
|
return "无需修改";
|
|
|
|
|
|
+ String EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE PAY_AMOUNT<>0 and PAY_AMOUNT is not NULL and CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE >=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(EFFECTIVE_DATE))
|
|
|
+ return "已审批不能修改了";
|
|
|
+
|
|
|
+
|
|
|
+ String bindId = editServicePurchase(uc, serviceId, "修改结束日期");
|
|
|
+
|
|
|
+ BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", bindId);
|
|
|
+
|
|
|
+
|
|
|
if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
//缩短
|
|
|
if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
- if (lastServicePeriod.get("PAY_AMOUNT") != null && lastServicePeriod.getDouble("PAY_AMOUNT") != 0)
|
|
|
- return "已审批不能修改了";
|
|
|
|
|
|
adjBO.set("PURCHASE_START_DATE", PERIOD_BEGIN_DATE);
|
|
|
} else {
|
|
|
|
|
|
- String EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE PAY_AMOUNT<>0 and PAY_AMOUNT is not NULL and CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+ EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE PAY_AMOUNT<>0 and PAY_AMOUNT is not NULL and CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
+
|
|
|
+ LocalDate EFFECTIVE_DATE1 = null;
|
|
|
+ if (StringUtils.isBlank(EFFECTIVE_DATE)) {
|
|
|
+ EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_END_DATE) as PERIOD_END_DATE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
|
|
|
- LocalDate EFFECTIVE_DATE1 = TypeUtil.convert(lastServicePeriod.get("EFFECTIVE_DATE"), LocalDate.class);
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
+ EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
|
|
|
- if (EFFECTIVE_DATE1.isAfter(newEndDate))
|
|
|
- return "已审批不能修改了";
|
|
|
+ } else {
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
+ }
|
|
|
|
|
|
adjBO.set("PURCHASE_START_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
|
@@ -530,9 +553,6 @@ public class contractServiceAdj {
|
|
|
adjBO.set("PURCHASE_END_DATE", newEndDate);
|
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", adjBO);
|
|
|
|
|
|
- //execServicePurchaseAdj(uc, adjBO.getId());
|
|
|
- //DBSql.update("update bo_eu_dnctt_contract_service set PURCHASE_END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
-
|
|
|
if (execServicePurchaseAdj(uc, adjBO.getId(), null) == false) {
|
|
|
DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
} else {
|