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/02/06 09:20:17 UTC
[fineract] branch develop updated: FINERACT-1694: Add submittedOnDate and externalLoanId to LoanChargeData event
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 e08675ed5 FINERACT-1694: Add submittedOnDate and externalLoanId to LoanChargeData event
e08675ed5 is described below
commit e08675ed54430ac43819fee73022193cbef73578
Author: Adam Saghy <ad...@gmail.com>
AuthorDate: Fri Feb 3 14:24:58 2023 +0100
FINERACT-1694: Add submittedOnDate and externalLoanId to LoanChargeData event
---
.../src/main/avro/loan/v1/LoanChargeDataV1.avsc | 16 +++++++++
.../portfolio/loanaccount/data/LoanChargeData.java | 39 ++++++++++++++--------
.../service/LoanChargeReadPlatformServiceImpl.java | 26 ++++++++++-----
3 files changed, 59 insertions(+), 22 deletions(-)
diff --git a/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataV1.avsc b/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataV1.avsc
index a11601ef7..4c2143f6f 100644
--- a/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataV1.avsc
+++ b/fineract-avro-schemas/src/main/avro/loan/v1/LoanChargeDataV1.avsc
@@ -232,6 +232,22 @@
"null",
"string"
]
+ },
+ {
+ "default": null,
+ "name": "externalLoanId",
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ {
+ "default": null,
+ "name": "submittedOnDate",
+ "type": [
+ "null",
+ "string"
+ ]
}
]
}
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java
index c8c542e0a..5ed0085b5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java
@@ -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;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
index b7e38e592..f61c454ff 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
@@ -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);
}
}