/*
* 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.sql.Date;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.kuali.kfs.sys.batch.FlatFileTransactionInformation;
import org.kuali.kfs.sys.businessobject.Bank;
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 Lockbox extends PersistableBusinessObjectBase implements Comparable<Lockbox> {
private Long invoiceSequenceNumber; //a unique number assigned to the invoice/payment processed.
private String lockboxNumber; //a unique number assigned to each processing organization.
private String customerNumber; //customer number.
private String financialDocumentReferenceInvoiceNumber; //document number of the invoice being processed.
private Date billingDate; //the date when the customer was billed.
private KualiDecimal invoiceTotalAmount; //the total amount an invoice was billed for.
private KualiDecimal invoicePaidOrAppliedAmount; //the amount paid by the customer.
private Date scannedInvoiceDate; //the date when the customer paid the invoice.
private String customerPaymentMediumCode; //Cash/Check/Credit. It will always be check for lockbox.
private Date processedInvoiceDate; //the date when the invoices/payments were processed.
private Integer batchSequenceNumber; //a batch of invoices/payments processed.
private String proxyInitiator;
private String bankCode; //a unique code used to identify the bank associated with this lockbox.
private KualiDecimal headerTransactionBatchTotal;
private Integer headerTransactionBatchCount;
private List<LockboxDetail> lockboxDetails;
private FlatFileTransactionInformation fileTransactionInformation;
private PaymentMedium customerPaymentMedium;
private Bank bank;
/**
* Default constructor.
*/
public Lockbox() {
lockboxDetails = new ArrayList<LockboxDetail>();
}
/**
* Gets the invoiceSequenceNumber attribute.
*
* @return Returns the invoiceSequenceNumber
*
*/
public Long getInvoiceSequenceNumber() {
return invoiceSequenceNumber;
}
/**
* Sets the invoiceSequenceNumber attribute.
*
* @param invoiceSequenceNumber The invoiceSequenceNumber to set.
*
*/
public void setInvoiceSequenceNumber(Long invoiceSequenceNumber) {
this.invoiceSequenceNumber = invoiceSequenceNumber;
}
/**
* Gets the lockboxNumber attribute.
*
* @return Returns the lockboxNumber
*
*/
public String getLockboxNumber() {
return lockboxNumber;
}
/**
* Sets the lockboxNumber attribute.
*
* @param lockboxNumber The lockboxNumber to set.
*
*/
public void setLockboxNumber(String lockboxNumber) {
this.lockboxNumber = lockboxNumber;
}
/**
* 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 financialDocumentReferenceInvoiceNumber attribute.
*
* @return Returns the financialDocumentReferenceInvoiceNumber
*
*/
public String getFinancialDocumentReferenceInvoiceNumber() {
return financialDocumentReferenceInvoiceNumber;
}
/**
* Sets the financialDocumentReferenceInvoiceNumber attribute.
*
* @param financialDocumentReferenceInvoiceNumber The financialDocumentReferenceInvoiceNumber to set.
*
*/
public void setFinancialDocumentReferenceInvoiceNumber(String financialDocumentReferenceInvoiceNumber) {
this.financialDocumentReferenceInvoiceNumber = financialDocumentReferenceInvoiceNumber;
}
/**
* Gets the billingDate attribute.
*
* @return Returns the billingDate
*
*/
public Date getBillingDate() {
return billingDate;
}
/**
* Sets the billingDate attribute.
*
* @param billingDate The billingDate to set.
*
*/
public void setBillingDate(Date billingDate) {
this.billingDate = billingDate;
}
/**
* Gets the invoiceTotalAmount attribute.
*
* @return Returns the invoiceTotalAmount
*
*/
public KualiDecimal getInvoiceTotalAmount() {
return invoiceTotalAmount;
}
/**
* Sets the invoiceTotalAmount attribute.
*
* @param invoiceTotalAmount The invoiceTotalAmount to set.
*
*/
public void setInvoiceTotalAmount(KualiDecimal invoiceTotalAmount) {
this.invoiceTotalAmount = invoiceTotalAmount;
}
/**
* Gets the invoicePaidOrAppliedAmount attribute.
*
* @return Returns the invoicePaidOrAppliedAmount
*
*/
public KualiDecimal getInvoicePaidOrAppliedAmount() {
return invoicePaidOrAppliedAmount;
}
/**
* Sets the invoicePaidOrAppliedAmount attribute.
*
* @param invoicePaidOrAppliedAmount The invoicePaidOrAppliedAmount to set.
*
*/
public void setInvoicePaidOrAppliedAmount(KualiDecimal invoicePaidOrAppliedAmount) {
this.invoicePaidOrAppliedAmount = invoicePaidOrAppliedAmount;
}
/**
* Gets the scannedInvoiceDate attribute.
*
* @return Returns the scannedInvoiceDate
*
*/
public Date getScannedInvoiceDate() {
return scannedInvoiceDate;
}
/**
* Sets the scannedInvoiceDate attribute.
*
* @param scannedInvoiceDate The scannedInvoiceDate to set.
*
*/
public void setScannedInvoiceDate(Date scannedInvoiceDate) {
this.scannedInvoiceDate = scannedInvoiceDate;
}
/**
* Gets the customerPaymentMediumCode attribute.
*
* @return Returns the customerPaymentMediumCode
*
*/
public String getCustomerPaymentMediumCode() {
return customerPaymentMediumCode;
}
/**
* Sets the customerPaymentMediumCode attribute.
*
* @param customerPaymentMediumCode The customerPaymentMediumCode to set.
*
*/
public void setCustomerPaymentMediumCode(String customerPaymentMediumCode) {
this.customerPaymentMediumCode = customerPaymentMediumCode;
}
/**
* Gets the processedInvoiceDate attribute.
*
* @return Returns the processedInvoiceDate
*
*/
public Date getProcessedInvoiceDate() {
return processedInvoiceDate;
}
/**
* Sets the processedInvoiceDate attribute.
*
* @param processedInvoiceDate The processedInvoiceDate to set.
*
*/
public void setProcessedInvoiceDate(Date processedInvoiceDate) {
this.processedInvoiceDate = processedInvoiceDate;
}
/**
* Gets the batchSequenceNumber attribute.
*
* @return Returns the batchSequenceNumber
*
*/
public Integer getBatchSequenceNumber() {
return batchSequenceNumber;
}
/**
* Sets the batchSequenceNumber attribute.
*
* @param batchSequenceNumber The batchSequenceNumber to set.
*
*/
public void setBatchSequenceNumber(Integer batchSequenceNumber) {
this.batchSequenceNumber = batchSequenceNumber;
}
/**
* Gets the customerPaymentMedium attribute.
*
* @return Returns the customerPaymentMedium
*
*/
public PaymentMedium getCustomerPaymentMedium() {
return customerPaymentMedium;
}
/**
* Sets the customerPaymentMedium attribute.
*
* @param customerPaymentMedium The customerPaymentMedium to set.
* @deprecated
*/
@Deprecated
public void setCustomerPaymentMedium(PaymentMedium customerPaymentMedium) {
this.customerPaymentMedium = customerPaymentMedium;
}
@Override
public int compareTo(Lockbox lockbox) {
if (lockbox == null) {
return -1;
}
if (org.springframework.util.ObjectUtils.nullSafeEquals(this.getBatchSequenceNumber(), lockbox.getBatchSequenceNumber())) {
if (org.springframework.util.ObjectUtils.nullSafeEquals(this.getProcessedInvoiceDate(), lockbox.getProcessedInvoiceDate())) {
return 0;
}
}
return -1;
}
/**
* @see org.kuali.rice.krad.bo.BusinessObjectBase#toStringMapper()
*/
@SuppressWarnings("unchecked")
protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
LinkedHashMap m = new LinkedHashMap();
if (this.invoiceSequenceNumber != null) {
m.put("invoiceSequenceNumber", this.invoiceSequenceNumber.toString());
}
return m;
}
/**
*
* This method...
* @return
*/
public String getProxyInitiator() {
return proxyInitiator;
}
/**
*
* This method...
* @param proxyInitiator
*/
public void setProxyInitiator(String proxyInitiator) {
this.proxyInitiator = proxyInitiator;
}
/**
* Gets the bankCode attribute.
* @return Returns the bankCode.
*/
public String getBankCode() {
return bankCode;
}
/**
* Sets the bankCode attribute value.
* @param bankCode The bankCode to set.
*/
public void setBankCode(String bankCode) {
this.bankCode = bankCode;
}
public Bank getBank() {
return bank;
}
public void setBank(Bank bank) {
this.bank = bank;
}
public List<LockboxDetail> getLockboxDetails() {
return lockboxDetails;
}
public void setLockboxDetails(List<LockboxDetail> lockboxDetails) {
this.lockboxDetails = lockboxDetails;
}
public KualiDecimal getHeaderTransactionBatchTotal() {
return headerTransactionBatchTotal;
}
public void setHeaderTransactionBatchTotal(KualiDecimal headerTransactionBatchTotal) {
this.headerTransactionBatchTotal = headerTransactionBatchTotal;
}
public Integer getHeaderTransactionBatchCount() {
return headerTransactionBatchCount;
}
public void setHeaderTransactionBatchCount(Integer headerTransactionBatchCount) {
this.headerTransactionBatchCount = headerTransactionBatchCount;
}
public FlatFileTransactionInformation getFlatFileTransactionInformation() {
if (fileTransactionInformation == null ) {
this.fileTransactionInformation = new FlatFileTransactionInformation(getLockboxNumber());
}
return fileTransactionInformation;
}
}