Merge pull request #946 from lingalamadhukar/MIFOSX-1267
MIFOSX-1317 Premature Interest Calculation Fix
This commit is contained in:
+14
@@ -661,11 +661,13 @@ public class FixedDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
|
||||
@@ -706,6 +708,7 @@ public class FixedDepositTest {
|
||||
double interestPerDay = interestRateInFraction * perDay;
|
||||
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
|
||||
Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
@@ -761,11 +764,13 @@ public class FixedDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
|
||||
@@ -810,6 +815,7 @@ public class FixedDepositTest {
|
||||
double interestPerDay = interestRateInFraction * perDay;
|
||||
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
|
||||
Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
@@ -865,11 +871,13 @@ public class FixedDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
|
||||
@@ -903,6 +911,7 @@ public class FixedDepositTest {
|
||||
|
||||
Calendar activationDate = Calendar.getInstance();
|
||||
activationDate.add(Calendar.MONTH, -1);
|
||||
activationDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
DateTime startDate = new DateTime(activationDate.getTime());
|
||||
|
||||
Calendar prematureClosureDate = Calendar.getInstance();
|
||||
@@ -918,6 +927,7 @@ public class FixedDepositTest {
|
||||
double interestPerDay = interestRateInFraction * perDay;
|
||||
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
|
||||
Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
@@ -972,11 +982,13 @@ public class FixedDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
Integer clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
|
||||
@@ -1014,6 +1026,7 @@ public class FixedDepositTest {
|
||||
|
||||
Calendar activationDate = Calendar.getInstance();
|
||||
activationDate.add(Calendar.MONTH, -1);
|
||||
activationDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
DateTime startDate = new DateTime(activationDate.getTime());
|
||||
|
||||
Calendar prematureClosureDate = Calendar.getInstance();
|
||||
@@ -1029,6 +1042,7 @@ public class FixedDepositTest {
|
||||
double interestPerDay = interestRateInFraction * perDay;
|
||||
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(todaysDate.getTime()));
|
||||
Integer daysInMonth = todaysDate.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
|
||||
+8
-4
@@ -975,7 +975,6 @@ public class RecurringDepositTest {
|
||||
DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
|
||||
Assert.assertNotNull(transactionIdForDeposit);
|
||||
|
||||
currentDate = currentDate - 1;
|
||||
interestPerMonth = (float) (interestPerDay * principal * currentDate);
|
||||
System.out.println("IPM = " + interestPerMonth);
|
||||
principal += interestPerMonth;
|
||||
@@ -1102,7 +1101,6 @@ public class RecurringDepositTest {
|
||||
DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
|
||||
Assert.assertNotNull(transactionIdForDeposit);
|
||||
|
||||
currentDate = currentDate - 1;
|
||||
interestPerMonth = (float) (interestPerDay * principal * currentDate);
|
||||
System.out.println("IPM = " + interestPerMonth);
|
||||
principal += interestPerMonth;
|
||||
@@ -1150,12 +1148,14 @@ public class RecurringDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
final Account assetAccount = this.accountHelper.createAssetAccount();
|
||||
@@ -1196,6 +1196,7 @@ public class RecurringDepositTest {
|
||||
|
||||
Calendar activationDate = Calendar.getInstance();
|
||||
activationDate.add(Calendar.MONTH, -1);
|
||||
activationDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
DateTime start = new DateTime(activationDate.getTime());
|
||||
|
||||
Calendar prematureClosureDate = Calendar.getInstance();
|
||||
@@ -1219,6 +1220,7 @@ public class RecurringDepositTest {
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.MONTH, -1);
|
||||
calendar.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(calendar.getTime()));
|
||||
Integer daysInMonth = calendar.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
@@ -1232,7 +1234,6 @@ public class RecurringDepositTest {
|
||||
DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
|
||||
Assert.assertNotNull(transactionIdForDeposit);
|
||||
|
||||
currentDate = currentDate - 1;
|
||||
interestPerMonth = (float) (interestPerDay * principal * currentDate);
|
||||
System.out.println("IPM = " + interestPerMonth);
|
||||
principal += interestPerMonth;
|
||||
@@ -1280,12 +1281,14 @@ public class RecurringDepositTest {
|
||||
|
||||
todaysDate = Calendar.getInstance();
|
||||
todaysDate.add(Calendar.MONTH, -1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
final String SUBMITTED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String APPROVED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String ACTIVATION_DATE = dateFormat.format(todaysDate.getTime());
|
||||
String EXPECTED_FIRST_DEPOSIT_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
final String MONTH_DAY = monthDayFormat.format(todaysDate.getTime());
|
||||
todaysDate.add(Calendar.MONTH, 1);
|
||||
todaysDate.add(Calendar.DAY_OF_MONTH, 1);
|
||||
final String CLOSED_ON_DATE = dateFormat.format(todaysDate.getTime());
|
||||
|
||||
final Account assetAccount = this.accountHelper.createAssetAccount();
|
||||
@@ -1331,6 +1334,7 @@ public class RecurringDepositTest {
|
||||
|
||||
Calendar activationDate = Calendar.getInstance();
|
||||
activationDate.add(Calendar.MONTH, -1);
|
||||
activationDate.add(Calendar.DAY_OF_MONTH, -1);
|
||||
DateTime start = new DateTime(activationDate.getTime());
|
||||
|
||||
Calendar prematureClosureDate = Calendar.getInstance();
|
||||
@@ -1354,6 +1358,7 @@ public class RecurringDepositTest {
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.MONTH, -1);
|
||||
calendar.add(Calendar.DAY_OF_MONTH, -1);
|
||||
Integer currentDate = new Integer(currentDateFormat.format(calendar.getTime()));
|
||||
Integer daysInMonth = calendar.getActualMaximum(Calendar.DATE);
|
||||
daysInMonth = (daysInMonth - currentDate) + 1;
|
||||
@@ -1367,7 +1372,6 @@ public class RecurringDepositTest {
|
||||
DEPOSIT_AMOUNT, EXPECTED_FIRST_DEPOSIT_ON_DATE);
|
||||
Assert.assertNotNull(newTransactionIdForDeposit);
|
||||
|
||||
currentDate = currentDate - 1;
|
||||
interestPerMonth = (float) (interestPerDay * principal * currentDate);
|
||||
System.out.println("IPM = " + interestPerMonth);
|
||||
principal += interestPerMonth;
|
||||
|
||||
+3
-1
@@ -499,7 +499,9 @@ public class FixedDepositAccount extends SavingsAccount {
|
||||
public void postPreMaturityInterest(final LocalDate accountCloseDate, final boolean isPreMatureClosure) {
|
||||
|
||||
Money interestPostedToDate = totalInterestPosted();
|
||||
final Money interestOnMaturity = calculatePreMatureInterest(accountCloseDate, retreiveOrderedNonInterestPostingTransactions(), isPreMatureClosure);
|
||||
// calculate interest before one day of closure date
|
||||
final LocalDate interestCalculatedToDate = accountCloseDate.minusDays(1);
|
||||
final Money interestOnMaturity = calculatePreMatureInterest(interestCalculatedToDate, retreiveOrderedNonInterestPostingTransactions(), isPreMatureClosure);
|
||||
boolean recalucateDailyBalance = false;
|
||||
|
||||
// post remaining interest
|
||||
|
||||
+3
-1
@@ -600,7 +600,9 @@ public class RecurringDepositAccount extends SavingsAccount {
|
||||
public void postPreMaturityInterest(final LocalDate accountCloseDate, final boolean isPreMatureClosure) {
|
||||
|
||||
final Money interestPostedToDate = totalInterestPosted();
|
||||
final Money interestOnMaturity = calculatePreMatureInterest(accountCloseDate, retreiveOrderedNonInterestPostingTransactions(), isPreMatureClosure);
|
||||
// calculate interest before one day of closure date
|
||||
final LocalDate interestCalculatedToDate = accountCloseDate.minusDays(1);
|
||||
final Money interestOnMaturity = calculatePreMatureInterest(interestCalculatedToDate, retreiveOrderedNonInterestPostingTransactions(), isPreMatureClosure);
|
||||
|
||||
boolean recalucateDailyBalance = false;
|
||||
|
||||
|
||||
+4
-2
@@ -71,17 +71,19 @@ public class DepositAccountPreMatureCalculationPlatformServiceImpl implements De
|
||||
account.clientId(), DepositAccountType.SAVINGS_DEPOSIT);
|
||||
final JsonElement element = this.fromJsonHelper.parse(query.json());
|
||||
final LocalDate preMaturityDate = this.fromJsonHelper.extractLocalDateNamed(closedOnDateParamName, element);
|
||||
// calculate interest before one day of closure date
|
||||
final LocalDate interestCalculatedToDate = preMaturityDate.minusDays(1);
|
||||
final boolean isPreMatureClosure = true;
|
||||
|
||||
if (depositAccountType.isFixedDeposit()) {
|
||||
final FixedDepositAccount fd = (FixedDepositAccount) account;
|
||||
accountData = FixedDepositAccountData.preClosureDetails(account.getId(),
|
||||
fd.calculatePreMatureAmount(preMaturityDate, isPreMatureClosure), onAccountClosureOptions, paymentTypeOptions,
|
||||
fd.calculatePreMatureAmount(interestCalculatedToDate, isPreMatureClosure), onAccountClosureOptions, paymentTypeOptions,
|
||||
savingsAccountDatas);
|
||||
} else if (depositAccountType.isRecurringDeposit()) {
|
||||
final RecurringDepositAccount rd = (RecurringDepositAccount) account;
|
||||
accountData = RecurringDepositAccountData.preClosureDetails(account.getId(),
|
||||
rd.calculatePreMatureAmount(preMaturityDate, isPreMatureClosure), onAccountClosureOptions, paymentTypeOptions,
|
||||
rd.calculatePreMatureAmount(interestCalculatedToDate, isPreMatureClosure), onAccountClosureOptions, paymentTypeOptions,
|
||||
savingsAccountDatas);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user