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
017 package org.kuali.kfs.fp.businessobject;
018
019 import java.sql.Date;
020 import java.util.ArrayList;
021 import java.util.LinkedHashMap;
022 import java.util.List;
023
024 import org.kuali.kfs.fp.document.CashManagementDocument;
025 import org.kuali.kfs.fp.document.CashReceiptDocument;
026 import org.kuali.kfs.sys.KFSPropertyConstants;
027 import org.kuali.kfs.sys.businessobject.Bank;
028 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
029 import org.kuali.rice.kns.util.KualiDecimal;
030
031
032 /**
033 * This class represents a deposit used in the cash management document
034 */
035 public class Deposit extends PersistableBusinessObjectBase {
036 // primary key
037 private String documentNumber;
038 private Integer financialDocumentDepositLineNumber;
039 // attributes
040 private String depositTypeCode;
041 private Date depositDate;
042 private KualiDecimal depositAmount;
043 private String depositTicketNumber;
044 // related objects and foreign keys
045 private String depositBankCode;
046
047 private CurrencyDetail depositedCurrency;
048 private CoinDetail depositedCoin;
049
050 private Bank bank;
051 private CashManagementDocument cashManagementDocument;
052 private List depositCashReceiptControl;
053
054
055 /**
056 * Default constructor.
057 */
058 public Deposit() {
059 depositCashReceiptControl = new ArrayList();
060 bank = new Bank();
061 }
062
063 /**
064 * Gets the bank attribute.
065 * @return Returns the bank.
066 */
067 public Bank getBank() {
068 return bank;
069 }
070
071 /**
072 * Sets the bank attribute value.
073 * @param bank The bank to set.
074 */
075 public void setBank(Bank bank) {
076 this.bank = bank;
077 }
078
079 /**
080 * @return current value of cashManagementDocument.
081 */
082 public CashManagementDocument getCashManagementDocument() {
083 return cashManagementDocument;
084 }
085
086 /**
087 * Sets the cashManagementDocument attribute value.
088 *
089 * @param cashManagementDocument The cashManagementDocument to set.
090 */
091 public void setCashManagementDocument(CashManagementDocument cashManagementDocument) {
092 this.cashManagementDocument = cashManagementDocument;
093 }
094
095
096 /**
097 * @return current value of depositCashReceiptControl.
098 */
099 public List getDepositCashReceiptControl() {
100 return depositCashReceiptControl;
101 }
102
103 /**
104 * Sets the depositCashReceiptControl attribute value.
105 *
106 * @param depositCashReceiptControl The depositCashReceiptControl to set.
107 */
108 public void setDepositCashReceiptControl(List depositCashReceiptControl) {
109 this.depositCashReceiptControl = depositCashReceiptControl;
110 }
111
112 /**
113 * @return current value of depositAmount.
114 */
115 public KualiDecimal getDepositAmount() {
116 return depositAmount;
117 }
118
119 /**
120 * Sets the depositAmount attribute value.
121 *
122 * @param depositAmount The depositAmount to set.
123 */
124 public void setDepositAmount(KualiDecimal depositAmount) {
125 this.depositAmount = depositAmount;
126 }
127
128
129 /**
130 * @return current value of depositBankCode.
131 */
132 public String getDepositBankCode() {
133 return depositBankCode;
134 }
135
136 /**
137 * Sets the depositBankCode attribute value.
138 *
139 * @param depositBankCode The depositBankCode to set.
140 */
141 public void setDepositBankCode(String depositBankCode) {
142 this.depositBankCode = depositBankCode;
143 }
144
145
146 /**
147 * @return current value of depositDate.
148 */
149 public Date getDepositDate() {
150 return depositDate;
151 }
152
153 /**
154 * Sets the depositDate attribute value.
155 *
156 * @param depositDate The depositDate to set.
157 */
158 public void setDepositDate(Date depositDate) {
159 this.depositDate = depositDate;
160 }
161
162
163 /**
164 * @return current value of depositTicketNumber.
165 */
166 public String getDepositTicketNumber() {
167 return depositTicketNumber;
168 }
169
170 /**
171 * Sets the depositTicketNumber attribute value.
172 *
173 * @param depositTicketNumber The depositTicketNumber to set.
174 */
175 public void setDepositTicketNumber(String depositTicketNumber) {
176 this.depositTicketNumber = depositTicketNumber;
177 }
178
179 /**
180 * @return current value of depositTypeCode, under a different name, to prevent the POJO code from reformatting it
181 */
182 public String getRawDepositTypeCode() {
183 return depositTypeCode;
184 }
185
186 /**
187 * @return current value of depositTypeCode.
188 */
189 public String getDepositTypeCode() {
190 return depositTypeCode;
191 }
192
193 /**
194 * Sets the depositTypeCode attribute value.
195 *
196 * @param depositTypeCode The depositTypeCode to set.
197 */
198 public void setDepositTypeCode(String depositTypeCode) {
199 this.depositTypeCode = depositTypeCode;
200 }
201
202
203 /**
204 * @return current value of financialDocumentDepositLineNumber.
205 */
206 public Integer getFinancialDocumentDepositLineNumber() {
207 return financialDocumentDepositLineNumber;
208 }
209
210 /**
211 * Sets the financialDocumentDepositLineNumber attribute value.
212 *
213 * @param financialDocumentDepositLineNumber The financialDocumentDepositLineNumber to set.
214 */
215 public void setFinancialDocumentDepositLineNumber(Integer financialDocumentDepositLineNumber) {
216 this.financialDocumentDepositLineNumber = financialDocumentDepositLineNumber;
217 }
218
219
220 /**
221 * @return current value of documentNumber.
222 */
223 public String getDocumentNumber() {
224 return documentNumber;
225 }
226
227 /**
228 * Sets the documentNumber attribute value.
229 *
230 * @param documentNumber The documentNumber to set.
231 */
232 public void setDocumentNumber(String documentNumber) {
233 this.documentNumber = documentNumber;
234 }
235
236
237 /**
238 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
239 */
240 @Override
241 protected LinkedHashMap toStringMapper() {
242 LinkedHashMap m = new LinkedHashMap();
243 m.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber());
244 m.put("financialDocumentDepositLineNumber", getFinancialDocumentDepositLineNumber());
245 return m;
246 }
247
248
249 /**
250 * Returns true if this deposit has the same document deposit line number as the passed in Deposit
251 *
252 * @param other
253 * @return true if the given Deposit has primary key values equal to this Deposit
254 */
255 public boolean keysEqual(Deposit other) {
256 boolean keysEqual = false;
257
258 if (getDocumentNumber().equals(other.getDocumentNumber())) {
259 if (getFinancialDocumentDepositLineNumber().equals(other.getFinancialDocumentDepositLineNumber())) {
260 keysEqual = true;
261 }
262 }
263
264 return keysEqual;
265 }
266
267 /**
268 * This method returns whether the given deposit contains the parameter cash receipt document
269 *
270 * @param crDoc the cash receipt document to look for
271 * @return true if the cash receipt document is part of the deposit, false if otherwise
272 */
273 public boolean containsCashReceipt(CashReceiptDocument crDoc) {
274 boolean result = false;
275 for (int i = 0; i < this.getDepositCashReceiptControl().size() && !result; i++) {
276 DepositCashReceiptControl crCtrl = (DepositCashReceiptControl) getDepositCashReceiptControl().get(i);
277 result = crCtrl.getFinancialDocumentCashReceiptNumber().equals(crDoc.getDocumentNumber());
278 }
279 return result;
280 }
281
282 /**
283 * Gets the depositedCoin attribute.
284 *
285 * @return Returns the depositedCoin.
286 */
287 public CoinDetail getDepositedCoin() {
288 return depositedCoin;
289 }
290
291
292 /**
293 * Sets the depositedCoin attribute value.
294 *
295 * @param depositedCoin The depositedCoin to set.
296 */
297 public void setDepositedCoin(CoinDetail depositedCoin) {
298 this.depositedCoin = depositedCoin;
299 }
300
301
302 /**
303 * Gets the depositedCurrency attribute.
304 *
305 * @return Returns the depositedCurrency.
306 */
307 public CurrencyDetail getDepositedCurrency() {
308 return depositedCurrency;
309 }
310
311
312 /**
313 * Sets the depositedCurrency attribute value.
314 *
315 * @param depositedCurrency The depositedCurrency to set.
316 */
317 public void setDepositedCurrency(CurrencyDetail depositedCurrency) {
318 this.depositedCurrency = depositedCurrency;
319 }
320 }