001 /* 002 * Copyright 2011 The Kuali Foundation. 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.kfs.integration.cam; 017 018 import java.util.List; 019 020 import org.kuali.kfs.sys.document.AccountingDocument; 021 import org.kuali.rice.kns.document.Document; 022 023 public interface CapitalAssetManagementModuleService { 024 /** 025 * FP document eligible for asset lock when any of its accounting line is taken into CAB during CAB batch. 026 * 027 * @param accountingDocument 028 * @return 029 */ 030 boolean isFpDocumentEligibleForAssetLock(AccountingDocument accountingDocument, String documentType); 031 032 /** 033 * Check and store AssetLocks if they are not locked by other blocking documents. Either store all of the asset locks or none of 034 * 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 035 * the blocking document(s). 036 * 037 * @param capitalAssetNumbers 038 * @param documentNumber 039 * @param documentType 040 * @param additionalInformation 041 * @return return true if all of the asset locks can be granted. 042 */ 043 boolean storeAssetLocks(List<Long> capitalAssetNumbers, String documentNumber, String documentType, String lockingInformation); 044 045 /** 046 * Delete AssetLocks by document number and lockingInfomation for PurAp doc only. 047 * 048 * @param documentNumber 049 * @param lockingInformation 050 */ 051 void deleteAssetLocks(String documentNumber, String lockingInformation); 052 053 054 /** 055 * Check if the given document hold any asset locks. 056 * 057 * @param documentNumber 058 * @param lockingInformation 059 * @return 060 */ 061 boolean isAssetLockedByCurrentDocument(String blockingDocumentNumber, String lockingInformation); 062 063 /** 064 * Check if the given asset Numbers are locked by other documents already. 065 * 066 * @param assetNumbers 067 * @param documentTypeName 068 * @param excludingDocumentNumber 069 * @return 070 */ 071 boolean isAssetLocked(List<Long> assetNumbers, String documentTypeName, String excludingDocumentNumber); 072 073 074 /** 075 * Creates the locks for each asset on a documents 076 * 077 * @param document 078 */ 079 public void generateCapitalAssetLock(Document document, String documentTypeNames); 080 081 /** 082 * Deletes the asset locks associated with a particular document 083 * 084 * @param document 085 */ 086 public void deleteDocumentAssetLocks(Document document); 087 088 }