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