/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.module.ar.businessobject;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
/**
* @author Kuali Nervous System Team (kualidev@oncourse.iu.edu)
*/
public class NonAppliedHolding extends PersistableBusinessObjectBase {
private String referenceFinancialDocumentNumber;
private KualiDecimal financialDocumentLineAmount = KualiDecimal.ZERO;
private String customerNumber;
private Customer customer;
private KualiDecimal availableUnappliedAmount = KualiDecimal.ZERO;
private KualiDecimal appliedUnappliedAmount = KualiDecimal.ZERO;
private Collection<NonInvoicedDistribution> nonInvoicedDistributions;
private Collection<NonAppliedDistribution> nonAppliedDistributions;
private FinancialSystemDocumentHeader documentHeader;
/**
* Default constructor.
*/
public NonAppliedHolding() {
nonAppliedDistributions = new ArrayList<NonAppliedDistribution>();
}
/**
* Gets the referenceFinancialDocumentNumber attribute.
*
* @return Returns the referenceFinancialDocumentNumber
*
*/
public String getReferenceFinancialDocumentNumber() {
return referenceFinancialDocumentNumber;
}
/**
* Sets the referenceFinancialDocumentNumber attribute.
*
* @param referenceFinancialDocumentNumber The referenceFinancialDocumentNumber to set.
*
*/
public void setReferenceFinancialDocumentNumber(String referenceFinancialDocumentNumber) {
this.referenceFinancialDocumentNumber = referenceFinancialDocumentNumber;
}
/**
* Gets the financialDocumentLineAmount attribute.
*
* @return Returns the financialDocumentLineAmount
*
*/
public KualiDecimal getFinancialDocumentLineAmount() {
return financialDocumentLineAmount;
}
/**
* Sets the financialDocumentLineAmount attribute.
*
* @param financialDocumentLineAmount The financialDocumentLineAmount to set.
*
*/
public void setFinancialDocumentLineAmount(KualiDecimal financialDocumentLineAmount) {
this.financialDocumentLineAmount = financialDocumentLineAmount;
}
/**
* Gets the customerNumber attribute.
*
* @return Returns the customerNumber
*
*/
public String getCustomerNumber() {
return customerNumber;
}
/**
* Sets the customerNumber attribute.
*
* @param customerNumber The customerNumber to set.
*
*/
public void setCustomerNumber(String customerNumber) {
this.customerNumber = customerNumber;
}
/**
* Gets the customer attribute.
*
* @return Returns the customer
*
*/
public Customer getCustomer() {
return customer;
}
/**
* Sets the customer attribute.
*
* @param customer The customer to set.
* @deprecated
*/
public void setCustomer(Customer customer) {
this.customer = customer;
}
/**
* Gets the nonInvoicedDistributions attribute.
* @return Returns the nonInvoicedDistributions.
*/
public Collection<NonInvoicedDistribution> getNonInvoicedDistributions() {
return nonInvoicedDistributions;
}
/**
* Sets the nonInvoicedDistributions attribute value.
* @param nonInvoicedDistributions The nonInvoicedDistributions to set.
*/
public void setNonInvoicedDistributions(Collection<NonInvoicedDistribution> nonInvoicedDistributions) {
this.nonInvoicedDistributions = nonInvoicedDistributions;
}
/**
* Gets the nonAppliedDistributions attribute.
* @return Returns the nonAppliedDistributions.
*/
public Collection<NonAppliedDistribution> getNonAppliedDistributions() {
return nonAppliedDistributions;
}
/**
* Sets the nonAppliedDistributions attribute value.
* @param nonAppliedDistributions The nonAppliedDistributions to set.
*/
public void setNonAppliedDistributions(List<NonAppliedDistribution> nonAppliedDistributions) {
this.nonAppliedDistributions = nonAppliedDistributions;
}
/**
* @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
*/
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap m = new LinkedHashMap();
m.put("referenceFinancialDocumentNumber", this.referenceFinancialDocumentNumber);
return m;
}
/**
* Gets the availableUnappliedAmount attribute.
* @return Returns the availableUnappliedAmount.
*/
public KualiDecimal getAvailableUnappliedAmount() {
// start with the original unapplied amount
KualiDecimal amount = financialDocumentLineAmount;
// subtract any non-invoiced distributions made against it
for (NonInvoicedDistribution nonInvoicedDistribution : nonInvoicedDistributions) {
amount = amount.subtract(nonInvoicedDistribution.getFinancialDocumentLineAmount());
}
// subtract any non-applied distributions made against it
for (NonAppliedDistribution nonAppliedDistribution : nonAppliedDistributions) {
amount = amount.subtract(nonAppliedDistribution.getFinancialDocumentLineAmount());
}
return amount;
}
/**
* Gets the appliedUnappliedAmount attribute.
* @return Returns the appliedUnappliedAmount.
*/
public KualiDecimal getAppliedUnappliedAmount() {
// start with zero
KualiDecimal amount = KualiDecimal.ZERO;
// add any non-invoiced distributions made against it
for (NonInvoicedDistribution nonInvoicedDistribution : nonInvoicedDistributions) {
amount = amount.add(nonInvoicedDistribution.getFinancialDocumentLineAmount());
}
// add any non-applied distributions made against it
for (NonAppliedDistribution nonAppliedDistribution : nonAppliedDistributions) {
amount = amount.add(nonAppliedDistribution.getFinancialDocumentLineAmount());
}
return amount;
}
/**
* Sets the documentHeader attribute value.
* @param documentHeader.
*/
public FinancialSystemDocumentHeader getDocumentHeader() {
return documentHeader;
}
/**
* Sets the documentHeader attribute value.
* @param documentHeader.
*/
public void setDocumentHeader(FinancialSystemDocumentHeader documentHeader) {
this.documentHeader = documentHeader;
}
}