FINERACT-1724: Added delinquentDate to Delinquency Range Changed events
This commit is contained in:
committed by
Arnold Gálovics
parent
201295814b
commit
0338479212
@@ -42,6 +42,14 @@
|
||||
"name": "amount",
|
||||
"doc": "Contains installments total, fee, interest, principal and penalty amount summaries",
|
||||
"type": "org.apache.fineract.avro.loan.v1.LoanAmountDataV1"
|
||||
},
|
||||
{
|
||||
"default": null,
|
||||
"name": "delinquentDate",
|
||||
"type": [
|
||||
"null",
|
||||
"string"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+9
@@ -33,8 +33,11 @@ import org.apache.fineract.infrastructure.event.business.domain.loan.LoanDelinqu
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.generic.CurrencyDataMapper;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanChargeDataMapper;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanDelinquencyRangeDataMapper;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.support.AvroDateTimeMapper;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.serializer.AbstractBusinessEventSerializer;
|
||||
import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
|
||||
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.domain.Loan;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
||||
@@ -55,9 +58,12 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
|
||||
|
||||
private final LoanChargeReadPlatformService loanChargeReadPlatformService;
|
||||
|
||||
private final DelinquencyReadPlatformService delinquencyReadPlatformService;
|
||||
|
||||
private final LoanChargeDataMapper chargeMapper;
|
||||
|
||||
private final CurrencyDataMapper currencyMapper;
|
||||
private final AvroDateTimeMapper dataTimeMapper;
|
||||
|
||||
@Override
|
||||
protected <T> ByteBufferSerializable toAvroDTO(BusinessEvent<T> rawEvent) {
|
||||
@@ -67,6 +73,8 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
|
||||
String accountNumber = data.getAccountNo();
|
||||
String externalId = data.getExternalId().getValue();
|
||||
MonetaryCurrency loanCurrency = event.get().getCurrency();
|
||||
CollectionData delinquentData = delinquencyReadPlatformService.calculateLoanCollectionData(id);
|
||||
String delinquentDate = dataTimeMapper.mapLocalDate(delinquentData.getDelinquentDate());
|
||||
|
||||
List<LoanChargeDataRangeViewV1> charges = loanChargeReadPlatformService.retrieveLoanCharges(id)//
|
||||
.stream()//
|
||||
@@ -95,6 +103,7 @@ public class LoanDelinquencyRangeChangeBusinessEventSerializer extends AbstractB
|
||||
.setCharges(charges)//
|
||||
.setAmount(amount)//
|
||||
.setCurrency(currencyMapper.map(data.getCurrency()))//
|
||||
.setDelinquentDate(delinquentDate)//
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
+17
-2
@@ -47,6 +47,7 @@ import org.apache.fineract.infrastructure.event.business.domain.loan.LoanDelinqu
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.generic.CurrencyDataMapperImpl;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanChargeDataMapperImpl;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.loan.LoanDelinquencyRangeDataMapperImpl;
|
||||
import org.apache.fineract.infrastructure.event.external.service.serialization.mapper.support.AvroDateTimeMapper;
|
||||
import org.apache.fineract.organisation.monetary.data.CurrencyData;
|
||||
import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
|
||||
import org.apache.fineract.organisation.monetary.domain.Money;
|
||||
@@ -57,6 +58,8 @@ import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType;
|
||||
import org.apache.fineract.portfolio.charge.domain.ChargePaymentMode;
|
||||
import org.apache.fineract.portfolio.charge.domain.ChargeTimeType;
|
||||
import org.apache.fineract.portfolio.delinquency.data.DelinquencyRangeData;
|
||||
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.domain.Loan;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge;
|
||||
@@ -82,6 +85,12 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
|
||||
@Mock
|
||||
private LoanChargeReadPlatformService loanChargeReadPlatformService;
|
||||
|
||||
@Mock
|
||||
private DelinquencyReadPlatformService delinquencyReadPlatformService;
|
||||
|
||||
@Mock
|
||||
private AvroDateTimeMapper mapper;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
ThreadLocalContextUtil.setTenant(new FineractPlatformTenant(1L, "default", "Default", "Asia/Kolkata", null));
|
||||
@@ -94,12 +103,15 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
|
||||
// given
|
||||
LoanDelinquencyRangeChangeBusinessEventSerializer serializer = new LoanDelinquencyRangeChangeBusinessEventSerializer(
|
||||
loanReadPlatformService, new LoanDelinquencyRangeDataMapperImpl(), loanChargeReadPlatformService,
|
||||
new LoanChargeDataMapperImpl(), new CurrencyDataMapperImpl());
|
||||
delinquencyReadPlatformService, new LoanChargeDataMapperImpl(), new CurrencyDataMapperImpl(), mapper);
|
||||
|
||||
Loan loanForProcessing = Mockito.mock(Loan.class);
|
||||
LoanAccountData loanAccountData = mock(LoanAccountData.class);
|
||||
CollectionData delinquentData = mock(CollectionData.class);
|
||||
MonetaryCurrency loanCurrency = new MonetaryCurrency("CODE", 1, 1);
|
||||
MockedStatic<MoneyHelper> moneyHelper = Mockito.mockStatic(MoneyHelper.class);
|
||||
String delinquentDateAsStr = "2022-12-01";
|
||||
LocalDate delinquentDate = LocalDate.parse(delinquentDateAsStr);
|
||||
|
||||
when(loanForProcessing.getId()).thenReturn(1L);
|
||||
when(loanAccountData.getId()).thenReturn(1L);
|
||||
@@ -109,7 +121,10 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
|
||||
when(loanAccountData.getCurrency()).thenAnswer(a -> new CurrencyData(loanCurrency.getCode(), loanCurrency.getDigitsAfterDecimal(),
|
||||
loanCurrency.getCurrencyInMultiplesOf()));
|
||||
when(loanForProcessing.getCurrency()).thenReturn(loanCurrency);
|
||||
when(delinquentData.getDelinquentDate()).thenReturn(delinquentDate);
|
||||
when(loanReadPlatformService.retrieveOne(any(Long.class))).thenReturn(loanAccountData);
|
||||
when(delinquencyReadPlatformService.calculateLoanCollectionData(any(Long.class))).thenReturn(delinquentData);
|
||||
when(mapper.mapLocalDate(delinquentDate)).thenReturn(delinquentDateAsStr);
|
||||
|
||||
LoanDelinquencyRangeChangeBusinessEvent event = new LoanDelinquencyRangeChangeBusinessEvent(loanForProcessing);
|
||||
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments = new ArrayList<>();
|
||||
@@ -141,8 +156,8 @@ public class LoanAccountDelinquencyRangeEventSerializerTest {
|
||||
assertEquals(0, data.getAmount().getInterestAmount().compareTo(new BigDecimal("30.0")));
|
||||
assertEquals(0, data.getAmount().getFeeAmount().compareTo(new BigDecimal("5.0")));
|
||||
assertEquals(0, data.getAmount().getPenaltyAmount().compareTo(new BigDecimal("50.0")));
|
||||
assertEquals(delinquentDateAsStr, data.getDelinquentDate());
|
||||
|
||||
// assertEquals(data, expectedSerializedData);
|
||||
moneyHelper.close();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user