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.fp.businessobject;
017
018 import java.sql.Date;
019 import java.util.LinkedHashMap;
020
021 import org.apache.commons.lang.StringUtils;
022 import org.apache.commons.lang.time.DateUtils;
023 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
024 import org.kuali.rice.kns.util.KualiDecimal;
025 import org.kuali.rice.kns.util.NumberUtils;
026
027 /**
028 * This class represents a check in the system. It is a generalized check business object that will be used by the Cash Receipts
029 * document, the Cashier document, etc.
030 */
031
032 public class CheckBase extends PersistableBusinessObjectBase implements Check {
033 private String checkNumber;
034 private Date checkDate;
035 private String description;
036 private Integer sequenceId;
037 private KualiDecimal amount;
038 private String documentNumber;
039 private String financialDocumentTypeCode;
040 private String cashieringRecordSource;
041 private Integer financialDocumentDepositLineNumber;
042
043 /**
044 * Constructs a CheckBase business object.
045 */
046 public CheckBase() {
047 super();
048 this.sequenceId = new Integer(1);
049 this.amount = KualiDecimal.ZERO;
050 }
051
052 /**
053 * Gets the checkDate attribute.
054 *
055 * @return Returns the checkDate.
056 */
057 public Date getCheckDate() {
058 return checkDate;
059 }
060
061 /**
062 * Sets the checkDate attribute value.
063 *
064 * @param checkDate The checkDate to set.
065 */
066 public void setCheckDate(Date checkDate) {
067 this.checkDate = checkDate;
068 }
069
070 /**
071 * Gets the checkNumber attribute.
072 *
073 * @return Returns the checkNumber.
074 */
075 public String getCheckNumber() {
076 return checkNumber;
077 }
078
079 /**
080 * Sets the checkNumber attribute value.
081 *
082 * @param checkNumber The checkNumber to set.
083 */
084 public void setCheckNumber(String checkNumber) {
085 this.checkNumber = checkNumber;
086 }
087
088 /**
089 * Gets the description attribute.
090 *
091 * @return Returns the description.
092 */
093 public String getDescription() {
094 return description;
095 }
096
097 /**
098 * Sets the description attribute value.
099 *
100 * @param description The description to set.
101 */
102 public void setDescription(String description) {
103 this.description = description;
104 }
105
106 /**
107 * Gets the sequenceId attribute.
108 *
109 * @return Returns the sequenceId.
110 */
111 public Integer getSequenceId() {
112 return sequenceId;
113 }
114
115 /**
116 * Sets the sequenceId attribute value.
117 *
118 * @param sequenceId The sequenceId to set.
119 */
120 public void setSequenceId(Integer sequenceId) {
121 this.sequenceId = sequenceId;
122 }
123
124 /**
125 * Gets the amount attribute.
126 *
127 * @return Returns the amount.
128 */
129 public KualiDecimal getAmount() {
130 return amount;
131 }
132
133 /**
134 * Sets the amount attribute value.
135 *
136 * @param amount The amount to set.
137 */
138 public void setAmount(KualiDecimal amount) {
139 this.amount = amount;
140 }
141
142
143 /**
144 * Gets the documentNumber attribute.
145 *
146 * @return Returns the documentNumber.
147 */
148 public String getDocumentNumber() {
149 return documentNumber;
150 }
151
152 /**
153 * Sets the documentNumber attribute value.
154 *
155 * @param documentNumber The documentNumber to set.
156 */
157 public void setDocumentNumber(String documentNumber) {
158 this.documentNumber = documentNumber;
159 }
160
161 /**
162 * Gets the cashieringRecordSource attribute.
163 *
164 * @return Returns the cashieringRecordSource.
165 */
166 public String getCashieringRecordSource() {
167 return cashieringRecordSource;
168 }
169
170 /**
171 * Sets the cashieringRecordSource attribute value.
172 *
173 * @param cashieringRecordSource The cashieringRecordSource to set.
174 */
175 public void setCashieringRecordSource(String financialDocumentColumnTypeCode) {
176 this.cashieringRecordSource = financialDocumentColumnTypeCode;
177 }
178
179 /**
180 * Gets the financialDocumentTypeCode attribute.
181 *
182 * @return Returns the financialDocumentTypeCode.
183 */
184 public String getFinancialDocumentTypeCode() {
185 return financialDocumentTypeCode;
186 }
187
188 /**
189 * Sets the financialDocumentTypeCode attribute value.
190 *
191 * @param financialDocumentTypeCode The financialDocumentTypeCode to set.
192 */
193 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
194 this.financialDocumentTypeCode = financialDocumentTypeCode;
195 }
196
197 /**
198 * Gets the financialDocumentDepositLineNumber attribute.
199 *
200 * @return Returns the financialDocumentDepositLineNumber.
201 */
202 public Integer getFinancialDocumentDepositLineNumber() {
203 return financialDocumentDepositLineNumber;
204 }
205
206 /**
207 * Sets the financialDocumentDepositLineNumber attribute value.
208 *
209 * @param financialDocumentDepositLineNumber The financialDocumentDepositLineNumber to set.
210 */
211 public void setFinancialDocumentDepositLineNumber(Integer financialDocumentDepositLineNumber) {
212 this.financialDocumentDepositLineNumber = financialDocumentDepositLineNumber;
213 }
214
215 /**
216 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
217 */
218 protected LinkedHashMap toStringMapper() {
219 LinkedHashMap m = new LinkedHashMap();
220
221 m.put("sequenceId", this.sequenceId);
222 m.put("checkNumber", this.checkNumber);
223 m.put("amount", this.amount);
224 m.put("checkDate", this.checkDate);
225 m.put("financialDocumentDepositLineNumber", this.financialDocumentDepositLineNumber);
226 m.put("description", this.description);
227 m.put("documentHeaderId", this.documentNumber);
228 m.put("financialDocumentTypeCode", this.financialDocumentTypeCode);
229 m.put("cashieringRecordSource", this.cashieringRecordSource);
230
231 return m;
232 }
233
234
235 /**
236 * @see org.kuali.kfs.fp.businessobject.Check#isLike(org.kuali.kfs.fp.businessobject.Check)
237 */
238 public boolean isLike(Check other) {
239 boolean like = false;
240
241 if (StringUtils.equals(checkNumber, other.getCheckNumber())) {
242 if (StringUtils.equals(description, other.getDescription())) {
243 if (StringUtils.equals(financialDocumentTypeCode, other.getFinancialDocumentTypeCode()) && StringUtils.equals(cashieringRecordSource, other.getCashieringRecordSource())) {
244 if (StringUtils.equals(documentNumber, other.getDocumentNumber())) {
245 if (NumberUtils.equals(sequenceId, other.getSequenceId())) {
246 if (NumberUtils.equals(financialDocumentDepositLineNumber, other.getFinancialDocumentDepositLineNumber())) {
247
248 if (DateUtils.isSameDay(checkDate, other.getCheckDate())) {
249 if ((amount != null) && amount.equals(other.getAmount())) {
250 like = true;
251 }
252 }
253 }
254 }
255 }
256 }
257 }
258 }
259
260 return like;
261 }
262 }