|
@@ -115,7 +115,7 @@ public class contractServiceAdj {
|
|
|
* @param boId
|
|
* @param boId
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- public boolean execServiceSaleAdj(UserContext uc, String boId,boolean isEditEnd) {
|
|
|
|
|
|
|
+ public boolean execServiceSaleAdj(UserContext uc, String boId, boolean isEditEnd) {
|
|
|
BO contractService = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", boId);
|
|
BO contractService = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", boId);
|
|
|
LocalDate EFFECTIVE_DATE = getLocalDate(contractService.get("EFFECTIVE_DATE"));//服务生效日期
|
|
LocalDate EFFECTIVE_DATE = getLocalDate(contractService.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
LocalDate EFFECTIVE_END_DATE = getLocalDate(contractService.get("END_DATE"));//服务结束日期
|
|
LocalDate EFFECTIVE_END_DATE = getLocalDate(contractService.get("END_DATE"));//服务结束日期
|
|
@@ -348,8 +348,7 @@ public class contractServiceAdj {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
//如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
|
- if(isEditEnd==false)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ if (isEditEnd == false) {
|
|
|
if (orgContractService.get("EFFECTIVE_DATE", LocalDate.class).compareTo(contractService.get("EFFECTIVE_DATE", LocalDate.class)) < 0)
|
|
if (orgContractService.get("EFFECTIVE_DATE", LocalDate.class).compareTo(contractService.get("EFFECTIVE_DATE", LocalDate.class)) < 0)
|
|
|
orgContractService.set("EFFECTIVE_DATE", contractService.get("EFFECTIVE_DATE"));
|
|
orgContractService.set("EFFECTIVE_DATE", contractService.get("EFFECTIVE_DATE"));
|
|
|
}
|
|
}
|
|
@@ -368,6 +367,7 @@ public class contractServiceAdj {
|
|
|
e1.printStackTrace();
|
|
e1.printStackTrace();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ return false;
|
|
|
} finally {
|
|
} finally {
|
|
|
if (conn != null) DBSql.close(conn);
|
|
if (conn != null) DBSql.close(conn);
|
|
|
}
|
|
}
|
|
@@ -385,88 +385,93 @@ public class contractServiceAdj {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public String editServiceSaleEndDate(UserContext uc, String serviceId, LocalDate newEndDate) {
|
|
public String editServiceSaleEndDate(UserContext uc, String serviceId, LocalDate newEndDate) {
|
|
|
|
|
+ try {
|
|
|
|
|
|
|
|
- //一次性收费,无需修改
|
|
|
|
|
- if (DBSql.getString("select PERIOD_TYPE from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{serviceId}).equals("609")) {
|
|
|
|
|
- return "无需修改";
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //一次性收费,无需修改
|
|
|
|
|
+ if (DBSql.getString("select PERIOD_TYPE from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{serviceId}).equals("609")) {
|
|
|
|
|
+ return "无需修改";
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- 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});//最后一笔服务周期
|
|
|
|
|
|
|
+ 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 "无需修改";
|
|
|
|
|
|
|
+ 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.isNotBlank(EFFECTIVE_DATE))
|
|
|
|
|
- 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.isNotBlank(EFFECTIVE_DATE))
|
|
|
|
|
+ return "已审批不能修改了";
|
|
|
|
|
|
|
|
- String bindId = editServiceSale(uc, serviceId, "修改结束日期");
|
|
|
|
|
|
|
+ String bindId = editServiceSale(uc, serviceId, "修改结束日期");
|
|
|
|
|
|
|
|
- BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", bindId);
|
|
|
|
|
|
|
+ BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", bindId);
|
|
|
|
|
|
|
|
- if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
|
|
- //缩短
|
|
|
|
|
|
|
+ if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
|
|
+ //缩短
|
|
|
|
|
|
|
|
- if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
|
|
|
|
+ if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
|
|
|
|
|
- adjBO.set("EFFECTIVE_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
|
|
+ adjBO.set("EFFECTIVE_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
|
|
|
- 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 = 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_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
- EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
- EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
|
|
|
|
+ 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_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
+ EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
- EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
- EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
- adjBO.set("EFFECTIVE_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
|
|
+ adjBO.set("EFFECTIVE_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
|
|
|
- //最近的一次服务调整
|
|
|
|
|
- RowMap lastContractServiceAdj = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' AND EFFECTIVE_DATE <=? ORDER BY EFFECTIVE_DATE DESC", new Object[]{serviceId, LocalDateYYYYMMDD(EFFECTIVE_DATE1)});
|
|
|
|
|
|
|
+ //最近的一次服务调整
|
|
|
|
|
+ RowMap lastContractServiceAdj = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' AND EFFECTIVE_DATE <=? ORDER BY EFFECTIVE_DATE DESC", new Object[]{serviceId, LocalDateYYYYMMDD(EFFECTIVE_DATE1)});
|
|
|
|
|
|
|
|
- adjBO.set("UNIT_PRICE", lastContractServiceAdj.getString("UNIT_PRICE"));
|
|
|
|
|
- adjBO.set("TOTAL_PRICE", lastContractServiceAdj.getString("TOTAL_PRICE"));
|
|
|
|
|
- adjBO.set("QUANTITY", lastContractServiceAdj.getString("QUANTITY"));
|
|
|
|
|
- adjBO.set("PERIOD_TYPE", lastContractServiceAdj.getString("PERIOD_TYPE"));
|
|
|
|
|
- adjBO.set("CALC_METHOD_1STPERIOD", lastContractServiceAdj.getString("CALC_METHOD_1STPERIOD"));
|
|
|
|
|
- adjBO.set("MONTH_1STQUARTER", lastContractServiceAdj.getString("MONTH_1STQUARTER"));
|
|
|
|
|
- adjBO.set("PARTYA_TOTAL_PRICE", lastContractServiceAdj.getString("PARTYA_TOTAL_PRICE"));
|
|
|
|
|
- adjBO.set("UNIT_PRICE_1STMONTH", lastContractServiceAdj.getString("UNIT_PRICE_1STMONTH"));
|
|
|
|
|
|
|
+ adjBO.set("UNIT_PRICE", lastContractServiceAdj.getString("UNIT_PRICE"));
|
|
|
|
|
+ adjBO.set("TOTAL_PRICE", lastContractServiceAdj.getString("TOTAL_PRICE"));
|
|
|
|
|
+ adjBO.set("QUANTITY", lastContractServiceAdj.getString("QUANTITY"));
|
|
|
|
|
+ adjBO.set("PERIOD_TYPE", lastContractServiceAdj.getString("PERIOD_TYPE"));
|
|
|
|
|
+ adjBO.set("CALC_METHOD_1STPERIOD", lastContractServiceAdj.getString("CALC_METHOD_1STPERIOD"));
|
|
|
|
|
+ adjBO.set("MONTH_1STQUARTER", lastContractServiceAdj.getString("MONTH_1STQUARTER"));
|
|
|
|
|
+ adjBO.set("PARTYA_TOTAL_PRICE", lastContractServiceAdj.getString("PARTYA_TOTAL_PRICE"));
|
|
|
|
|
+ adjBO.set("UNIT_PRICE_1STMONTH", lastContractServiceAdj.getString("UNIT_PRICE_1STMONTH"));
|
|
|
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
- //延长
|
|
|
|
|
- if (lastServicePeriod.get("APPROVE_AND_POST_DATE") != null && StringUtils.isNotBlank(lastServicePeriod.getString("APPROVE_AND_POST_USER_ID"))) {
|
|
|
|
|
- adjBO.set("EFFECTIVE_DATE", PERIOD_END_DATE.plusDays(1));
|
|
|
|
|
} else {
|
|
} else {
|
|
|
- adjBO.set("EFFECTIVE_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
|
|
+ //延长
|
|
|
|
|
+ if (lastServicePeriod.get("APPROVE_AND_POST_DATE") != null && StringUtils.isNotBlank(lastServicePeriod.getString("APPROVE_AND_POST_USER_ID"))) {
|
|
|
|
|
+ adjBO.set("EFFECTIVE_DATE", PERIOD_END_DATE.plusDays(1));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ adjBO.set("EFFECTIVE_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- adjBO.set("REMARK", "服务延期:" + LocalDateYYYYMMDD(PERIOD_END_DATE) + "->" + LocalDateYYYYMMDD(newEndDate));
|
|
|
|
|
|
|
+ adjBO.set("REMARK", "服务延期:" + LocalDateYYYYMMDD(PERIOD_END_DATE) + "->" + LocalDateYYYYMMDD(newEndDate));
|
|
|
|
|
|
|
|
- adjBO.set("END_DATE", newEndDate);
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", adjBO);
|
|
|
|
|
|
|
+ adjBO.set("END_DATE", newEndDate);
|
|
|
|
|
+ SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST", adjBO);
|
|
|
|
|
|
|
|
- if (execServiceSaleAdj(uc, adjBO.getId(),true) == false) {
|
|
|
|
|
- DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
|
|
- } else {
|
|
|
|
|
- DBSql.update("update bo_eu_dnctt_contract_service set END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
|
|
|
|
+ if (execServiceSaleAdj(uc, adjBO.getId(), true) == false) {
|
|
|
|
|
+ DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
|
|
+ } else {
|
|
|
|
|
+ DBSql.update("update bo_eu_dnctt_contract_service set END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
|
|
+ }
|
|
|
|
|
+ return "ok";
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ return "异常:" + e.getMessage();
|
|
|
}
|
|
}
|
|
|
- return "ok";
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -532,90 +537,94 @@ public class contractServiceAdj {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public String editServicePurchaseEndDate(UserContext uc, String serviceId, LocalDate newEndDate) {
|
|
public String editServicePurchaseEndDate(UserContext uc, String serviceId, LocalDate newEndDate) {
|
|
|
- RowMap lastServicePeriod = DBSql.getMap("SELECT * FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE CONTRACT_SERVICE_ID=? ORDER BY PERIOD_BEGIN_DATE DESC", new Object[]{serviceId});//最后一笔服务周期
|
|
|
|
|
- if (lastServicePeriod == null)
|
|
|
|
|
- return "无需修改";
|
|
|
|
|
-
|
|
|
|
|
- //一次性收费,无需修改
|
|
|
|
|
- if (DBSql.getString("select PURCHASE_PERIOD_TYPE from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{serviceId}).equals("609")) {
|
|
|
|
|
- return "无需修改";
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
|
|
|
- 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);
|
|
|
|
|
|
|
+ RowMap lastServicePeriod = DBSql.getMap("SELECT * FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE CONTRACT_SERVICE_ID=? ORDER BY PERIOD_BEGIN_DATE DESC", new Object[]{serviceId});//最后一笔服务周期
|
|
|
|
|
+ if (lastServicePeriod == null)
|
|
|
|
|
+ return "无需修改";
|
|
|
|
|
|
|
|
- if (PERIOD_END_DATE.equals(newEndDate)) return "无需修改";
|
|
|
|
|
|
|
+ //一次性收费,无需修改
|
|
|
|
|
+ if (DBSql.getString("select PURCHASE_PERIOD_TYPE from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{serviceId}).equals("609")) {
|
|
|
|
|
+ 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)});
|
|
|
|
|
|
|
+ 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 (StringUtils.isNotBlank(EFFECTIVE_DATE))
|
|
|
|
|
- return "已审批不能修改了";
|
|
|
|
|
|
|
+ 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)});
|
|
|
|
|
|
|
|
- String bindId = editServicePurchase(uc, serviceId, "修改结束日期");
|
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(EFFECTIVE_DATE))
|
|
|
|
|
+ return "已审批不能修改了";
|
|
|
|
|
|
|
|
- BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", bindId);
|
|
|
|
|
|
|
+ String bindId = editServicePurchase(uc, serviceId, "修改结束日期");
|
|
|
|
|
+ BO adjBO = SDK.getBOAPI().getByProcess("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", bindId);
|
|
|
|
|
+ contractServiceLogger.info("采购生效日期:" + adjBO.get("PURCHASE_START_DATE"));
|
|
|
|
|
+ contractServiceLogger.info("采购生效日期:newEndDate " + newEndDate);
|
|
|
|
|
|
|
|
|
|
+ if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
|
|
+ //缩短
|
|
|
|
|
+ if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
|
|
|
|
|
- if (PERIOD_END_DATE.isAfter(newEndDate)) {
|
|
|
|
|
- //缩短
|
|
|
|
|
- if (PERIOD_BEGIN_DATE.isBefore(newEndDate)) {
|
|
|
|
|
|
|
+ adjBO.set("PURCHASE_START_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
+ } else {
|
|
|
|
|
|
|
|
- adjBO.set("PURCHASE_START_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
- } else {
|
|
|
|
|
|
|
+ contractServiceLogger.info("采购生效日期:EFFECTIVE_DATE_SQL :" + "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='" + serviceId + "' AND PERIOD_BEGIN_DATE <='" + 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)});
|
|
|
|
|
|
|
+ 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 = null;
|
|
|
|
|
+ if (StringUtils.isBlank(EFFECTIVE_DATE)) {
|
|
|
|
|
+ EFFECTIVE_DATE = DBSql.getString("SELECT max(PERIOD_BEGIN_DATE) as PERIOD_BEGIN_DATE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE <=?", new Object[]{serviceId, LocalDateYYYYMMDD(newEndDate)});
|
|
|
|
|
+ EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
+ // EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
|
|
|
- EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
|
|
+ EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
- EFFECTIVE_DATE1 = EFFECTIVE_DATE1.plusDays(1);
|
|
|
|
|
|
|
+ adjBO.set("PURCHASE_START_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
- EFFECTIVE_DATE = EFFECTIVE_DATE.length() >= 10 ? EFFECTIVE_DATE.substring(0, 10) : EFFECTIVE_DATE;
|
|
|
|
|
|
|
+ //最近的一次服务调整
|
|
|
|
|
+ RowMap lastContractServiceAdj = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' AND PURCHASE_START_DATE <=? ORDER BY PURCHASE_START_DATE DESC", new Object[]{serviceId, LocalDateYYYYMMDD(EFFECTIVE_DATE1)});
|
|
|
|
|
|
|
|
- EFFECTIVE_DATE1 = TypeUtil.convert(EFFECTIVE_DATE, LocalDate.class);
|
|
|
|
|
|
|
+ adjBO.set("UNIT_COST", lastContractServiceAdj.getString("UNIT_COST"));
|
|
|
|
|
+ adjBO.set("TOTAL_COST", lastContractServiceAdj.getString("TOTAL_COST"));
|
|
|
|
|
+ adjBO.set("QUANTITY", lastContractServiceAdj.getString("QUANTITY"));
|
|
|
|
|
+ adjBO.set("PURCHASE_PERIOD_TYPE", lastContractServiceAdj.getString("PURCHASE_PERIOD_TYPE"));
|
|
|
|
|
+ adjBO.set("PURCHASE_CALC_METHOD_1STPERIOD", lastContractServiceAdj.getString("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
|
|
+ adjBO.set("MONTH_1STQUARTER", lastContractServiceAdj.getString("MONTH_1STQUARTER"));
|
|
|
|
|
+ adjBO.set("UNIT_COST_1STMONTH", lastContractServiceAdj.getString("UNIT_COST_1STMONTH"));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- adjBO.set("PURCHASE_START_DATE", EFFECTIVE_DATE1);
|
|
|
|
|
-
|
|
|
|
|
- //最近的一次服务调整
|
|
|
|
|
- RowMap lastContractServiceAdj = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' AND PURCHASE_START_DATE <=? ORDER BY PURCHASE_START_DATE DESC", new Object[]{serviceId, LocalDateYYYYMMDD(EFFECTIVE_DATE1)});
|
|
|
|
|
-
|
|
|
|
|
- adjBO.set("UNIT_COST", lastContractServiceAdj.getString("UNIT_COST"));
|
|
|
|
|
- adjBO.set("TOTAL_COST", lastContractServiceAdj.getString("TOTAL_COST"));
|
|
|
|
|
- adjBO.set("QUANTITY", lastContractServiceAdj.getString("QUANTITY"));
|
|
|
|
|
- adjBO.set("PURCHASE_PERIOD_TYPE", lastContractServiceAdj.getString("PURCHASE_PERIOD_TYPE"));
|
|
|
|
|
- adjBO.set("PURCHASE_CALC_METHOD_1STPERIOD", lastContractServiceAdj.getString("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
|
|
- adjBO.set("MONTH_1STQUARTER", lastContractServiceAdj.getString("MONTH_1STQUARTER"));
|
|
|
|
|
- adjBO.set("UNIT_COST_1STMONTH", lastContractServiceAdj.getString("UNIT_COST_1STMONTH"));
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //延长
|
|
|
|
|
+ if (lastServicePeriod.get("PAY_AMOUNT") != null && lastServicePeriod.getDouble("PAY_AMOUNT") != 0) {
|
|
|
|
|
+ adjBO.set("PURCHASE_START_DATE", PERIOD_END_DATE.plusDays(1));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ adjBO.set("PURCHASE_START_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
- //延长
|
|
|
|
|
- if (lastServicePeriod.get("PAY_AMOUNT") != null && lastServicePeriod.getDouble("PAY_AMOUNT") != 0) {
|
|
|
|
|
- adjBO.set("PURCHASE_START_DATE", PERIOD_END_DATE.plusDays(1));
|
|
|
|
|
|
|
+ contractServiceLogger.info("采购生效日期:" + adjBO.get("PURCHASE_START_DATE"));
|
|
|
|
|
+ adjBO.set("REMARK", "服务延期:" + LocalDateYYYYMMDD(PERIOD_END_DATE) + "->" + LocalDateYYYYMMDD(newEndDate));
|
|
|
|
|
+ adjBO.set("PURCHASE_END_DATE", newEndDate);
|
|
|
|
|
+ SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", adjBO);
|
|
|
|
|
+
|
|
|
|
|
+ if (execServicePurchaseAdj(uc, adjBO.getId(), null, true) == false) {
|
|
|
|
|
+ DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
} else {
|
|
} else {
|
|
|
- adjBO.set("PURCHASE_START_DATE", PERIOD_BEGIN_DATE);
|
|
|
|
|
|
|
+ DBSql.update("update bo_eu_dnctt_contract_service set PURCHASE_END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- adjBO.set("REMARK", "服务延期:" + LocalDateYYYYMMDD(PERIOD_END_DATE) + "->" + LocalDateYYYYMMDD(newEndDate));
|
|
|
|
|
- adjBO.set("PURCHASE_END_DATE", newEndDate);
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", adjBO);
|
|
|
|
|
|
|
|
|
|
- if (execServicePurchaseAdj(uc, adjBO.getId(), null,true) == false) {
|
|
|
|
|
- DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
|
|
- } else {
|
|
|
|
|
- DBSql.update("update bo_eu_dnctt_contract_service set PURCHASE_END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
|
|
|
|
+ return "ok";
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ return "异常:" + e.getMessage();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- return "ok";
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -626,7 +635,7 @@ public class contractServiceAdj {
|
|
|
* @param boName
|
|
* @param boName
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- public boolean execServicePurchaseAdj(UserContext uc, String boId, String boName,boolean isEditEnd) {
|
|
|
|
|
|
|
+ public boolean execServicePurchaseAdj(UserContext uc, String boId, String boName, boolean isEditEnd) {
|
|
|
//调整 服务
|
|
//调整 服务
|
|
|
BO contractService = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", boId);
|
|
BO contractService = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", boId);
|
|
|
|
|
|
|
@@ -859,8 +868,7 @@ public class contractServiceAdj {
|
|
|
|
|
|
|
|
//如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
//如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
|
//如果只修改了 结束日期则不需要修改
|
|
//如果只修改了 结束日期则不需要修改
|
|
|
- if(isEditEnd==false)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ if (isEditEnd == false) {
|
|
|
if (orgContractService.get("PURCHASE_START_DATE", LocalDate.class).compareTo(contractService.get("PURCHASE_START_DATE", LocalDate.class)) < 0)
|
|
if (orgContractService.get("PURCHASE_START_DATE", LocalDate.class).compareTo(contractService.get("PURCHASE_START_DATE", LocalDate.class)) < 0)
|
|
|
orgContractService.set("PURCHASE_START_DATE", contractService.get("PURCHASE_START_DATE"));
|
|
orgContractService.set("PURCHASE_START_DATE", contractService.get("PURCHASE_START_DATE"));
|
|
|
}
|
|
}
|
|
@@ -887,7 +895,7 @@ public class contractServiceAdj {
|
|
|
|
|
|
|
|
//生成每月的采购计划
|
|
//生成每月的采购计划
|
|
|
if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
|
|
if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
|
|
|
- execServicePurchaseAdj(uc, boId, "BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH",isEditEnd);
|
|
|
|
|
|
|
+ execServicePurchaseAdj(uc, boId, "BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH", isEditEnd);
|
|
|
|
|
|
|
|
//分摊采购成本
|
|
//分摊采购成本
|
|
|
paySplitServiceMonth(uc, contractService.getString("CONTRACT_SERVICE_ID"));
|
|
paySplitServiceMonth(uc, contractService.getString("CONTRACT_SERVICE_ID"));
|
|
@@ -910,6 +918,8 @@ public class contractServiceAdj {
|
|
|
//合同服务采购成本平摊到服务周期上面
|
|
//合同服务采购成本平摊到服务周期上面
|
|
|
public void paySplitServiceMonth(UserContext uc, String contractServiceId) {
|
|
public void paySplitServiceMonth(UserContext uc, String contractServiceId) {
|
|
|
|
|
|
|
|
|
|
+ contractServiceLogger.info("合同服务采购成本平摊到服务周期上面");
|
|
|
|
|
+
|
|
|
RowMap service = DBSql.getMap("select * from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{contractServiceId});
|
|
RowMap service = DBSql.getMap("select * from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{contractServiceId});
|
|
|
|
|
|
|
|
// 查询与该合同服务关联的所有付款计划,并按开始时间排序
|
|
// 查询与该合同服务关联的所有付款计划,并按开始时间排序
|
|
@@ -971,7 +981,7 @@ public class contractServiceAdj {
|
|
|
// 设置下一轮比较的时间起点为当前周期结束后一天
|
|
// 设置下一轮比较的时间起点为当前周期结束后一天
|
|
|
LAST_DATE = PERIOD_END_DATE.plusDays(1);
|
|
LAST_DATE = PERIOD_END_DATE.plusDays(1);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ contractServiceLogger.info("合同服务采购成本平摊到服务周期上面--结束");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|