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 static org.kuali.ole.fp.document.validation.impl.TransferOfFundsDocumentRuleConstants.YEAR_END_TRANSFER_OF_FUNDS_DOC_TYPE_CODE;
20
21 import org.kuali.ole.fp.document.service.YearEndPendingEntryService;
22 import org.kuali.ole.sys.businessobject.AccountingLine;
23 import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry;
24 import org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail;
25 import org.kuali.ole.sys.context.SpringContext;
26 import org.kuali.ole.sys.document.OLEAccountingDocument;
27 import org.kuali.ole.sys.service.UniversityDateService;
28
29
30 /**
31 * Year End version of the <code>BudgetAdjustmentDocument</code>
32 */
33 public class YearEndBudgetAdjustmentDocument extends BudgetAdjustmentDocument implements YearEndDocument {
34
35 /**
36 * Constructs a YearEndBudgetAdjustmentDocument.
37 */
38 public YearEndBudgetAdjustmentDocument() {
39 super();
40 }
41
42 /**
43 * set posting year to previous fiscal year
44 */
45 public void initiateDocument() {
46 Integer previousYearParam = new Integer(SpringContext.getBean(UniversityDateService.class).getCurrentFiscalYear().intValue() - 1);
47 setPostingYear(previousYearParam);
48 }
49
50 /**
51 * This method calls the super class's overridden method to perform the general customization actions, then calls the
52 * YearEndDocumentUtil matching method to perform year end specific customization activities.
53 *
54 * @param accountingDocument The accounting document containing the general ledger pending entries being customized.
55 * @param accountingLine The accounting line the explicit general ledger pending entry was generated from.
56 * @param explicitEntry The explicit general ledger pending entry to be customized.
57 *
58 * @see org.kuali.ole.fp.document.validation.impl.BudgetAdjustmentDocumentRule#customizeExplicitGeneralLedgerPendingEntry(org.kuali.rice.krad.document.AccountingDocument,
59 * org.kuali.rice.krad.bo.AccountingLine, org.kuali.module.gl.bo.GeneralLedgerPendingEntry)
60 * @see YearEndDocumentUtil#customizeExplicitGeneralLedgerPendingEntry(TransactionalDocument, AccountingLine,
61 * GeneralLedgerPendingEntry)
62 */
63 @Override
64 public void customizeExplicitGeneralLedgerPendingEntry(GeneralLedgerPendingEntrySourceDetail postable, GeneralLedgerPendingEntry explicitEntry) {
65 super.customizeExplicitGeneralLedgerPendingEntry(postable, explicitEntry);
66 AccountingLine accountingLine = (AccountingLine)postable;
67 SpringContext.getBean(YearEndPendingEntryService.class).customizeExplicitGeneralLedgerPendingEntry(this, accountingLine, explicitEntry);
68 }
69
70 /**
71 * Overridden to populate object code from last year's offset definition
72 * @see org.kuali.ole.sys.document.AccountingDocumentBase#customizeOffsetGeneralLedgerPendingEntry(org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntrySourceDetail, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry, org.kuali.ole.sys.businessobject.GeneralLedgerPendingEntry)
73 */
74 @Override
75 public boolean customizeOffsetGeneralLedgerPendingEntry(GeneralLedgerPendingEntrySourceDetail accountingLine, GeneralLedgerPendingEntry explicitEntry, GeneralLedgerPendingEntry offsetEntry) {
76 boolean success = super.customizeOffsetGeneralLedgerPendingEntry(accountingLine, explicitEntry, offsetEntry);
77 success &= SpringContext.getBean(YearEndPendingEntryService.class).customizeOffsetGeneralLedgerPendingEntry(this, accountingLine, explicitEntry, offsetEntry);
78 return success;
79 }
80
81 /**
82 * This method retrieves the year end transfer of funds document type code, which is defined as a constant in
83 * TransferOfFundsDocumentRuleConstants.
84 *
85 * @return The value defined in the constants class for year end transfer of funds document type code.
86 *
87 * @see org.kuali.ole.fp.document.validation.impl.BudgetAdjustmentDocumentRule#getTransferDocumentType()
88 * @see org.kuali.ole.fp.document.validation.impl.TransferOfFundsDocumentRuleConstants#YEAR_END_TRANSFER_OF_FUNDS_DOC_TYPE_CODE
89 */
90 @Override
91 protected String getTransferDocumentType() {
92 return YEAR_END_TRANSFER_OF_FUNDS_DOC_TYPE_CODE;
93 }
94
95 @Override
96 public Class<? extends OLEAccountingDocument> getDocumentClassForAccountingLineValueAllowedValidation() {
97 return BudgetAdjustmentDocument.class;
98 }
99 }