/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.portfolio.loanaccount.data;
import java.math.BigDecimal;
import org.joda.time.LocalDate;
public class LoanInstallmentChargeData {
private final Integer installmentNumber;
private final LocalDate dueDate;
private final BigDecimal amount;
private final BigDecimal amountOutstanding;
private final BigDecimal amountWaived;
private final boolean paid;
private final boolean waived;
private BigDecimal amountAccrued;
private BigDecimal amountUnrecognized;
public LoanInstallmentChargeData(final Integer installmentNumber, final LocalDate dueDate, final BigDecimal amount,
final BigDecimal amountOutstanding, BigDecimal amountWaived, final boolean paid, final boolean waived) {
this.installmentNumber = installmentNumber;
this.dueDate = dueDate;
this.amount = amount;
this.amountOutstanding = amountOutstanding;
this.paid = paid;
this.waived = waived;
this.amountWaived = amountWaived;
}
public LoanInstallmentChargeData(final Integer installmentNumber, final LocalDate dueDate, final BigDecimal amount,
final BigDecimal amountOutstanding, final BigDecimal amountWaived, final boolean paid, final boolean waived,
final BigDecimal amountAccrued) {
this.installmentNumber = installmentNumber;
this.dueDate = dueDate;
this.amount = amount;
this.amountOutstanding = amountOutstanding;
this.paid = paid;
this.waived = waived;
this.amountWaived = amountWaived;
this.amountAccrued = amountAccrued;
}
public LoanInstallmentChargeData(final LoanInstallmentChargeData installmentChargeData, final BigDecimal amountUnrecognized) {
this.installmentNumber = installmentChargeData.installmentNumber;
this.dueDate = installmentChargeData.dueDate;
this.amount = installmentChargeData.amount;
this.amountOutstanding = installmentChargeData.amountOutstanding;
this.paid = installmentChargeData.paid;
this.waived = installmentChargeData.waived;
this.amountWaived = installmentChargeData.amountWaived;
this.amountAccrued = installmentChargeData.amountAccrued;
this.amountUnrecognized = amountUnrecognized;
}
public Integer getInstallmentNumber() {
return this.installmentNumber;
}
public LocalDate getDueDate() {
return this.dueDate;
}
public boolean isPaymentPending() {
return !(this.paid || this.waived);
}
public BigDecimal getAmountOutstanding() {
return this.amountOutstanding;
}
public BigDecimal getAmount() {
return this.amount;
}
public BigDecimal getAmountWaived() {
return this.amountWaived;
}
public BigDecimal getAmountAccrued() {
return this.amountAccrued;
}
public BigDecimal getAmountUnrecognized() {
return this.amountUnrecognized;
}
}