This is an automated email from the ASF dual-hosted git repository.
aleks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new a33c8f943 FINERACT-1573 Credit Balance Refund - cater for cash
accounting
a33c8f943 is described below
commit a33c8f943913aa275bdaa4562d7f427502505428
Author: John Woodlock <[email protected]>
AuthorDate: Wed Apr 27 23:48:51 2022 +0100
FINERACT-1573 Credit Balance Refund - cater for cash accounting
---
.../CashBasedAccountingProcessorForLoan.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java
b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java
index f0441fc2d..67a5024e3 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java
@@ -77,6 +77,12 @@ public class CashBasedAccountingProcessorForLoan implements
AccountingProcessorF
else if (loanTransactionDTO.getTransactionType().isRefund()) {
createJournalEntriesForRefund(loanDTO, loanTransactionDTO,
office);
}
+
+ /** Logic for Credit Balance Refunds **/
+ else if
(loanTransactionDTO.getTransactionType().isCreditBalanceRefund()) {
+ createJournalEntriesForCreditBalanceRefund(loanDTO,
loanTransactionDTO, office);
+ }
+
/***
* Only principal write off affects cash based accounting
(interest and fee write off need not be
* considered). Debit losses written off and credit Loan Portfolio
@@ -307,6 +313,25 @@ public class CashBasedAccountingProcessorForLoan
implements AccountingProcessorF
}
}
+ private void createJournalEntriesForCreditBalanceRefund(final LoanDTO
loanDTO, final LoanTransactionDTO loanTransactionDTO,
+ final Office office) {
+ // loan properties
+ final Long loanProductId = loanDTO.getLoanProductId();
+ final Long loanId = loanDTO.getLoanId();
+ final String currencyCode = loanDTO.getCurrencyCode();
+
+ // transaction properties
+ final String transactionId = loanTransactionDTO.getTransactionId();
+ final Date transactionDate = loanTransactionDTO.getTransactionDate();
+ final BigDecimal refundAmount = loanTransactionDTO.getAmount();
+ final boolean isReversal = loanTransactionDTO.isReversed();
+ final Long paymentTypeId = loanTransactionDTO.getPaymentTypeId();
+
+ this.helper.createCashBasedJournalEntriesAndReversalsForLoan(office,
currencyCode, CashAccountsForLoan.LOAN_PORTFOLIO.getValue(),
+ CashAccountsForLoan.OVERPAYMENT.getValue(), loanProductId,
paymentTypeId, loanId, transactionId, transactionDate,
+ refundAmount, isReversal);
+ }
+
private void createJournalEntriesForRefundForActiveLoan(LoanDTO loanDTO,
LoanTransactionDTO loanTransactionDTO, Office office) {
// loan properties
final Long loanProductId = loanDTO.getLoanProductId();