View Javadoc
1   /*
2    * Copyright 2006 The Kuali Foundation
3    * 
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.opensource.org/licenses/ecl2.php
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.kuali.ole.fp.document;
18  
19  import java.util.ArrayList;
20  import java.util.HashMap;
21  import java.util.Iterator;
22  import java.util.List;
23  import java.util.Map;
24  
25  import org.apache.commons.lang.StringUtils;
26  import org.apache.log4j.Logger;
27  import org.kuali.ole.fp.businessobject.CashDrawer;
28  import org.kuali.ole.fp.businessobject.CashieringItemInProcess;
29  import org.kuali.ole.fp.businessobject.CashieringTransaction;
30  import org.kuali.ole.fp.businessobject.Check;
31  import org.kuali.ole.fp.businessobject.Deposit;
32  import org.kuali.ole.fp.document.service.CashManagementService;
33  import org.kuali.ole.fp.service.CashDrawerService;
34  import org.kuali.ole.sys.OLEConstants;
35  import org.kuali.ole.sys.OLEConstants.DepositConstants;
36  import org.kuali.ole.sys.OLEKeyConstants;
37  import org.kuali.ole.sys.OLEPropertyConstants;
38  import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry;
39  import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySequenceHelper;
40  import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail;
41  import org.kuali.ole.sys.context.SpringContext;
42  import org.kuali.ole.sys.document.GeneralLedgerPendingEntrySource;
43  import org.kuali.ole.sys.document.GeneralLedgerPostingDocumentBase;
44  import org.kuali.ole.sys.document.service.AccountingDocumentRuleHelperService;
45  import org.kuali.ole.sys.service.BankService;
46  import org.kuali.ole.sys.service.GeneralLedgerPendingEntryService;
47  import org.kuali.ole.sys.service.UniversityDateService;
48  import org.kuali.rice.core.api.datetime.DateTimeService;
49  import org.kuali.rice.core.api.util.type.KualiDecimal;
50  import org.kuali.rice.kew.api.WorkflowDocument;
51  import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange;
52  import org.kuali.rice.krad.exception.ValidationException;
53  import org.kuali.rice.krad.rules.rule.event.KualiDocumentEvent;
54  import org.kuali.rice.krad.util.KRADPropertyConstants;
55  import org.kuali.rice.krad.util.ObjectUtils;
56  import org.kuali.rice.location.api.campus.Campus;
57  import org.kuali.rice.location.api.campus.CampusService;
58  
59  /**
60   * This class represents the CashManagementDocument.
61   */
62  public class CashManagementDocument extends GeneralLedgerPostingDocumentBase implements GeneralLedgerPendingEntrySource {
63      protected static final long serialVersionUID = 7475843770851900297L;
64      protected static Logger LOG = Logger.getLogger(CashManagementDocument.class);
65  
66      protected String campusCode;
67  
68      protected List<Deposit> deposits;
69  
70      protected List<Check> checks;
71  
72      protected CashieringTransaction currentTransaction;
73      protected CashDrawer cashDrawer;
74      protected Campus campus;
75      
76      private KualiDecimal financialDocumentHundredDollarAmount;
77      private KualiDecimal financialDocumentFiftyDollarAmount;
78      private KualiDecimal financialDocumentTwentyDollarAmount;
79      private KualiDecimal financialDocumentTenDollarAmount;
80      private KualiDecimal financialDocumentFiveDollarAmount;
81      private KualiDecimal financialDocumentTwoDollarAmount;
82      private KualiDecimal financialDocumentOneDollarAmount;
83      private KualiDecimal financialDocumentOtherDollarAmount;
84      private KualiDecimal financialDocumentHundredCentAmount;
85      private KualiDecimal financialDocumentFiftyCentAmount;
86      private KualiDecimal financialDocumentTwentyFiveCentAmount;
87      private KualiDecimal financialDocumentTenCentAmount;
88      private KualiDecimal financialDocumentFiveCentAmount;
89      private KualiDecimal financialDocumentOneCentAmount;
90      private KualiDecimal financialDocumentOtherCentAmount;
91      
92  
93      /**
94       * Default constructor.
95       */
96      public CashManagementDocument() {
97          super();
98          deposits = new ArrayList<Deposit>();
99          checks = new ArrayList<Check>();
100         this.resetCurrentTransaction();
101     }
102 
103 
104     /**
105      * @return current value of campusCode.
106      */
107     public String getCampusCode() {
108         return campusCode;
109     }
110 
111     /**
112      * Sets the campusCode attribute value.
113      * 
114      * @param campusCode The campusCode to set.
115      */
116     public void setCampusCode(String campusCode) {
117         this.campusCode = campusCode;
118     }
119 
120     /**
121      * Derives and returns the cash drawer status for the document's workgroup
122      */
123     public String getCashDrawerStatus() {
124         return getCashDrawer().getStatusCode();
125     }
126 
127     /**
128      * @param cashDrawerStatus
129      */
130     public void setCashDrawerStatus(String cashDrawerStatus) {
131         // ignored, because that value is dynamically retrieved from the service
132         // required, because POJO pitches a fit if this method doesn't exist
133     }
134 
135     /**
136      * Alias for getCashDrawerStatus which avoids the automagic formatting
137      */
138     public String getRawCashDrawerStatus() {
139         return getCashDrawerStatus();
140     }
141 
142     /* Deposit-list maintenance */
143     /**
144      * @return current List of Deposits
145      */
146     public List<Deposit> getDeposits() {
147         return deposits;
148     }
149 
150     /**
151      * Sets the current List of Deposits
152      * 
153      * @param deposits
154      */
155     public void setDeposits(List<Deposit> deposits) {
156         this.deposits = deposits;
157     }
158 
159     /**
160      * Implementation creates empty Deposits as a side-effect, so that Struts' efforts to set fields of lines which haven't been
161      * created will succeed rather than causing a NullPointerException.
162      * 
163      * @return Deposit at the given index
164      */
165     public Deposit getDeposit(int index) {
166         extendDeposits(index + 1);
167 
168         return (Deposit) deposits.get(index);
169     }
170 
171     /**
172      * Removes and returns the Deposit at the given index.
173      * 
174      * @param index
175      * @return Deposit at the given index
176      */
177     public Deposit removeDeposit(int index) {
178         extendDeposits(index + 1);
179 
180         return (Deposit) deposits.remove(index);
181     }
182 
183 
184     /**
185      * @return true if one of the Deposits contained in this document has a type of "final"
186      */
187     public boolean hasFinalDeposit() {
188         boolean hasFinal = false;
189 
190         for (Iterator i = deposits.iterator(); !hasFinal && i.hasNext();) {
191             Deposit d = (Deposit) i.next();
192 
193             hasFinal = StringUtils.equals(DepositConstants.DEPOSIT_TYPE_FINAL, d.getDepositTypeCode());
194         }
195 
196         return hasFinal;
197     }
198 
199     /**
200      * @return lowest unused deposit-line-number, to simplify adding and canceling deposits out-of-order
201      */
202     public Integer getNextDepositLineNumber() {
203         int maxLineNumber = -1;
204 
205         for (Iterator i = deposits.iterator(); i.hasNext();) {
206             Deposit d = (Deposit) i.next();
207 
208             Integer depositLineNumber = d.getFinancialDocumentDepositLineNumber();
209             if ((depositLineNumber != null) && (depositLineNumber.intValue() > maxLineNumber)) {
210                 maxLineNumber = depositLineNumber.intValue();
211             }
212         }
213 
214         return new Integer(maxLineNumber + 1);
215     }
216 
217     /**
218      * Adds default AccountingLineDecorators to sourceAccountingLineDecorators until it contains at least minSize elements
219      * 
220      * @param minSize
221      */
222     protected void extendDeposits(int minSize) {
223         while (deposits.size() < minSize) {
224             deposits.add(new Deposit());
225         }
226     }
227 
228     /**
229      * @see org.kuali.rice.krad.document.DocumentBase#buildListOfDeletionAwareLists()
230      */
231 
232     @Override
233     public List buildListOfDeletionAwareLists() {
234         List managedLists = super.buildListOfDeletionAwareLists();
235 
236         managedLists.add(getDeposits());
237 
238         return managedLists;
239     }
240 
241 
242     /**
243      * Gets the cashDrawer attribute.
244      * 
245      * @return Returns the cashDrawer.
246      */
247     public CashDrawer getCashDrawer() {
248         return cashDrawer;
249     }
250 
251     /**
252      * Sets the cashDrawer attribute
253      * 
254      * @param cd the cash drawer to set
255      */
256     public void setCashDrawer(CashDrawer cd) {
257         cashDrawer = cd;
258     }
259 
260     /**
261      * Gets the currentTransaction attribute.
262      * 
263      * @return Returns the currentTransaction.
264      */
265     public CashieringTransaction getCurrentTransaction() {
266         return currentTransaction;
267     }
268 
269 
270     /**
271      * Sets the currentTransaction attribute value.
272      * 
273      * @param currentTransaction The currentTransaction to set.
274      */
275     public void setCurrentTransaction(CashieringTransaction currentTransaction) {
276         this.currentTransaction = currentTransaction;
277     }
278 
279     /**
280      * Gets the checks attribute.
281      * 
282      * @return Returns the checks.
283      */
284     public List<Check> getChecks() {
285         return checks;
286     }
287 
288     /**
289      * Sets the checks attribute value.
290      * 
291      * @param checks The checks to set.
292      */
293     public void setChecks(List<Check> checks) {
294         this.checks = checks;
295     }
296 
297     /**
298      * Add a check to the cash management document
299      * 
300      * @param check
301      */
302     public void addCheck(Check check) {
303         this.checks.add(check);
304     }
305 
306     /**
307      * @see org.kuali.rice.krad.document.DocumentBase#doRouteStatusChange()
308      */
309     @Override
310     public void doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) {
311         super.doRouteStatusChange(statusChangeEvent);
312 
313         WorkflowDocument kwd = getDocumentHeader().getWorkflowDocument();
314 
315         if (LOG.isDebugEnabled()) {
316             logState();
317         }
318 
319         if (kwd.isProcessed()) {
320             // all approvals have been processed, finalize everything
321             SpringContext.getBean(CashManagementService.class).finalizeCashManagementDocument(this);
322         }
323         else if (kwd.isCanceled() || kwd.isDisapproved()) {
324             // document has been canceled or disapproved
325             SpringContext.getBean(CashManagementService.class).cancelCashManagementDocument(this);
326         }
327     }
328 
329     protected void logState() {
330         WorkflowDocument kwd = getDocumentHeader().getWorkflowDocument();
331 
332         if (kwd.isInitiated()) {
333             LOG.debug("CMD isInitiated");
334         }
335         if (kwd.isProcessed()) {
336             LOG.debug("CMD isProcessed");
337         }
338         if (kwd.isCanceled()) {
339             LOG.debug("CMD isCanceled");
340         }
341         if (kwd.isDisapproved()) {
342             LOG.debug("CMD isDisapproved");
343         }
344     }
345 
346     /**
347      * @see org.kuali.rice.krad.document.DocumentBase#processAfterRetrieve()
348      */
349     @Override
350     public void processAfterRetrieve() {
351         super.processAfterRetrieve();
352         // grab the cash drawer
353         if (this.getCampusCode() != null) {
354             this.cashDrawer = SpringContext.getBean(CashDrawerService.class).getByCampusCode(this.getCampusCode());
355             this.resetCurrentTransaction();
356         }
357         SpringContext.getBean(CashManagementService.class).populateCashDetailsForDeposit(this);
358     }
359 
360     /**
361      * This method creates a clean current transaction to be the new current transaction on this document
362      */
363     public void resetCurrentTransaction() {
364         if (this.currentTransaction != null) {
365             this.currentTransaction.setTransactionEnded(SpringContext.getBean(DateTimeService.class).getCurrentDate());
366         }
367         currentTransaction = new CashieringTransaction(campusCode, documentNumber);
368         if (this.getCampusCode() != null) {
369             List<CashieringItemInProcess> openItemsInProcess = SpringContext.getBean(CashManagementService.class).getOpenItemsInProcess(this);
370             if (openItemsInProcess != null) {
371                 currentTransaction.setOpenItemsInProcess(openItemsInProcess);
372             }
373             currentTransaction.setNextCheckSequenceId(SpringContext.getBean(CashManagementService.class).selectNextAvailableCheckLineNumber(this.documentNumber));
374         }
375     }
376 
377 
378     /**
379      * Does nothing, as there aren't any accounting lines on this doc, so no GeneralLedgerPendingEntrySourceDetail create GLPEs
380      * @see org.kuali.ole.document.GeneralLedgerPostingHelper#customizeExplicitGeneralLedgerPendingEntry(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry)
381      */
382     public void customizeExplicitGeneralLedgerPendingEntry(GeneralLedgerPendingEntrySourceDetail postable, GeneralLedgerPendingEntry explicitEntry) {}
383 
384 
385     /**
386      * Does nothing save return true, as this document has no GLPEs created from a source of GeneralLedgerPostables
387      * @see org.kuali.ole.document.GeneralLedgerPostingHelper#customizeOffsetGeneralLedgerPendingEntry(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry)
388      */
389     public boolean customizeOffsetGeneralLedgerPendingEntry(GeneralLedgerPendingEntrySourceDetail accountingLine, GeneralLedgerPendingEntry explicitEntry, GeneralLedgerPendingEntry offsetEntry) {
390         return true;
391     }
392 
393 
394     /**
395      * Returns an empty list as this document has no GeneralLedgerPostables
396      * @see org.kuali.ole.document.GeneralLedgerPostingHelper#getGeneralLedgerPostables()
397      */
398     @Override
399     public List<GeneralLedgerPendingEntrySourceDetail> getGeneralLedgerPendingEntrySourceDetails() {
400         return new ArrayList<GeneralLedgerPendingEntrySourceDetail>();
401     }
402 
403 
404     /**
405      * Always returns true, as there are no GeneralLedgerPostables to create GLPEs
406      * @see org.kuali.ole.document.GeneralLedgerPostingHelper#isDebit(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail)
407      */
408     @Override
409     public boolean isDebit(GeneralLedgerPendingEntrySourceDetail postable) {
410         return true;
411     }
412 
413 
414     /**
415      * Generates bank offset GLPEs for deposits, if enabled.
416      * 
417      * @param financialDocument submitted accounting document
418      * @param sequenceHelper helper class to keep track of sequence of general ledger pending entries
419      * @see org.kuali.ole.document.GeneralLedgerPostingHelper#processGenerateDocumentGeneralLedgerPendingEntries(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySequenceHelper)
420      */
421     @Override
422     public boolean generateDocumentGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySequenceHelper sequenceHelper) {
423         boolean success = true;
424         
425         GeneralLedgerPendingEntryService glpeService = SpringContext.getBean(GeneralLedgerPendingEntryService.class);
426         
427         if (SpringContext.getBean(BankService.class).isBankSpecificationEnabled()) {
428             Integer universityFiscalYear = getUniversityFiscalYear();
429             int interimDepositNumber = 1;
430             for (Deposit deposit: getDeposits()) {
431                 deposit.refreshReferenceObject(OLEPropertyConstants.BANK);
432 
433                 GeneralLedgerPendingEntry bankOffsetEntry = new GeneralLedgerPendingEntry();
434                 if (!glpeService.populateBankOffsetGeneralLedgerPendingEntry(deposit.getBank(), deposit.getDepositAmount(), this, universityFiscalYear, sequenceHelper, bankOffsetEntry, OLEConstants.CASH_MANAGEMENT_DEPOSIT_ERRORS)) {
435                     success = false;
436                     LOG.warn("Skipping ledger entries for deposit " + deposit.getDepositTicketNumber() + ".");
437                     continue; // An unsuccessfully populated bank offset entry may contain invalid relations, so don't add it
438                 }
439                 
440                 bankOffsetEntry.setTransactionLedgerEntryDescription(createDescription(deposit, interimDepositNumber++));
441                 getGeneralLedgerPendingEntries().add(bankOffsetEntry);
442                 sequenceHelper.increment();
443 
444                 GeneralLedgerPendingEntry offsetEntry = (GeneralLedgerPendingEntry) ObjectUtils.deepCopy(bankOffsetEntry);
445                 success &= glpeService.populateOffsetGeneralLedgerPendingEntry(universityFiscalYear, bankOffsetEntry, sequenceHelper, offsetEntry);
446                 getGeneralLedgerPendingEntries().add(offsetEntry);
447                 sequenceHelper.increment();
448             }
449         }
450         
451         return success;
452     }
453     
454     /**
455      * Create description for deposit
456      * 
457      * @param deposit deposit from cash management document
458      * @param interimDepositNumber
459      * @return the description for the given deposit's GLPE bank offset
460      */
461     protected static String createDescription(Deposit deposit, int interimDepositNumber) {
462         String descriptionKey;
463         if (OLEConstants.DepositConstants.DEPOSIT_TYPE_FINAL.equals(deposit.getDepositTypeCode())) {
464             descriptionKey = OLEKeyConstants.CashManagement.DESCRIPTION_GLPE_BANK_OFFSET_FINAL;
465         }
466         else {
467            // assertThat(OLEConstants.DepositConstants.DEPOSIT_TYPE_INTERIM.equals(deposit.getDepositTypeCode()), deposit.getDepositTypeCode());
468             descriptionKey = OLEKeyConstants.CashManagement.DESCRIPTION_GLPE_BANK_OFFSET_INTERIM;
469         }
470         AccountingDocumentRuleHelperService accountingDocumentRuleUtil = SpringContext.getBean(AccountingDocumentRuleHelperService.class);
471         return accountingDocumentRuleUtil.formatProperty(descriptionKey, interimDepositNumber);
472     }
473 
474     /**
475      * Gets the fiscal year for the GLPEs generated by this document. This works the same way as in TransactionalDocumentBase. The
476      * property is down in TransactionalDocument because no FinancialDocument (currently only CashManagementDocument) allows the
477      * user to override it. So, that logic is duplicated here. A comment in TransactionalDocumentBase says that this implementation
478      * is a hack right now because it's intended to be set by the
479      * <code>{@link org.kuali.ole.coa.service.AccountingPeriodService}</code>, which suggests to me that pulling that
480      * property up to FinancialDocument is preferable to duplicating this logic here.
481      * 
482      * @return the fiscal year for the GLPEs generated by this document
483      */
484     protected Integer getUniversityFiscalYear() {
485         return SpringContext.getBean(UniversityDateService.class).getCurrentFiscalYear();
486     }
487 
488     /**
489      * The Cash Management doc doesn't have accounting lines, so it doesn't create general ledger pending entries for the accounting lines it doesn't have
490      * @see org.kuali.ole.sys.document.GeneralLedgerPendingEntrySource#generateGeneralLedgerPendingEntries(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySequenceHelper)
491      */
492     @Override
493     public boolean generateGeneralLedgerPendingEntries(GeneralLedgerPendingEntrySourceDetail glpeSourceDetail, GeneralLedgerPendingEntrySequenceHelper sequenceHelper) {
494         return true;
495     }
496 
497 
498     /**
499      * @see org.kuali.ole.sys.document.GeneralLedgerPendingEntrySource#getGeneralLedgerPendingEntryAmountForGeneralLedgerPostable(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail)
500      */
501     @Override
502     public KualiDecimal getGeneralLedgerPendingEntryAmountForDetail(GeneralLedgerPendingEntrySourceDetail postable) {
503         return postable.getAmount().abs();
504     }
505     
506     /**
507      * Helper method on document for determining whether the document can have GLPEs.
508      * 
509      * @return true if document can have GLPEs
510      */
511     public boolean getBankCashOffsetEnabled() {
512         return SpringContext.getBean(BankService.class).isBankSpecificationEnabled();
513     }
514 
515     /**
516      * @see org.kuali.ole.sys.document.GeneralLedgerPostingDocumentBase#prepareForSave(org.kuali.rice.krad.rule.event.KualiDocumentEvent)
517      */
518     @Override
519     public void prepareForSave(KualiDocumentEvent event) {
520         if (getBankCashOffsetEnabled()) { 
521             if (!SpringContext.getBean(GeneralLedgerPendingEntryService.class).generateGeneralLedgerPendingEntries(this)) {
522                 logErrors();
523                 throw new ValidationException("general ledger GLPE generation failed");
524             }
525         }
526         
527         super.prepareForSave(event);
528     }
529     
530     /**
531      * @return the campus associated with this cash drawer
532      */
533     public Campus getCampus() {
534         if (campusCode != null && (campus == null || !campus.getCode().equals(campusCode))) {
535             campus = retrieveCampus();
536         }
537         return campus;
538     }
539     
540     protected Campus retrieveCampus() {
541         Map<String, Object> criteria = new HashMap<String, Object>();
542         criteria.put(KRADPropertyConstants.CAMPUS_CODE, campusCode);
543         return campus = SpringContext.getBean(CampusService.class).getCampus(campusCode/*RICE_20_REFACTORME  criteria */);
544     }
545 
546 
547     /**
548      * Gets the financialDocumentHundredDollarAmount attribute. 
549      * @return Returns the financialDocumentHundredDollarAmount.
550      */
551     public KualiDecimal getFinancialDocumentHundredDollarAmount() {
552         return financialDocumentHundredDollarAmount;
553     }
554 
555 
556     /**
557      * Sets the financialDocumentHundredDollarAmount attribute value.
558      * @param financialDocumentHundredDollarAmount The financialDocumentHundredDollarAmount to set.
559      */
560     public void setFinancialDocumentHundredDollarAmount(KualiDecimal financialDocumentHundredDollarAmount) {
561         this.financialDocumentHundredDollarAmount = financialDocumentHundredDollarAmount;
562     }
563 
564 
565     /**
566      * Gets the financialDocumentFiftyDollarAmount attribute. 
567      * @return Returns the financialDocumentFiftyDollarAmount.
568      */
569     public KualiDecimal getFinancialDocumentFiftyDollarAmount() {
570         return financialDocumentFiftyDollarAmount;
571     }
572 
573 
574     /**
575      * Sets the financialDocumentFiftyDollarAmount attribute value.
576      * @param financialDocumentFiftyDollarAmount The financialDocumentFiftyDollarAmount to set.
577      */
578     public void setFinancialDocumentFiftyDollarAmount(KualiDecimal financialDocumentFiftyDollarAmount) {
579         this.financialDocumentFiftyDollarAmount = financialDocumentFiftyDollarAmount;
580     }
581 
582 
583     /**
584      * Gets the financialDocumentTwentyDollarAmount attribute. 
585      * @return Returns the financialDocumentTwentyDollarAmount.
586      */
587     public KualiDecimal getFinancialDocumentTwentyDollarAmount() {
588         return financialDocumentTwentyDollarAmount;
589     }
590 
591 
592     /**
593      * Sets the financialDocumentTwentyDollarAmount attribute value.
594      * @param financialDocumentTwentyDollarAmount The financialDocumentTwentyDollarAmount to set.
595      */
596     public void setFinancialDocumentTwentyDollarAmount(KualiDecimal financialDocumentTwentyDollarAmount) {
597         this.financialDocumentTwentyDollarAmount = financialDocumentTwentyDollarAmount;
598     }
599 
600 
601     /**
602      * Gets the financialDocumentTenDollarAmount attribute. 
603      * @return Returns the financialDocumentTenDollarAmount.
604      */
605     public KualiDecimal getFinancialDocumentTenDollarAmount() {
606         return financialDocumentTenDollarAmount;
607     }
608 
609 
610     /**
611      * Sets the financialDocumentTenDollarAmount attribute value.
612      * @param financialDocumentTenDollarAmount The financialDocumentTenDollarAmount to set.
613      */
614     public void setFinancialDocumentTenDollarAmount(KualiDecimal financialDocumentTenDollarAmount) {
615         this.financialDocumentTenDollarAmount = financialDocumentTenDollarAmount;
616     }
617 
618 
619     /**
620      * Gets the financialDocumentFiveDollarAmount attribute. 
621      * @return Returns the financialDocumentFiveDollarAmount.
622      */
623     public KualiDecimal getFinancialDocumentFiveDollarAmount() {
624         return financialDocumentFiveDollarAmount;
625     }
626 
627 
628     /**
629      * Sets the financialDocumentFiveDollarAmount attribute value.
630      * @param financialDocumentFiveDollarAmount The financialDocumentFiveDollarAmount to set.
631      */
632     public void setFinancialDocumentFiveDollarAmount(KualiDecimal financialDocumentFiveDollarAmount) {
633         this.financialDocumentFiveDollarAmount = financialDocumentFiveDollarAmount;
634     }
635 
636 
637     /**
638      * Gets the financialDocumentTwoDollarAmount attribute. 
639      * @return Returns the financialDocumentTwoDollarAmount.
640      */
641     public KualiDecimal getFinancialDocumentTwoDollarAmount() {
642         return financialDocumentTwoDollarAmount;
643     }
644 
645 
646     /**
647      * Sets the financialDocumentTwoDollarAmount attribute value.
648      * @param financialDocumentTwoDollarAmount The financialDocumentTwoDollarAmount to set.
649      */
650     public void setFinancialDocumentTwoDollarAmount(KualiDecimal financialDocumentTwoDollarAmount) {
651         this.financialDocumentTwoDollarAmount = financialDocumentTwoDollarAmount;
652     }
653 
654 
655     /**
656      * Gets the financialDocumentOneDollarAmount attribute. 
657      * @return Returns the financialDocumentOneDollarAmount.
658      */
659     public KualiDecimal getFinancialDocumentOneDollarAmount() {
660         return financialDocumentOneDollarAmount;
661     }
662 
663 
664     /**
665      * Sets the financialDocumentOneDollarAmount attribute value.
666      * @param financialDocumentOneDollarAmount The financialDocumentOneDollarAmount to set.
667      */
668     public void setFinancialDocumentOneDollarAmount(KualiDecimal financialDocumentOneDollarAmount) {
669         this.financialDocumentOneDollarAmount = financialDocumentOneDollarAmount;
670     }
671 
672 
673     /**
674      * Gets the financialDocumentOtherDollarAmount attribute. 
675      * @return Returns the financialDocumentOtherDollarAmount.
676      */
677     public KualiDecimal getFinancialDocumentOtherDollarAmount() {
678         return financialDocumentOtherDollarAmount;
679     }
680 
681 
682     /**
683      * Sets the financialDocumentOtherDollarAmount attribute value.
684      * @param financialDocumentOtherDollarAmount The financialDocumentOtherDollarAmount to set.
685      */
686     public void setFinancialDocumentOtherDollarAmount(KualiDecimal financialDocumentOtherDollarAmount) {
687         this.financialDocumentOtherDollarAmount = financialDocumentOtherDollarAmount;
688     }
689 
690 
691     /**
692      * Gets the financialDocumentHundredCentAmount attribute. 
693      * @return Returns the financialDocumentHundredCentAmount.
694      */
695     public KualiDecimal getFinancialDocumentHundredCentAmount() {
696         return financialDocumentHundredCentAmount;
697     }
698 
699 
700     /**
701      * Sets the financialDocumentHundredCentAmount attribute value.
702      * @param financialDocumentHundredCentAmount The financialDocumentHundredCentAmount to set.
703      */
704     public void setFinancialDocumentHundredCentAmount(KualiDecimal financialDocumentHundredCentAmount) {
705         this.financialDocumentHundredCentAmount = financialDocumentHundredCentAmount;
706     }
707 
708 
709     /**
710      * Gets the financialDocumentFiftyCentAmount attribute. 
711      * @return Returns the financialDocumentFiftyCentAmount.
712      */
713     public KualiDecimal getFinancialDocumentFiftyCentAmount() {
714         return financialDocumentFiftyCentAmount;
715     }
716 
717 
718     /**
719      * Sets the financialDocumentFiftyCentAmount attribute value.
720      * @param financialDocumentFiftyCentAmount The financialDocumentFiftyCentAmount to set.
721      */
722     public void setFinancialDocumentFiftyCentAmount(KualiDecimal financialDocumentFiftyCentAmount) {
723         this.financialDocumentFiftyCentAmount = financialDocumentFiftyCentAmount;
724     }
725 
726 
727     /**
728      * Gets the financialDocumentTwentyFiveCentAmount attribute. 
729      * @return Returns the financialDocumentTwentyFiveCentAmount.
730      */
731     public KualiDecimal getFinancialDocumentTwentyFiveCentAmount() {
732         return financialDocumentTwentyFiveCentAmount;
733     }
734 
735 
736     /**
737      * Sets the financialDocumentTwentyFiveCentAmount attribute value.
738      * @param financialDocumentTwentyFiveCentAmount The financialDocumentTwentyFiveCentAmount to set.
739      */
740     public void setFinancialDocumentTwentyFiveCentAmount(KualiDecimal financialDocumentTwentyFiveCentAmount) {
741         this.financialDocumentTwentyFiveCentAmount = financialDocumentTwentyFiveCentAmount;
742     }
743 
744 
745     /**
746      * Gets the financialDocumentTenCentAmount attribute. 
747      * @return Returns the financialDocumentTenCentAmount.
748      */
749     public KualiDecimal getFinancialDocumentTenCentAmount() {
750         return financialDocumentTenCentAmount;
751     }
752 
753 
754     /**
755      * Sets the financialDocumentTenCentAmount attribute value.
756      * @param financialDocumentTenCentAmount The financialDocumentTenCentAmount to set.
757      */
758     public void setFinancialDocumentTenCentAmount(KualiDecimal financialDocumentTenCentAmount) {
759         this.financialDocumentTenCentAmount = financialDocumentTenCentAmount;
760     }
761 
762 
763     /**
764      * Gets the financialDocumentFiveCentAmount attribute. 
765      * @return Returns the financialDocumentFiveCentAmount.
766      */
767     public KualiDecimal getFinancialDocumentFiveCentAmount() {
768         return financialDocumentFiveCentAmount;
769     }
770 
771 
772     /**
773      * Sets the financialDocumentFiveCentAmount attribute value.
774      * @param financialDocumentFiveCentAmount The financialDocumentFiveCentAmount to set.
775      */
776     public void setFinancialDocumentFiveCentAmount(KualiDecimal financialDocumentFiveCentAmount) {
777         this.financialDocumentFiveCentAmount = financialDocumentFiveCentAmount;
778     }
779 
780 
781     /**
782      * Gets the financialDocumentOneCentAmount attribute. 
783      * @return Returns the financialDocumentOneCentAmount.
784      */
785     public KualiDecimal getFinancialDocumentOneCentAmount() {
786         return financialDocumentOneCentAmount;
787     }
788 
789 
790     /**
791      * Sets the financialDocumentOneCentAmount attribute value.
792      * @param financialDocumentOneCentAmount The financialDocumentOneCentAmount to set.
793      */
794     public void setFinancialDocumentOneCentAmount(KualiDecimal financialDocumentOneCentAmount) {
795         this.financialDocumentOneCentAmount = financialDocumentOneCentAmount;
796     }
797 
798 
799     /**
800      * Gets the financialDocumentOtherCentAmount attribute. 
801      * @return Returns the financialDocumentOtherCentAmount.
802      */
803     public KualiDecimal getFinancialDocumentOtherCentAmount() {
804         return financialDocumentOtherCentAmount;
805     }
806 
807 
808     /**
809      * Sets the financialDocumentOtherCentAmount attribute value.
810      * @param financialDocumentOtherCentAmount The financialDocumentOtherCentAmount to set.
811      */
812     public void setFinancialDocumentOtherCentAmount(KualiDecimal financialDocumentOtherCentAmount) {
813         this.financialDocumentOtherCentAmount = financialDocumentOtherCentAmount;
814     }
815 }