1 /* 2 * The Kuali Financial System, a comprehensive financial management system for higher education. 3 * 4 * Copyright 2005-2014 The Kuali Foundation 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU Affero General Public License as 8 * published by the Free Software Foundation, either version 3 of the 9 * License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Affero General Public License for more details. 15 * 16 * You should have received a copy of the GNU Affero General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 package org.kuali.kfs.module.cam.document.service; 20 21 import java.util.Date; 22 import java.util.List; 23 24 import org.kuali.kfs.module.cam.businessobject.AssetGlobal; 25 import org.kuali.kfs.module.cam.document.gl.CamsGeneralLedgerPendingEntrySourceBase; 26 import org.kuali.rice.core.api.util.type.KualiDecimal; 27 import org.kuali.rice.krad.bo.PersistableBusinessObject; 28 29 30 /** 31 * The interface defines methods for Asset Document 32 */ 33 public interface AssetGlobalService { 34 /** 35 * To calculate the total payment amounts for each asset. lastEntry is used to handle decimal rounding. When calculate the 36 * entries except the last one, divide total by number of assets. When calculate the lastEntry, first sum asset total amount for 37 * assets except the last one, then subtract the sum from total. 38 * 39 * @param assetGlobal 40 * @param lastEntry 41 * @return 42 */ 43 public KualiDecimal totalPaymentByAsset(AssetGlobal assetGlobal, boolean lastEntry); 44 45 /** 46 * This method checks if member exists in the given group. 47 * 48 * @param groupName 49 * @param memberName 50 * @return 51 */ 52 public boolean existsInGroup(String groupName, String memberName); 53 54 /** 55 * Creates GL Postables 56 */ 57 public void createGLPostables(AssetGlobal assetGlobal, CamsGeneralLedgerPendingEntrySourceBase assetGlobalGlPoster); 58 59 /** 60 * Validates if the document type matches that of Asset Separate. 61 * 62 * @param assetGlobal 63 * @return boolean 64 */ 65 public boolean isAssetSeparate(AssetGlobal assetGlobal); 66 67 /** 68 * Validates if the document type matches that of Asset Separate by payment 69 * 70 * @param assetGlobal 71 * @return boolean 72 */ 73 public boolean isAssetSeparateByPayment(AssetGlobal assetGlobal); 74 75 /** 76 * Add and return the total amount for all unique assets created. 77 * 78 * @param assetGlobal 79 * @return KualiDecimal 80 */ 81 public KualiDecimal getUniqueAssetsTotalAmount(AssetGlobal assetGlobal); 82 83 /** 84 * Returns assets for save for create new assets 85 * @param assetGlobal 86 * @return 87 */ 88 public List<PersistableBusinessObject> getCreateNewAssets(AssetGlobal assetGlobal); 89 90 /** 91 * Returns assets for save for asset separate 92 * @param assetGlobal 93 * @return 94 */ 95 public List<PersistableBusinessObject> getSeparateAssets(AssetGlobal assetGlobal); 96 97 /** 98 * @return the parameter value for the new acquisition type code 99 */ 100 public String getNewAcquisitionTypeCode(); 101 /** 102 * @return the parameter value for the capital object acquisition code group 103 */ 104 public String getCapitalObjectAcquisitionCodeGroup(); 105 /** 106 * @return the parameter value for the not new acquisition code group 107 */ 108 public String getNonNewAcquisitionCodeGroup(); 109 110 /** 111 * Gets the FISCAL_YEAR_END_MONTH_AND_DAY system parameter 112 * TODO This should be refactored to a generic parm accessible to any module. 113 * @return FISCAL_YEAR_END_MONTH_AND_DAY value 114 */ 115 public String getFiscalYearEndDayAndMonth(); 116 117 }