Merge pull request #973 from pramodn02/MIFOSX-1340
MIFOSX-1340 : corrected schedule generator to use calendar instance
This commit is contained in:
+14
@@ -462,4 +462,18 @@ public class CalendarUtils {
|
|||||||
|
|
||||||
return getNextRecurringDate(recur, seedDate, currentDate);
|
return getNextRecurringDate(recur, seedDate, currentDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LocalDate getNextScheduleDate(final Calendar calendar, final LocalDate startDate) {
|
||||||
|
final Recur recur = CalendarUtils.getICalRecur(calendar.getRecurrence());
|
||||||
|
if (recur == null) { return null; }
|
||||||
|
LocalDate date = startDate;
|
||||||
|
final LocalDate seedDate = calendar.getStartDateLocalDate();
|
||||||
|
if (isValidRedurringDate(calendar.getRecurrence(), seedDate, date)) {
|
||||||
|
date = date.plusDays(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
final LocalDate scheduleDate = getNextRecurringDate(recur, seedDate, date);
|
||||||
|
|
||||||
|
return scheduleDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-2
@@ -42,6 +42,8 @@ import org.mifosplatform.infrastructure.core.service.DateUtils;
|
|||||||
import org.mifosplatform.organisation.monetary.domain.Money;
|
import org.mifosplatform.organisation.monetary.domain.Money;
|
||||||
import org.mifosplatform.organisation.staff.domain.Staff;
|
import org.mifosplatform.organisation.staff.domain.Staff;
|
||||||
import org.mifosplatform.portfolio.accountdetails.domain.AccountType;
|
import org.mifosplatform.portfolio.accountdetails.domain.AccountType;
|
||||||
|
import org.mifosplatform.portfolio.calendar.domain.Calendar;
|
||||||
|
import org.mifosplatform.portfolio.calendar.service.CalendarUtils;
|
||||||
import org.mifosplatform.portfolio.client.domain.Client;
|
import org.mifosplatform.portfolio.client.domain.Client;
|
||||||
import org.mifosplatform.portfolio.common.domain.PeriodFrequencyType;
|
import org.mifosplatform.portfolio.common.domain.PeriodFrequencyType;
|
||||||
import org.mifosplatform.portfolio.group.domain.Group;
|
import org.mifosplatform.portfolio.group.domain.Group;
|
||||||
@@ -1042,10 +1044,16 @@ public class RecurringDepositAccount extends SavingsAccount {
|
|||||||
return this.accountTermAndPreClosure.isTransferInterestToLinkedAccount();
|
return this.accountTermAndPreClosure.isTransferInterestToLinkedAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateSchedule(final PeriodFrequencyType frequency, final Integer recurringEvery) {
|
public void generateSchedule(final PeriodFrequencyType frequency, final Integer recurringEvery, final Calendar calendar) {
|
||||||
final List<RecurringDepositScheduleInstallment> depositScheduleInstallments = depositScheduleInstallments();
|
final List<RecurringDepositScheduleInstallment> depositScheduleInstallments = depositScheduleInstallments();
|
||||||
depositScheduleInstallments.clear();
|
depositScheduleInstallments.clear();
|
||||||
LocalDate installmentDate = depositStartDate();
|
LocalDate installmentDate = null;
|
||||||
|
if (this.isCalendarInherited()) {
|
||||||
|
installmentDate = CalendarUtils.getNextScheduleDate(calendar, accountSubmittedOrActivationDate());
|
||||||
|
} else {
|
||||||
|
installmentDate = depositStartDate();
|
||||||
|
}
|
||||||
|
|
||||||
final LocalDate maturityDate = calculateMaturityDate();
|
final LocalDate maturityDate = calculateMaturityDate();
|
||||||
int installmentNumber = 1;
|
int installmentNumber = 1;
|
||||||
final BigDecimal depositAmount = this.recurringDetail.mandatoryRecommendedDepositAmount();
|
final BigDecimal depositAmount = this.recurringDetail.mandatoryRecommendedDepositAmount();
|
||||||
|
|||||||
+1
-1
@@ -289,7 +289,7 @@ public class DepositAccountWritePlatformServiceJpaRepositoryImpl implements Depo
|
|||||||
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
||||||
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
||||||
frequency = frequency == -1 ? 1 : frequency;
|
frequency = frequency == -1 ? 1 : frequency;
|
||||||
account.generateSchedule(frequencyType, frequency);
|
account.generateSchedule(frequencyType, frequency, calendar);
|
||||||
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -240,7 +240,7 @@ public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl impl
|
|||||||
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
||||||
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
||||||
frequency = frequency == -1 ? 1 : frequency;
|
frequency = frequency == -1 ? 1 : frequency;
|
||||||
account.generateSchedule(frequencyType, frequency);
|
account.generateSchedule(frequencyType, frequency, calendar);
|
||||||
final boolean isPreMatureClosure = false;
|
final boolean isPreMatureClosure = false;
|
||||||
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
||||||
account.validateApplicableInterestRate();
|
account.validateApplicableInterestRate();
|
||||||
@@ -373,7 +373,7 @@ public class DepositApplicationProcessWritePlatformServiceJpaRepositoryImpl impl
|
|||||||
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
final PeriodFrequencyType frequencyType = CalendarFrequencyType.from(CalendarUtils.getFrequency(calendar.getRecurrence()));
|
||||||
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
Integer frequency = CalendarUtils.getInterval(calendar.getRecurrence());
|
||||||
frequency = frequency == -1 ? 1 : frequency;
|
frequency = frequency == -1 ? 1 : frequency;
|
||||||
account.generateSchedule(frequencyType, frequency);
|
account.generateSchedule(frequencyType, frequency, calendar);
|
||||||
final boolean isPreMatureClosure = false;
|
final boolean isPreMatureClosure = false;
|
||||||
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
account.updateMaturityDateAndAmount(mc, isPreMatureClosure);
|
||||||
account.validateApplicableInterestRate();
|
account.validateApplicableInterestRate();
|
||||||
|
|||||||
Reference in New Issue
Block a user