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.module.cam.document.service; 017 018 import java.util.Collection; 019 import java.util.List; 020 021 import org.kuali.kfs.module.cam.businessobject.Asset; 022 import org.kuali.rice.kns.document.Document; 023 import org.kuali.rice.kns.document.MaintenanceDocument; 024 import org.kuali.rice.kns.document.MaintenanceLock; 025 import org.kuali.rice.kns.workflow.service.KualiWorkflowDocument; 026 027 028 /** 029 * The interface defines methods for Asset Document 030 */ 031 public interface AssetService { 032 /** 033 * Check if asset has started depreciation already. 034 * 035 * @param asset 036 * @return 037 */ 038 boolean isAssetDepreciationStarted(Asset asset); 039 040 /** 041 * Checks if given mainenanceDocument has started routing. 042 * 043 * @param document 044 * @return 045 */ 046 boolean isDocumentEnrouting(Document document); 047 048 /** 049 * A helper method for determining the route levels for a given document. 050 * 051 * @param workflowDocument 052 * @return List 053 */ 054 public List<String> getCurrentRouteLevels(KualiWorkflowDocument workflowDocument); 055 056 boolean isAssetMovableCheckByAsset(Asset asset); 057 058 boolean isCapitalAsset(Asset asset); 059 060 boolean isAssetRetired(Asset asset); 061 062 boolean isInServiceDateChanged(Asset oldAsset, Asset newAsset); 063 064 /** 065 * @return if MaintenanceDocument is an asset fabrication or not 066 */ 067 public boolean isAssetFabrication(MaintenanceDocument maintenanceDocument); 068 069 /** 070 * @return if the asset is on loan or not 071 */ 072 boolean isAssetLoaned(Asset asset); 073 074 /** 075 * The Asset Type Code is allowed to be changed only: (1)If the tag number has not been assigned or (2)The asset is tagged, and 076 * the asset created in the current fiscal year 077 * 078 * @return 079 */ 080 boolean isAssetTaggedInPriorFiscalYear(Asset asset); 081 082 /** 083 * The Tag Number check excludes value of "N" and retired assets. 084 * 085 * @return 086 */ 087 boolean isTagNumberCheckExclude(Asset asset); 088 089 /** 090 * Test if any of the off campus location field is entered. 091 * 092 * @param asset 093 * @return 094 */ 095 boolean isOffCampusLocationEntered(Asset asset); 096 097 /** 098 * Test if financialObjectSubTypeCode is changed. 099 * 100 * @param oldAsset 101 * @param newAsset 102 * @return 103 */ 104 boolean isFinancialObjectSubTypeCodeChanged(Asset oldAsset, Asset newAsset); 105 106 /** 107 * Test if assetTypeCode is changed. 108 * 109 * @param oldAsset 110 * @param newAsset 111 * @return 112 */ 113 boolean isAssetTypeCodeChanged(Asset oldAsset, Asset newAsset); 114 115 /** 116 * Test if Depreciable Life Limit is "0" This method... 117 * 118 * @param asset 119 * @return 120 */ 121 boolean isAssetDepreciableLifeLimitZero(Asset asset); 122 123 /** 124 * Test two capitalAssetNumber equal. 125 * 126 * @param capitalAssetNumber1 127 * @param capitalAssetNumber2 128 * @return 129 */ 130 boolean isCapitalAssetNumberDuplicate(Long capitalAssetNumber1, Long capitalAssetNumber2); 131 132 /** 133 * This method calls the service codes to calculate the summary fields for each asset 134 * 135 * @param asset 136 */ 137 void setAssetSummaryFields(Asset asset); 138 139 /** 140 * This will check the financial object sub type code in system parameters 141 * <li>return TRUE if found in MOVABLE_EQUIPMENT_OBJECT_SUB_TYPE_CODES</li> 142 * <li>return FALSE if found in NON_MOVABLE_EQUIPMENT_OBJECT_SUB_TYPE_CODES</li> 143 * <li>throw ValidationException if not defined in neither one of them</li> 144 * 145 * @param financialObjectSubType 146 * @return boolean 147 */ 148 public boolean isAssetMovableCheckByPayment(String financialObjectSubTypeCode); 149 150 /** 151 * This will check if the list of financial object sub type code are compatible with each other. 152 * <li> return TRUE if all Object sub type code are compatible with each other. 153 * <li> return FALSE if any non copatible object sub type code are found. 154 * 155 * @param financialObjectSubTypeCode 156 * @return 157 */ 158 boolean isObjectSubTypeCompatible(List<String> financialObjectSubTypeCode); 159 160 /** 161 * This method returns all active assets found matching this tab number 162 * 163 * @param campusTagNumber Campus Tag Number 164 * @return List of assets found matching tag number 165 */ 166 public List<Asset> findActiveAssetsMatchingTagNumber(String campusTagNumber); 167 168 /** 169 * This method returns all active and not active assets found matching this tab number 170 * 171 * @param campusTagNumber Campus Tag Number 172 * @return List of assets found matching tag number 173 */ 174 public Collection<Asset> findAssetsMatchingTagNumber(String campusTagNumber); 175 176 /** 177 * For the given Asset sets the separateHistory. 178 * 179 * @param asset for which to set the separateHistory 180 */ 181 public void setSeparateHistory(Asset asset); 182 183 /** 184 * @param capitalAssetNumber to check whether it got separated 185 * @return the list of document numbers that separated the particular asset 186 */ 187 public List<String> getDocumentNumbersThatSeparatedThisAsset(Long capitalAssetNumber); 188 189 /** 190 * Sets the fiscal year and month in the asset object based on the creation date of the asset 191 * 192 * @param asset 193 */ 194 public void setFiscalPeriod(Asset asset); 195 }