You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2023/01/11 11:01:05 UTC

[fineract] branch develop updated: FINERACT-1734 - Loan Account Delinquency Changed event definition [x] Fix Charge data because not fetched the content

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 dde36f391 FINERACT-1734 - Loan Account Delinquency Changed event definition [x] Fix Charge data because not fetched the content
dde36f391 is described below

commit dde36f391c6b067c1939d027a8d52d971e25242e
Author: Janos Haber <ja...@finesolution.hu>
AuthorDate: Mon Jan 9 13:34:37 2023 +0100

    FINERACT-1734 - Loan Account Delinquency Changed event definition
    [x] Fix Charge data because not fetched the content
---
 .../src/main/avro/loan/v1/LoanChargeDataRangeViewV1.avsc    |  2 +-
 .../LoanDelinquencyRangeChangeBusinessEventSerializer.java  | 13 ++++++-------
 .../LoanAccountDelinquencyRangeEventSerializerTest.java     | 12 +++++++++---
 3 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataRangeViewV1.avsc b/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataRangeViewV1.avsc
index ebb747c76..142f6446c 100644
--- a/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataRangeViewV1.avsc
+++ b/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataRangeViewV1.avsc
@@ -13,7 +13,7 @@
         },
         {
             "name": "currency",
-            "type": ["org.apache.fineract.avro.generic.v1.CurrencyDataV1"]
+            "type": "org.apache.fineract.avro.generic.v1.CurrencyDataV1"
         },
         {
             "name": "amount",
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanDelinquencyRangeChangeBusinessEventSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanDelinquencyRangeChangeBusinessEventSerializer.java
index f73b16b6c..bc448ff01 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanDelinquencyRangeChangeBusinessEventSerializer.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanDelinquencyRangeChangeBusinessEventSerializer.java
@@ -37,8 +37,8 @@ import org.apache.fineract.infrastructure.event.external.service.serialization.s
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.portfolio.loanaccount.data.LoanAccountData;
 import org.apache.fineract.portfolio.loanaccount.domain.Loan;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
+import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
 import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
 import org.springframework.core.Ordered;
 import org.springframework.core.annotation.Order;
@@ -53,6 +53,8 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
 
     private final LoanDelinquencyRangeDataMapper mapper;
 
+    private final LoanChargeReadPlatformService loanChargeReadPlatformService;
+
     private final LoanChargeDataMapper chargeMapper;
 
     private final CurrencyDataMapper currencyMapper;
@@ -65,13 +67,10 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
         String accountNumber = data.getAccountNo();
         String externalId = data.getExternalId().getValue();
         MonetaryCurrency loanCurrency = event.get().getCurrency();
-        List<LoanChargeDataRangeViewV1> charges = event//
-                .get()//
-                .getRepaymentScheduleInstallments()//
+
+        List<LoanChargeDataRangeViewV1> charges = loanChargeReadPlatformService.retrieveLoanCharges(id)//
                 .stream()//
-                .flatMap(installment -> installment.getInstallmentCharges().stream())//
-                .map(LoanInstallmentCharge::getLoancharge)//
-                .map(charge -> chargeMapper.mapRangeView(charge.toData()))//
+                .map(chargeMapper::mapRangeView)//
                 .toList();
         LoanAmountDataV1 amount = LoanAmountDataV1.newBuilder()//
                 .setPrincipalAmount(calculateDataSummary(event.get(),
diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
index a4d70e36c..78f6b9205 100644
--- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
+++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/service/serialization/serializer/loan/LoanAccountDelinquencyRangeEventSerializerTest.java
@@ -21,6 +21,7 @@ package org.apache.fineract.infrastructure.event.external.service.serialization.
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -61,6 +62,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
+import org.apache.fineract.portfolio.loanaccount.service.LoanChargeReadPlatformService;
 import org.apache.fineract.portfolio.loanaccount.service.LoanReadPlatformService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -77,6 +79,9 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
     @Mock
     private LoanReadPlatformService loanReadPlatformService;
 
+    @Mock
+    private LoanChargeReadPlatformService loanChargeReadPlatformService;
+
     @BeforeEach
     public void setUp() {
         ThreadLocalContextUtil.setTenant(new FineractPlatformTenant(1L, "default", "Default", "Asia/Kolkata", null));
@@ -88,8 +93,8 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
     public void testLoanRepaymentEventPayloadSerialization() throws IOException {
         // given
         LoanDelinquencyRangeChangeBusinessEventSerializer serializer = new LoanDelinquencyRangeChangeBusinessEventSerializer(
-                loanReadPlatformService, new LoanDelinquencyRangeDataMapperImpl(), new LoanChargeDataMapperImpl(),
-                new CurrencyDataMapperImpl());
+                loanReadPlatformService, new LoanDelinquencyRangeDataMapperImpl(), loanChargeReadPlatformService,
+                new LoanChargeDataMapperImpl(), new CurrencyDataMapperImpl());
 
         Loan loanForProcessing = Mockito.mock(Loan.class);
         LoanAccountData loanAccountData = mock(LoanAccountData.class);
@@ -104,7 +109,6 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
         when(loanAccountData.getCurrency()).thenAnswer(a -> new CurrencyData(loanCurrency.getCode(), loanCurrency.getDigitsAfterDecimal(),
                 loanCurrency.getCurrencyInMultiplesOf()));
         when(loanForProcessing.getCurrency()).thenReturn(loanCurrency);
-
         when(loanReadPlatformService.retrieveOne(any(Long.class))).thenReturn(loanAccountData);
 
         LoanDelinquencyRangeChangeBusinessEvent event = new LoanDelinquencyRangeChangeBusinessEvent(loanForProcessing);
@@ -113,6 +117,8 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
         repaymentScheduleInstallments.add(buildInstallment(loanForProcessing, loanCurrency, BigDecimal.valueOf(100), BigDecimal.valueOf(5),
                 BigDecimal.valueOf(30), BigDecimal.valueOf(50), BigDecimal.valueOf(185), new BigDecimal("100.5"), new BigDecimal("200.3")));
         when(loanForProcessing.getRepaymentScheduleInstallments()).thenReturn(repaymentScheduleInstallments);
+        when(loanChargeReadPlatformService.retrieveLoanCharges(anyLong())).thenAnswer(a -> repaymentScheduleInstallments.get(0)
+                .getInstallmentCharges().stream().map(c -> c.getLoancharge().toData()).collect(Collectors.toList()));
 
         moneyHelper.when(() -> MoneyHelper.getRoundingMode()).thenReturn(RoundingMode.UP);