This is an automated email from the ASF dual-hosted git repository.

arnold 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 64fdc3926  
FINERACT-1818-LoanAccount-Avro-data-addition-Charges-Delinquent-data
64fdc3926 is described below

commit 64fdc392646aa9ac03ec7cdcf76627b6f572d0b2
Author: Ruchi Dhamankar <[email protected]>
AuthorDate: Fri Dec 30 17:44:17 2022 +0530

     FINERACT-1818-LoanAccount-Avro-data-addition-Charges-Delinquent-data
---
 .../loan/LoanBusinessEventSerializer.java          | 24 ++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java
index b87755523..be7d8343e 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanBusinessEventSerializer.java
@@ -21,15 +21,20 @@ package 
org.apache.fineract.infrastructure.event.external.service.serialization.
 import java.util.Collection;
 import lombok.RequiredArgsConstructor;
 import org.apache.avro.generic.GenericContainer;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.fineract.avro.generator.ByteBufferSerializable;
 import org.apache.fineract.avro.loan.v1.LoanAccountDataV1;
 import org.apache.fineract.infrastructure.event.business.domain.BusinessEvent;
 import 
org.apache.fineract.infrastructure.event.business.domain.loan.LoanBusinessEvent;
 import 
org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanAccountDataMapper;
 import 
org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventSerializer;
+import 
org.apache.fineract.portfolio.delinquency.service.DelinquencyReadPlatformService;
+import org.apache.fineract.portfolio.loanaccount.data.CollectionData;
 import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData;
+import org.apache.fineract.portfolio.loanaccount.data.LoanChargeData;
 import org.apache.fineract.portfolio.loanaccount.data.LoanSummaryData;
 import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData;
+import 
org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
 import org.springframework.stereotype.Component;
 
@@ -39,6 +44,8 @@ public class LoanBusinessEventSerializer extends 
AbstractBusinessEventSerializer
 
     private final LoanReadPlatformService service;
     private final LoanAccountDataMapper mapper;
+    private final LoanChargeReadPlatformService loanChargeReadPlatformService;
+    private final DelinquencyReadPlatformService 
delinquencyReadPlatformService;
 
     @Override
     public <T> boolean canSerialize(BusinessEvent<T> event) {
@@ -48,10 +55,23 @@ public class LoanBusinessEventSerializer extends 
AbstractBusinessEventSerializer
     @Override
     protected <T> ByteBufferSerializable toAvroDTO(BusinessEvent<T> rawEvent) {
         LoanBusinessEvent event = (LoanBusinessEvent) rawEvent;
-        LoanAccountData data = service.retrieveOne(event.get().getId());
+        Long loanId = event.get().getId();
+        LoanAccountData data = service.retrieveOne(loanId);
+
         data = service.fetchRepaymentScheduleData(data);
+
+        Collection<LoanChargeData> loanCharges = 
loanChargeReadPlatformService.retrieveLoanCharges(loanId);
+        if (CollectionUtils.isNotEmpty(loanCharges)) {
+            data.setCharges(loanCharges);
+        }
+
+        if (data.isActive()) {
+            CollectionData delinquentData = 
delinquencyReadPlatformService.calculateLoanCollectionData(loanId);
+            data.setDelinquent(delinquentData);
+        }
+
         if (data.getSummary() != null) {
-            final Collection<LoanTransactionData> currentLoanTransactions = 
service.retrieveLoanTransactions(event.get().getId());
+            final Collection<LoanTransactionData> currentLoanTransactions = 
service.retrieveLoanTransactions(loanId);
             
data.setSummary(LoanSummaryData.withTransactionAmountsSummary(data.getSummary(),
 currentLoanTransactions));
         }
         return mapper.map(data);

Reply via email to