FINERACT-2059: Support reverse-replay of Re-age transaction
This commit is contained in:
+4
@@ -28,6 +28,10 @@ import org.springframework.dao.EmptyResultDataAccessException;
|
||||
*/
|
||||
public class LoanTransactionNotFoundException extends AbstractPlatformResourceNotFoundException {
|
||||
|
||||
public LoanTransactionNotFoundException(final String msg) {
|
||||
super("error.msg.loan.transaction.not.found", msg);
|
||||
}
|
||||
|
||||
public LoanTransactionNotFoundException(final Long id) {
|
||||
super("error.msg.loan.transaction.id.invalid", "Transaction with identifier " + id + " does not exist", id);
|
||||
}
|
||||
|
||||
+6
-7
@@ -51,6 +51,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParamet
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgingParameterRepository;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.MoneyHolder;
|
||||
import org.apache.fineract.portfolio.loanaccount.exception.LoanTransactionNotFoundException;
|
||||
import org.apache.fineract.portfolio.loanaccount.service.LoanAssembler;
|
||||
import org.apache.fineract.portfolio.note.domain.Note;
|
||||
import org.apache.fineract.portfolio.note.domain.NoteRepository;
|
||||
@@ -80,11 +81,10 @@ public class LoanReAgingServiceImpl {
|
||||
changes.put(LoanReAgingApiConstants.dateFormatParameterName, command.dateFormat());
|
||||
|
||||
LoanTransaction reAgeTransaction = createReAgeTransaction(loan, command);
|
||||
// important to do a flush before creating the reage parameter since it needs the ID
|
||||
loanTransactionRepository.saveAndFlush(reAgeTransaction);
|
||||
|
||||
LoanReAgeParameter reAgeParameter = createReAgeParameter(reAgeTransaction, command);
|
||||
reAgingParameterRepository.saveAndFlush(reAgeParameter);
|
||||
reAgeTransaction.setLoanReAgeParameter(reAgeParameter);
|
||||
|
||||
loanTransactionRepository.saveAndFlush(reAgeTransaction);
|
||||
|
||||
final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = loanRepaymentScheduleTransactionProcessorFactory
|
||||
.determineProcessor(loan.transactionProcessingStrategy());
|
||||
@@ -119,7 +119,7 @@ public class LoanReAgingServiceImpl {
|
||||
|
||||
LoanTransaction reAgeTransaction = findLatestNonReversedReAgeTransaction(loan);
|
||||
if (reAgeTransaction == null) {
|
||||
// TODO: when validations implemented; throw exception if there isn't a reage transaction available
|
||||
throw new LoanTransactionNotFoundException("Re-Age transaction for loan was not found");
|
||||
}
|
||||
reverseReAgeTransaction(reAgeTransaction, command);
|
||||
loanTransactionRepository.saveAndFlush(reAgeTransaction);
|
||||
@@ -177,8 +177,7 @@ public class LoanReAgingServiceImpl {
|
||||
LocalDate startDate = command.dateValueOfParameterNamed(LoanReAgingApiConstants.startDate);
|
||||
Integer numberOfInstallments = command.integerValueOfParameterNamed(LoanReAgingApiConstants.numberOfInstallments);
|
||||
Integer periodFrequencyNumber = command.integerValueOfParameterNamed(LoanReAgingApiConstants.frequencyNumber);
|
||||
return new LoanReAgeParameter(reAgeTransaction.getId(), periodFrequencyType, periodFrequencyNumber, startDate,
|
||||
numberOfInstallments);
|
||||
return new LoanReAgeParameter(reAgeTransaction, periodFrequencyType, periodFrequencyNumber, startDate, numberOfInstallments);
|
||||
}
|
||||
|
||||
private void reProcessLoanTransactions(Loan loan) {
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
<class>org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule</class>
|
||||
<class>org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType</class>
|
||||
<class>org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter</class>
|
||||
<class>org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter</class>
|
||||
<!-- Fineract Savings module -->
|
||||
<class>org.apache.fineract.interoperation.domain.InteropIdentifier</class>
|
||||
<class>org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives</class>
|
||||
|
||||
Reference in New Issue
Block a user