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.AccountingDocument; 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 AccountingDocument> getDocumentClassForAccountingLineValueAllowedValidation() { 97 return BudgetAdjustmentDocument.class; 98 } 99 }