/* * 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.cam; import java.util.List; import org.kuali.kfs.sys.document.AccountingDocument; import org.kuali.rice.krad.document.Document; public interface CapitalAssetManagementModuleService { /** * FP document eligible for asset lock when any of its accounting line is taken into CAB during CAB batch. * * @param accountingDocument * @return */ boolean isFpDocumentEligibleForAssetLock(AccountingDocument accountingDocument, String documentType); /** * Check and store AssetLocks if they are not locked by other blocking documents. Either store all of the asset locks or none of * them being stored in case of dead lock. If any of the asset is blocked, the error message will be built including link(s) to * the blocking document(s). * * @param capitalAssetNumbers * @param documentNumber * @param documentType * @param additionalInformation * @return return true if all of the asset locks can be granted. */ boolean storeAssetLocks(List<Long> capitalAssetNumbers, String documentNumber, String documentType, String lockingInformation); /** * Delete AssetLocks by document number and lockingInfomation for PurAp doc only. * * @param documentNumber * @param lockingInformation */ void deleteAssetLocks(String documentNumber, String lockingInformation); /** * Check if the given document hold any asset locks. * * @param documentNumber * @param lockingInformation * @return */ boolean isAssetLockedByCurrentDocument(String blockingDocumentNumber, String lockingInformation); /** * Check if the given asset Numbers are locked by other documents already. * * @param assetNumbers * @param documentTypeName * @param excludingDocumentNumber * @return */ boolean isAssetLocked(List<Long> assetNumbers, String documentTypeName, String excludingDocumentNumber); /** * Generate asset locks for FP document if it collects capital * asset number(s) and has capital asset transactions eligible for CAB * batch. Creating asset lock is based on each capital asset line rather * than the whole FP document. * * @param document */ public void generateCapitalAssetLock(Document document, String documentTypeNames); /** * Deletes the asset locks associated with a particular document * * @param document */ public void deleteDocumentAssetLocks(Document document); }