Merge pull request #1018 from pramodn02/develop

MIFOSX-1417 - corrected accruedTill date internally for calculations
This commit is contained in:
Vishwas Babu A J
2014-07-17 09:11:27 -07:00
@@ -93,13 +93,18 @@ public class LoanAccrualWritePlatformServiceImpl implements LoanAccrualWritePlat
private String addPeriodicAccruals(final LocalDate tilldate, Collection<LoanScheduleAccrualData> loanScheduleAccrualDatas) { private String addPeriodicAccruals(final LocalDate tilldate, Collection<LoanScheduleAccrualData> loanScheduleAccrualDatas) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
Set<Long> loansIds = new HashSet<>(); Set<Long> loansIds = new HashSet<>();
LocalDate accruredTill = null;
for (final LoanScheduleAccrualData accrualData : loanScheduleAccrualDatas) { for (final LoanScheduleAccrualData accrualData : loanScheduleAccrualDatas) {
try { try {
if (!loansIds.contains(accrualData.getLoanId())) { if (!loansIds.contains(accrualData.getLoanId())) {
if (accrualData.getDueDateAsLocaldate().isAfter(tilldate)) { if (accrualData.getDueDateAsLocaldate().isAfter(tilldate)) {
addAccrualTillSpecificDate(tilldate, accrualData); if (accruredTill == null) {
accruredTill = accrualData.getAccruedTill();
}
addAccrualTillSpecificDate(tilldate, accrualData, accruredTill);
} else { } else {
addAccrualAccounting(accrualData); addAccrualAccounting(accrualData);
accruredTill = accrualData.getDueDateAsLocaldate();
} }
} }
} catch (Exception e) { } catch (Exception e) {
@@ -115,16 +120,15 @@ public class LoanAccrualWritePlatformServiceImpl implements LoanAccrualWritePlat
return sb.toString(); return sb.toString();
} }
private void addAccrualTillSpecificDate(final LocalDate tilldate, final LoanScheduleAccrualData accrualData) throws Exception { private void addAccrualTillSpecificDate(final LocalDate tilldate, final LoanScheduleAccrualData accrualData,
final LocalDate accruredTill) throws Exception {
int totalNumberOfDays = Days.daysBetween(accrualData.getFromDateAsLocaldate(), accrualData.getDueDateAsLocaldate()).getDays(); int totalNumberOfDays = Days.daysBetween(accrualData.getFromDateAsLocaldate(), accrualData.getDueDateAsLocaldate()).getDays();
LocalDate startDate = accrualData.getAccruedTill(); LocalDate startDate = accruredTill;
if (startDate == null) { if (startDate == null) {
startDate = accrualData.getFromDateAsLocaldate(); startDate = accrualData.getFromDateAsLocaldate();
} }
int daysToBeAccrued = Days.daysBetween(startDate, tilldate).getDays(); int daysToBeAccrued = Days.daysBetween(startDate, tilldate).getDays();
if(daysToBeAccrued < 1){ if (daysToBeAccrued < 1) { return; }
return;
}
int daysInSchedule = Days.daysBetween(accrualData.getFromDateAsLocaldate(), tilldate).getDays(); int daysInSchedule = Days.daysBetween(accrualData.getFromDateAsLocaldate(), tilldate).getDays();
switch (accrualData.getRepaymentFrequency()) { switch (accrualData.getRepaymentFrequency()) {
case MONTHS: case MONTHS: