/* * 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.integration.cab; import java.util.List; import org.kuali.kfs.fp.businessobject.CapitalAssetInformation; import org.kuali.kfs.integration.purap.ExternalPurApItem; import org.kuali.kfs.integration.purap.ItemCapitalAsset; import org.kuali.kfs.sys.businessobject.AccountingLine; import org.kuali.kfs.sys.document.AccountingDocument; import org.kuali.rice.krad.bo.DocumentHeader; public interface CapitalAssetBuilderModuleService { /** * Check the existence of asset type code * * @param assetTypeCode * @return */ public boolean isAssetTypeExisting(String assetTypeCode); /** * Get current Purchase Order Document number for given CAMS Document Number * * @param camsDocumentNumber * @return */ String getCurrentPurchaseOrderDocumentNumber(String camsDocumentNumber); /** * validate the capitalAssetManagementAsset data associated with the given accounting document * * @param accountingDocument the given accounting document * @param capitalAssetManagementAsset data to be validated * @return validation succeeded or errors present */ public boolean validateFinancialProcessingData(AccountingDocument accountingDocument, CapitalAssetInformation capitalAssetInformation, int index); public boolean validatePurchasingData(AccountingDocument accountingDocument); public boolean validateAccountsPayableData(AccountingDocument accountingDocument); public boolean doesAccountingLineFailAutomaticPurchaseOrderRules(AccountingLine accountingLine); public boolean doesDocumentFailAutomaticPurchaseOrderRules(AccountingDocument accountingDocument); public boolean doesItemNeedCapitalAsset(String itemTypeCode, List accountingLines); public boolean validateUpdateCAMSView(AccountingDocument accountingDocumen); public boolean validateAddItemCapitalAssetBusinessRules(ItemCapitalAsset asset); public boolean warningObjectLevelCapital(AccountingDocument accountingDocument); public boolean validateItemCapitalAssetWithErrors(String recurringPaymentTypeCode, ExternalPurApItem item, boolean apoCheck); public List<CapitalAssetBuilderAssetTransactionType> getAllAssetTransactionTypes(); /** * External modules can notify CAB if a document changed its route status. CAB Uses this notification to release records or to * update other modules about the changes * * @param documentHeader DocumentHeader */ public void notifyRouteStatusChange(DocumentHeader documentHeader); /** * determine whether there is any object code of the given source accounting lines with a capital asset object sub type * * @param accountingLines the given source accounting lines * @return true if there is at least one object code of the given source accounting lines with a capital asset object sub type; * otherwise, false */ public boolean hasCapitalAssetObjectSubType(AccountingDocument accountingDocument); public boolean validateAllFieldRequirementsByChart(AccountingDocument accountingDocument); public boolean validatePurchasingObjectSubType(AccountingDocument accountingDocument); public boolean hasCapitalAssetObjectSubType(AccountingLine accountingLine); public boolean validateAssetTags(AccountingDocument accountingDocument); /** * validates all capital accounting lines that have been processed. * * @param accountingDocumentForValidation * @return true if all lines have been processes else return false */ public boolean validateAllCapitalAccountingLinesProcessed(AccountingDocument accountingDocumentForValidation); /** * determine whether the given document's all capital accounting lines totals * match to that of capital assets. * @param accountingDocumentForValidation * @return true if totals match else return false */ public boolean validateTotalAmountMatch(AccountingDocument accountingDocumentForValidation); /** * determine whether the any capital accounting line's amount matches * with all the capital assets for that capital accounting line. * * @param accountingDocument * @return true if totals match else return false */ public boolean validateCapitlAssetsAmountToAccountingLineAmount(AccountingDocument accountingDocument); /** * validates whether capital assets exist for any given capital accounting line. * @param accountingDocumentForValidation * @return true if capital assets exist for capital accounting line else return false. */ public boolean validateCapitalAccountingLines(AccountingDocument accountingDocumentForValidation); /** * mark the gl entry line if all the capital asset lines have been processed * @param documentNumber * @return true if gl entry line marked as processed else return false. */ public boolean markProcessedGLEntryLine(String documentNumber); /** * Sets the PretagDetails to active that are associated with the campusTagNumber * passed in as a parameter. This needs to be done when the AssetGlobalDocument is cancelled. * * @param campusTagNumber String key used to find pretagDetails to reactivate */ public void reactivatePretagDetails(String campusTagNumber); public boolean hasCAMSCapitalAssetObjectSubType(AccountingLine line); /** * Check FP document eligibility by document type for CAB Extract batch. * * @param documentType * @return */ public boolean isDocumentEligibleForCABBatch(String documentType); /** * Check FP document individual Capital Asset line eligibility for CAB Extract Batch * @param assetInfoLine * @param postingYear * @return */ public boolean isAssetLineEligibleForCABBatch( CapitalAssetInformation assetInfoLine, Integer postingYear, List<String> includedObjectSubTypeCodes, List<String> excludedChartCodes, List<String> excludedSubFundCodes); /** * Get CAB Batch parameter value of allowed financial object sub types * * @return */ public List<String> getBatchIncludedObjectSubTypes (); /** * Get CAB Batch parameter value of disallowed chart codes * * @return */ public List<String> getBatchExcludedChartCodes (); /** * Get CAB Batch parameter value of disallowed sub fund codes * * @return */ public List<String> getBatchExcludedSubFundCodes (); /** * This function removes CapitalAssetInformations that don't have at least one capital asset object * code in their group details. * * @param infos */ public void filterNonCapitalAssets(List<CapitalAssetInformation> infos); }