public Calendar getRepaymentDate() { if (payments == null || payments.isEmpty()) { return null; } final LoanPayment payment = payments.get(payments.size() - 1); return payment.getStatus().isClosed() ? payment.getRepaymentDate() : null; }
public Calendar getExpirationDate() { LoanPayment payment = getFirstOpenPayment(); if (payment == null) { payment = payments == null || payments.isEmpty() ? null : payments.get(payments.size() - 1); } return payment == null ? null : payment.getExpirationDate(); }
public int getClosedPaymentsCount() { int count = 0; for (final LoanPayment payment : payments) { if (payment.getStatus().isClosed()) { count++; } } return count; }
public LoanPayment getFirstPaymentWithStatus(final LoanPayment.Status status) { if (payments != null) { for (final LoanPayment payment : payments) { if (status == payment.getStatus()) { return payment; } } } return null; }
public LoanPayment getFirstOpenPayment() { if (payments != null) { for (final LoanPayment payment : payments) { if (payment.getStatus().isOpen()) { return payment; } } } return null; }
public Status getStatus() { if (transfer.getStatus() == Payment.Status.PENDING) { return Status.PENDING_AUTHORIZATION; } if (transfer.getStatus() == Payment.Status.DENIED) { return Status.AUTHORIZATION_DENIED; } for (final LoanPayment payment : getPayments()) { if (payment.getStatus().isOpen()) { return Status.OPEN; } } return Status.CLOSED; }
public BigDecimal getRepaidAmount() { BigDecimal total = BigDecimal.ZERO; if (payments != null) { for (final LoanPayment payment : payments) { final LoanPayment.Status status = payment.getStatus(); if (status.isClosed() && status != LoanPayment.Status.UNRECOVERABLE) { total = total.add(payment.getAmount()); } else { total = total.add(payment.getRepaidAmount()); } } } return total; }