From a13a80794fabe8bba6dc6e359006d7ab594f649d Mon Sep 17 00:00:00 2001 From: pramod Date: Mon, 15 Feb 2016 16:01:32 +0530 Subject: [PATCH] MIFOSX-2400 : fix for overdue charges on payment time --- .../fineract/portfolio/loanaccount/domain/Loan.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java index dc37c7f27..b59d4dcc8 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java @@ -1596,15 +1596,14 @@ public class Loan extends AbstractPersistable { private void recalculateLoanCharge(final LoanCharge loanCharge, final int penaltyWaitPeriod) { BigDecimal amount = BigDecimal.ZERO; - if (loanCharge.isOverdueInstallmentCharge()) { - amount = calculateOverdueAmountPercentageAppliedTo(loanCharge, penaltyWaitPeriod); - } else { - amount = calculateAmountPercentageAppliedTo(loanCharge); - } - BigDecimal chargeAmt = BigDecimal.ZERO; BigDecimal totalChargeAmt = BigDecimal.ZERO; if (loanCharge.getChargeCalculation().isPercentageBased()) { + if (loanCharge.isOverdueInstallmentCharge()) { + amount = calculateOverdueAmountPercentageAppliedTo(loanCharge, penaltyWaitPeriod); + } else { + amount = calculateAmountPercentageAppliedTo(loanCharge); + } chargeAmt = loanCharge.getPercentage(); if (loanCharge.isInstalmentFee()) { totalChargeAmt = calculatePerInstallmentChargeAmount(loanCharge); @@ -1621,7 +1620,7 @@ public class Loan extends AbstractPersistable { private BigDecimal calculateOverdueAmountPercentageAppliedTo(final LoanCharge loanCharge, final int penaltyWaitPeriod) { LoanRepaymentScheduleInstallment installment = loanCharge.getOverdueInstallmentCharge().getInstallment(); - LocalDate graceDate = LocalDate.now().minusDays(penaltyWaitPeriod); + LocalDate graceDate = DateUtils.getLocalDateOfTenant().minusDays(penaltyWaitPeriod); Money amount = Money.zero(getCurrency()); if (graceDate.isAfter(installment.getDueDate())) { amount = calculateOverdueAmountPercentageAppliedTo(installment, loanCharge.getChargeCalculation());