FINERACT-1694: Add submittedOnDate and externalLoanId to LoanChargeData event

This commit is contained in:
Adam Saghy
2023-02-06 10:20:11 +01:00
committed by Arnold Gálovics
parent 3f800ab3ad
commit e08675ed54
3 changed files with 59 additions and 22 deletions
@@ -232,6 +232,22 @@
"null",
"string"
]
},
{
"default": null,
"name": "externalLoanId",
"type": [
"null",
"string"
]
},
{
"default": null,
"name": "submittedOnDate",
"type": [
"null",
"string"
]
}
]
}
@@ -92,9 +92,11 @@ public class LoanChargeData {
private final ExternalId externalId;
private final ExternalId externalLoanId;
public static LoanChargeData template(final Collection<ChargeData> chargeOptions) {
return new LoanChargeData(null, null, null, null, null, null, null, null, chargeOptions, false, null, false, false, null, null,
null, null, null, ExternalId.empty());
return new LoanChargeData(null, null, null, null, null, null, null, null, chargeOptions, false, null, false, false, null,
ExternalId.empty(), null, null, null, null, ExternalId.empty());
}
/**
@@ -105,7 +107,7 @@ public class LoanChargeData {
final EnumOptionData chargeCalculationType, final boolean penalty, final EnumOptionData chargePaymentMode,
final BigDecimal minCap, final BigDecimal maxCap, final ExternalId externalId) {
return new LoanChargeData(null, chargeId, name, currency, amount, percentage, chargeTimeType, chargeCalculationType, null, penalty,
chargePaymentMode, false, false, null, minCap, maxCap, null, null, externalId);
chargePaymentMode, false, false, null, ExternalId.empty(), minCap, maxCap, null, null, externalId);
}
public LoanChargeData(final Long id, final Long chargeId, final String name, final CurrencyData currency, final BigDecimal amount,
@@ -113,8 +115,8 @@ public class LoanChargeData {
final BigDecimal amountOutstanding, final EnumOptionData chargeTimeType, final LocalDate submittedOnDate,
final LocalDate dueDate, final EnumOptionData chargeCalculationType, final BigDecimal percentage,
final BigDecimal amountPercentageAppliedTo, final boolean penalty, final EnumOptionData chargePaymentMode, final boolean paid,
final boolean waived, final Long loanId, final BigDecimal minCap, final BigDecimal maxCap, final BigDecimal amountOrPercentage,
Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
final boolean waived, final Long loanId, final ExternalId externalLoanId, final BigDecimal minCap, final BigDecimal maxCap,
final BigDecimal amountOrPercentage, Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
this.id = id;
this.chargeId = chargeId;
this.name = name;
@@ -153,13 +155,14 @@ public class LoanChargeData {
this.amountAccrued = null;
this.amountUnrecognized = null;
this.externalId = externalId;
this.externalLoanId = externalLoanId;
}
private LoanChargeData(final Long id, final Long chargeId, final String name, final CurrencyData currency, final BigDecimal amount,
final BigDecimal percentage, final EnumOptionData chargeTimeType, final EnumOptionData chargeCalculationType,
final Collection<ChargeData> chargeOptions, final boolean penalty, final EnumOptionData chargePaymentMode, final boolean paid,
final boolean waived, final Long loanId, final BigDecimal minCap, final BigDecimal maxCap, final BigDecimal amountOrPercentage,
Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
final boolean waived, final Long loanId, final ExternalId externalLoanId, final BigDecimal minCap, final BigDecimal maxCap,
final BigDecimal amountOrPercentage, Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
this.id = id;
this.chargeId = chargeId;
this.name = name;
@@ -193,6 +196,7 @@ public class LoanChargeData {
this.chargeOptions = chargeOptions;
this.chargePayable = isChargePayable();
this.loanId = loanId;
this.externalLoanId = externalLoanId;
this.minCap = minCap;
this.maxCap = maxCap;
this.installmentChargeData = installmentChargeData;
@@ -201,8 +205,9 @@ public class LoanChargeData {
this.externalId = externalId;
}
public LoanChargeData(final Long id, final LocalDate dueAsOfDate, final BigDecimal amountOutstanding, EnumOptionData chargeTimeType,
final Long loanId, Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
public LoanChargeData(final Long id, final LocalDate dueAsOfDate, final LocalDate submittedOnDate, final BigDecimal amountOutstanding,
EnumOptionData chargeTimeType, final Long loanId, final ExternalId externalLoanId,
Collection<LoanInstallmentChargeData> installmentChargeData, final ExternalId externalId) {
this.id = id;
this.chargeId = null;
this.name = null;
@@ -213,7 +218,7 @@ public class LoanChargeData {
this.amountWrittenOff = null;
this.amountOutstanding = amountOutstanding;
this.chargeTimeType = chargeTimeType;
this.submittedOnDate = null;
this.submittedOnDate = submittedOnDate;
this.dueDate = dueAsOfDate;
this.chargeCalculationType = null;
this.percentage = null;
@@ -232,11 +237,12 @@ public class LoanChargeData {
this.amountAccrued = null;
this.amountUnrecognized = null;
this.externalId = externalId;
this.externalLoanId = externalLoanId;
}
public LoanChargeData(final Long id, final Long chargeId, final LocalDate dueAsOfDate, EnumOptionData chargeTimeType,
final BigDecimal amount, final BigDecimal amountAccrued, final BigDecimal amountWaived, final boolean penalty,
final ExternalId externalId) {
public LoanChargeData(final Long id, final Long chargeId, final LocalDate dueAsOfDate, final LocalDate submittedOnDate,
EnumOptionData chargeTimeType, final BigDecimal amount, final BigDecimal amountAccrued, final BigDecimal amountWaived,
final boolean penalty, final ExternalId externalId) {
this.id = id;
this.chargeId = chargeId;
this.name = null;
@@ -247,7 +253,7 @@ public class LoanChargeData {
this.amountWrittenOff = null;
this.amountOutstanding = null;
this.chargeTimeType = chargeTimeType;
this.submittedOnDate = null;
this.submittedOnDate = submittedOnDate;
this.dueDate = dueAsOfDate;
this.chargeCalculationType = null;
this.percentage = null;
@@ -260,6 +266,7 @@ public class LoanChargeData {
this.chargeOptions = null;
this.chargePayable = false;
this.loanId = null;
this.externalLoanId = ExternalId.empty();
this.minCap = null;
this.maxCap = null;
this.installmentChargeData = null;
@@ -292,6 +299,7 @@ public class LoanChargeData {
this.chargeOptions = null;
this.chargePayable = false;
this.loanId = null;
this.externalLoanId = ExternalId.empty();
this.minCap = null;
this.maxCap = null;
this.installmentChargeData = null;
@@ -326,6 +334,7 @@ public class LoanChargeData {
this.chargeOptions = chargeData.chargeOptions;
this.chargePayable = chargeData.chargePayable;
this.loanId = chargeData.loanId;
this.externalLoanId = chargeData.externalLoanId;
this.installmentChargeData = installmentChargeData;
this.amountAccrued = chargeData.amountAccrued;
this.amountUnrecognized = chargeData.amountUnrecognized;
@@ -357,6 +366,7 @@ public class LoanChargeData {
this.chargeOptions = null;
this.chargePayable = false;
this.loanId = null;
this.externalLoanId = ExternalId.empty();
this.minCap = null;
this.maxCap = null;
this.installmentChargeData = null;
@@ -389,6 +399,7 @@ public class LoanChargeData {
this.chargeOptions = null;
this.chargePayable = false;
this.loanId = null;
this.externalLoanId = ExternalId.empty();
this.minCap = null;
this.maxCap = null;
this.installmentChargeData = null;
@@ -76,9 +76,10 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
+ "lc.loan_id as loanId, c.currency_code as currencyCode, oc.name as currencyName, " //
+ "date(coalesce(dd.disbursedon_date,dd.expected_disburse_date)) as disbursementDate, " //
+ "oc.decimal_places as currencyDecimalPlaces, oc.currency_multiplesof as inMultiplesOf, oc.display_symbol as currencyDisplaySymbol, " //
+ "oc.internationalized_name_code as currencyNameCode from m_charge c " //
+ "oc.internationalized_name_code as currencyNameCode, l.external_id as externalLoanId from m_charge c " //
+ "join m_organisation_currency oc on c.currency_code = oc.code join m_loan_charge lc on lc.charge_id = c.id " //
+ "left join m_loan_tranche_disbursement_charge dc on dc.loan_charge_id=lc.id left join m_loan_disbursement_detail dd on dd.id=dc.disbursement_detail_id ";
+ "left join m_loan_tranche_disbursement_charge dc on dc.loan_charge_id=lc.id left join m_loan_disbursement_detail dd on dd.id=dc.disbursement_detail_id " //
+ " join m_loan l on lc.loan_id = l.id";
}
@Override
@@ -130,10 +131,12 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
}
final String externalIdStr = rs.getString("externalId");
final ExternalId externalId = ExternalIdFactory.produce(externalIdStr);
final String externalLoanIdStr = rs.getString("externalLoanId");
final ExternalId externalLoanId = ExternalIdFactory.produce(externalLoanIdStr);
return new LoanChargeData(id, chargeId, name, currency, amount, amountPaid, amountWaived, amountWrittenOff, amountOutstanding,
chargeTimeType, submittedOnDate, dueAsOfDate, chargeCalculationType, percentageOf, amountPercentageAppliedTo, penalty,
paymentMode, paid, waived, loanId, minCap, maxCap, amountOrPercentage, null, externalId);
paymentMode, paid, waived, loanId, externalLoanId, minCap, maxCap, amountOrPercentage, null, externalId);
}
}
@@ -199,8 +202,8 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
private static final class LoanChargeMapperWithLoanId implements RowMapper<LoanChargeData> {
public String schema() {
return " lc.id as id, lc.due_for_collection_as_of_date as dueAsOfDate, lc.amount_outstanding_derived as amountOutstanding, "
+ " lc.charge_time_enum as chargeTime, loan.id as loanId, lc.external_id as externalId from m_loan_charge lc "
return " lc.id as id, lc.due_for_collection_as_of_date as dueAsOfDate, lc.amount_outstanding_derived as amountOutstanding, lc.submitted_on_date as submittedOnDate, "
+ " lc.charge_time_enum as chargeTime, loan.id as loanId, loan.external_id as externalLoanId, lc.external_id as externalId from m_loan_charge lc "
+ " join m_loan loan on loan.id = lc.loan_id ";
}
@@ -209,14 +212,18 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
final Long id = rs.getLong("id");
final LocalDate dueAsOfDate = JdbcSupport.getLocalDate(rs, "dueAsOfDate");
final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate");
final Long loanId = rs.getLong("loanId");
final BigDecimal amountOutstanding = rs.getBigDecimal("amountOutstanding");
final int chargeTime = rs.getInt("chargeTime");
final EnumOptionData chargeTimeType = ChargeEnumerations.chargeTimeType(chargeTime);
final String externalIdStr = rs.getString("externalId");
final ExternalId externalId = ExternalIdFactory.produce(externalIdStr);
final String externalLoanIdStr = rs.getString("externalLoanId");
final ExternalId externalLoanId = ExternalIdFactory.produce(externalLoanIdStr);
return new LoanChargeData(id, dueAsOfDate, amountOutstanding, chargeTimeType, loanId, null, externalId);
return new LoanChargeData(id, dueAsOfDate, submittedOnDate, amountOutstanding, chargeTimeType, loanId, externalLoanId, null,
externalId);
}
}
@@ -313,7 +320,8 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
sb.append(" lc.charge_time_enum as chargeTime, ");
sb.append(" sum(cp.amount) as amountAccrued, ");
sb.append(" lc.is_penalty as penalty, ");
sb.append(" lc.due_for_collection_as_of_date as dueAsOfDate ");
sb.append(" lc.due_for_collection_as_of_date as dueAsOfDate, ");
sb.append(" lc.submitted_on_date as submittedOnDate ");
sb.append(" from m_loan_charge lc ");
sb.append(" left join ( ");
sb.append(" select lcp.loan_charge_id, lcp.amount ");
@@ -342,12 +350,14 @@ public class LoanChargeReadPlatformServiceImpl implements LoanChargeReadPlatform
final EnumOptionData chargeTimeType = ChargeEnumerations.chargeTimeType(chargeTime);
final LocalDate dueAsOfDate = JdbcSupport.getLocalDate(rs, "dueAsOfDate");
final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate");
final boolean penalty = rs.getBoolean("penalty");
final String externalIdStr = rs.getString("externalId");
final ExternalId externalId = ExternalIdFactory.produce(externalIdStr);
return new LoanChargeData(id, chargeId, dueAsOfDate, chargeTimeType, amount, amountAccrued, amountWaived, penalty, externalId);
return new LoanChargeData(id, chargeId, dueAsOfDate, submittedOnDate, chargeTimeType, amount, amountAccrued, amountWaived,
penalty, externalId);
}
}