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.document.web.struts;
017
018 import java.util.ArrayList;
019 import java.util.List;
020 import java.util.Map;
021
022 import org.kuali.kfs.fp.businessobject.Check;
023 import org.kuali.kfs.fp.businessobject.CheckBase;
024 import org.kuali.kfs.fp.businessobject.CoinDetail;
025 import org.kuali.kfs.fp.businessobject.CurrencyDetail;
026 import org.kuali.kfs.fp.businessobject.DepositWizardCashieringCheckHelper;
027 import org.kuali.kfs.fp.businessobject.DepositWizardHelper;
028 import org.kuali.kfs.fp.businessobject.format.CashReceiptDepositTypeFormatter;
029 import org.kuali.kfs.fp.document.CashManagementDocument;
030 import org.kuali.kfs.fp.document.CashReceiptDocument;
031 import org.kuali.kfs.sys.KFSConstants;
032 import org.kuali.kfs.sys.businessobject.Bank;
033 import org.kuali.kfs.sys.context.SpringContext;
034 import org.kuali.kfs.sys.service.BankService;
035 import org.kuali.rice.kns.web.struts.form.KualiForm;
036
037 /**
038 * This class is the action form for the deposit document wizard.
039 */
040 public class DepositWizardForm extends KualiForm {
041 private String cashDrawerCampusCode;
042 private String cashManagementDocId;
043
044 private List depositableCashReceipts;
045 private List depositWizardHelpers;
046 private List<Check> depositableCashieringChecks;
047 private transient List<DepositWizardCashieringCheckHelper> depositWizardCashieringCheckHelpers;
048 private List<CashReceiptDocument> checkFreeCashReceipts;
049
050 // Deposit fields
051 private Bank bank;
052 private String bankCode;
053
054 private String depositTypeCode;
055 private String depositTicketNumber;
056
057 private CurrencyDetail currencyDetail;
058 private CoinDetail coinDetail;
059
060 // carried over editing modes and document actions to make the bank tags happy
061 protected Map editingMode;
062 protected Map documentActions;
063
064 /**
065 * Constructs a DepositWizardForm class instance.
066 */
067 public DepositWizardForm() {
068 depositableCashReceipts = new ArrayList();
069 depositableCashieringChecks = new ArrayList<Check>();
070 depositWizardHelpers = new ArrayList();
071 depositWizardCashieringCheckHelpers = new ArrayList<DepositWizardCashieringCheckHelper>();
072
073 setFormatterType("depositTypeCode", CashReceiptDepositTypeFormatter.class);
074 setDefautBankCode();
075 }
076
077 /**
078 * Sets the bank code for a new deposit to the setup default for the Cash Management document.
079 */
080 public void setDefautBankCode() {
081 Bank defaultBank = SpringContext.getBean(BankService.class).getDefaultBankByDocType(KFSConstants.FinancialDocumentTypeCodes.CASH_MANAGEMENT);
082 if (defaultBank != null) {
083 this.bankCode = defaultBank.getBankCode();
084 this.bank = defaultBank;
085 }
086 }
087
088 /**
089 * @return current value of cashManagementDocId.
090 */
091 public String getCashManagementDocId() {
092 return cashManagementDocId;
093 }
094
095 /**
096 * Sets the cashManagementDocId attribute value.
097 *
098 * @param cashManagementDocId The cashManagementDocId to set.
099 */
100 public void setCashManagementDocId(String cashManagementDocId) {
101 this.cashManagementDocId = cashManagementDocId;
102 }
103
104
105 /**
106 * @param depositTypeCode
107 */
108 public void setDepositTypeCode(String depositTypeCode) {
109 this.depositTypeCode = depositTypeCode;
110 }
111
112 /**
113 * @return depositTypeCode
114 */
115 public String getDepositTypeCode() {
116 return depositTypeCode;
117 }
118
119 /**
120 * Hack to make the translated depositTypeCode more readily available to the JSP
121 *
122 * @return translated depositTypeCode
123 */
124 public String getDepositTypeString() {
125 CashReceiptDepositTypeFormatter f = new CashReceiptDepositTypeFormatter();
126 return (String) f.format(getDepositTypeCode());
127 }
128
129
130 /**
131 * @return List
132 */
133 public List getDepositableCashReceipts() {
134 return depositableCashReceipts;
135 }
136
137 /**
138 * @param cashReceiptsReadyForDeposit
139 */
140 public void setDepositableCashReceipts(List cashReceiptsReadyForDeposit) {
141 this.depositableCashReceipts = cashReceiptsReadyForDeposit;
142 }
143
144 public CashReceiptDocument getDepositableCashReceipt(int i) {
145 while (depositableCashReceipts.size() <= i) {
146 depositableCashReceipts.add(new CashReceiptDocument());
147 }
148
149 return (CashReceiptDocument) depositableCashReceipts.get(i);
150 }
151
152 /**
153 * @return ArrayList
154 */
155 public List getDepositWizardHelpers() {
156 return depositWizardHelpers;
157 }
158
159 /**
160 * @param depositWizardHelpers
161 */
162 public void setDepositWizardHelpers(List depositWizardHelpers) {
163 this.depositWizardHelpers = depositWizardHelpers;
164 }
165
166 /**
167 * This method retrieves whether the cash receipt ID at the specified index will be selected or not.
168 *
169 * @param index
170 * @return DepositWizarHelper
171 */
172 public DepositWizardHelper getDepositWizardHelper(int index) {
173 while (this.depositWizardHelpers.size() <= index) {
174 this.depositWizardHelpers.add(new DepositWizardHelper());
175 // default to no check
176 }
177 return (DepositWizardHelper) this.depositWizardHelpers.get(index);
178 }
179
180
181 /**
182 * @return current value of cashDrawerCampusCode.
183 */
184 public String getCashDrawerCampusCode() {
185 return cashDrawerCampusCode;
186 }
187
188 /**
189 * Sets the cashDrawerCampusCode attribute value.
190 *
191 * @param cashDrawerCampusCode The cashDrawerCampusCode to set.
192 */
193 public void setCashDrawerCampusCode(String cashDrawerVerificationUnit) {
194 this.cashDrawerCampusCode = cashDrawerVerificationUnit;
195 }
196
197
198 /**
199 * @return current value of bankCode.
200 */
201 public String getBankCode() {
202 return bankCode;
203 }
204
205 /**
206 * Sets the bankCode attribute value.
207 *
208 * @param bankCode The bankCode to set.
209 */
210 public void setBankCode(String bankCode) {
211 this.bankCode = bankCode;
212 }
213
214 /**
215 * @return current value of depositTicketNumber.
216 */
217 public String getDepositTicketNumber() {
218 return depositTicketNumber;
219 }
220
221 /**
222 * Sets the depositTicketNumber attribute value.
223 *
224 * @param depositTicketNumber The depositTicketNumber to set.
225 */
226 public void setDepositTicketNumber(String depositTicketNumber) {
227 this.depositTicketNumber = depositTicketNumber;
228 }
229
230 /**
231 * @return current value of bank.
232 */
233 public Bank getBank() {
234 return bank;
235 }
236
237 /**
238 * Sets the bank attribute value.
239 *
240 * @param bank The bank to set.
241 */
242 public void setBank(Bank bank) {
243 this.bank = bank;
244 }
245
246 /**
247 * Gets the coinDetail attribute.
248 *
249 * @return Returns the coinDetail.
250 */
251 public CoinDetail getCoinDetail() {
252 return coinDetail;
253 }
254
255
256 /**
257 * Sets the coinDetail attribute value.
258 *
259 * @param coinDetail The coinDetail to set.
260 */
261 public void setCoinDetail(CoinDetail coinDetail) {
262 this.coinDetail = coinDetail;
263 }
264
265
266 /**
267 * Gets the currencyDetail attribute.
268 *
269 * @return Returns the currencyDetail.
270 */
271 public CurrencyDetail getCurrencyDetail() {
272 return currencyDetail;
273 }
274
275
276 /**
277 * Sets the currencyDetail attribute value.
278 *
279 * @param currencyDetail The currencyDetail to set.
280 */
281 public void setCurrencyDetail(CurrencyDetail currencyDetail) {
282 this.currencyDetail = currencyDetail;
283 }
284
285 /**
286 * Explains if this deposit form is for creating a final deposit or not
287 *
288 * @return true if this deposit form will create a final deposit, false if it will create an interim
289 */
290 public boolean isDepositFinal() {
291 return (depositTypeCode.equals(KFSConstants.DepositConstants.DEPOSIT_TYPE_FINAL));
292 }
293
294 /**
295 * Gets the depositableCashieringChecks attribute.
296 *
297 * @return Returns the depositableCashieringChecks.
298 */
299 public List<Check> getDepositableCashieringChecks() {
300 return depositableCashieringChecks;
301 }
302
303 /**
304 * Sets the depositableCashieringChecks attribute value.
305 *
306 * @param depositableCashieringChecks The depositableCashieringChecks to set.
307 */
308 public void setDepositableCashieringChecks(List<Check> depositableCashieringChecks) {
309 this.depositableCashieringChecks = depositableCashieringChecks;
310 }
311
312 /**
313 * Return the deposit cashiering check at the given index
314 *
315 * @param index index of check to retrieve
316 * @return a check
317 */
318 public Check getDepositableCashieringCheck(int index) {
319 while (this.depositableCashieringChecks.size() <= index) {
320 this.depositableCashieringChecks.add(new CheckBase());
321 }
322 return this.depositableCashieringChecks.get(index);
323 }
324
325 /**
326 * Gets the depositWizardCashieringCheckHelpers attribute.
327 *
328 * @return Returns the depositWizardCashieringCheckHelpers.
329 */
330 public List<DepositWizardCashieringCheckHelper> getDepositWizardCashieringCheckHelpers() {
331 return depositWizardCashieringCheckHelpers;
332 }
333
334 /**
335 * Gets the checkFreeCashReceipts attribute.
336 *
337 * @return Returns the checkFreeCashReceipts.
338 */
339 public List<CashReceiptDocument> getCheckFreeCashReceipts() {
340 return checkFreeCashReceipts;
341 }
342
343
344 /**
345 * Sets the checkFreeCashReceipts attribute value.
346 *
347 * @param checkFreeCashReceipts The checkFreeCashReceipts to set.
348 */
349 public void setCheckFreeCashReceipts(List<CashReceiptDocument> checkFreeCashReceipts) {
350 this.checkFreeCashReceipts = checkFreeCashReceipts;
351 }
352
353 /**
354 * Retreive a single check free cash receipt
355 *
356 * @param index the index of the cash receipt
357 * @return a cash receipt document
358 */
359 public CashReceiptDocument getCheckFreeCashReceipt(int index) {
360 while (this.checkFreeCashReceipts.size() <= index) {
361 this.checkFreeCashReceipts.add(new CashReceiptDocument());
362 }
363 return this.checkFreeCashReceipts.get(index);
364 }
365
366 /**
367 * Sets the depositWizardCashieringCheckHelpers attribute value.
368 *
369 * @param depositWizardCashieringCheckHelpers The depositWizardCashieringCheckHelpers to set.
370 */
371 public void setDepositWizardCashieringCheckHelpers(List<DepositWizardCashieringCheckHelper> depositWizardCashieringCheckHelpers) {
372 this.depositWizardCashieringCheckHelpers = depositWizardCashieringCheckHelpers;
373 }
374
375 public DepositWizardCashieringCheckHelper getDepositWizardCashieringCheckHelper(int index) {
376 while (this.depositWizardCashieringCheckHelpers.size() <= index) {
377 this.depositWizardCashieringCheckHelpers.add(new DepositWizardCashieringCheckHelper());
378 }
379 return this.depositWizardCashieringCheckHelpers.get(index);
380 }
381
382 /**
383 * Gets the documentActions attribute.
384 * @return Returns the documentActions.
385 */
386 public Map getDocumentActions() {
387 return documentActions;
388 }
389
390 /**
391 * Sets the documentActions attribute value.
392 * @param documentActions The documentActions to set.
393 */
394 public void setDocumentActions(Map documentActions) {
395 this.documentActions = documentActions;
396 }
397
398 /**
399 * Gets the editingMode attribute.
400 * @return Returns the editingMode.
401 */
402 public Map getEditingMode() {
403 return editingMode;
404 }
405
406 /**
407 * Sets the editingMode attribute value.
408 * @param editingMode The editingMode to set.
409 */
410 public void setEditingMode(Map editingMode) {
411 this.editingMode = editingMode;
412 }
413 }