FINERACT-1760: Enhanced external id support for loan transactions
This commit is contained in:
+13
-10
@@ -91,7 +91,7 @@ public class LoanTransactionData {
|
||||
private List<LoanRepaymentScheduleInstallmentData> loanRepaymentScheduleInstallments;
|
||||
|
||||
// Reverse Data
|
||||
private String reversalExternalId;
|
||||
private final ExternalId reversalExternalId;
|
||||
private LocalDate reversedOnDate;
|
||||
|
||||
private List<LoanTransactionRelationData> transactionRelations;
|
||||
@@ -126,7 +126,7 @@ public class LoanTransactionData {
|
||||
this.penaltyChargesPortion = null;
|
||||
this.overpaymentPortion = null;
|
||||
this.unrecognizedIncomePortion = null;
|
||||
this.externalId = null;
|
||||
this.externalId = ExternalId.empty();
|
||||
this.transfer = null;
|
||||
this.fixedEmiAmount = null;
|
||||
this.outstandingLoanBalance = null;
|
||||
@@ -135,6 +135,7 @@ public class LoanTransactionData {
|
||||
this.possibleNextRepaymentDate = null;
|
||||
this.paymentTypeOptions = null;
|
||||
this.writeOffReasonOptions = null;
|
||||
this.reversalExternalId = ExternalId.empty();
|
||||
}
|
||||
|
||||
public static LoanTransactionData importInstance(BigDecimal repaymentAmount, LocalDate repaymentDate, Long repaymentTypeId,
|
||||
@@ -177,7 +178,7 @@ public class LoanTransactionData {
|
||||
this.penaltyChargesPortion = null;
|
||||
this.overpaymentPortion = null;
|
||||
this.unrecognizedIncomePortion = null;
|
||||
this.externalId = null;
|
||||
this.externalId = ExternalId.empty();
|
||||
this.transfer = null;
|
||||
this.fixedEmiAmount = null;
|
||||
this.outstandingLoanBalance = null;
|
||||
@@ -186,6 +187,7 @@ public class LoanTransactionData {
|
||||
this.possibleNextRepaymentDate = null;
|
||||
this.paymentTypeOptions = null;
|
||||
this.writeOffReasonOptions = null;
|
||||
this.reversalExternalId = ExternalId.empty();
|
||||
}
|
||||
|
||||
public void setNumberOfRepayments(Integer numberOfRepayments) {
|
||||
@@ -229,8 +231,8 @@ public class LoanTransactionData {
|
||||
boolean manuallyReversed, Long loanId, String externalLoanId) {
|
||||
this(id, externalLoanId, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, netDisbursalAmount,
|
||||
principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion,
|
||||
paymentTypeOptions, externalId, transfer, fixedEmiAmount, outstandingLoanBalance, null, manuallyReversed, null, null,
|
||||
loanId);
|
||||
paymentTypeOptions, externalId, transfer, fixedEmiAmount, outstandingLoanBalance, null, manuallyReversed,
|
||||
ExternalId.empty(), null, loanId);
|
||||
}
|
||||
|
||||
public LoanTransactionData(final Long id, final Long officeId, final String officeName, final LoanTransactionEnumData transactionType,
|
||||
@@ -239,7 +241,7 @@ public class LoanTransactionData {
|
||||
final BigDecimal feeChargesPortion, final BigDecimal penaltyChargesPortion, final BigDecimal overpaymentPortion,
|
||||
final BigDecimal unrecognizedIncomePortion, final ExternalId externalId, final AccountTransferData transfer,
|
||||
BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, LocalDate submittedOnDate, final boolean manuallyReversed,
|
||||
final String reversalExternalId, final LocalDate reversedOnDate, Long loanId, String externalLoanId) {
|
||||
final ExternalId reversalExternalId, final LocalDate reversedOnDate, Long loanId, String externalLoanId) {
|
||||
this(id, externalLoanId, officeId, officeName, transactionType, paymentDetailData, currency, date, amount, netDisbursalAmount,
|
||||
principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion,
|
||||
null, externalId, transfer, fixedEmiAmount, outstandingLoanBalance, submittedOnDate, manuallyReversed, reversalExternalId,
|
||||
@@ -253,7 +255,7 @@ public class LoanTransactionData {
|
||||
final BigDecimal overpaymentPortion, final BigDecimal unrecognizedIncomePortion,
|
||||
final Collection<PaymentTypeData> paymentTypeOptions, final ExternalId externalId, final AccountTransferData transfer,
|
||||
final BigDecimal fixedEmiAmount, BigDecimal outstandingLoanBalance, final LocalDate submittedOnDate,
|
||||
final boolean manuallyReversed, final String reversalExternalId, final LocalDate reversedOnDate, Long loanId) {
|
||||
final boolean manuallyReversed, final ExternalId reversalExternalId, final LocalDate reversedOnDate, Long loanId) {
|
||||
this.id = id;
|
||||
this.loanId = loanId;
|
||||
this.externalLoanId = externalLoanId;
|
||||
@@ -286,10 +288,10 @@ public class LoanTransactionData {
|
||||
public LoanTransactionData(Long id, LoanTransactionEnumData transactionType, LocalDate date, BigDecimal totalAmount,
|
||||
BigDecimal netDisbursalAmount, BigDecimal principalPortion, BigDecimal interestPortion, BigDecimal feeChargesPortion,
|
||||
BigDecimal penaltyChargesPortion, BigDecimal overpaymentPortion, BigDecimal unrecognizedIncomePortion,
|
||||
BigDecimal outstandingLoanBalance, final boolean manuallyReversed, Long loanId, String externalLoanId) {
|
||||
BigDecimal outstandingLoanBalance, final boolean manuallyReversed, ExternalId externalId, Long loanId, String externalLoanId) {
|
||||
this(id, externalLoanId, null, null, transactionType, null, null, date, totalAmount, netDisbursalAmount, principalPortion,
|
||||
interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion, null, null, null,
|
||||
null, outstandingLoanBalance, null, manuallyReversed, null, null, loanId);
|
||||
interestPortion, feeChargesPortion, penaltyChargesPortion, overpaymentPortion, unrecognizedIncomePortion, null, externalId,
|
||||
null, null, outstandingLoanBalance, null, manuallyReversed, ExternalId.empty(), null, loanId);
|
||||
}
|
||||
|
||||
public static LoanTransactionData loanTransactionDataForDisbursalTemplate(final LoanTransactionEnumData transactionType,
|
||||
@@ -355,6 +357,7 @@ public class LoanTransactionData {
|
||||
this.submittedOnDate = submittedOnDate;
|
||||
this.manuallyReversed = manuallyReversed;
|
||||
this.possibleNextRepaymentDate = possibleNextRepaymentDate;
|
||||
this.reversalExternalId = ExternalId.empty();
|
||||
}
|
||||
|
||||
public boolean isNotDisbursement() {
|
||||
|
||||
+18
-13
@@ -44,6 +44,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.infrastructure.core.domain.ExternalId;
|
||||
import org.apache.fineract.infrastructure.core.domain.JdbcSupport;
|
||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||
import org.apache.fineract.infrastructure.core.service.ExternalIdFactory;
|
||||
import org.apache.fineract.infrastructure.core.service.Page;
|
||||
import org.apache.fineract.infrastructure.core.service.PaginationHelper;
|
||||
import org.apache.fineract.infrastructure.core.service.SearchParameters;
|
||||
@@ -459,7 +460,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
loanRepaymentScheduleInstallment.getInterestOutstanding(currency).getAmount(),
|
||||
loanRepaymentScheduleInstallment.getFeeChargesOutstanding(currency).getAmount().subtract(adjustedChargeAmount),
|
||||
loanRepaymentScheduleInstallment.getPenaltyChargesOutstanding(currency).getAmount(), null, unrecognizedIncomePortion,
|
||||
paymentOptions, null, null, null, outstandingLoanBalance, false, loanId, loan.getExternalId());
|
||||
paymentOptions, ExternalId.empty(), null, null, outstandingLoanBalance, false, loanId, loan.getExternalId());
|
||||
}
|
||||
|
||||
private BigDecimal adjustPrepayInstallmentCharge(Loan loan, final LocalDate onDate) {
|
||||
@@ -496,7 +497,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
final BigDecimal outstandingLoanBalance = null;
|
||||
final BigDecimal unrecognizedIncomePortion = null;
|
||||
return new LoanTransactionData(null, null, null, transactionType, null, currencyData, waiveOfInterest.getTransactionDate(), amount,
|
||||
loan.getNetDisbursalAmount(), null, null, null, null, null, null, null, null, outstandingLoanBalance,
|
||||
loan.getNetDisbursalAmount(), null, null, null, null, null, ExternalId.empty(), null, null, outstandingLoanBalance,
|
||||
unrecognizedIncomePortion, false, loanId, loan.getExternalId());
|
||||
}
|
||||
|
||||
@@ -508,7 +509,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
final LoanTransactionEnumData transactionType = LoanEnumerations.transactionType(LoanTransactionType.WRITEOFF);
|
||||
final BigDecimal unrecognizedIncomePortion = null;
|
||||
return new LoanTransactionData(null, null, null, transactionType, null, null, DateUtils.getBusinessLocalDate(), null, null, null,
|
||||
null, null, null, null, null, null, null, outstandingLoanBalance, unrecognizedIncomePortion, false, null, null);
|
||||
null, null, null, null, ExternalId.empty(), null, null, outstandingLoanBalance, unrecognizedIncomePortion, false, null,
|
||||
null);
|
||||
|
||||
}
|
||||
|
||||
@@ -1374,8 +1376,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
final BigDecimal unrecognizedIncomePortion = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "unrecognizedIncome");
|
||||
final BigDecimal outstandingLoanBalance = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "outstandingLoanBalance");
|
||||
final String externalIdStr = rs.getString("externalId");
|
||||
final ExternalId externalId = StringUtils.isBlank(externalIdStr) ? ExternalId.empty() : new ExternalId(externalIdStr);
|
||||
final String reversalExternalId = rs.getString("reversalExternalId");
|
||||
final ExternalId externalId = ExternalIdFactory.produce(externalIdStr);
|
||||
final String reversalExternalIdStr = rs.getString("reversalExternalId");
|
||||
final ExternalId reversalExternalId = ExternalIdFactory.produce(reversalExternalIdStr);
|
||||
final LocalDate reversedOnDate = JdbcSupport.getLocalDate(rs, "reversedOnDate");
|
||||
|
||||
final BigDecimal netDisbursalAmount = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "netDisbursalAmount");
|
||||
@@ -1873,8 +1876,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
BigDecimal outstandingLoanBalance = null;
|
||||
final BigDecimal unrecognizedIncomePortion = null;
|
||||
return new LoanTransactionData(null, null, null, transactionType, null, null, null, loan.getTotalWrittenOff(),
|
||||
loan.getNetDisbursalAmount(), null, null, null, null, null, unrecognizedIncomePortion, paymentOptions, null, null, null,
|
||||
outstandingLoanBalance, false, loanId, loan.getExternalId());
|
||||
loan.getNetDisbursalAmount(), null, null, null, null, null, unrecognizedIncomePortion, paymentOptions, ExternalId.empty(),
|
||||
null, null, outstandingLoanBalance, false, loanId, loan.getExternalId());
|
||||
|
||||
}
|
||||
|
||||
@@ -1887,8 +1890,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
final List<CodeValueData> writeOffReasonOptions = new ArrayList<>(
|
||||
this.codeValueReadPlatformService.retrieveCodeValuesByCode(LoanApiConstants.WRITEOFFREASONS));
|
||||
LoanTransactionData loanTransactionData = new LoanTransactionData(null, null, null, transactionType, null, loan.getCurrency(),
|
||||
DateUtils.getBusinessLocalDate(), totalOutstanding, loan.getNetDisbursalAmount(), null, null, null, null, null, null, null,
|
||||
null, null, null, false, loanId, loan.getExternalId());
|
||||
DateUtils.getBusinessLocalDate(), totalOutstanding, loan.getNetDisbursalAmount(), null, null, null, null, null,
|
||||
ExternalId.empty(), null, null, null, null, false, loanId, loan.getExternalId());
|
||||
loanTransactionData.setWriteOffReasonOptions(writeOffReasonOptions);
|
||||
return loanTransactionData;
|
||||
}
|
||||
@@ -2018,8 +2021,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
+ ", tr.amount as total, tr.principal_portion_derived as principal, tr.interest_portion_derived as interest, "
|
||||
+ " tr.fee_charges_portion_derived as fees, tr.penalty_charges_portion_derived as penalties, "
|
||||
+ " tr.overpayment_portion_derived as overpayment, tr.outstanding_loan_balance_derived as outstandingLoanBalance, "
|
||||
+ " tr.unrecognized_income_portion as unrecognizedIncome, tr.loan_id as loanId, l.external_id as externalLoanId from m_loan_transaction tr "
|
||||
+ " left join m_loan l on tr.loan_id = l.id";
|
||||
+ " tr.unrecognized_income_portion as unrecognizedIncome, tr.loan_id as loanId, l.external_id as externalLoanId, "
|
||||
+ " tr.external_id as externalId from m_loan_transaction tr " + " left join m_loan l on tr.loan_id = l.id";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2040,10 +2043,12 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
final BigDecimal overPaymentPortion = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "overpayment");
|
||||
final BigDecimal unrecognizedIncomePortion = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "unrecognizedIncome");
|
||||
final BigDecimal outstandingLoanBalance = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "outstandingLoanBalance");
|
||||
final String externalIdStr = rs.getString("externalId");
|
||||
final ExternalId externalId = ExternalIdFactory.produce(externalIdStr);
|
||||
|
||||
return new LoanTransactionData(id, transactionType, date, totalAmount, null, principalPortion, interestPortion,
|
||||
feeChargesPortion, penaltyChargesPortion, overPaymentPortion, unrecognizedIncomePortion, outstandingLoanBalance, false,
|
||||
loanId, externalLoanId);
|
||||
externalId, loanId, externalLoanId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2283,7 +2288,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
loanRepaymentScheduleInstallment.getInterestOutstanding(currency).getAmount(),
|
||||
loanRepaymentScheduleInstallment.getFeeChargesOutstanding(currency).getAmount(),
|
||||
loanRepaymentScheduleInstallment.getPenaltyChargesOutstanding(currency).getAmount(), null, unrecognizedIncomePortion,
|
||||
paymentTypeOptions, null, null, null, outstandingLoanBalance, isReversed, loanId, loan.getExternalId());
|
||||
paymentTypeOptions, ExternalId.empty(), null, null, outstandingLoanBalance, isReversed, loanId, loan.getExternalId());
|
||||
}
|
||||
|
||||
private static final class CurrencyMapper implements RowMapper<CurrencyData> {
|
||||
|
||||
+136
-2
@@ -31,6 +31,7 @@ import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeFormatterBuilder;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import org.apache.fineract.client.models.GetLoansLoanIdTransactionsTransactionIdResponse;
|
||||
import org.apache.fineract.client.models.PostClientsResponse;
|
||||
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdRequest;
|
||||
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdResponse;
|
||||
@@ -135,10 +136,26 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
(long) penalty1LoanChargeId, new PostLoansLoanIdChargesChargeIdRequest().externalId(waiveChargeExternalIdStr));
|
||||
assertEquals(waiveChargeExternalIdStr, waiveLoanChargeResult.getSubResourceExternalId());
|
||||
|
||||
GetLoansLoanIdTransactionsTransactionIdResponse response = loanTransactionHelper.getLoanTransactionDetails((long) loanId,
|
||||
waiveChargeExternalIdStr);
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, waiveLoanChargeResult.getSubResourceExternalId());
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, waiveChargeExternalIdStr);
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
HashMap undoWaiveLoanChargeResult = loanTransactionHelper.undoWaiveLoanCharge((long) loanId, waiveChargeExternalIdStr);
|
||||
assertEquals(waiveChargeExternalIdStr, undoWaiveLoanChargeResult.get("subResourceExternalId"));
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, waiveChargeExternalIdStr);
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
|
||||
Long.valueOf(undoWaiveLoanChargeResult.get("subResourceId").toString()));
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, waiveChargeExternalIdStr);
|
||||
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge((long) loanId, (long) penalty1LoanChargeId,
|
||||
new PostLoansLoanIdChargesChargeIdRequest());
|
||||
@@ -165,6 +182,14 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionAmount(5.0));
|
||||
assertNotNull(repaymentResult.getResourceExternalId());
|
||||
|
||||
String repaymentExternalId = repaymentResult.getResourceExternalId();
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, repaymentExternalId);
|
||||
assertEquals(repaymentExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, repaymentResult.getResourceId());
|
||||
assertEquals(repaymentExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, repaymentExternalId);
|
||||
assertEquals(repaymentExternalId, response.getExternalId());
|
||||
|
||||
// Check whether the provided external id was retrieved
|
||||
String transactionExternalIdStr = UUID.randomUUID().toString();
|
||||
final PostLoansLoanIdTransactionsResponse repaymentResultWithExternalId = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
|
||||
@@ -185,6 +210,14 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate("06 September 2022").locale("en").transactionAmount(5.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, merchantIssuedRefundResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
|
||||
merchantIssuedRefundResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse payoutRefundResult = loanTransactionHelper.makePayoutRefund(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("06 September 2022").locale("en")
|
||||
@@ -198,6 +231,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate("06 September 2022").locale("en").transactionAmount(5.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, payoutRefundResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, payoutRefundResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse goodWillCreditResult = loanTransactionHelper.makeGoodwillCredit(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("06 September 2022").locale("en")
|
||||
@@ -211,11 +251,26 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate("06 September 2022").locale("en").transactionAmount(5.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, goodWillCreditResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, goodWillCreditResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse writeoffResult = loanTransactionHelper.makeWriteoff(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("06 September 2022").locale("en"));
|
||||
assertNotNull(writeoffResult.getResourceExternalId());
|
||||
|
||||
transactionExternalIdStr = writeoffResult.getResourceExternalId();
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, writeoffResult.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse makeRecoveryPaymentResult = loanTransactionHelper.makeRecoveryPayment(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("06 September 2022").locale("en")
|
||||
@@ -229,10 +284,17 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate("06 September 2022").locale("en").transactionAmount(5.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, makeRecoveryPaymentResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
|
||||
makeRecoveryPaymentResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse undoWriteoffResult = loanTransactionHelper.makeUndoWriteoff(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("06 September 2022").locale("en")
|
||||
.transactionAmount(5.0));
|
||||
new PostLoansLoanIdTransactionsRequest());
|
||||
assertNotNull(undoWriteoffResult.getResourceExternalId());
|
||||
|
||||
// Check whether the provided external id was retrieved
|
||||
@@ -247,6 +309,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.makeUndoWriteoff(loanExternalIdStr, new PostLoansLoanIdTransactionsRequest());
|
||||
assertEquals(transactionExternalIdStr, undoWriteoffResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, undoWriteoffResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Overpay the account
|
||||
transactionExternalIdStr = UUID.randomUUID().toString();
|
||||
final PostLoansLoanIdTransactionsResponse overpaymentResultWithExternalId = loanTransactionHelper
|
||||
@@ -267,6 +336,14 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate("06 September 2022").locale("en").transactionAmount(5.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, makeCreditBalanceRefundResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
|
||||
makeCreditBalanceRefundResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
final PostLoansLoanIdTransactionsResponse chargeRefundResult = loanTransactionHelper.makeChargeRefund(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").locale("en").loanChargeId(penalty1LoanChargeId)
|
||||
@@ -280,6 +357,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.loanChargeId(penalty1LoanChargeId).transactionAmount(1.0).externalId(transactionExternalIdStr));
|
||||
assertEquals(transactionExternalIdStr, chargeRefundResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanId, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, chargeRefundResultWithExternalId.getResourceId());
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, transactionExternalIdStr);
|
||||
assertEquals(transactionExternalIdStr, response.getExternalId());
|
||||
|
||||
// Create a loan with interest and test the rest of the transactions
|
||||
|
||||
final String loanProductWithInterestJSON = new LoanProductTestBuilder().withPrincipal("10000.0").withRepaymentTypeAsMonth()
|
||||
@@ -335,6 +419,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate(formattedDate).locale("en").transactionAmount(1.0).externalId(waiveInterestTxnExternalIdStr));
|
||||
assertEquals(waiveInterestTxnExternalIdStr, waiveInterestResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, waiveInterestTxnExternalIdStr);
|
||||
assertEquals(waiveInterestTxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, waiveInterestResultWithExternalId.getResourceId());
|
||||
assertEquals(waiveInterestTxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, waiveInterestTxnExternalIdStr);
|
||||
assertEquals(waiveInterestTxnExternalIdStr, response.getExternalId());
|
||||
|
||||
String inAdvanceRepaymentTxnExternalIdStr = UUID.randomUUID().toString();
|
||||
final PostLoansLoanIdTransactionsResponse inAdvanceRepaymentResult = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
|
||||
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate(formattedDate).locale("en")
|
||||
@@ -358,11 +449,25 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionDate(formattedDate).locale("en").transactionAmount(5.0).externalId(makeRefundTxnExternalIdStr));
|
||||
assertEquals(makeRefundTxnExternalIdStr, makeRefundByCashResultWithExternalId.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, makeRefundTxnExternalIdStr);
|
||||
assertEquals(makeRefundTxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, makeRefundByCashResultWithExternalId.getResourceId());
|
||||
assertEquals(makeRefundTxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, makeRefundTxnExternalIdStr);
|
||||
assertEquals(makeRefundTxnExternalIdStr, response.getExternalId());
|
||||
|
||||
PostLoansLoanIdTransactionsResponse adjustmentResult = loanTransactionHelper.reverseLoanTransaction((long) loanWithInterestId,
|
||||
inAdvanceRepayment2TxnExternalIdStr, new PostLoansLoanIdTransactionsTransactionIdRequest().transactionDate(formattedDate)
|
||||
.locale("en").dateFormat("dd MMMM yyyy").transactionAmount(0.0));
|
||||
assertEquals(inAdvanceRepayment2TxnExternalIdStr, adjustmentResult.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, inAdvanceRepayment2TxnExternalIdStr);
|
||||
assertEquals(inAdvanceRepayment2TxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, adjustmentResult.getResourceId());
|
||||
assertEquals(inAdvanceRepayment2TxnExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, inAdvanceRepayment2TxnExternalIdStr);
|
||||
assertEquals(inAdvanceRepayment2TxnExternalIdStr, response.getExternalId());
|
||||
|
||||
adjustmentResult = loanTransactionHelper.reverseLoanTransaction(loanExternalIdStr, inAdvanceRepaymentResult.getResourceId(),
|
||||
new PostLoansLoanIdTransactionsTransactionIdRequest().transactionDate(formattedDate).locale("en").dateFormat("dd MMMM yyyy")
|
||||
.transactionAmount(0.0));
|
||||
@@ -374,6 +479,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionAmount(2.0).externalId(adjustTransactionExternalId));
|
||||
assertEquals(adjustTransactionExternalId, adjustmentResult.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, adjustTransactionExternalId);
|
||||
assertEquals(adjustTransactionExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, adjustmentResult.getResourceId());
|
||||
assertEquals(adjustTransactionExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, adjustTransactionExternalId);
|
||||
assertEquals(adjustTransactionExternalId, response.getExternalId());
|
||||
|
||||
adjustmentResult = loanTransactionHelper.adjustLoanTransaction(loanExternalIdStr, adjustmentResult.getResourceExternalId(),
|
||||
new PostLoansLoanIdTransactionsTransactionIdRequest().transactionDate(formattedDate).locale("en").dateFormat("dd MMMM yyyy")
|
||||
.transactionAmount(1.0));
|
||||
@@ -390,6 +502,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
.transactionAmount(2.0).externalId(chargebackTransactionExternalId).paymentTypeId(1L));
|
||||
assertEquals(chargebackTransactionExternalId, chargebackResult.getResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, chargebackTransactionExternalId);
|
||||
assertEquals(chargebackTransactionExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, chargebackResult.getResourceId());
|
||||
assertEquals(chargebackTransactionExternalId, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, chargebackTransactionExternalId);
|
||||
assertEquals(chargebackTransactionExternalId, response.getExternalId());
|
||||
|
||||
chargebackResult = loanTransactionHelper.chargebackLoanTransaction(loanExternalIdStr,
|
||||
repaymentForChargebackResult.getResourceExternalId(),
|
||||
new PostLoansLoanIdTransactionsTransactionIdRequest().locale("en").transactionAmount(2.0).paymentTypeId(2L));
|
||||
@@ -402,6 +521,13 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
new PostLoansLoanIdChargesChargeIdRequest().externalId(chargeAdjustmentExternalIdStr).amount(1.0).locale("en"));
|
||||
assertEquals(chargeAdjustmentExternalIdStr, chargeAdjustmentResult.getSubResourceExternalId());
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, chargeAdjustmentExternalIdStr);
|
||||
assertEquals(chargeAdjustmentExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, chargeAdjustmentResult.getSubResourceExternalId());
|
||||
assertEquals(chargeAdjustmentExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, chargeAdjustmentExternalIdStr);
|
||||
assertEquals(chargeAdjustmentExternalIdStr, response.getExternalId());
|
||||
|
||||
// Check whether an external id was generated
|
||||
chargeAdjustmentResult = loanTransactionHelper.chargeAdjustment((long) loanWithInterestId, (long) penalty3LoanChargeId,
|
||||
new PostLoansLoanIdChargesChargeIdRequest().amount(1.0).locale("en"));
|
||||
@@ -416,6 +542,14 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
|
||||
LoanTransactionHelper.getPayChargeJSON(formattedDate, null, payChargeExternalIdStr), "");
|
||||
assertEquals(payChargeExternalIdStr, payChargeResult.get("subResourceExternalId"));
|
||||
|
||||
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, payChargeExternalIdStr);
|
||||
assertEquals(payChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
|
||||
Long.valueOf(payChargeResult.get("subResourceId").toString()));
|
||||
assertEquals(payChargeExternalIdStr, response.getExternalId());
|
||||
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, payChargeExternalIdStr);
|
||||
assertEquals(payChargeExternalIdStr, response.getExternalId());
|
||||
|
||||
GlobalConfigurationHelper.updateEnabledFlagForGlobalConfiguration(requestSpec, responseSpec, 50, false);
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -784,6 +784,22 @@ public class LoanTransactionHelper extends IntegrationTest {
|
||||
return ok(fineract().loanTransactions.retrieveTransaction(loanId, transactionId, null));
|
||||
}
|
||||
|
||||
public GetLoansLoanIdTransactionsTransactionIdResponse getLoanTransactionDetails(final String loanExternalId,
|
||||
final Long transactionId) {
|
||||
return ok(fineract().loanTransactions.retrieveTransactionByLoanExternalIdAndTransactionId(loanExternalId, transactionId, null));
|
||||
}
|
||||
|
||||
public GetLoansLoanIdTransactionsTransactionIdResponse getLoanTransactionDetails(final Long loanId,
|
||||
final String transactionExternalId) {
|
||||
return ok(fineract().loanTransactions.retrieveTransactionByTransactionExternalId(loanId, transactionExternalId, null));
|
||||
}
|
||||
|
||||
public GetLoansLoanIdTransactionsTransactionIdResponse getLoanTransactionDetails(final String loanExternalId,
|
||||
final String transactionExternalId) {
|
||||
return ok(fineract().loanTransactions.retrieveTransactionByLoanExternalIdAndTransactionExternalId(loanExternalId,
|
||||
transactionExternalId, null));
|
||||
}
|
||||
|
||||
public GetLoansLoanIdResponse getLoanDetails(final Long loanId) {
|
||||
return ok(fineract().loans.retrieveLoan(loanId, false, "all", null, null));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user