001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.ar.businessobject;
017
018 import java.sql.Date;
019 import java.util.LinkedHashMap;
020
021 import org.kuali.kfs.sys.businessobject.Bank;
022 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
023 import org.kuali.rice.kns.util.KualiDecimal;
024 import org.kuali.rice.kns.util.ObjectUtils;
025
026 /**
027 * @author Kuali Nervous System Team (kualidev@oncourse.iu.edu)
028 */
029 public class Lockbox extends PersistableBusinessObjectBase implements Comparable<Lockbox> {
030
031 private Long invoiceSequenceNumber; //a unique number assigned to the invoice/payment processed.
032 private String lockboxNumber; //a unique number assigned to each processing organization.
033 private String customerNumber; //customer number.
034 private String financialDocumentReferenceInvoiceNumber; //document number of the invoice being processed.
035 private Date billingDate; //the date when the customer was billed.
036 private KualiDecimal invoiceTotalAmount; //the total amount an invoice was billed for.
037 private KualiDecimal invoicePaidOrAppliedAmount; //the amount paid by the customer.
038 private Date scannedInvoiceDate; //the date when the customer paid the invoice.
039 private String customerPaymentMediumCode; //Cash/Check/Credit. It will always be check for lockbox.
040 private Date processedInvoiceDate; //the date when the invoices/payments were processed.
041 private Integer batchSequenceNumber; //a batch of invoices/payments processed.
042 private String proxyInitiator;
043 private String bankCode; //a unique code used to identify the bank associated with this lockbox.
044
045 private PaymentMedium customerPaymentMedium;
046 private Bank bank;
047
048 /**
049 * Default constructor.
050 */
051 public Lockbox() {
052
053 }
054
055 /**
056 * Gets the invoiceSequenceNumber attribute.
057 *
058 * @return Returns the invoiceSequenceNumber
059 *
060 */
061 public Long getInvoiceSequenceNumber() {
062 return invoiceSequenceNumber;
063 }
064
065 /**
066 * Sets the invoiceSequenceNumber attribute.
067 *
068 * @param invoiceSequenceNumber The invoiceSequenceNumber to set.
069 *
070 */
071 public void setInvoiceSequenceNumber(Long invoiceSequenceNumber) {
072 this.invoiceSequenceNumber = invoiceSequenceNumber;
073 }
074
075
076 /**
077 * Gets the lockboxNumber attribute.
078 *
079 * @return Returns the lockboxNumber
080 *
081 */
082 public String getLockboxNumber() {
083 return lockboxNumber;
084 }
085
086 /**
087 * Sets the lockboxNumber attribute.
088 *
089 * @param lockboxNumber The lockboxNumber to set.
090 *
091 */
092 public void setLockboxNumber(String lockboxNumber) {
093 this.lockboxNumber = lockboxNumber;
094 }
095
096
097 /**
098 * Gets the customerNumber attribute.
099 *
100 * @return Returns the customerNumber
101 *
102 */
103 public String getCustomerNumber() {
104 return customerNumber;
105 }
106
107 /**
108 * Sets the customerNumber attribute.
109 *
110 * @param customerNumber The customerNumber to set.
111 *
112 */
113 public void setCustomerNumber(String customerNumber) {
114 this.customerNumber = customerNumber;
115 }
116
117
118 /**
119 * Gets the financialDocumentReferenceInvoiceNumber attribute.
120 *
121 * @return Returns the financialDocumentReferenceInvoiceNumber
122 *
123 */
124 public String getFinancialDocumentReferenceInvoiceNumber() {
125 return financialDocumentReferenceInvoiceNumber;
126 }
127
128 /**
129 * Sets the financialDocumentReferenceInvoiceNumber attribute.
130 *
131 * @param financialDocumentReferenceInvoiceNumber The financialDocumentReferenceInvoiceNumber to set.
132 *
133 */
134 public void setFinancialDocumentReferenceInvoiceNumber(String financialDocumentReferenceInvoiceNumber) {
135 this.financialDocumentReferenceInvoiceNumber = financialDocumentReferenceInvoiceNumber;
136 }
137
138
139 /**
140 * Gets the billingDate attribute.
141 *
142 * @return Returns the billingDate
143 *
144 */
145 public Date getBillingDate() {
146 return billingDate;
147 }
148
149 /**
150 * Sets the billingDate attribute.
151 *
152 * @param billingDate The billingDate to set.
153 *
154 */
155 public void setBillingDate(Date billingDate) {
156 this.billingDate = billingDate;
157 }
158
159
160 /**
161 * Gets the invoiceTotalAmount attribute.
162 *
163 * @return Returns the invoiceTotalAmount
164 *
165 */
166 public KualiDecimal getInvoiceTotalAmount() {
167 return invoiceTotalAmount;
168 }
169
170 /**
171 * Sets the invoiceTotalAmount attribute.
172 *
173 * @param invoiceTotalAmount The invoiceTotalAmount to set.
174 *
175 */
176 public void setInvoiceTotalAmount(KualiDecimal invoiceTotalAmount) {
177 this.invoiceTotalAmount = invoiceTotalAmount;
178 }
179
180
181 /**
182 * Gets the invoicePaidOrAppliedAmount attribute.
183 *
184 * @return Returns the invoicePaidOrAppliedAmount
185 *
186 */
187 public KualiDecimal getInvoicePaidOrAppliedAmount() {
188 return invoicePaidOrAppliedAmount;
189 }
190
191 /**
192 * Sets the invoicePaidOrAppliedAmount attribute.
193 *
194 * @param invoicePaidOrAppliedAmount The invoicePaidOrAppliedAmount to set.
195 *
196 */
197 public void setInvoicePaidOrAppliedAmount(KualiDecimal invoicePaidOrAppliedAmount) {
198 this.invoicePaidOrAppliedAmount = invoicePaidOrAppliedAmount;
199 }
200
201
202 /**
203 * Gets the scannedInvoiceDate attribute.
204 *
205 * @return Returns the scannedInvoiceDate
206 *
207 */
208 public Date getScannedInvoiceDate() {
209 return scannedInvoiceDate;
210 }
211
212 /**
213 * Sets the scannedInvoiceDate attribute.
214 *
215 * @param scannedInvoiceDate The scannedInvoiceDate to set.
216 *
217 */
218 public void setScannedInvoiceDate(Date scannedInvoiceDate) {
219 this.scannedInvoiceDate = scannedInvoiceDate;
220 }
221
222
223 /**
224 * Gets the customerPaymentMediumCode attribute.
225 *
226 * @return Returns the customerPaymentMediumCode
227 *
228 */
229 public String getCustomerPaymentMediumCode() {
230 return customerPaymentMediumCode;
231 }
232
233 /**
234 * Sets the customerPaymentMediumCode attribute.
235 *
236 * @param customerPaymentMediumCode The customerPaymentMediumCode to set.
237 *
238 */
239 public void setCustomerPaymentMediumCode(String customerPaymentMediumCode) {
240 this.customerPaymentMediumCode = customerPaymentMediumCode;
241 }
242
243
244 /**
245 * Gets the processedInvoiceDate attribute.
246 *
247 * @return Returns the processedInvoiceDate
248 *
249 */
250 public Date getProcessedInvoiceDate() {
251 return processedInvoiceDate;
252 }
253
254 /**
255 * Sets the processedInvoiceDate attribute.
256 *
257 * @param processedInvoiceDate The processedInvoiceDate to set.
258 *
259 */
260 public void setProcessedInvoiceDate(Date processedInvoiceDate) {
261 this.processedInvoiceDate = processedInvoiceDate;
262 }
263
264
265 /**
266 * Gets the batchSequenceNumber attribute.
267 *
268 * @return Returns the batchSequenceNumber
269 *
270 */
271 public Integer getBatchSequenceNumber() {
272 return batchSequenceNumber;
273 }
274
275 /**
276 * Sets the batchSequenceNumber attribute.
277 *
278 * @param batchSequenceNumber The batchSequenceNumber to set.
279 *
280 */
281 public void setBatchSequenceNumber(Integer batchSequenceNumber) {
282 this.batchSequenceNumber = batchSequenceNumber;
283 }
284
285
286 /**
287 * Gets the customerPaymentMedium attribute.
288 *
289 * @return Returns the customerPaymentMedium
290 *
291 */
292 public PaymentMedium getCustomerPaymentMedium() {
293 return customerPaymentMedium;
294 }
295
296 /**
297 * Sets the customerPaymentMedium attribute.
298 *
299 * @param customerPaymentMedium The customerPaymentMedium to set.
300 * @deprecated
301 */
302 public void setCustomerPaymentMedium(PaymentMedium customerPaymentMedium) {
303 this.customerPaymentMedium = customerPaymentMedium;
304 }
305
306
307 public int compareTo(Lockbox lockbox) {
308 if (lockbox == null) {
309 return -1;
310 }
311 if (ObjectUtils.nullSafeEquals(this.getBatchSequenceNumber(), lockbox.getBatchSequenceNumber())) {
312 if (ObjectUtils.nullSafeEquals(this.getProcessedInvoiceDate(), lockbox.getProcessedInvoiceDate())) {
313 return 0;
314 }
315 }
316 return -1;
317 }
318
319 /**
320 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
321 */
322 @SuppressWarnings("unchecked")
323 protected LinkedHashMap toStringMapper() {
324 LinkedHashMap m = new LinkedHashMap();
325 if (this.invoiceSequenceNumber != null) {
326 m.put("invoiceSequenceNumber", this.invoiceSequenceNumber.toString());
327 }
328 return m;
329 }
330
331 /**
332 *
333 * This method...
334 * @return
335 */
336 public String getProxyInitiator() {
337 return proxyInitiator;
338 }
339
340 /**
341 *
342 * This method...
343 * @param proxyInitiator
344 */
345 public void setProxyInitiator(String proxyInitiator) {
346 this.proxyInitiator = proxyInitiator;
347 }
348
349 /**
350 * Gets the bankCode attribute.
351 * @return Returns the bankCode.
352 */
353 public String getBankCode() {
354 return bankCode;
355 }
356
357 /**
358 * Sets the bankCode attribute value.
359 * @param bankCode The bankCode to set.
360 */
361 public void setBankCode(String bankCode) {
362 this.bankCode = bankCode;
363 }
364
365 public Bank getBank() {
366 return bank;
367 }
368
369 public void setBank(Bank bank) {
370 this.bank = bank;
371 }
372
373 }