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 8b5a70766..c747760fe 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 @@ -2570,14 +2570,15 @@ public class Loan extends AbstractPersistableCustom { * Ability to regenerate the repayment schedule based on the loans current * details/state. */ - public void regenerateRepaymentSchedule(final ScheduleGeneratorDTO scheduleGeneratorDTO, AppUser currentUser) { - + public void regenerateRepaymentSchedule(final ScheduleGeneratorDTO scheduleGeneratorDTO, final AppUser currentUser) { final LoanScheduleModel loanSchedule = regenerateScheduleModel(scheduleGeneratorDTO); - + if (loanSchedule == null) { return; } updateLoanSchedule(loanSchedule, currentUser); - Set charges = this.charges(); - for (LoanCharge loanCharge : charges) { - recalculateLoanCharge(loanCharge, scheduleGeneratorDTO.getPenaltyWaitPeriod()); + final Set charges = this.charges(); + for (final LoanCharge loanCharge : charges) { + if (!loanCharge.isWaived()) { + recalculateLoanCharge(loanCharge, scheduleGeneratorDTO.getPenaltyWaitPeriod()); + } } }