/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.fp.document; import java.util.ArrayList; import java.util.List; import org.kuali.kfs.fp.businessobject.CapitalAssetAccountsGroupDetails; import org.kuali.kfs.fp.businessobject.CapitalAssetInformation; import org.kuali.kfs.fp.businessobject.CapitalAssetInformationDetail; import org.kuali.kfs.integration.cab.CapitalAssetBuilderModuleService; import org.kuali.kfs.sys.businessobject.AccountingLine; import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntrySourceDetail; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.kfs.sys.document.AccountingDocumentBase; import org.kuali.kfs.sys.document.service.DebitDeterminerService; import org.kuali.rice.kew.framework.postprocessor.DocumentRouteStatusChange; import org.kuali.rice.krad.util.ObjectUtils; /** * class which defines behavior common for capital asset information lines. */ public class CapitalAssetInformationDocumentBase extends AccountingDocumentBase implements CapitalAssetEditable { protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(CapitalAssetInformationDocumentBase.class); protected Integer nextCapitalAssetLineNumber; // capital asset protected List<CapitalAssetInformation> capitalAssetInformation; /** * Constructs a CapitalAssetInformationDocumentBase */ public CapitalAssetInformationDocumentBase() { super(); this.setCapitalAssetInformation(new ArrayList()); this.setNextCapitalAssetLineNumber(1); } /** * @see org.kuali.kfs.sys.document.GeneralLedgerPostingDocumentBase#doRouteStatusChange() */ @Override public void doRouteStatusChange(DocumentRouteStatusChange statusChangeEvent) { super.doRouteStatusChange(statusChangeEvent); String documentNumber = getDocumentHeader().getDocumentNumber(); // update gl status as processed when all the capital assets have been processed... SpringContext.getBean(CapitalAssetBuilderModuleService.class).markProcessedGLEntryLine(documentNumber); } /** * @see org.kuali.kfs.sys.document.AccountingDocumentBase#buildListOfDeletionAwareLists() */ @Override public List buildListOfDeletionAwareLists() { List<List> managedLists = super.buildListOfDeletionAwareLists(); List<CapitalAssetInformation> capitalAssets = new ArrayList<CapitalAssetInformation>(); capitalAssets.addAll(this.getCapitalAssetInformation()); managedLists.add(capitalAssets); return managedLists; } /** * Return true if account line is debit * * @param financialDocument submitted accounting document * @param accountingLine accounting line from accounting document * @return true is account line is debit * @see IsDebitUtils#isDebitConsideringSectionAndTypePositiveOnly(FinancialDocumentRuleBase, FinancialDocument, AccountingLine) * @see org.kuali.rice.krad.rule.AccountingLineRule#isDebit(org.kuali.rice.krad.document.FinancialDocument, * org.kuali.rice.krad.bo.AccountingLine) */ public boolean isDebit(GeneralLedgerPendingEntrySourceDetail postable) { DebitDeterminerService isDebitUtils = SpringContext.getBean(DebitDeterminerService.class); return isDebitUtils.isDebitConsideringSectionAndTypePositiveOnly(this, (AccountingLine) postable); } /** * @see org.kuali.kfs.fp.document.CapitalAssetEditable#getCapitalAssetInformation() */ public List<CapitalAssetInformation> getCapitalAssetInformation() { return ObjectUtils.isNull(capitalAssetInformation) ? null : capitalAssetInformation; } /** * @see org.kuali.kfs.fp.document.CapitalAssetEditable#setCapitalAssetInformation(org.kuali.kfs.fp.businessobject.CapitalAssetInformation) */ public void setCapitalAssetInformation(List<CapitalAssetInformation> capitalAssetInformation) { this.capitalAssetInformation = capitalAssetInformation; } /** * Gets the nextCapitalAssetLineNumber attribute. * * @return Returns the nextCapitalAssetLineNumber */ public Integer getNextCapitalAssetLineNumber() { return nextCapitalAssetLineNumber; } /** * Sets the nextCapitalAssetLineNumber attribute. * * @param nextCapitalAssetLineNumber The nextCapitalAssetLineNumber to set. */ public void setNextCapitalAssetLineNumber(Integer nextCapitalAssetLineNumber) { this.nextCapitalAssetLineNumber = nextCapitalAssetLineNumber; } }