public void updateSummary( final MonetaryCurrency currency, final List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments, final LoanSummaryWrapper summaryWrapper) { this.totalPrincipalOverdue = summaryWrapper .calculateTotalPrincipalOverdueOn( repaymentScheduleInstallments, currency, DateUtils.getLocalDateOfTenant()) .getAmount(); this.totalInterestOverdue = summaryWrapper .calculateTotalInterestOverdueOn( repaymentScheduleInstallments, currency, DateUtils.getLocalDateOfTenant()) .getAmount(); this.totalFeeChargesOverdue = summaryWrapper .calculateTotalFeeChargesOverdueOn( repaymentScheduleInstallments, currency, DateUtils.getLocalDateOfTenant()) .getAmount(); this.totalPenaltyChargesOverdue = summaryWrapper .calculateTotalPenaltyChargesOverdueOn( repaymentScheduleInstallments, currency, DateUtils.getLocalDateOfTenant()) .getAmount(); final Money totalOverdue = Money.of(currency, this.totalPrincipalOverdue) .plus(this.totalInterestOverdue) .plus(this.totalFeeChargesOverdue) .plus(this.totalPenaltyChargesOverdue); this.totalOverdue = totalOverdue.getAmount(); final LocalDate overdueSinceLocalDate = summaryWrapper.determineOverdueSinceDateFrom( repaymentScheduleInstallments, currency, DateUtils.getLocalDateOfTenant()); if (overdueSinceLocalDate != null) { this.overdueSinceDate = overdueSinceLocalDate.toDate(); } else { this.overdueSinceDate = null; } }