1 /* 2 * Copyright 2008 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.ole.sys.document.service; 17 18 import org.kuali.ole.coa.businessobject.Account; 19 import org.kuali.ole.coa.businessobject.Chart; 20 import org.kuali.ole.coa.businessobject.ObjectCode; 21 import org.kuali.ole.coa.businessobject.ObjectType; 22 import org.kuali.ole.coa.businessobject.ProjectCode; 23 import org.kuali.ole.coa.businessobject.SubAccount; 24 import org.kuali.ole.coa.businessobject.SubObjectCode; 25 import org.kuali.ole.sys.businessobject.AccountingLine; 26 import org.kuali.rice.krad.datadictionary.DataDictionary; 27 28 public interface AccountingLineRuleHelperService { 29 /** 30 * This method validates that an accounting line object contains values that actually exist in the DB. SubAccount and SubObject 31 * are only checked if there are values in them. The others throw errors if they area null. 32 * 33 * @param accountingLine 34 * @parm accountingLineByPosition 35 * @return success or failure of validating the AccountingLine 36 * @throws IllegalStateException 37 */ 38 public abstract boolean validateAccountingLine(AccountingLine accountingLine); 39 40 /** 41 * This method validates that the chart is active for use in the system. 42 * 43 * @param chart 44 * @param accountIdentifyingPropertyName 45 * @param dataDictionary 46 * @return boolean True if the Chart is valid. 47 */ 48 public abstract boolean isValidChart(String accountIdentifyingPropertyName, Chart chart, DataDictionary dataDictionary); 49 50 /** 51 * This method validates that the chart is active for use in the system. 52 * 53 * @param chart 54 * @param dataDictionary 55 * @param accountIdentifyingPropertyName 56 * @param errorPropertyName 57 * @return boolean True if the Chart is valid. 58 */ 59 public abstract boolean isValidChart(Chart chart, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 60 61 /** 62 * This method validates that the account is active for use in the system. 63 * 64 * @param accountIdentifyingPropertyName 65 * @param account 66 * @param dataDictionary 67 * @return boolean True if it is valid. 68 */ 69 public abstract boolean isValidAccount(String accountIdentifyingPropertyName, Account account, DataDictionary dataDictionary); 70 71 /** 72 * This method validates that the account is active for use in the system. 73 * 74 * @param account 75 * @param dataDictionary 76 * @param accountIdentifyingPropertyName 77 * @param errorPropertyName 78 * @return boolean True if it is valid. 79 */ 80 public abstract boolean isValidAccount(Account account, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 81 82 /** 83 * Checks that the given overrideCode is sufficient for the given BO, adding errors to the global map if not. 84 * 85 * @param line 86 * @param overrideCode 87 * @return whether the given overrideCode is sufficient for the given BO. 88 */ 89 public abstract boolean hasRequiredOverrides(AccountingLine line, String overrideCode); 90 91 /** 92 * This method validates that a sub account is active. 93 * 94 * @param accountIdentifyingPropertyName 95 * @param subAccount 96 * @param dataDictionary 97 * @return true if it exists 98 */ 99 public abstract boolean isValidSubAccount(String accountIdentifyingPropertyName, SubAccount subAccount, DataDictionary dataDictionary); 100 101 /** 102 * This method validates that a sub account is active. 103 * 104 * @param subAccount 105 * @param dataDictionary 106 * @param accountIdentifyingPropertyName 107 * @param errorPropertyName 108 * @return true if it exists 109 */ 110 public abstract boolean isValidSubAccount(SubAccount subAccount, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 111 112 /** 113 * This method validates that an object code is active. 114 * 115 * @param accountIdentifyingPropertyName 116 * @param objectCode 117 * @param dataDictionary 118 * @return boolean True if the object code is valid. 119 */ 120 public abstract boolean isValidObjectCode(String accountIdentifyingPropertyName, ObjectCode objectCode, DataDictionary dataDictionary); 121 122 /** 123 * This method validates that an object code is active. 124 * 125 * @param objectCode 126 * @param dataDictionary 127 * @param accountIdentifyingPropertyName 128 * @param errorPropertyName 129 * @return boolean True if the object code is valid. 130 */ 131 public abstract boolean isValidObjectCode(ObjectCode objectCode, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 132 133 /** 134 * This method validates that a sub object code is active. 135 * 136 * @param accountIdentifyingPropertyName 137 * @param subObjectCode 138 * @param dataDictionary 139 * @return boolean True if it is valid. 140 */ 141 public abstract boolean isValidSubObjectCode(String accountIdentifyingPropertyName, SubObjectCode subObjectCode, DataDictionary dataDictionary); 142 143 /** 144 * This method validates that a sub object code is active. 145 * 146 * @param subObjectCode 147 * @param dataDictionary 148 * @param errorPropertyName 149 * @return boolean True if it is valid. 150 */ 151 public abstract boolean isValidSubObjectCode(SubObjectCode subObjectCode, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 152 153 /** 154 * This method validates that a project code is active. 155 * 156 * @param accountIdentifyingPropertyName 157 * @param projectCode 158 * @param dataDictionary 159 * @return boolean True if it is valid. 160 */ 161 public abstract boolean isValidProjectCode(String accountIdentifyingPropertyName, ProjectCode projectCode, DataDictionary dataDictionary); 162 163 /** 164 * This method validates that a project code is active. 165 * 166 * @param projectCode 167 * @param dataDictionary 168 * @param errorPropertyName 169 * @param accountIdentifyingPropertyName 170 * @return boolean True if it is valid. 171 */ 172 public abstract boolean isValidProjectCode(ProjectCode projectCode, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 173 174 /** 175 * For the most part, object type codes aren't required on an accounting line; however, in some situations (e.g. Journal 176 * Voucher) they are entered directly into the accounting line and must be validated. In those cases, they must be validated for 177 * activeness. 178 * 179 * @param accountIdentifyingPropertyName 180 * @param objectTypeCode 181 * @param dataDictionary 182 * @return boolean True if the object type code is valid, false otherwise. 183 */ 184 public abstract boolean isValidObjectTypeCode(String accountIdentifyingPropertyName, ObjectType objectTypeCode, DataDictionary dataDictionary); 185 186 /** 187 * For the most part, object type codes aren't required on an accounting line; however, in some situations (e.g. Journal 188 * Voucher) they are entered directly into the accounting line and must be validated. In those cases, they must be validated for 189 * activeness. 190 * 191 * @param objectTypeCode 192 * @param dataDictionary 193 * @param accountIdentifyingPropertyName 194 * @param errorPropertyName 195 * @return boolean True if the object type code is valid, false otherwise. 196 */ 197 public abstract boolean isValidObjectTypeCode(ObjectType objectTypeCode, DataDictionary dataDictionary, String errorPropertyName, String accountIdentifyingPropertyName); 198 199 /** 200 * @return short label for chart code defined in data dictionary 201 */ 202 public abstract String getChartLabel(); 203 204 /** 205 * @return short label for account number defined in data dictionary 206 */ 207 public abstract String getAccountLabel(); 208 209 /** 210 * @return short label for sub account number defined in data dictionary 211 */ 212 public abstract String getSubAccountLabel(); 213 214 /** 215 * @return short label for object code defined in data dictionary 216 */ 217 public abstract String getObjectCodeLabel(); 218 219 /** 220 * @return short label for sub object code defined in data dictionary 221 */ 222 public abstract String getSubObjectCodeLabel(); 223 224 /** 225 * @return short label for project code defined in data dictionary 226 */ 227 public abstract String getProjectCodeLabel(); 228 229 /** 230 * @return short label for object type code defined in data dictionary 231 */ 232 public abstract String getObjectTypeCodeLabel(); 233 234 /** 235 * @return short label for object sub type code defined in data dictionary 236 */ 237 public abstract String getObjectSubTypeCodeLabel(); 238 239 /** 240 * @return short label for organization code defined in data dictionary 241 */ 242 public abstract String getOrganizationCodeLabel(); 243 244 /** 245 * @return short label for fund group code defined in data dictionary 246 */ 247 public abstract String getFundGroupCodeLabel(); 248 249 /** 250 * @return short label for sub fund group code defined in data dictionary 251 */ 252 public abstract String getSubFundGroupCodeLabel(); 253 }