MIFOSX-175: make relationship to arrears aging summary table optional.
This commit is contained in:
+8
-4
@@ -243,7 +243,7 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
@Embedded
|
@Embedded
|
||||||
private LoanSummary summary;
|
private LoanSummary summary;
|
||||||
|
|
||||||
@OneToOne(mappedBy = "loan", cascade = CascadeType.ALL)
|
@OneToOne(mappedBy = "loan", cascade = CascadeType.ALL, optional = true, orphanRemoval = true)
|
||||||
private LoanSummaryArrearsAging summaryArrearsAging;
|
private LoanSummaryArrearsAging summaryArrearsAging;
|
||||||
|
|
||||||
@Transient
|
@Transient
|
||||||
@@ -319,11 +319,9 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
if (loanCharges != null && !loanCharges.isEmpty()) {
|
if (loanCharges != null && !loanCharges.isEmpty()) {
|
||||||
this.charges = associateChargesWithThisLoan(loanCharges);
|
this.charges = associateChargesWithThisLoan(loanCharges);
|
||||||
this.summary = updateSummaryWithTotalFeeChargesDueAtDisbursement(deriveSumTotalOfChargesDueAtDisbursement());
|
this.summary = updateSummaryWithTotalFeeChargesDueAtDisbursement(deriveSumTotalOfChargesDueAtDisbursement());
|
||||||
this.summaryArrearsAging = new LoanSummaryArrearsAging(this);
|
|
||||||
} else {
|
} else {
|
||||||
this.charges = null;
|
this.charges = null;
|
||||||
this.summary = new LoanSummary();
|
this.summary = new LoanSummary();
|
||||||
this.summaryArrearsAging = new LoanSummaryArrearsAging(this);
|
|
||||||
}
|
}
|
||||||
if (collateral != null && !collateral.isEmpty()) {
|
if (collateral != null && !collateral.isEmpty()) {
|
||||||
this.collateral = associateWithThisLoan(collateral);
|
this.collateral = associateWithThisLoan(collateral);
|
||||||
@@ -674,11 +672,17 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
|
|
||||||
if (isNotDisbursed()) {
|
if (isNotDisbursed()) {
|
||||||
this.summary.zeroFields();
|
this.summary.zeroFields();
|
||||||
this.summaryArrearsAging.zeroFields();
|
this.summaryArrearsAging = null;
|
||||||
} else {
|
} else {
|
||||||
final Money principal = this.loanRepaymentScheduleDetail.getPrincipal();
|
final Money principal = this.loanRepaymentScheduleDetail.getPrincipal();
|
||||||
this.summary.updateSummary(loanCurrency(), principal, this.repaymentScheduleInstallments, this.loanSummaryWrapper);
|
this.summary.updateSummary(loanCurrency(), principal, this.repaymentScheduleInstallments, this.loanSummaryWrapper);
|
||||||
|
if (this.summaryArrearsAging == null) {
|
||||||
|
this.summaryArrearsAging = new LoanSummaryArrearsAging(this);
|
||||||
|
}
|
||||||
this.summaryArrearsAging.updateSummary(loanCurrency(), this.repaymentScheduleInstallments, this.loanSummaryWrapper);
|
this.summaryArrearsAging.updateSummary(loanCurrency(), this.repaymentScheduleInstallments, this.loanSummaryWrapper);
|
||||||
|
if (this.summaryArrearsAging.isNotInArrears(loanCurrency())) {
|
||||||
|
this.summaryArrearsAging = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -55,7 +55,6 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
|
|||||||
@Column(name = "penalty_charges_overdue_derived", scale = 6, precision = 19)
|
@Column(name = "penalty_charges_overdue_derived", scale = 6, precision = 19)
|
||||||
private BigDecimal totalPenaltyChargesOverdue;
|
private BigDecimal totalPenaltyChargesOverdue;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
@Column(name = "total_overdue_derived", scale = 6, precision = 19)
|
@Column(name = "total_overdue_derived", scale = 6, precision = 19)
|
||||||
private BigDecimal totalOverdue;
|
private BigDecimal totalOverdue;
|
||||||
|
|
||||||
@@ -64,6 +63,7 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
|
|||||||
@Column(name = "overdue_since_date_derived")
|
@Column(name = "overdue_since_date_derived")
|
||||||
private Date overdueSinceDate;
|
private Date overdueSinceDate;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@PrimaryKeyJoinColumn
|
@PrimaryKeyJoinColumn
|
||||||
private Loan loan;
|
private Loan loan;
|
||||||
@@ -120,4 +120,8 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
|
|||||||
this.overdueSinceDate = null;
|
this.overdueSinceDate = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isNotInArrears(final MonetaryCurrency currency) {
|
||||||
|
return Money.of(currency, this.totalOverdue).isZero();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -313,11 +313,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
|||||||
+ " la.total_overdue_derived as totalOverdue,"
|
+ " la.total_overdue_derived as totalOverdue,"
|
||||||
+ " la.overdue_since_date_derived as overdueSinceDate"
|
+ " la.overdue_since_date_derived as overdueSinceDate"
|
||||||
+ " from m_loan l" //
|
+ " from m_loan l" //
|
||||||
+ " left join m_client c on c.id = l.client_id" //
|
|
||||||
+ " left join m_group g on g.id = l.group_id" //
|
|
||||||
+ " join m_product_loan lp on lp.id = l.product_id" //
|
+ " join m_product_loan lp on lp.id = l.product_id" //
|
||||||
+ " join m_currency rc on rc.`code` = l.currency_code" //
|
+ " join m_currency rc on rc.`code` = l.currency_code" //
|
||||||
+ " join m_loan_arrears_aging la on la.loan_id = l.id" //
|
+ " left join m_client c on c.id = l.client_id" //
|
||||||
|
+ " left join m_group g on g.id = l.group_id" //
|
||||||
|
+ " left join m_loan_arrears_aging la on la.loan_id = l.id" //
|
||||||
+ " left join m_fund f on f.id = l.fund_id" //
|
+ " left join m_fund f on f.id = l.fund_id" //
|
||||||
+ " left join m_staff s on s.id = l.loan_officer_id" //
|
+ " left join m_staff s on s.id = l.loan_officer_id" //
|
||||||
+ " left join m_appuser sbu on sbu.id = l.submittedon_userid"
|
+ " left join m_appuser sbu on sbu.id = l.submittedon_userid"
|
||||||
|
|||||||
Reference in New Issue
Block a user