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();

Reply via email to