adamsaghy commented on code in PR #3808:
URL: https://github.com/apache/fineract/pull/3808#discussion_r1532218382
##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java:
##########
@@ -46,15 +45,22 @@ public LocalDate getLastRepaymentDate(final
LoanApplicationTerms loanApplication
final int numberOfRepayments =
loanApplicationTerms.getNumberOfRepayments();
- RepaymentStartDateType repaymentStartDateType =
loanApplicationTerms.getRepaymentStartDateType();
+ LocalDate lastRepaymentDate =
loanApplicationTerms.getRepaymentStartDate();
+ final LocalDate maxDateForFixedLength =
loanApplicationTerms.calculateMaxDateForFixedLength();
- LocalDate lastRepaymentDate =
RepaymentStartDateType.DISBURSEMENT_DATE.equals(repaymentStartDateType)
- ? loanApplicationTerms.getExpectedDisbursementDate()
- : loanApplicationTerms.getSubmittedOnDate();
boolean isFirstRepayment = true;
for (int repaymentPeriod = 1; repaymentPeriod <= numberOfRepayments;
repaymentPeriod++) {
lastRepaymentDate = generateNextRepaymentDate(lastRepaymentDate,
loanApplicationTerms, isFirstRepayment);
isFirstRepayment = false;
+ // Fixed Length validation - When the Number of Repayments is
greater than Fixed Length
+ if (maxDateForFixedLength != null &&
DateUtils.isAfter(lastRepaymentDate, maxDateForFixedLength)) {
+ lastRepaymentDate = maxDateForFixedLength;
+ break;
Review Comment:
Would you mind moving this condition out of the cycle, it does not require
do to anything there. After the cycle finished you will have the
`lastRepaymentDate` set, which is the due date of the last installment and
after you can decide whether it needs to be changed or not:
if `lastRepaymentDate` is not equal with the `fixedLengthDate`, override it
with the `fixedLengthDate`.
##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultScheduledDateGenerator.java:
##########
@@ -46,17 +45,26 @@ public LocalDate getLastRepaymentDate(final
LoanApplicationTerms loanApplication
final int numberOfRepayments =
loanApplicationTerms.getNumberOfRepayments();
- RepaymentStartDateType repaymentStartDateType =
loanApplicationTerms.getRepaymentStartDateType();
+ LocalDate lastRepaymentDate =
loanApplicationTerms.getRepaymentStartDate();
+ final LocalDate maxDateForFixedLength =
loanApplicationTerms.calculateMaxDateForFixedLength();
+ log.info("maxDateForFixedLength {}", maxDateForFixedLength);
- LocalDate lastRepaymentDate =
RepaymentStartDateType.DISBURSEMENT_DATE.equals(repaymentStartDateType)
- ? loanApplicationTerms.getExpectedDisbursementDate()
- : loanApplicationTerms.getSubmittedOnDate();
boolean isFirstRepayment = true;
for (int repaymentPeriod = 1; repaymentPeriod <= numberOfRepayments;
repaymentPeriod++) {
lastRepaymentDate = generateNextRepaymentDate(lastRepaymentDate,
loanApplicationTerms, isFirstRepayment);
isFirstRepayment = false;
+ // Fixed Length validation - When the Number of Repayments is
greater than Fixed Length
+ if (maxDateForFixedLength != null &&
DateUtils.isAfter(lastRepaymentDate, maxDateForFixedLength)) {
+ lastRepaymentDate = maxDateForFixedLength;
+ break;
+ }
}
lastRepaymentDate = adjustRepaymentDate(lastRepaymentDate,
loanApplicationTerms, holidayDetailDTO).getChangedScheduleDate();
+ // Fixed Length validation - When the Number of Repayments is lower
than Fixed Length
+ if (maxDateForFixedLength != null &&
DateUtils.isAfter(maxDateForFixedLength, lastRepaymentDate)) {
Review Comment:
See https://github.com/apache/fineract/pull/3808/files#r1532214898
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]