Search in sources :

Example 31 with Installment

use of org.mifos.accounts.loan.schedule.domain.Installment in project head by mifos.

the class ScheduleCalculatorTest method withOverDueInterests.

@Test
public void withOverDueInterests() {
    Installment installment1 = getInstallment(1, getDate(25, 9, 2010), 242.24, 20.40, 0);
    Installment installment2 = getInstallment(2, getDate(25, 10, 2010), 247.67, 14.96, 0);
    Installment installment3 = getInstallment(3, getDate(25, 11, 2010), 252.22, 10.40, 0);
    Installment installment4 = getInstallment(4, getDate(25, 12, 2010), 257.87, 5.09, 0);
    schedule = new Schedule(getDate(25, 8, 2010), 0.000658, BigDecimal.valueOf(1000d), asList(installment1, installment2, installment3, installment4));
    scheduleCalculator.applyPayment(schedule, BigDecimal.valueOf(550d), getDate(30, 9, 2010), false);
    assertInstallmentPrincipals(installment1, 242.24, 0, 242.24);
    assertInstallmentPrincipals(installment2, 247.67, 0, 247.67);
    assertInstallmentPrincipals(installment3, 252.22, 215.82, 36.4);
    assertInstallmentPrincipals(installment4, 257.87, 257.87, 0);
    assertInstallmentInterests(installment1, 20.40, 0, 20.40);
    assertInstallmentInterests(installment2, 7.79, 7.79, 2.49);
    assertInstallmentInterests(installment3, 9.66, 9.66, 0);
    assertInstallmentInterests(installment4, 5.09, 5.09, 0);
}
Also used : Installment(org.mifos.accounts.loan.schedule.domain.Installment) Schedule(org.mifos.accounts.loan.schedule.domain.Schedule) Test(org.junit.Test)

Example 32 with Installment

use of org.mifos.accounts.loan.schedule.domain.Installment in project head by mifos.

the class ScheduleCalculatorTest method withExactPaymentAfterDueDate.

@Test
public void withExactPaymentAfterDueDate() {
    Installment installment1 = getInstallment(1, getDate(25, 9, 2010), 242.24, 20.40, 0);
    Installment installment2 = getInstallment(2, getDate(25, 10, 2010), 247.67, 14.96, 0);
    Installment installment3 = getInstallment(3, getDate(25, 11, 2010), 252.22, 10.40, 0);
    Installment installment4 = getInstallment(4, getDate(25, 12, 2010), 257.87, 5.09, 0);
    schedule = new Schedule(getDate(25, 8, 2010), 0.000658, BigDecimal.valueOf(1000d), asList(installment1, installment2, installment3, installment4));
    scheduleCalculator.applyPayment(schedule, BigDecimal.valueOf(262.64d), getDate(29, 9, 2010), false);
    assertInstallmentPrincipals(installment1, 242.24, 0, 242.24);
    assertInstallmentPrincipals(installment2, 247.67, 247.67, 0);
    assertInstallmentPrincipals(installment3, 252.22, 252.22, 0);
    assertInstallmentPrincipals(installment4, 257.87, 257.87, 0);
    assertInstallmentInterests(installment1, 20.40, 0, 20.40);
    assertInstallmentInterests(installment2, 14.96, 14.96, 0);
    assertInstallmentInterests(installment3, 10.40, 10.40, 0);
    assertInstallmentInterests(installment4, 5.09, 5.09, 0);
    assertInstallmentForExtraInterests(installment1, 0, 0, 0);
    assertInstallmentForExtraInterests(installment2, 0.64, 0.64, 0);
    assertInstallmentForExtraInterests(installment3, 0, 0, 0);
    assertInstallmentForExtraInterests(installment4, 0, 0, 0);
}
Also used : Installment(org.mifos.accounts.loan.schedule.domain.Installment) Schedule(org.mifos.accounts.loan.schedule.domain.Schedule) Test(org.junit.Test)

Example 33 with Installment

use of org.mifos.accounts.loan.schedule.domain.Installment in project head by mifos.

the class ScheduleCalculatorTest method withShortPaymentOnTime.

@Test
public void withShortPaymentOnTime() {
    Installment installment1 = getInstallment(1, getDate(25, 9, 2010), 242.24, 20.40, 0);
    Installment installment2 = getInstallment(2, getDate(25, 10, 2010), 247.67, 14.96, 0);
    Installment installment3 = getInstallment(3, getDate(25, 11, 2010), 252.22, 10.40, 0);
    Installment installment4 = getInstallment(4, getDate(25, 12, 2010), 257.87, 5.09, 0);
    schedule = new Schedule(getDate(25, 8, 2010), 0.000658, BigDecimal.valueOf(1000d), asList(installment1, installment2, installment3, installment4));
    scheduleCalculator.applyPayment(schedule, BigDecimal.valueOf(240d), getDate(25, 9, 2010), false);
    assertInstallmentPrincipals(installment1, 242.24, 22.64, 219.6);
    assertInstallmentPrincipals(installment2, 247.67, 247.67, 0);
    assertInstallmentPrincipals(installment3, 252.22, 252.22, 0);
    assertInstallmentPrincipals(installment4, 257.87, 257.87, 0);
    assertInstallmentInterests(installment1, 20.40, 0, 20.40);
    assertInstallmentInterests(installment2, 14.96, 14.96, 0);
    assertInstallmentInterests(installment3, 10.40, 10.40, 0);
    assertInstallmentInterests(installment4, 5.09, 5.09, 0);
}
Also used : Installment(org.mifos.accounts.loan.schedule.domain.Installment) Schedule(org.mifos.accounts.loan.schedule.domain.Schedule) Test(org.junit.Test)

Example 34 with Installment

use of org.mifos.accounts.loan.schedule.domain.Installment in project head by mifos.

the class ScheduleCalculatorTest method withNoPaymentPaymentAfterDueDate.

@Test
public void withNoPaymentPaymentAfterDueDate() {
    Installment installment1 = getInstallment(1, getDate(25, 9, 2010), 242.24, 20.40, 0);
    Installment installment2 = getInstallment(2, getDate(25, 10, 2010), 247.67, 14.96, 0);
    Installment installment3 = getInstallment(3, getDate(25, 11, 2010), 252.22, 10.40, 0);
    Installment installment4 = getInstallment(4, getDate(25, 12, 2010), 257.87, 5.09, 0);
    schedule = new Schedule(getDate(25, 8, 2010), 0.000658, BigDecimal.valueOf(1000d), asList(installment1, installment2, installment3, installment4));
    scheduleCalculator.computeExtraInterest(schedule, getDate(26, 12, 2010));
    assertInstallmentPrincipals(installment1, 242.24, 242.24, 0);
    assertInstallmentPrincipals(installment2, 247.67, 247.67, 0);
    assertInstallmentPrincipals(installment3, 252.22, 252.22, 0);
    assertInstallmentPrincipals(installment4, 257.87, 257.87, 0);
    assertInstallmentInterests(installment1, 20.40, 20.40, 0);
    assertInstallmentInterests(installment2, 14.96, 14.96, 0);
    assertInstallmentInterests(installment3, 10.40, 10.40, 0);
    assertInstallmentInterests(installment4, 5.09, 5.09, 0);
    assertInstallmentForExtraInterests(installment1, 0, 0, 0);
    assertInstallmentForExtraInterests(installment2, 14.66, 14.66, 0);
    assertInstallmentForExtraInterests(installment3, 10.1, 10.1, 0);
    assertInstallmentForExtraInterests(installment4, 5.31, 5.31, 0);
}
Also used : Installment(org.mifos.accounts.loan.schedule.domain.Installment) Schedule(org.mifos.accounts.loan.schedule.domain.Schedule) Test(org.junit.Test)

Example 35 with Installment

use of org.mifos.accounts.loan.schedule.domain.Installment in project head by mifos.

the class ScheduleCalculatorTest method shouldComputeExtraInterestAfterPartPay.

@Test
public void shouldComputeExtraInterestAfterPartPay() {
    Installment installment1 = getInstallment(1, getDate(25, 9, 2010), 242.24, 20.40, 0);
    Installment installment2 = getInstallment(2, getDate(25, 10, 2010), 247.67, 14.96, 0);
    schedule = new Schedule(getDate(25, 8, 2010), 0.000658, BigDecimal.valueOf(1000d), asList(installment1, installment2));
    scheduleCalculator.computeExtraInterest(schedule, getDate(27, 9, 2010));
    assertThat(installment1.getExtraInterest().doubleValue(), is(0.0));
    assertThat(installment2.getExtraInterest().doubleValue(), is(0.32));
    installment1.pay(BigDecimal.valueOf(100), getDate(27, 9, 2010));
    scheduleCalculator.computeExtraInterest(schedule, getDate(28, 9, 2010));
    assertThat(installment1.getExtraInterest().doubleValue(), is(0.0));
    assertThat(installment2.getExtraInterest().doubleValue(), is(0.43));
}
Also used : Installment(org.mifos.accounts.loan.schedule.domain.Installment) Schedule(org.mifos.accounts.loan.schedule.domain.Schedule) Test(org.junit.Test)

Aggregations

Installment (org.mifos.accounts.loan.schedule.domain.Installment)38 Schedule (org.mifos.accounts.loan.schedule.domain.Schedule)34 Test (org.junit.Test)33 BigDecimal (java.math.BigDecimal)4 RepaymentResultsHolder (org.mifos.accounts.loan.business.RepaymentResultsHolder)4 InstallmentBuilder (org.mifos.accounts.loan.schedule.domain.InstallmentBuilder)2 Money (org.mifos.framework.util.helpers.Money)2 ScheduleCalculator (org.mifos.accounts.loan.schedule.calculation.ScheduleCalculator)1 MifosCurrency (org.mifos.application.master.business.MifosCurrency)1