MIFOSX-175: make relationship to arrears aging summary table optional.

This commit is contained in:
Keith Woodlock
2013-03-04 15:35:41 +00:00
parent 0bca626252
commit 2d7bd6f171
3 changed files with 16 additions and 8 deletions
@@ -243,7 +243,7 @@ public class Loan extends AbstractPersistable<Long> {
@Embedded
private LoanSummary summary;
@OneToOne(mappedBy = "loan", cascade = CascadeType.ALL)
@OneToOne(mappedBy = "loan", cascade = CascadeType.ALL, optional = true, orphanRemoval = true)
private LoanSummaryArrearsAging summaryArrearsAging;
@Transient
@@ -319,11 +319,9 @@ public class Loan extends AbstractPersistable<Long> {
if (loanCharges != null && !loanCharges.isEmpty()) {
this.charges = associateChargesWithThisLoan(loanCharges);
this.summary = updateSummaryWithTotalFeeChargesDueAtDisbursement(deriveSumTotalOfChargesDueAtDisbursement());
this.summaryArrearsAging = new LoanSummaryArrearsAging(this);
} else {
this.charges = null;
this.summary = new LoanSummary();
this.summaryArrearsAging = new LoanSummaryArrearsAging(this);
}
if (collateral != null && !collateral.isEmpty()) {
this.collateral = associateWithThisLoan(collateral);
@@ -674,11 +672,17 @@ public class Loan extends AbstractPersistable<Long> {
if (isNotDisbursed()) {
this.summary.zeroFields();
this.summaryArrearsAging.zeroFields();
this.summaryArrearsAging = null;
} else {
final Money principal = this.loanRepaymentScheduleDetail.getPrincipal();
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);
if (this.summaryArrearsAging.isNotInArrears(loanCurrency())) {
this.summaryArrearsAging = null;
}
}
}
@@ -55,7 +55,6 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
@Column(name = "penalty_charges_overdue_derived", scale = 6, precision = 19)
private BigDecimal totalPenaltyChargesOverdue;
@SuppressWarnings("unused")
@Column(name = "total_overdue_derived", scale = 6, precision = 19)
private BigDecimal totalOverdue;
@@ -64,6 +63,7 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
@Column(name = "overdue_since_date_derived")
private Date overdueSinceDate;
@SuppressWarnings("unused")
@OneToOne
@PrimaryKeyJoinColumn
private Loan loan;
@@ -120,4 +120,8 @@ public final class LoanSummaryArrearsAging implements Persistable<Long> {
this.overdueSinceDate = null;
}
}
public boolean isNotInArrears(final MonetaryCurrency currency) {
return Money.of(currency, this.totalOverdue).isZero();
}
}
@@ -313,11 +313,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
+ " la.total_overdue_derived as totalOverdue,"
+ " la.overdue_since_date_derived as overdueSinceDate"
+ " 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_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_staff s on s.id = l.loan_officer_id" //
+ " left join m_appuser sbu on sbu.id = l.submittedon_userid"