FINERACT-2401: Add business events for interest pause actions

This commit is contained in:
Oleksii Novikov
2025-10-31 09:58:06 +01:00
committed by Adam Saghy
parent 5ea7c36804
commit 1b4abd18a9
7 changed files with 709 additions and 319 deletions
@@ -36,6 +36,10 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuild
import org.apache.fineract.infrastructure.core.domain.ExternalId;
import org.apache.fineract.infrastructure.core.exception.GeneralPlatformDomainRuleException;
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBalanceChangedBusinessEvent;
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanScheduleVariationsAddedBusinessEvent;
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanScheduleVariationsDeletedBusinessEvent;
import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
import org.apache.fineract.portfolio.common.service.Validator;
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
@@ -53,6 +57,7 @@ public class InterestPauseWritePlatformServiceImpl implements InterestPauseWrite
private final LoanRepositoryWrapper loanRepositoryWrapper;
private final LoanAssembler loanAssembler;
private final ReprocessLoanTransactionsService reprocessLoanTransactionsService;
private final BusinessEventNotifierService businessEventNotifierService;
@Override
public CommandProcessingResult createInterestPause(final ExternalId loanExternalId, final String startDateString,
@@ -107,6 +112,12 @@ public class InterestPauseWritePlatformServiceImpl implements InterestPauseWrite
"Variation not found for the given loan ID"));
loanTermVariationsRepository.delete(variation);
loan.getLoanTermVariations().remove(variation);
reprocessLoanTransactionsService.reprocessTransactions(loan);
businessEventNotifierService.notifyPostBusinessEvent(new LoanScheduleVariationsDeletedBusinessEvent(loan));
businessEventNotifierService.notifyPostBusinessEvent(new LoanBalanceChangedBusinessEvent(loan));
return new CommandProcessingResultBuilder().withEntityId(variationId).build();
}
@@ -130,6 +141,11 @@ public class InterestPauseWritePlatformServiceImpl implements InterestPauseWrite
LoanTermVariations updatedVariation = loanTermVariationsRepository.save(variation);
reprocessLoanTransactionsService.reprocessTransactions(loan);
businessEventNotifierService.notifyPostBusinessEvent(new LoanScheduleVariationsAddedBusinessEvent(loan));
businessEventNotifierService.notifyPostBusinessEvent(new LoanBalanceChangedBusinessEvent(loan));
return new CommandProcessingResultBuilder().withEntityId(updatedVariation.getId())
.with(Map.of("startDate", startDate.toString(), "endDate", endDate.toString())).build();
}
@@ -147,6 +163,9 @@ public class InterestPauseWritePlatformServiceImpl implements InterestPauseWrite
reprocessLoanTransactionsService.reprocessTransactions(loan);
businessEventNotifierService.notifyPostBusinessEvent(new LoanScheduleVariationsAddedBusinessEvent(loan));
businessEventNotifierService.notifyPostBusinessEvent(new LoanBalanceChangedBusinessEvent(loan));
return new CommandProcessingResultBuilder().withEntityId(savedVariation.getId()).build();
}