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