View Javadoc
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.tem;
20  
21  import java.text.SimpleDateFormat;
22  import java.util.ArrayList;
23  import java.util.EnumSet;
24  import java.util.HashMap;
25  import java.util.LinkedHashMap;
26  import java.util.List;
27  import java.util.Map;
28  
29  import org.apache.commons.lang.StringUtils;
30  import org.apache.commons.lang.WordUtils;
31  import org.kuali.kfs.module.tem.document.TravelAuthorizationDocument;
32  import org.kuali.kfs.sys.KFSConstants;
33  import org.kuali.kfs.sys.KFSPropertyConstants;
34  import org.kuali.kfs.sys.KfsAuthorizationConstants.TransactionalEditMode;
35  
36  public class TemConstants {
37      public static final String PRE_FILLED_DESCRIPTION = "(Description will be filled upon submit)";
38      public static final String PRIMARY_DESTINATION_LOOKUPABLE = "primaryDestinationLookupable";
39  
40      public static final String PER_DIEM_LOOKUPABLE = "perDiemLookupable";
41      public static final String KIM_PERSON_LOOKUPABLE = "kimPersonLookupable";
42      public static final String TEM_PROFILE_LOOKUPABLE = "temProfileLookupable";
43      public static final String TRAVELER_PROFILE_DOC_LOOKUPABLE = "travelerProfileDocLookupable";
44      public static final String GROUP_TRAVELER_FOR_LOOKUP_LOOKUPABLE = "groupTravelerForLookupLookupable";
45  
46      public static final String NAMESPACE = "KFS-TEM";
47      public static final String PARAM_NAMESPACE = NAMESPACE;
48  
49      public static final String CERTIFICATION_STATEMENT_ATTRIBUTE = "certificationStatement";
50      public static final String CAN_CERTIFY_ATTRIBUTE = "certificationStatement";
51      public static final String EMPLOYEE_TEST_ATTRIBUTE = "isEmployee";
52      public static final String ENABLE_PRIMARY_DESTINATION_ATTRIBUTE = "enablePrimaryDestination";
53      public static final String ENABLE_PER_DIEM_LOOKUP_LINKS_ATTRIBUTE = "enablePerDiemLookupLinks";
54      public static final String REMAINING_DISTRIBUTION_ATTRIBUTE = "remainingDistribution";
55      public static final String DISPLAY_EMERGENCY_CONTACT_TAB = "displayEmergencyContactTab";
56      public static final String AR_INVOICE_DOC_TYPE_NAME = "INV";
57      public static final String COVERSHEET_FILENAME_FORMAT = "%s_cover_sheet.pdf";
58      public static final String EXPENSE_SUMMARY_REPORT_TITLE = "%s_Expense_Summary";
59      public static final String SUMMARY_BY_DAY_TITLE = "%s_Summary_By_Day";
60      public static final String ENTERTAINMENT_CERTIFICATION_REPORT_TITLE = "_Entertainment_Certification";
61      public static final String NON_EMPLOYEE_CERTIFICATION_REPORT_TITLE = "_Non_Employee_Certification";
62      public static final String SHOW_REPORTS_ATTRIBUTE = "showReports";
63      public static final String ALLOW_TRAVELER_ADDRESS_CHANGE_ATTRIBUTE = "allowTravelerAddressChange";
64      public static final String TRAVEL_ARRANGER_TEST_ATTRIBUTE = "travelArranger";
65      public static final String TRAVEL_MANAGER_TEST_ATTRIBUTE = "travelManager";
66      public static final String FISCAL_OFFICER_TEST_ATTRIBUTE = "fiscalOfficer";
67      public static final String DELINQUENT_TEST_ATTRIBUTE = "delinquent";
68      public static final String TEM_DOCUMENT_IDENTIFER_NOT_AVAILABLE = "Not Available";
69  
70      public static final String AMENDMENT_TA_QUESTION = "AmendmentTa";
71      public static final String CLOSE_TA_QUESTION = "CloseTa";
72      public static final String CONFIRM_AMENDMENT_QUESTION = "ConfirmAmendment";
73      public static final String CONFIRM_CLOSE_QUESTION = "ConfirmClose";
74      public static final String AMENDMENT_NOTE_PREFIX = "Note entered while amending a Travel Authorization : ";
75      public static final String HOLD_TA_QUESTION = "HoldTa";
76      public static final String CONFIRM_HOLD_QUESTION = "ConfirmHold";
77      public static final String HOLD_NOTE_PREFIX = "Note entered while placing Travel Authorization on hold : ";
78      public static final String REMOVE_HOLD_TA_QUESTION = "RemoveHoldTa";
79      public static final String CONFIRM_REMOVE_HOLD_QUESTION = "ConfirmRemoveHold";
80      public static final String CONFIRM_CLOSE_QUESTION_TEXT = "When you close this Travel Authorization, remaining encumbrance will be liquidated.";
81      public static final String CANCEL_TA_QUESTION = "CancelTa";
82      public static final String CONFIRM_CANCEL_QUESTION = "ConfirmCancel";
83      public static final String CONFIRM_CANCEL_QUESTION_TEXT = "When you cancel this Travel Authorization, remaining encumbrance will be liquidated.";
84  
85      public static final String REMOVE_HOLD_NOTE_PREFIX = "Note entered while removing a hold on Travel Authorization : ";
86      public static final String RETURN_TO_FO_QUESTION = "ReturnToFiscalOfficer";
87      public static final String RETURN_TO_FO_NOTE_PREFIX = "Note entered while returning Travel Reimbursement to fiscal officer : ";
88      public static final String AMEND_NOTE_PREFIX = "Note entered while amending a Travel Authorization : ";
89      public static final String AMEND_NOTE_SUFFIX = "(Previous Document Id is {0})";
90      public static final String CANCEL_NOTE_PREFIX = "Note entered while canceling a Travel Authorization : ";
91      public static final String ORIGIN_CODE = "01";
92      public static final String QUESTION_CONFIRMATION = "temSingleConfirmationQuestion";
93      public static final String REMOVE_HOLD_TA_TEXT = "Remove the Hold on";
94      public static final String HOLD_TA_TEXT = "Hold";
95      public static final String AMEND_TA_TEXT = "Amend";
96      public static final String CLOSE_TA_TEXT = "Close";
97      public static final String RETURN_TO_FO_TEXT = "Return";
98      public static final String CANCEL_TA_TEXT = "Cancel";
99  
100     public static final String NEW_TEM_PROFILE_DESCRIPTION_PREFIX = "New Traveler Profile for ";
101 
102     public static final String INITIATOR_RESPONSIBILITY = "Initiator";
103 
104     // //////////////////////////////////////////////////////////////////////////////////////
105     // Attributes used for the Reimbursement Expenses Totals //
106     // //////////////////////////////////////////////////////////////////////////////////////
107     public static final String TOTAL_EXPENSES_ATTRIBUTE = "totalExpenses";
108     public static final String PER_DIEM_ADJUSTMENT_ATTRIBUTE = "lessManualPerDiemAdjustment";
109     public static final String NON_REIMBURSABLE_ATTRIBUTE = "nonReimbursable";
110     public static final String ELIGIBLE_FOR_REIMB_ATTRIBUTE = "eligibleForReimbursement";
111     public static final String TOTAL_REIMBURSABLE_ATTRIBUTE = "totalReimbursable";
112     public static final String EXPENSE_LIMIT_ATTRIBUTE = "expenseLimitEditable";
113     public static final String LESS_ADVANCES_ATTRIBUTE = "lessAdvances";
114     public static final String SHOW_ENCUMBRANCE_ATTRIBUTE = "showEncumbrance";
115     public static final String SHOW_ADVANCES_ATTRIBUTE = "showAdvances";
116     public static final String REIMBURSEMENT_ATTRIBUTE = "reimbursement";
117     public static final String ENCUMBRANCE_AMOUNT_ATTRIBUTE = "encumbranceAmount";
118     public static final String SHOW_ACCOUNT_DISTRIBUTION_ATTRIBUTE = "accountDistribution";
119     // //////////////////////////////////////////////////////////////////////////////////////
120     // End of Attributes used for the Reimbursement Expenses Totals //
121     // //////////////////////////////////////////////////////////////////////////////////////
122 
123     public static final String MILEAGE_TOTAL_ATTRIBUTE = "mileageTotal";
124     public static final String LODGING_TOTAL_ATTRIBUTE = "lodgingTotal";
125     public static final String MEALS_AND_INC_TOTAL_ATTRIBUTE = "mealsAndIncidentalsTotal";
126     public static final String DAILY_TOTAL = "dailyTotal";
127 
128     // TripType's Per Diem Calc Method
129     public static final String PERCENTAGE = "P";
130     public static final String QUARTER = "Q";
131 
132     public static class TripIdPrefix {
133         public static final String TRIP_PREFIX = "T-";
134         public static final String RELOCATION_PREFIX = "R-";
135         public static final String ENTERTAINMENT_PREFIX = "E-";
136     }
137 
138     public static interface Report {
139         public static final String TEMPLATE_CLASSPATH = "org/kuali/kfs/module/tem/report/";
140         public static final String TEMPLATE_PATH_FORMAT = TEMPLATE_CLASSPATH + "%s";
141         public static final String MESSAGES_CLASSPATH = TEMPLATE_CLASSPATH + "TravelExpenseReport";
142 
143     }
144 
145     public static class TravelDocTypes {
146         public static final String TRAVEL_AUTHORIZATION_DOCUMENT = "TA";
147         public static final String TRAVEL_AUTHORIZATION_CLOSE_DOCUMENT = "TAC";
148         public static final String TRAVEL_AUTHORIZATION_AMEND_DOCUMENT = "TAA";
149         public static final String TRAVEL_REIMBURSEMENT_DOCUMENT = "TR";
150         public static final String TRAVEL_RELOCATION_DOCUMENT = "RELO";
151         public static final String TRAVEL_ENTERTAINMENT_DOCUMENT = "ENT";
152         public static final String TRAVEL_ARRANGER_DOCUMENT = "TTA";
153         public static final String TRAVEL_PROFILE_DOCUMENT = "TTP";
154         public static final String TRAVEL_AUTHORIZATION_CHECK_ACH_DOCUMENT = "TACA";
155         public static final String TRAVEL_AUTHORIZATION_WIRE_OR_FOREIGN_DRAFT_DOCUMENT = "TAWF";
156         public static final String TRAVEL_REIMBURSEMENT_CHECK_ACH_DOCUMENT = "TRCA";
157         public static final String TRAVEL_REIMBURSEMENT_WIRE_OR_FOREIGN_DRAFT_DOCUMENT = "TRWF";
158         public static final String TRAVEL_REIMBURSEMENT_TRAVEL_ADVANCES_DOCUMENT = "TRTA";
159         public static final String ENTERTAINMENT_CHECK_ACH_DOCUMENT = "ENCA";
160         public static final String ENTERTAINMENT_WIRE_OR_FOREIGN_DRAFT_DOCUMENT = "ENWF";
161         public static final String RELOCATION_CHECK_ACH_DOCUMENT = "RECA";
162         public static final String RELOCATION_WIRE_OR_FOREIGN_DRAFT_DOCUMENT = "REWF";
163         public static final String REIMBURSABLE_CORPORATE_CARD_CHECK_ACH_DOCUMENT = "RCCA";
164         public static final String TRAVEL_CTS_CARD_DOCUMENT = "CTAP";
165         public static final String TRAVEL_CORP_CARD_DOCUMENT = "CCAP";
166         public static final String TEM_TRANSACTIONAL_DOCUMENT = "TT";
167         public static final String TRAVEL_TRANSACTIONAL_DOCUMENT = "TRV";
168 
169         public static List<String> getAuthorizationDocTypes(){
170             List<String> authorizationDocTypes = new ArrayList<String>();
171             authorizationDocTypes.add(TRAVEL_AUTHORIZATION_DOCUMENT);
172             authorizationDocTypes.add(TRAVEL_AUTHORIZATION_AMEND_DOCUMENT);
173             authorizationDocTypes.add(TRAVEL_AUTHORIZATION_CLOSE_DOCUMENT);
174             return authorizationDocTypes;
175         }
176 
177         public static List<String> getReimbursementDocTypes(){
178             List<String> authorizationDocTypes = new ArrayList<String>();
179             authorizationDocTypes.add(TRAVEL_REIMBURSEMENT_DOCUMENT);
180             authorizationDocTypes.add(TRAVEL_RELOCATION_DOCUMENT);
181             authorizationDocTypes.add(TRAVEL_ENTERTAINMENT_DOCUMENT);
182             return authorizationDocTypes;
183         }
184 
185     }
186 
187     public static class TravelParameters {
188         public static final String TRAVELER_ADDRESS_CHANGE_IND = "TRAVELER_ADDRESS_CHANGE_IND";
189         //CLEANUP update all the parameter usage
190         public static final String DOCUMENT_DTL_TYPE = "Document";
191         public static final String NON_EMPLOYEE_TRAVELER_TYPE_CODES = "NON_EMPLOYEE_TRAVELER_TYPE_CODES";
192         public static final String EMPLOYEE_TRAVELER_TYPE_CODES = "EMPLOYEE_TRAVELER_TYPE_CODES";
193         public static final String PER_DIEM_CATEGORIES = "PER_DIEM_CATEGORIES";
194         public static final String VALIDATE_DAILY_PER_DIEM_AND_INCIDENTALS_IND = "VALIDATE_DAILY_PER_DIEM_AND_INCIDENTALS_IND";
195         public static final String DOCUMENTATION_LOCATION_CODE = "DOCUMENTATION_LOCATION_CODE";
196         public static final String TRAVEL_COVERSHEET_INSTRUCTIONS = "TRAVEL_COVERSHEET_INSTRUCTIONS";
197         public static final String EMPLOYEE_CERTIFICATION_STATEMENT = "EMPLOYEE_CERTIFICATION_STATEMENT";
198         public static final String NON_EMPLOYEE_CERTIFICATION_STATEMENT = "NON_EMPLOYEE_CERTIFICATION_STATEMENT";
199         public static final String CUMULATIVE_REIMBURSABLE_AMOUNT_WITHOUT_DIVISION_APPROVAL = "CUMULATIVE_REIMBURSABLE_AMOUNT_WITHOUT_DIVISION_APPROVAL";
200         public static final String INCIDENTALS_WITH_MEALS_IND = "INCIDENTALS_WITH_MEALS_IND";
201         public static final String QUARTER_DAY_TIME_TABLE = "QUARTER_DAY_TIME_TABLE";
202         public static final String NUMBER_OF_DAYS_DELINQUENT = "NUMBER_OF_DAYS_DELINQUENT";
203 
204         public static final String ALWAYS_REIMBURSABLE_CARD_TYPE = "ALWAYS_REIMBURSABLE_CARD_TYPE";
205         public static final String AMOUNT_DUE_CORPORATE_CARD_TOTAL_LINE_IND = "AMOUNT_DUE_CORPORATE_CARD_TOTAL_LINE_IND";
206         public static final String CORPORATE_CARD_PAYMENT_IND = "CORPORATE_CARD_PAYMENT_IND";
207         public static final String SEPARATION_OF_DUTIES_ROUTING_CHOICE = "SEPARATION_OF_DUTIES_ROUTING_CHOICE";
208         public static final String IMPORTED_EXPENSE_DETAIL_IND = "IMPORTED_EXPENSE_DETAIL_IND";
209         public static final String ACCOUNTING_LINE_VALIDATION = "ACCOUNTING_LINE_VALIDATION";
210 
211         public static final String ENTERTAINMENT_MANAGER_TO_EDIT_ALL_IND = "ENTERTAINMENT_MANAGER_TO_EDIT_ALL_IND";
212         public static final String MOVING_RELOCATION_MANAGER_TO_EDIT_ALL_IND = "MOVING_RELOCATION_MANAGER_TO_EDIT_ALL_IND";
213         public static final String INTERNATIONAL_TRIP_TYPES = "INTERNATIONAL_TRIP_TYPES";
214 
215         public static final String UPLOAD_PARSER_INSTRUCTIONS_URL = "UPLOAD_PARSER_INSTRUCTIONS_URL";
216 
217         public static final String SEND_NOTIFICATION_DOCUMENT_TYPES = "SEND_NOTIFICATION_DOCUMENT_TYPES";
218 
219         public static final String TRAVEL_EMAIL_ADDRESS = "TRAVEL_EMAIL_ADDRESS";
220         public static final String SEND_NOTIFICATION_ON_WORKFLOW_STATUS_CHANGE_IND = "SEND_NOTIFICATION_ON_WORKFLOW_STATUS_CHANGE_IND";
221         public static final String CHANGE_NOTIFICATION_SUBJECT = "CHANGE_NOTIFICATION_SUBJECT";
222         public static final String FROM_EMAIL_ADDRESS_PARAM_NAME = "FROM_EMAIL_ADDRESS";
223 
224         public static final String VENDOR_PAYMENT_REASON_CODE = "VENDOR_PAYMENT_REASON_CODE";
225         public static final String INCLUDE_ARRANGER_EXPENSE_IN_IMPORTED_EXPENSE_IND = "INCLUDE_ARRANGER_EXPENSE_IN_IMPORTED_EXPENSE_IND";
226         public static final String INCLUDE_TRAVELER_TYPE_IN_TRIP_ID_IND = "INCLUDE_TRAVELER_TYPE_IN_TRIP_ID_IND";
227 
228         public static final String PER_DIEM_MILEAGE_RATE_EXPENSE_TYPE_CODE = "PER_DIEM_MILEAGE_RATE_EXPENSE_TYPE_CODE";
229 
230         public static final String INTERNATIONAL_TRIP_REQUIRES_ACCOMMODATION_IND = "INTERNATIONAL_TRIP_REQUIRES_ACCOMMODATION_IND";
231         public static final String DUPLICATE_TRIP_DATE_RANGE_DAYS  = "DUPLICATE_TRIP_DATE_RANGE_DAYS";
232     }
233 
234     public static class TravelAuthorizationParameters {
235         public static final String TRAVEL_ADVANCE_OBJECT_CODE = "TRAVEL_ADVANCE_OBJECT_CODE";
236         public static final String TRAVEL_ADVANCE_CHART = "TRAVEL_ADVANCE_CHART";
237         public static final String TRAVEL_ADVANCE_ACCOUNT = "TRAVEL_ADVANCE_ACCOUNT";
238         public static final String TRAVEL_ADVANCE_PAYMENT_REASON_CODE = "TRAVEL_ADVANCE_PAYMENT_REASON_CODE";
239         public static final String DISPLAY_EMERGENCY_CONTACT_IND = "DISPLAY_EMERGENCY_CONTACT_IND";
240         public static final String CUSTOMER_TYPE_CODE = "CUSTOMER_TYPE_CODE";
241 
242         public static final String GENERATE_INVOICE_FOR_TRAVEL_ADVANCE_IND = "GENERATE_INVOICE_INV_FOR_TRAVL_ADVANCE_IND";
243         public static final String FIRST_AND_LAST_DAY_PER_DIEM_PERCENTAGE = "FIRST_AND_LAST_DAY_PER_DIEM_PERCENTAGE";
244         public static final String DUE_DATE_DAYS = "DUE_DATE_DAYS";
245         public static final String TRAVEL_ADVANCE_INVOICE_ITEM_CODE = "TRAVEL_ADVANCE_INVOICE_ITEM_CODE";
246         public static final String TRAVEL_ADVANCE_BILLING_ORGANIZATION = "TRAVEL_ADVANCE_BILLING_ORGANIZATION";
247         public static final String TRAVEL_ADVANCE_BILLING_CHART = "TRAVEL_ADVANCE_BILLING_CHART";
248         public static final String DISPLAY_PER_DIEM_URL_IND = "DISPLAY_PER_DIEM_URL_IND";
249         public static final String OVERRIDE_PRIMARY_DESTINATION_IND = "OVERRIDE_PRIMARY_DESTINATION_IND";
250         public static final String PER_DIEM_AMOUNT_EDITABLE_IND = "PER_DIEM_AMOUNT_EDITABLE_IND";
251         public static final String TRAVEL_ADVANCES_POLICY_URL = "TRAVEL_ADVANCES_POLICY_URL";
252         public static final String CASH_ADVANCE_CREDIT_CARD_TYPES = "CASH_ADVANCE_CREDIT_CARD_TYPES";
253         public static final String CASH_ADVANCE_WARNING_IND = "CASH_ADVANCE_WARNING_IND";
254         public static final String MULTIPLE_CASH_ADVANCES_ALLOWED_IND = "MULTIPLE_CASH_ADVANCES_ALLOWED_IND";
255 
256         public static final String VENDOR_PAYMENT_ALLOWED_BEFORE_FINAL_APPROVAL_IND = "VENDOR_PAYMENT_ALLOWED_BEFORE_FINAL_APPROVAL_IND";
257         public static final String HOLD_NEW_FISCAL_YEAR_ENCUMBRANCES_IND = "HOLD_NEW_FISCAL_YEAR_ENCUMBRANCES_IND";
258         public static final String DISPLAY_IMPORTED_EXPENSE_IND = "DISPLAY_IMPORTED_EXPENSE_IND";
259 
260     }
261 
262     public static class TravelReimbursementParameters {
263         public static final String FOREIGN_CURRENCY_URL = "FOREIGN_CURRENCY_URL";
264         public static final String DISPLAY_ENCUMBRANCE_IND = "DISPLAY_ENCUMBRANCE_IND";
265         public static final String DISPLAY_ADVANCES_IN_REIMBURSEMENT_TOTAL_IND = "DISPLAY_ADVANCES_IN_REIMBURSEMENT_TOTAL_IND";
266         public static final String TRAVEL_PAYMENT_MEDIUM = "TRAVEL_PAYMENT_MEDIUM_TYPE_CODE";
267         public static final String PER_DIEM_OBJECT_CODE = "PER_DIEM_OBJECT_CODE";
268         public static final String LODGING_OBJECT_CODE = "LODGING_OBJECT_CODE";
269         public static final String DEFAULT_CHART = "DEFAULT_CHART";
270         public static final String LODGING_TYPE_CODES = "LODGING_TYPE_CODES";
271         public static final String TRANSPORTATION_TYPE_CODES = "TRANSPORTATION_TYPE_CODES";
272         public static final String APPLY_REIMBURSEMENT_AGAINST_MULTIPLE_INVOICES_IND = "APPLY_REIMBURSEMENT_AGAINST_MULTIPLE_INVOICES_IND";
273         public static final String DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND = "DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND";
274         public static final String REIMBURSEMENT_PERCENT_OVER_ENCUMBRANCE_AMOUNT = "REIMBURSEMENT_PERCENT_OVER_ENCUMBRANCE_AMOUNT";
275         public static final String OBJECT_LEVELS = "OBJECT_LEVELS";
276         public static final String PER_DIEM_AMOUNT_EDITABLE_IND = "PER_DIEM_AMOUNT_EDITABLE_IND";
277         public static final String AUTOMATIC_APPROVALS_IND = "AUTOMATIC_APPROVALS_IND";
278         public static final String DISPLAY_TRAVEL_AUTHORIZATION_ESTIMATE_IN_SUMMARY_REPORT_IND = "DISPLAY_TRAVEL_AUTHORIZATION_ESTIMATE_IN_SUMMARY_REPORT_IND";
279         public static final String FAX_NUMBER = "FAX_NUMBER";
280         public static final String VENDOR_PAYMENT_ALLOWED_BEFORE_FINAL_APPROVAL_IND = "VENDOR_PAYMENT_ALLOWED_BEFORE_FINAL_APPROVAL_IND";
281         public static final String PAYMENT_REASON_CODE = "PAYMENT_REASON_CODE";
282         public static final String PRETRIP_REIMBURSEMENT_IND = "PRETRIP_REIMBURSEMENT_IND";
283         public static final String BARCODE_STYLE = "BARCODE_STYLE";
284     }
285 
286     public static class TravelRelocationParameters {
287         public static final String DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND = "DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND";
288         public static final String DEFAULT_CHART = "DEFAULT_CHART";
289         public static final String PAYMENT_REASON_CODE = "PAYMENT_REASON_CODE";
290     }
291 
292     public static class TravelEntertainmentParameters {
293         public static final String HOST_CERTIFICATION_REQUIRED_IND = "HOST_CERTIFICATION_REQUIRED_IND";
294         public static final String PAYMENT_REASON_CODE = "PAYMENT_REASON_CODE";
295         public static final String DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND = "DISPLAY_ACCOUNTING_DISTRIBUTION_TAB_IND";
296         public static final String NON_EMPLOYEE_CERTIFICATION_REQUIRED_IND = "NON_EMPLOYEE_CERTIFICATION_REQUIRED_IND";
297     }
298 
299     public static class TravelEntertainment {
300         public static final String DOCUMENT_NAME = "Entertainment Reimbursement";
301     }
302 
303     public static class TemProfileParameters {
304         public static final String PARAM_DTL_TYPE = "TemProfile";
305         public static final String VALID_TRAVELER_TYPE_BY_CUSTOMER_TYPE = "VALID_TRAVELER_TYPE_BY_CUSTOMER_TYPE";
306         public static final String VALID_KIM_TYPE_AFFILIATION_BY_TRAVER_TYPE = "VALID_KIM_TYPE_AFFILIATION_BY_TRAVER_TYPE";
307         public static final String EXPORT_FILE_FORMAT = "EXPORT_FILE_FORMAT";
308     }
309 
310     public static final String TRAVEL_DOC_APP_DOC_STATUS_INIT = "Initiated";
311 
312     public static class TravelStatusCodeKeys {
313         public static final String IN_PROCESS = "In Process";
314         public static final String CANCELLED = "Cancelled";
315 
316         public static final String AWAIT_TRVLR = "Awaiting Traveler Review";
317         public static final String AWAIT_FISCAL = "Awaiting Fiscal Officer Review";
318         public static final String AWAIT_ORG = "Awaiting Organization Review";
319         public static final String AWAIT_DIV = "Awaiting Division Review";
320         public static final String AWAIT_INTL = "Awaiting International Travel Review";
321         public static final String AWAIT_SUB = "Awaiting Sub-Fund Review";
322         public static final String AWAIT_AWARD = "Awaiting Award Review";
323         public static final String AWAIT_BUDGET = "Await Budget";
324         public static final String AWAIT_SPCL = "Awaiting Special Request Review";
325         public static final String AWAIT_SEP_DUTIES = "Awaiting Separation Of Duties Review";
326         public static final String AWAIT_DISBURSEMENT_METHOD = "Awaiting Disbursement Method Review";
327 
328         public static final String DAPRVD_TRVLR = "Disapproved - Traveler";
329         public static final String DAPRVD_FISCAL = "Disapproved - Fiscal Officer";
330         public static final String DAPRVD_ORG = "Disapproved - Organization";
331         public static final String DAPRVD_DIV = "Disapproved - Division";
332         public static final String DAPRVD_INTL = "Disapproved - International Travel";
333         public static final String DAPRVD_SUB = "Disapproved - Sub-Fund";
334         public static final String DAPRVD_AWARD = "Disapproved - Award";
335         public static final String DAPRVD_BUDGET = "Disapproved - Budget";
336         public static final String DAPRVD_SPCL = "Disapproved - Special Request";
337         public static final String DAPRVD_SEP_DUTIES = "Disapproved - Separation Of Duties";
338         public static final String DAPRVD_DISBURSEMENT_METHOD = "Disapproved - Disbursement Method";
339     }
340 
341     public static class TravelAuthorizationStatusCodeKeys extends TravelStatusCodeKeys{
342 
343         public static final String AWAIT_RISK = "Awaiting Risk Management Review";
344         public static final String AWAIT_TRVL_MGR = "Awaiting Travel Manager Review";
345         public static final String DAPRVD_RISK = "Disapproved - Risk Management";
346         public static final String DAPRVD_TRVL = "Disapproved - Travel";
347 
348         public static final String REIMB_HELD = "Reimbursement On Hold";
349         public static final String CLOSED = "Closed";
350         public static final String OPEN_REIMB = "Open For Reimbursement";
351         public static final String PEND_AMENDMENT = "Pending Amendment";
352         public static final String CHANGE_IN_PROCESS = "Change In Process";
353         public static final String RETIRED_VERSION = "Retired Version";
354 
355         public static HashMap<String, String> getDisapprovedAppDocStatusMap() {
356             HashMap<String, String> disapprovedAppDocStatusMap;
357 
358             disapprovedAppDocStatusMap = new HashMap<String, String>();
359             disapprovedAppDocStatusMap.put(AWAIT_TRVLR,  DAPRVD_TRVLR);
360             disapprovedAppDocStatusMap.put(AWAIT_FISCAL, DAPRVD_FISCAL);
361             disapprovedAppDocStatusMap.put(AWAIT_ORG, DAPRVD_ORG);
362             disapprovedAppDocStatusMap.put(AWAIT_DIV, DAPRVD_DIV);
363             disapprovedAppDocStatusMap.put(AWAIT_INTL, DAPRVD_INTL);
364             disapprovedAppDocStatusMap.put(AWAIT_RISK, DAPRVD_RISK);
365             disapprovedAppDocStatusMap.put(AWAIT_SUB,  DAPRVD_SUB);
366             disapprovedAppDocStatusMap.put(AWAIT_AWARD, DAPRVD_AWARD);
367             disapprovedAppDocStatusMap.put(AWAIT_BUDGET, DAPRVD_BUDGET);
368             disapprovedAppDocStatusMap.put(AWAIT_SPCL, DAPRVD_SPCL);
369             disapprovedAppDocStatusMap.put(AWAIT_TRVL_MGR, DAPRVD_TRVL);
370             disapprovedAppDocStatusMap.put(AWAIT_SEP_DUTIES, DAPRVD_SEP_DUTIES);
371             disapprovedAppDocStatusMap.put(AWAIT_DISBURSEMENT_METHOD, DAPRVD_DISBURSEMENT_METHOD);
372 
373             return disapprovedAppDocStatusMap;
374         }
375     }
376     public static final String TRAVEL_ADVANCE_ACCOUNTING_LINE_TYPE_CODE = "A";
377     public static final String TRAVEL_ADVANCE_ACCOUNTING_LINE_GROUP_NAME = "advance";
378     public static final String TRAVEL_ADVANCE_CLEARING_LINE_TYPE_CODE = "B";
379     public static final String TRAVEL_ADVANCE_CREDITING_LINE_TYPE_CODE = "C";
380 
381     public static final String ALL_EXPENSE_TYPE_OBJECT_CODE_TRIP_TYPE = "All";
382     public static final String ALL_EXPENSE_TYPE_OBJECT_CODE_TRAVELER_TYPE = "All";
383 
384     public static final Map<String, Class> uncopyableFieldsForTravelAuthorization() {
385         Map<String, Class> returnMap = new HashMap<String, Class>();
386         returnMap.put(KFSPropertyConstants.DOCUMENT_NUMBER, null);
387         return returnMap;
388     }
389 
390     public static class TravelReimbursementStatusCodeKeys extends TravelStatusCodeKeys{
391 
392         public static final String DEPT_APPROVED = "Department Approved";
393         public static final String AWAIT_TRVL_ACCOUNTING = "Awaiting Travel Accounting Review";
394         public static final String AWAIT_TAX_MANAGER = "Awaiting Tax Manager Review";
395         public static final String AWAIT_TRVL_MGR = "Awaiting Travel Manager Review";
396 
397         public static final String DAPRVD_TRVL_ACCOUNTING = "Disapproved - Travel Accounting";
398         public static final String DAPRVD_TAX_MANAGER = "Disapproved - Tax Manager";
399         public static final String DAPRVD_TRVL = "Disapproved - Travel";
400 
401         public static HashMap<String, String> getDisapprovedAppDocStatusMap() {
402             HashMap<String, String> disapprovedAppDocStatusMap;
403 
404             disapprovedAppDocStatusMap = new HashMap<String, String>();
405             disapprovedAppDocStatusMap.put(AWAIT_TRVLR,  DAPRVD_TRVLR);
406             disapprovedAppDocStatusMap.put(AWAIT_FISCAL, DAPRVD_FISCAL);
407             disapprovedAppDocStatusMap.put(AWAIT_DIV,  DAPRVD_DIV);
408             disapprovedAppDocStatusMap.put(AWAIT_INTL,  DAPRVD_INTL);
409             disapprovedAppDocStatusMap.put(AWAIT_SUB,  DAPRVD_SUB);
410             disapprovedAppDocStatusMap.put(AWAIT_AWARD, DAPRVD_AWARD);
411             disapprovedAppDocStatusMap.put(AWAIT_BUDGET, DAPRVD_BUDGET);
412             disapprovedAppDocStatusMap.put(AWAIT_SPCL, DAPRVD_SPCL);
413             disapprovedAppDocStatusMap.put(AWAIT_TAX_MANAGER, DAPRVD_TAX_MANAGER);
414             disapprovedAppDocStatusMap.put(AWAIT_TRVL_MGR, DAPRVD_TRVL);
415             disapprovedAppDocStatusMap.put(AWAIT_DISBURSEMENT_METHOD, DAPRVD_DISBURSEMENT_METHOD);
416             return disapprovedAppDocStatusMap;
417         }
418     }
419 
420     public static class TravelRelocationStatusCodeKeys extends TravelReimbursementStatusCodeKeys{
421         public static final String AWAIT_RELO_MANAGER = "Awaiting Moving And Relocation Manager Review";
422         public static final String AWAIT_EXECUTIVE = "Awaiting Executive Review";
423 
424         public static final String RELO_MANAGER_APPROVED = "Moving And Relocation Manager Approved";
425         public static final String DAPRVD_RELO_MANAGER = "Disapproved - Moving And Relocation Manager";
426         public static final String DAPRVD_EXECUTIVE = "Disapproved - Executive";
427 
428         public static HashMap<String, String> getDisapprovedAppDocStatusMap() {
429             HashMap<String, String> disapprovedAppDocStatusMap;
430 
431             disapprovedAppDocStatusMap = new HashMap<String, String>();
432             disapprovedAppDocStatusMap.put(AWAIT_TRVLR,  DAPRVD_TRVLR);
433             disapprovedAppDocStatusMap.put(AWAIT_FISCAL, DAPRVD_FISCAL);
434             disapprovedAppDocStatusMap.put(AWAIT_ORG, DAPRVD_ORG);
435             disapprovedAppDocStatusMap.put(AWAIT_SUB,  DAPRVD_SUB);
436             disapprovedAppDocStatusMap.put(AWAIT_AWARD, DAPRVD_AWARD);
437             disapprovedAppDocStatusMap.put(AWAIT_BUDGET, DAPRVD_BUDGET);
438             disapprovedAppDocStatusMap.put(AWAIT_EXECUTIVE, DAPRVD_EXECUTIVE);
439             disapprovedAppDocStatusMap.put(AWAIT_TAX_MANAGER, DAPRVD_TAX_MANAGER);
440             disapprovedAppDocStatusMap.put(AWAIT_SEP_DUTIES, DAPRVD_SEP_DUTIES);
441             disapprovedAppDocStatusMap.put(AWAIT_DISBURSEMENT_METHOD, DAPRVD_DISBURSEMENT_METHOD);
442             disapprovedAppDocStatusMap.put(AWAIT_RELO_MANAGER, DAPRVD_RELO_MANAGER);
443 
444             return disapprovedAppDocStatusMap;
445         }
446     }
447 
448     public static class EntertainmentStatusCodeKeys extends TravelReimbursementStatusCodeKeys{
449 
450         public static final String AWAIT_ENT_MANAGER = "Awaiting Entertainment Manager Review";
451         public static final String ENT_MANAGER_APPROVED = "Entertainment Manager Approved";
452         public static final String DAPRVD_ENT_MANAGER = "Disapproved - Entertainment Manager";
453 
454         public static HashMap<String, String> getDisapprovedAppDocStatusMap() {
455             HashMap<String, String> disapprovedAppDocStatusMap;
456 
457             disapprovedAppDocStatusMap = new HashMap<String, String>();
458             disapprovedAppDocStatusMap.put(AWAIT_TRVLR,  DAPRVD_TRVLR);
459             disapprovedAppDocStatusMap.put(AWAIT_FISCAL, DAPRVD_FISCAL);
460             disapprovedAppDocStatusMap.put(AWAIT_ORG, DAPRVD_ORG);
461             disapprovedAppDocStatusMap.put(AWAIT_SUB,  DAPRVD_SUB);
462             disapprovedAppDocStatusMap.put(AWAIT_AWARD, DAPRVD_AWARD);
463             disapprovedAppDocStatusMap.put(AWAIT_BUDGET, DAPRVD_BUDGET);
464             disapprovedAppDocStatusMap.put(AWAIT_SPCL, DAPRVD_SPCL);
465             disapprovedAppDocStatusMap.put(AWAIT_TAX_MANAGER, DAPRVD_TAX_MANAGER);
466             disapprovedAppDocStatusMap.put(AWAIT_SEP_DUTIES, DAPRVD_SEP_DUTIES);
467             disapprovedAppDocStatusMap.put(AWAIT_DISBURSEMENT_METHOD, DAPRVD_DISBURSEMENT_METHOD);
468             disapprovedAppDocStatusMap.put(AWAIT_ENT_MANAGER, DAPRVD_ENT_MANAGER);
469 
470             return disapprovedAppDocStatusMap;
471         }
472     }
473 
474     //Permission and Template names are same in the setup
475     public class Permission {
476         public static final String AMEND_TA = "Amend TA";
477         public static final String HOLD_TA = "Hold TA";
478         public static final String REMOVE_HOLD_TA = "Remove Hold TA";
479         public static final String CANCEL_TA = "Cancel TA";
480         public static final String CLOSE_TA = "Close TA";
481         public static final String RETURN_TO_FO = "Return to Fiscal Officer";
482         public static final String EDIT_TAXABLE_IND = "Edit Taxable Indicator";
483         public static final String EDIT_OWN_PROFILE = "Edit My TEM Profile";
484         public static final String EDIT_ANY_PROFILE = "Edit All TEM Profiles";
485         public static final String CREATE_ANY_PROFILE = "Create All TEM Profiles";
486 
487         //Non-existing Permission
488         public static final String HIDE_BUTTONS = "Hide Buttons TA";
489     }
490 
491     public static final String TRVL_SPECHAND_TAB_ERRORS = "TravelPaymentSpecialHandlingErrors,document.travelPayment.specialHandlingPersonName,document.travelPayment.specialHandlingCityName,document.travelPayment.specialHandlingLine1Addr,document.travelPayment.specialHandlingStateCode," + "document.travelPayment.specialHandlingLine2Addr,document.travelPayment.specialHandlingZipCode,document.travelPayment.specialHandlingCountryName";
492     public static final String MAPPING_TRAVEL_PAYMENT_CLOSE = "travelPaymentClose";
493     public static final String TRAVEL_AUTHORIZATION_ACTION_NAME = "temTravelAuthorization";
494     public static final String TRAVEL_REIMBURESMENT_ACTION_NAME = "temTravelReimbursement";
495     public static final String TRAVEL_RELOCATION_ACTION_NAME = "temTravelRelocation";
496     public static final String ENTERTAINMENT_ACTION_NAME = "temTravelEntertainment";
497 
498     public static final String DATE_CHANGED_MESSAGE = "The trip begin/end dates have been changed from %s - %s to %s - %s by Travel Reimbursement Doc # %s";
499     public static final String TA_CANCELLED_MESSAGE = "Travel Authorization cancelled.";
500 
501     public static final String EMP_TRAVELER_TYP_CD = "EMP";
502     public static final String NONEMP_TRAVELER_TYP_CD = "NON";
503     public static final String LODGING = "LODGING";
504     public static final String YES = "Y";
505     public static final String MILEAGE = "MILEAGE";
506     public static final String PER_DIEM = "PER_DIEM";
507     public static final String DOLLAR_SIGN = "$";
508 
509     public static final String TEM_PROFILE_DOCUMENT = "TTP";
510     public static final String TEM_PROFILE_ARRANGER_DOCUMENT = "TTPA";
511 
512     public static final String INT_PHONE_PATTERN = "\\+?[0-9]{1}([0-9.]*|\\-|\\s)*[0-9]((\\s[x][0-9]+)*)";
513     public static final String US_PHONE_PATTERN = "[0-9]{3}\\-[0-9]{3}\\-[0-9]{4}((\\s[x][0-9]+)*)";
514 
515     public static final int CUSTOM_PRIMARY_DESTINATION_ID = Integer.MAX_VALUE;
516 
517     public static final int QUADRANT_PERCENT_VALUE = 25;
518 
519     public static final String TEM_PROFILE_SEQ_NAME = "TEM_PROFILE_ID_SEQ";
520     public static final String TEM_PROFILE_ARRANGER_SEQ_NAME = "TEM_PROFILE_ARRANGER_ID_SEQ";
521     public static final String TEM_PROFILE_ACCOUNT_SEQ_NAME = "TEM_PROFILE_ACCOUNT_ID_SEQ";
522     public static final String TEM_TRAVELER_DETAIL_SEQ_NAME = "TEM_TRAVELER_DTL_ID_SEQ";
523     public static final String TEM_TRAVELER_DETAIL_EM_CONTACT_SEQ_NAME = "TEM_EM_CONT_ID_SEQ";
524     public static final String TEM_TRAVELER_DETAIL_ACCOUNT_SEQ_NAME = "TEM_TRVLR_DTL_ACCOUNT_ID_SEQ";
525     public static final String TEM_ACTUAL_EXPENSE_SEQ_NAME = "TEM_TRVL_EXP_ID_SEQ";
526     public static final String TEM_CORP_CARD_PSEUDO_NUM_SEQ_NAME = "TEM_CORP_CARD_PSEUDO_NUM_SEQ";
527 
528     public static final String TEM_PROFILE_HOME_DEPARTMENT = "homeDepartment";
529     public static final String TEM_PROFILE_HOME_DEPT_ORG_CODE = "homeDeptOrgCode";
530     public static final String TEM_PROFILE_HOME_DEPT_COA_CODE = "homeDeptChartOfAccountsCode";
531 
532     public static final String TEM_AGENCY_DATA_SEARCH_ACCOUNT = "searchAccountNumber";
533     public static final String TEM_AGENCY_DATA_SEARCH_SUB_ACCOUNT = "searchSubAccountNumber";
534     public static final String TEM_AGENCY_DATA_SEARCH_CHART_CODE = "searchChartOfAccountsCode";
535 
536     public static enum AgencyAuditSection{
537         airline, lodging, rentalcar;
538     }
539 
540     public static final class AttachmentTypeCodes {
541         public static final String ATTACHMENT_TYPE_RECEIPT = "Receipt";
542         public static final String ATTACHMENT_TYPE_W_9 = "W-9";
543         public static final String ATTACHMENT_TYPE_ADA = "ADA";
544         public static final String ATTACHMENT_TYPE_W8_BEN = "W8-BEN";
545         public static final String ATTACHMENT_TYPE_ENT_HOST_CERT = "Entertainment Host Certification";
546         public static final String ATTACHMENT_TYPE_ATTENDEE_LIST = "Attendee List";
547         public static final String NON_EMPLOYEE_FORM = "Non Employee Form";
548     }
549 
550     public static final class Attendee {
551         public static final String ATTENDEES_GROUP_LABEL_NAME = "Attendees";
552     }
553 
554     public static final String TEM_ORGANIZATION_PROFILE_ARRANGER = "TEM Organization Profile Arranger";
555     public static final String TEM_ASSIGNED_PROFILE_ARRANGER = "TEM Assigned Profile Arranger";
556     public static final String TEM_PROFILE_ADMIN = "TEM Profile Administrator";
557     public static final String TRAVEL_MANAGER = "Travel Manager";
558     public static final String RISK_MANAGEMENT = "Risk Management";
559 
560     public class PerDiemParameter {
561         public static final String IN_STATE_TRIP_TYPE_CODE_PARAM_NAME = "IN_STATE_TRIP_TYPE_CODE";
562         public static final String OUT_STATE_TRIP_TYPE_CODE_PARAM_NAME = "OUT_OF_STATE_TRIP_TYPE_CODE";
563         public static final String INTERNATIONAL_TRIP_TYPE_CODE_PARAM_NAME = "INTERNATIONAL_TRIP_TYPE_CODE";
564         public static final String INSTITUTION_STATE_PARAM_NAME = "INSTITUTION_STATE";
565         public static final String OCONUS_MEAL_BREAKDOWN_PARAM_NAME = "OCONUS_MEAL_BREAKDOWN";
566         public static final String CONUS_MEAL_BREAKDOWN = "CONUS_MEAL_BREAKDOWN";
567         public static final String REJECT_FILE_IND = "REJECT_FILE_IND";
568         public static final String BYPASS_STATE_OR_COUNTRY_CODES = "BYPASS_STATE_OR_COUNTRY_CODES";
569         public static final String DEFAULT_EFFECTIVE_TO_DATE = "DEFAULT_EFFECTIVE_TO_DATE";
570     }
571 
572     public static final class HostedMeals {
573         public static final String HOSTED_DINNER = "dinner";
574         public static final String HOSTED_LUNCH = "lunch";
575         public static final String HOSTED_BREAKFAST = "breakfast";
576     }
577 
578     public static final class ExpenseTypes {
579         public static final String HOSTED_DINNER = "HD";
580         public static final String HOSTED_LUNCH = "HL";
581         public static final String HOSTED_BREAKFAST = "HB";
582         public static final String LODGING = "L";
583         public static final String AIRFARE = "A";
584         public static final String RENTAL_CAR = "R";
585         public static final String PREPAID_AIRFARE = "PA";
586         public static final String MILEAGE = "MM";
587         public static final String OTHER = "O";
588     }
589 
590     public enum MEAL_CODE {
591         BREAKFAST("B"), LUNCH("L"), DINNER("D"), INCIDENTALS("I");
592 
593         public String mealCode;
594 
595         private MEAL_CODE(String mealCode) {
596             this.mealCode = mealCode;
597         }
598     }
599 
600     public static final String PER_DIEM_INPUT_FILE_TYPE_INDENTIFIER = "perDiemInputFileType";
601     public static final String PER_DIEM_XML_INPUT_FILE_TYPE_INDENTIFIER = "perDiemXmlInputFileType";
602     public static final String AGENCY_DATA_XML_INPUT_FILE_TYPE_INDENTIFIER = "agencyDataXmlInputFileType";
603     public static final String CREDIT_CARD_DATA_XML_INPUT_FILE_TYPE_INDENTIFIER = "creditCardDataXmlInputFileType";
604 
605     public static final String FILE_NAME_PART_DELIMITER = "_";
606 
607     public static final String DONE_FILE_SUFFIX = ".done";
608     public final static String TEXT_FILE_SUFFIX = ".txt";
609     public final static String XML_FILE_SUFFIX = ".xml";
610 
611     public static final String DATE_FIELD_SEPARATOR = "/";
612     public static final String DATE_FORMAT_STRING = "MM/dd/yyyy";
613     public static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT_STRING);
614 
615     public static final String CUSTOMER_TRAVLER_TYPE_CODE = "Traveler";
616     public static final String CUSTOMER_PRIMARY_ADDRESS_TYPE_CODE = "P";
617 
618     public static final Integer DEFAULT_NOTIFICATION_DAYS = 120;
619     public static final Integer DEFAULT_DUPLICATE_TRIP_DATE_RANGE_DAYS = 3;
620 
621     public class TaxRamificationParameter{
622         public static final String NOTIFICATION_DAYS_PARAM_NAME = "NOTIFICATION_DAYS";
623         public static final String NOTIFICATION_TEXT_PARAM_NAME = "NOTIFICATION_TEXT";
624         public static final String NOTIFICATION_SUBJECT_PARAM_NAME = "NOTIFICATION_SUBJECT";
625         public static final String SEND_FYI_TO_FISCAL_OFFICER_IND = "SEND_FYI_TO_FISCAL_OFFICER_IND";
626     }
627 
628 
629     public static final String DOCUMENT_NUMBER = "Document Number";
630 
631     // delinquent code
632     public static final String DELINQUENT_STOP = "S";
633     public static final String DELINQUENT_WARN = "W";
634 
635     // Separation of duties codes
636     public static final String SEP_OF_DUTIES_FO = "F";
637     public static final String SEP_OF_DUTIES_DR = "D";
638 
639     // Separation of duties codes
640     public static final String EXPENSE_IMPORTED = "I";
641     public static final String EXPENSE_ACTUAL = "A";
642 
643     public static final String TRAVEL_TYPE_CTS = "CTS";
644     public static final String TRAVEL_TYPE_CORP = "CORP";
645     public static final String ACTUAL_EXPENSE = "OUT OF POCKET";
646     public static final String ENCUMBRANCE = "ENCUMBRANCE";
647     public static final String ADVANCE = "ADVANCE";
648 
649     //Expenses label
650     public static final String ENCUMBRANCE_PREFIX = "Estimated ";
651     public static final String PER_DIEM_EXPENSES_LABEL = "Per Diem Expenses";
652     public static final String ACTUAL_EXPENSES_LABEL = "Actual Expenses";
653     public static final String GENERAL_EXPENSES_LABEL = "Expenses";
654 
655     public static final String ACCOUNTING_LINE_INDEX = "-1";
656     public static final String DIST_ACCOUNTING_LINE_INDEX = "-2";
657 
658     public static final String UNSELECT_ALL_INDEX = "1";
659     public static final String SELECT_ALL_INDEX = "0";
660 
661     public static final String MILEAGE_EXPENSE = "MM";
662 
663     public static final String DISBURSEMENT_VOUCHER_DOCTYPE = "DV";
664     public static final String REQUISITION_DOCTYPE = "REQS";
665 
666     public static final String ASSIGN_ACCOUNTS_DISABLED_MESSAGE = "All amounts have been assigned accounts.";
667 
668     public static final class AgencyMatchProcessParameter {
669         public static final String AGENCY_MATCH_DTL_TYPE = "AgencyMatchProcess";
670         public static final String TRAVEL_CREDIT_CARD_AIRFARE_OBJECT_CODE = "TRAVEL_CREDIT_CARD_AIRFARE_OBJECT_CODE";
671         public static final String TRAVEL_CREDIT_CARD_RENTAL_CAR_OBJECT_CODE = "TRAVEL_CREDIT_CARD_RENTAL_CAR_OBJECT_CODE";
672         public static final String TRAVEL_CREDIT_CARD_LODGING_OBJECT_CODE = "TRAVEL_CREDIT_CARD_LODGING_OBJECT_CODE";
673         public static final String TRAVEL_CREDIT_CARD_CLEARING_CHART = "TRAVEL_CREDIT_CARD_CLEARING_CHART";
674         public static final String TRAVEL_CREDIT_CARD_CLEARING_ACCOUNT = "TRAVEL_CREDIT_CARD_CLEARING_ACCOUNT";
675         public static final String TRAVEL_CREDIT_CARD_CLEARING_OBJECT_CODE = "TRAVEL_CREDIT_CARD_CLEARING_OBJECT_CODE";
676     }
677 
678     public static final class TemRoleNames {
679         public static final String SPECIAL_REQUEST_REVIEWER = "Special Request Reviewer";
680         public static final String INTERNATIONAL_TRAVEL_REVIEWER = "International Travel Reviewer";
681         public static final String RISK_MANAGEMENT = "Risk Management";
682         public static final String ACCOUNTING_REVIEWER = "Accounting Reviewer";
683         public static final String DIVISION_REVIEWER = "Division Reviewer";
684         public static final String CONTACT_REVIEWER = "Contact Reviewer";
685         public static final String ENTERTAINMENT_MANAGER = "Entertainment Manager";
686         public static final String MOVING_AND_RELOCATION_MANAGER = "Moving And Relocation Manager";
687         public static final String EXECUTIVE_APPROVER = "Executive Approver";
688         public static final String SEPARATION_OF_DUTIES_REVIEWER = "Separation Of Duties Reviewer";
689         public static final String TRAVELER = "Traveler";
690         public static final String TEM_PROFILE = "TemProfile";
691         public static final String TEM_PROFILE_ADMINISTRATOR = "TEM Profile Administrator";
692         public static final String TEM_ORGANIZATION_PROFILE_ARRANGER = "TEM Organization Profile Arranger";
693         public static final String TEM_ASSIGNED_PROFILE_ARRANGER = "TEM Assigned Profile Arranger";
694 
695     }
696 
697     public static class AgencyStagingDataErrorCodes {
698         public static final String AGENCY_NO_ERROR = "OK";
699         public static final String AGENCY_INVALID_TRAVELER = "TRAV";
700         public static final String AGENCY_INVALID_TRIPID = "TRIP";
701         public static final String AGENCY_INVALID_ACCOUNT = "ACT";
702         public static final String AGENCY_INVALID_SUBACCOUNT = "SACT";
703         public static final String AGENCY_INVALID_PROJECT = "PROJ";
704         public static final String AGENCY_INVALID_OBJECT = "OBJ";
705         public static final String AGENCY_INVALID_SUBOBJECT = "SOBJ";
706         public static final String AGENCY_MOVED_TO_HISTORICAL = "HIS";
707         public static final String AGENCY_INVALID_CC_AGENCY = "CCA";
708         public static final String AGENCY_REQUIRED_FIELDS = "REQ";
709         public static final String AGENCY_DUPLICATE_DATA = "DUP";
710         public static final String AGENCY_INVALID_EXPENSE_TYPE_OBJECT_CODE = "EXP";
711         public static final String AGENCY_INVALID_DI_CD = "DI";
712     }
713 
714     public static class AgencyStagingDataValidation {
715         public static final String AGENCY_DATA_VALIDATION_DTL = "AgencyDataValidation";
716         public static final String VALIDATE_ACCOUNT = "Account";
717         public static final String VALIDATE_SUBACCOUNT = "Sub-Account";
718     }
719 
720     public static class CreditCardStagingDataErrorCodes {
721         public static final String CREDIT_CARD_NO_ERROR = "OK";
722         public static final String CREDIT_CARD_INVALID_TRAVELER = "TRAV";
723         public static final String CREDIT_CARD_INVALID_CARD = "CRDC";
724         public static final String CREDIT_CARD_MOVED_TO_HISTORICAL = "HIS";
725         public static final String CREDIT_CARD_INVALID_CC_AGENCY = "CCA";
726         public static final String CREDIT_CARD_INVALID_EXPENSE_TYPE_CODE = "ETC";
727     }
728 
729     public static class ExpenseImportTypes {
730         public static final String IMPORT_BY_TRIP = "TRP";
731         public static final String IMPORT_BY_TRAVELLER = "TRV";
732     }
733 
734     public enum ExpenseImport {
735         trip(ExpenseImportTypes.IMPORT_BY_TRIP),
736         traveler(ExpenseImportTypes.IMPORT_BY_TRAVELLER);
737 
738         public String code;
739 
740         private ExpenseImport(String code) {
741             this.code = code;
742         }
743 
744         private static final Map<String, ExpenseImport> lookup = new LinkedHashMap<String, ExpenseImport>();
745 
746         static {
747           for (ExpenseImport type : EnumSet.allOf(ExpenseImport.class)) {
748             lookup.put(type.code, type);
749           }
750         }
751 
752         /**
753          * Retrieve Expense Import by the code
754          *
755          * @param code
756          * @return
757          */
758         public static ExpenseImport getExpenseImportByCode(String code){
759             return lookup.get(code);
760         }
761     }
762 
763     public static class ReconciledCodes {
764         public static final String RECONCILED = "R";
765         public static final String UNRECONCILED = "N";
766         public static final String CLEARED = "C";
767     }
768 
769     public static final Map<String, String> reconciledCodes() {
770         Map<String, String> returnMap = new HashMap<String, String>();
771         returnMap.put(ReconciledCodes.UNRECONCILED, "Unreconciled");
772         returnMap.put(ReconciledCodes.RECONCILED,"Reconciled");
773         returnMap.put(ReconciledCodes.CLEARED,"Cleared");
774         return returnMap;
775     }
776 
777     public static class TravelCustomSearchLinks {
778         public static final String NEW_REIMBURSEMENT = "New&nbsp;Reimbursement";
779         public static final String NEW_ENTERTAINMENT = "New&nbsp;Entertainment";
780         public static final String NEW_RELOCATION = "New&nbsp;Relocation";
781         public static final String VENDOR_PAYMENT = "Vendor&nbsp;Payment";
782         public static final String REQUISITION = "Requisition";
783         public static final String AGENCY_SITES = "Agency&nbsp;Sites";
784         public static final String DV_URL = "temDV.do?methodToCall=docHandler&command=initiate&docTypeName=DV&temDocID=";
785     }
786 
787     public static class TemTripTypes {
788         public static final String DOMESTIC = "DOM";
789         public static final String INTERNATIONAL = "INT";
790         public static final String IN_STATE = "IN";
791         public static final String OUT_OF_STATE = "OUT";
792     }
793 
794     public static class TemExpenseTypes {
795         public static final String PER_DIEM = "perDiemService";
796         public static final String ACTUAL = "actualExpenseService";
797         public static final String IMPORTED_CTS = "importedCTSExpenseService";
798         public static final String IMPORTED_CORP_CARD = "importedCorporateCardExpenseService";
799     }
800 
801     public enum ExpenseType {
802         actual(TemExpenseTypes.ACTUAL),
803         importedCTS(TemExpenseTypes.IMPORTED_CTS),
804         importedCorpCard(TemExpenseTypes.IMPORTED_CORP_CARD),
805         perDiem(TemExpenseTypes.PER_DIEM);
806 
807         public String service;
808 
809         private ExpenseType(String service) {
810             this.service= service;
811         }
812     }
813 
814     public enum PerDiemType {
815         mileage("Mileage"),
816         meals("Meals"),
817         lodging("Lodging"),
818         incidentals("Incidentals"),
819         breakfast("Breakfast"),
820         lunch("Lunch"),
821         dinner("Dinner");
822 
823         public String label;
824 
825         private PerDiemType(String label) {
826             this.label = label;
827         }
828     }
829 
830     public static final String CONUS = "CONUS";
831     public static final String OTHER_PRIMARY_DESTINATION = "[OTHER]";
832     public static final String ALL_STATES = "ALL";
833 
834     public static final String ALL_DOCUMENT = "ALL";
835 
836     public static final String IMPORTED_FLAG = "-IMP";
837 
838     public static final String TEM_IMPORTED_SYS_ORIG_CD = KFSConstants.ORIGIN_CODE_KUALI;
839     public static final String TEM_IMPORTED_GLPE_DESC = "TEM Imported Expense Re-Distribution";
840 
841     public static final String TEM_PROFILE_RELO_ENT = "Requester";
842     public static final String TEM_PROFILE_TRAVEL = "Traveler";
843 
844     public static final Map<String, String> documentProfileNames() {
845         Map<String, String> returnMap = new HashMap<String, String>();
846         returnMap.put(TravelDocTypes.TRAVEL_REIMBURSEMENT_DOCUMENT, TEM_PROFILE_TRAVEL);
847         returnMap.put(TravelDocTypes.TRAVEL_AUTHORIZATION_DOCUMENT, TEM_PROFILE_TRAVEL);
848         returnMap.put(TravelDocTypes.TRAVEL_AUTHORIZATION_CLOSE_DOCUMENT, TEM_PROFILE_TRAVEL);
849         returnMap.put(TravelDocTypes.TRAVEL_AUTHORIZATION_DOCUMENT, TEM_PROFILE_TRAVEL);
850         returnMap.put(TravelDocTypes.TRAVEL_ENTERTAINMENT_DOCUMENT, TEM_PROFILE_RELO_ENT);
851         returnMap.put(TravelDocTypes.TRAVEL_RELOCATION_DOCUMENT, TEM_PROFILE_RELO_ENT);
852         return returnMap;
853     }
854 
855     public static final String INQUIRY_URL = "inquiry.do";
856     public static final String VIEW = "view";
857 
858     public static final String SOURCE_ANCHOR = "sourceAnchor";
859     public static final String DISTRIBUTION_ANCHOR = "distributionAnchor";
860     public static final String SUMMARY_ANCHOR = "summaryAnchor";
861 
862     public static final String PRIMARY_DESTINATION_CLASS_NAME = "PrimaryDestination";
863 
864     public enum NotificationPreference {
865         TA_ON_FINAL(TravelAuthorizationDocument.class, "FINAL", "TA_ON_FINAL"),
866         TA_ON_CHANGE(TravelAuthorizationDocument.class, "CHANGE", "TA_ON_CHANGE"),
867         TER_ON_FINAL(TemParameterConstants.TEM_DOCUMENT.class, "FINAL", "TER_ON_FINAL"),
868         TER_ON_CHANGE(TemParameterConstants.TEM_DOCUMENT.class, "CHANGE", "TER_ON_CHANGE"),
869         NONE(TemParameterConstants.TEM_DOCUMENT.class, "", "");
870 
871         protected String parameterEventCode;
872         protected Class<?> parameterComponentClass;
873         protected String label;
874 
875         private NotificationPreference(Class<?> parameterComponentClass, String parameterEventCode, String label) {
876             this.parameterEventCode = parameterEventCode;
877             this.parameterComponentClass = parameterComponentClass;
878             this.label = label;
879         }
880 
881         public String getParameterEventCode() {
882             return this.parameterEventCode;
883         }
884 
885         public Class<?> getParameterComponentClass() {
886             return parameterComponentClass;
887         }
888 
889         public String getLabel() {
890             return label;
891         }
892     }
893 
894     public static final String STATUS_CHANGE_DTO = "statusChangeDTO";
895     public static final String CAMPUS_TRAVEL_EMAIL_ADDRESS = "campusTravelEmailAddress";
896     public static final String NOTIFICATION_PREFERENCE = "notificationPreference";
897 
898     public class ImportedExpenseParameter{
899         public static final String NOTIFICATION_SUBJECT_PARAM_NAME = "NOTIFICATION_SUBJECT";
900         public static final String NOTIFICATION_TEXT_BY_TRP_PARAM_NAME = "NOTIFICATION_TEXT_BY_TRP";
901         public static final String NOTIFICATION_TEXT_BY_TRV_PARAM_NAME = "NOTIFICATION_TEXT_BY_TRV";
902     }
903 
904     public static final String TRAVEL_EXPENSES_KEY = "travelExpenses";
905     public static final String TRAVELER_PROFILE_KEY = "travelerProfile";
906     public static final String TRAVEL_REIMBURSEMENT_PRETRIP_DESCRIPTION_TEXT = "PT:";
907 
908     public static final class ExpenseTypeReimbursementCodes {
909         public static final String ALL = "A";
910         public static final String NON_REIMBURSABLE = "N";
911         public static final String REIMBURSABLE = "R";
912     }
913 
914     public static class TravelEditMode extends TransactionalEditMode {
915         public static final String FULL_ENTRY = "fullEntry";
916         public static final String ADVANCE_PAYMENT_ENTRY = "advancePaymentEntry";
917         public static final String ADVANCE_POLICY_ENTRY = "advancePolicyEntry";
918         public static final String CLEAR_ADVANCE_MODE = "clearAdvanceMode";
919         public static final String TRAVELER_ENTRY = "travelerEntry";
920     }
921 
922     public static final String GENERATE_CREDIT_CARD_NUMBER_IND = "GENERATE_CREDIT_CARD_NUMBER_IND";
923     public static final String CORPORATE_CARD_CODE = "CORPORATE_CARD_CODE";
924     public static final String CENTRAL_TRAVEL_SYSTEM_CARD_CODE = "CENTRAL_TRAVEL_SYSTEM_CARD_CODE";
925 
926 
927 //    public static final String CTS_CARD_APPLICATION = "TemCTSCardApplication";
928 //    public static final String CORP_CARD_APPLICATION = "TemCorporateCardApplication";
929     public static final String CARD_EXISTS_QUESTION = "Card Exists Question";
930 
931     public static class EditModes {
932         public static final String CHECK_AMOUNT_ENTRY = "checkAmountEntry";
933         public static final String EXPENSE_TAXABLE_MODE = "expenseTaxableEntry";
934         public static final String BLANKET_TRAVEL_ENTRY = "blanketTravelEntry";
935         public static final String BLANKET_TRAVEL_VIEW = "blanketTravelView";
936         public static final String EXPENSE_LIMIT_ENTRY = "expenseLimitEntry";
937         public static final String CONVERSION_RATE_ENTRY = "conversionRateEntry";
938         public static final String REQUESTER_LOOKUP_MODE = "requesterLooupMode";
939     }
940 
941     public static class TravelAuthorizationActions {
942         public static final String CAN_AMEND = "canAmend";
943         public static final String CAN_HOLD = "canHold";
944         public static final String CAN_REMOVE_HOLD = "canRemoveHold";
945         public static final String CAN_CLOSE_TA = "canCloseTA";
946         public static final String CAN_CANCEL_TA = "canCancelTA";
947         public static final String CAN_NEW_ENTERTAINMENT = "canNewEntertainment";
948         public static final String CAN_NEW_RELOCATION = "canNewRelocation";
949         public static final String CAN_NEW_REIMBURSEMENT = "canNewReimbursement";
950         public static final String CAN_PAY_VENDOR = "canPayVendor";
951     }
952 
953     public static final String TRAVEL_PAYMENT_TAB_ERRORS = "TravelPaymentErrors,document.travelPayment.checkTotalAmount,document.travelPayment.dueDate,document.travelPayment.alienPaymentCode,document.travelPayment.payeeEmployeeCode,document.travelPayment.attachmentCode,document.travelPayment.specialHandlingCode,document.travelPayment.payeeW9CompleteCode,document.travelPayment.paymentMethodCode,document.travelPayment.paymentDocumentationLocationCode,document.travelPayment.checkStubText";
954     public static final String ADVANCE_TRAVEL_PAYMENT_TAB_ERRORS = "TravelPaymentErrors,document.advanceTravelPayment.checkTotalAmount,document.advanceTravelPayment.dueDate,document.advanceTravelPayment.alienPaymentCode,document.advanceTravelPayment.payeeEmployeeCode,document.advanceTravelPayment.attachmentCode,document.advanceTravelPayment.specialHandlingCode,document.advanceTravelPayment.payeeW9CompleteCode,document.advanceTravelPayment.paymentMethodCode,document.advanceTravelPayment.paymentDocumentationLocationCode,document.travelPayment.checkStubText";
955     public static final String ADVANCE_TRVL_SPECHAND_TAB_ERRORS = "TravelPaymentSpecialHandlingErrors,document.advanceTravelPayment.specialHandlingPersonName,document.advanceTravelPayment.specialHandlingCityName,document.advanceTravelPayment.specialHandlingLine1Addr,document.advanceTravelPayment.specialHandlingStateCode,document.advanceTravelPayment.specialHandlingLine2Addr,document.advanceTravelPayment.specialHandlingZipCode,document.advanceTravelPayment.specialHandlingCountryName";
956     public static final String GENERAL_TRAVEL_PAYMENT_TAB_KEY = "TravelPaymentErrors";
957 
958     public enum PermissionAttributeValue {
959         ADVANCE_ACCOUNTING_LINES("advanceAccountingLines");
960 
961         public final String value;
962 
963         private PermissionAttributeValue(String value) {
964             this.value = value;
965         }
966     }
967 
968     public final static String AUTHORIZATION_PAYMENT_SOURCE_EXTRACTION_SERVICE = "travelAuthorizationsExtractService";
969     public final static String REIMBURSABLE_PAYMENT_SOURCE_EXTRACTION_SERVICE = "travelReimbursementsExtractService";
970 
971     public static class TabTitles {
972         public static final String EMERGENCY_CONTACT_INFORMATION_TAB_TITLE = "Emergency Contact Information";
973     }
974 
975     /**
976      * Categories of expense types that cause special reactions from the system, as described below
977      */
978     public enum ExpenseTypeMetaCategory {
979         AIRFARE("A"), // forces extra airfare information to be filled on as part of an expense
980         BREAKFAST("B"), // expenses with this expense type meta category cannot have a per diem breakfast on the same day
981         LUNCH("J"), // expenses with this expense type meta category cannot have a per diem lunch on the same day ("J" for deJeneur which I just liked better than "U")
982         DINNER("D"),  // expenses with this expense type meta category cannot have a per diem dinner on the same day
983         INCIDENTALS("I"),
984         LODGING("L"),
985         LODGING_ALLOWANCE("W"),
986         MILEAGE("M"), // changes the expense type entry to accept mileage rate and miles driven instead of a lump amount
987         RENTAL_CAR("R");
988 
989         private String code;
990 
991         ExpenseTypeMetaCategory(String code) {
992             this.code = code;
993         }
994 
995         public String getCode() {
996             return this.code;
997         }
998 
999         public String getName() {
1000             return WordUtils.capitalizeFully(StringUtils.replace(this.toString(), "_", " "));
1001         }
1002 
1003         /**
1004          * Lookup ExpenseTypeMetaCategory value based on code
1005          * @param c the code to look up
1006          * @return the matching ExpenseTypeMetaCategory, or null if the code does not match an existing category
1007          */
1008         public static ExpenseTypeMetaCategory forCode(String c) {
1009             for (ExpenseTypeMetaCategory category : ExpenseTypeMetaCategory.values()) {
1010                 if (StringUtils.equals(category.getCode(), c)) {
1011                     return category;
1012                 }
1013             }
1014             return null;
1015         }
1016     }
1017 
1018     public enum ErrorTypeCode {
1019 
1020         HARDSTOP("1"),
1021         WARNING("2");
1022         private String code;
1023 
1024         ErrorTypeCode(String code) {
1025             this.code = code;
1026         }
1027 
1028         public String getCode() {
1029             return this.code;
1030         }
1031 
1032         public String getName() {
1033             return StringUtils.capitalize(this.toString().toLowerCase());
1034         }
1035         /**
1036          * Lookup GroupTravelerType value based on code
1037          * @param c the code to look up
1038          * @return the GroupTravelerType, or null if the code does not match an existing traveler type
1039          */
1040         public static ErrorTypeCode forCode(String c) {
1041             for (ErrorTypeCode errorType : ErrorTypeCode.values()) {
1042                 if (StringUtils.equals(errorType.getCode(), c)) {
1043                     return errorType;
1044                 }
1045             }
1046             return null;
1047         }
1048 
1049     }
1050 
1051     /**
1052      * Enumeration which represents the types of group travelers
1053      */
1054     public enum GroupTravelerType {
1055         EMPLOYEE("EMP"),
1056         STUDENT("STU"),
1057         CUSTOMER("CST"),
1058         OTHER("OTH");
1059 
1060         private String code;
1061 
1062         GroupTravelerType(String code) {
1063             this.code = code;
1064         }
1065 
1066         public String getCode() {
1067             return this.code;
1068         }
1069 
1070         public String getName() {
1071             return StringUtils.capitalize(this.toString().toLowerCase());
1072         }
1073 
1074         /**
1075         * Lookup GroupTravelerType value based on code
1076         * @param c the code to look up
1077         * @return the GroupTravelerType, or null if the code does not match an existing traveler type
1078         */
1079        public static GroupTravelerType forCode(String c) {
1080            for (GroupTravelerType travelerType : GroupTravelerType.values()) {
1081                if (StringUtils.equals(travelerType.getCode(), c)) {
1082                    return travelerType;
1083                }
1084            }
1085            return null;
1086        }
1087     }
1088 }