FINERACT-2311: Buy Down Fees template API changes
This commit is contained in:
committed by
Adam Saghy
parent
dadc36b6b4
commit
70373eafef
-6
@@ -34,14 +34,11 @@ import org.apache.fineract.accounting.journalentry.data.ChargePaymentDTO;
|
||||
import org.apache.fineract.accounting.journalentry.data.GLAccountBalanceHolder;
|
||||
import org.apache.fineract.accounting.journalentry.data.LoanDTO;
|
||||
import org.apache.fineract.accounting.journalentry.data.LoanTransactionDTO;
|
||||
import org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping;
|
||||
import org.apache.fineract.infrastructure.core.service.MathUtil;
|
||||
import org.apache.fineract.organisation.office.domain.Office;
|
||||
import org.apache.fineract.portfolio.PortfolioProductType;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionEnumData;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
|
||||
import org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@@ -50,9 +47,6 @@ public class AccrualBasedAccountingProcessorForLoan implements AccountingProcess
|
||||
|
||||
private final AccountingProcessorHelper helper;
|
||||
private final JournalEntryWritePlatformService journalEntryWritePlatformService;
|
||||
private final LoanCapitalizedIncomeBalanceRepository loanCapitalizedIncomeBalanceRepository;
|
||||
private final JournalEntryRepository journalEntryRepository;
|
||||
private final LoanTransactionRepository loanTransactionRepository;
|
||||
|
||||
@Override
|
||||
public void createJournalEntriesForLoan(final LoanDTO loanDTO) {
|
||||
|
||||
+1
-20
@@ -488,36 +488,17 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
case CAPITALIZED_INCOME:
|
||||
final Loan loan = loanRepositoryWrapper.findOneWithNotFoundDetection(loanId);
|
||||
BigDecimal capitalizedIncomeBalance = BigDecimal.ZERO;
|
||||
BigDecimal buyDownFeeBalance = BigDecimal.ZERO;
|
||||
if (loan.getLoanProduct().getLoanProductRelatedDetail().isEnableIncomeCapitalization()) {
|
||||
capitalizedIncomeBalance = loanCapitalizedIncomeBalanceRepository.findAllByLoanId(loanId).stream()
|
||||
.map(LoanCapitalizedIncomeBalance::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
// Calculate Buy Down Fee balance to subtract from Capitalized Income formula
|
||||
buyDownFeeBalance = loanBuyDownFeeBalanceRepository.findAllByLoanId(loanId).stream().map(LoanBuyDownFeeBalance::getAmount)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
transactionAmount = loan.getApprovedPrincipal().subtract(loan.getDisbursedAmount()).subtract(capitalizedIncomeBalance)
|
||||
.subtract(buyDownFeeBalance);
|
||||
transactionAmount = loan.getApprovedPrincipal().subtract(loan.getDisbursedAmount()).subtract(capitalizedIncomeBalance);
|
||||
paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes();
|
||||
loanTransactionData = LoanTransactionData.loanTransactionDataForCreditTemplate(
|
||||
LoanEnumerations.transactionType(transactionType), DateUtils.getBusinessLocalDate(), transactionAmount,
|
||||
paymentOptions, retriveLoanCurrencyData(loanId));
|
||||
break;
|
||||
case BUY_DOWN_FEE:
|
||||
final Loan buyDownLoan = loanRepositoryWrapper.findOneWithNotFoundDetection(loanId);
|
||||
BigDecimal buyDownFeeBalanceForCalc = BigDecimal.ZERO;
|
||||
BigDecimal capitalizedIncomeBalanceForCalc = BigDecimal.ZERO;
|
||||
|
||||
// Calculate existing Buy Down Fee balance
|
||||
buyDownFeeBalanceForCalc = loanBuyDownFeeBalanceRepository.findAllByLoanId(loanId).stream()
|
||||
.map(LoanBuyDownFeeBalance::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// Calculate Capitalized Income balance to subtract from Buy Down Fee formula
|
||||
if (buyDownLoan.getLoanProduct().getLoanProductRelatedDetail().isEnableIncomeCapitalization()) {
|
||||
capitalizedIncomeBalanceForCalc = loanCapitalizedIncomeBalanceRepository.findAllByLoanId(loanId).stream()
|
||||
.map(LoanCapitalizedIncomeBalance::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
transactionAmount = buyDownLoan.getApprovedPrincipal().subtract(buyDownLoan.getDisbursedAmount())
|
||||
.subtract(buyDownFeeBalanceForCalc).subtract(capitalizedIncomeBalanceForCalc);
|
||||
paymentOptions = this.paymentTypeReadPlatformService.retrieveAllPaymentTypes();
|
||||
loanTransactionData = LoanTransactionData.loanTransactionDataForCreditTemplate(
|
||||
LoanEnumerations.transactionType(transactionType), DateUtils.getBusinessLocalDate(), transactionAmount,
|
||||
|
||||
+1
-1
@@ -233,7 +233,7 @@ public class LoanTransactionTest extends BaseLoanIntegrationTest {
|
||||
|
||||
assertNotNull(transactionTemplate);
|
||||
assertEquals("loanTransactionType." + buyDownFeeCommand, transactionTemplate.getType().getCode());
|
||||
assertEquals(transactionTemplate.getAmount(), 200);
|
||||
assertEquals(transactionTemplate.getAmount(), 0);
|
||||
assertThat(transactionTemplate.getPaymentTypeOptions().size() > 0);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user