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.List;
019
020 import org.kuali.kfs.coa.businessobject.ObjectCode;
021 import org.kuali.kfs.module.cam.businessobject.Asset;
022 import org.kuali.kfs.module.cam.businessobject.AssetRetirementGlobal;
023 import org.kuali.kfs.module.cam.document.gl.CamsGeneralLedgerPendingEntrySourceBase;
024 import org.kuali.rice.kns.bo.PersistableBusinessObject;
025 import org.kuali.rice.kns.document.MaintenanceDocument;
026 import org.kuali.rice.kns.util.KualiDecimal;
027
028
029 /**
030 * The interface defines methods for Asset Document
031 */
032 public interface AssetRetirementService {
033 boolean isAssetRetiredBySold(AssetRetirementGlobal assetRetirementGlobal);
034
035 boolean isAssetRetiredByAuction(AssetRetirementGlobal assetRetirementGlobal);
036
037 boolean isAssetRetiredByExternalTransferOrGift(AssetRetirementGlobal assetRetirementGlobal);
038
039 boolean isAssetRetiredByTheft(AssetRetirementGlobal assetRetirementGlobal);
040
041 boolean isAssetRetiredByMerged(AssetRetirementGlobal assetRetirementGlobal);
042
043 String getAssetRetirementReasonName(AssetRetirementGlobal assetRetirementGlobal);
044
045 /**
046 * This method generates offset payments for each sourceAsset.
047 *
048 * @param sourceAsset
049 * @param persistables
050 * @param documentNumber
051 */
052 void generateOffsetPaymentsForEachSource(Asset sourceAsset, List<PersistableBusinessObject> persistables, String documentNumber);
053
054 /**
055 * This method generates new payments from sourceAsset for targetAsset.
056 *
057 * @param targetAsset
058 * @param sourceAsset
059 * @param persistables
060 * @param maxSequenceNo
061 * @param documentNumber
062 * @return
063 */
064 Integer generateNewPaymentForTarget(Asset targetAsset, Asset sourceAsset, List<PersistableBusinessObject> persistables, Integer maxSequenceNo, String documentNumber);
065
066 /**
067 * Check if reasonCode is in reasonCodeGroup
068 *
069 * @param reasonCodeGroup
070 * @param reasonCode
071 * @return
072 */
073 boolean isRetirementReasonCodeInGroup(String reasonCodeGroup, String reasonCode);
074
075 /**
076 * Check if the retirement reason code allows to retire multiple assets
077 *
078 * @param assetDetails
079 * @return
080 */
081 boolean isAllowedRetireMultipleAssets(MaintenanceDocument maintenanceDocument);
082
083 /**
084 * Creates GL Postables
085 */
086 void createGLPostables(AssetRetirementGlobal assetRetirementGlobal, CamsGeneralLedgerPendingEntrySourceBase assetRetirementGlPoster);
087
088 /**
089 * Get the offset Object Code
090 *
091 * @param asset
092 * @return
093 */
094 ObjectCode getOffsetFinancialObject(String chartOfAccountsCode);
095
096 /**
097 * This method generates the calculatedTotal amount based on salePrice + handlingFeeAmount + preventiveMaintenanceAmount.
098 *
099 * @param salePrice
100 * @param handlingFeeAmount
101 * @param preventiveMaintenanceAmount
102 * @return
103 */
104 // String generateCalculatedTotal(KualiDecimal salePrice, KualiDecimal handlingFeeAmount, KualiDecimal preventiveMaintenanceAmount);
105 String generateCalculatedTotal(String salePrice, String handlingFeeAmount, String preventiveMaintenanceAmount);
106
107 }