FINERACT-1971: Delinquency pause validation bug fixes

This commit is contained in:
taskain7
2023-12-12 13:54:58 +01:00
parent fb492b8172
commit 7a417b058b
3 changed files with 82 additions and 2 deletions
@@ -61,6 +61,7 @@ public class DelinquencyActionParseAndValidator extends ParseAndValidator {
} else if (DelinquencyAction.RESUME.equals(parsedDelinquencyAction.getAction())) {
validateResumeStartDate(parsedDelinquencyAction, businessDate);
validateResumeNoEndDate(parsedDelinquencyAction);
validateResumeDoesNotExist(parsedDelinquencyAction, savedDelinquencyActions);
validateResumeShouldBeOnActivePause(parsedDelinquencyAction, effectiveDelinquencyList);
}
return parsedDelinquencyAction;
@@ -87,6 +88,17 @@ public class DelinquencyActionParseAndValidator extends ParseAndValidator {
}
}
private void validateResumeDoesNotExist(LoanDelinquencyAction parsedDelinquencyAction,
List<LoanDelinquencyAction> savedDelinquencyActions) {
boolean match = savedDelinquencyActions.stream() //
.filter(action -> DelinquencyAction.RESUME.equals(action.getAction())) //
.anyMatch(action -> parsedDelinquencyAction.getStartDate().isEqual(action.getStartDate()));
if (match) {
raiseValidationError("loan-delinquency-action-resume-should-be-unique",
"There is an existing Resume Delinquency Action on this date");
}
}
private void validateResumeNoEndDate(LoanDelinquencyAction parsedDelinquencyAction) {
if (parsedDelinquencyAction.getEndDate() != null) {
raiseValidationError("loan-delinquency-action-resume-should-have-no-end-date",
@@ -163,7 +175,8 @@ public class DelinquencyActionParseAndValidator extends ParseAndValidator {
*/
private boolean isOverlapping(LoanDelinquencyAction parsed, LoanDelinquencyActionData existing) {
return (parsed.getEndDate().isAfter(existing.getStartDate()) && parsed.getEndDate().isBefore(existing.getEndDate()))
|| (parsed.getStartDate().isAfter(existing.getStartDate()) && parsed.getStartDate().isBefore(existing.getEndDate()));
|| (parsed.getStartDate().isAfter(existing.getStartDate()) && parsed.getStartDate().isBefore(existing.getEndDate()))
|| (parsed.getStartDate().isEqual(existing.getStartDate()) && parsed.getEndDate().isEqual(existing.getEndDate()));
}
@org.jetbrains.annotations.NotNull