001/*
002 * The Kuali Financial System, a comprehensive financial management system for higher education.
003 *
004 * Copyright 2005-2014 The Kuali Foundation
005 *
006 * This program is free software: you can redistribute it and/or modify
007 * it under the terms of the GNU Affero General Public License as
008 * published by the Free Software Foundation, either version 3 of the
009 * License, or (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU Affero General Public License for more details.
015 *
016 * You should have received a copy of the GNU Affero General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package org.kuali.kfs.module.ar;
020
021import java.util.ArrayList;
022import java.util.Calendar;
023import java.util.List;
024
025import com.lowagie.text.Font;
026
027
028public class ArConstants{
029
030
031    public static final String AR_NAMESPACE_CODE = "KFS-AR";
032
033    public static final String REPORT_TIME_FORMAT = "HH:mm:ss";
034
035    public static final String CG_PRORATE_BILL_IND = "CG_PRORATE_BILL_IND";
036    public static final String DEFAULT_INVOICE_TEMPLATE = "DEFAULT_INVOICE_TEMPLATE";
037    public static final String INVOICE_DOC_TYPE = "Invoice";
038    public static final String CREDIT_MEMO_DOC_TYPE = "Credit Memo";
039    public static final String PAYMENT_DOC_TYPE = "Payment";
040    public static final String WRITEOFF_DOC_TYPE = "Writeoff";
041
042    public static final String SORT_INDEX_SESSION_KEY = "sortIndex";
043    public static final String NUM_SORT_INDEX_CLICK_SESSION_KEY = "numberOfSortClicked";
044    public static final String TOTALS_TABLE_KEY = "totalsTable";
045
046    public static final String COLLECTION_ACTIVITY_REPORT_LOOKUP = "collectionActivityReportLookup";
047
048    // System Parameters
049
050    public static final String GLPE_WRITEOFF_GENERATION_METHOD = "GLPE_WRITEOFF_GENERATION_METHOD";
051    public static final String ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND = "ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND";
052    public static final String MAXIMUM_NUMBER_OF_DAYS_AFTER_CURRENT_DATE_FOR_INVOICE_DUE_DATE = "MAXIMUM_NUMBER_OF_DAYS_AFTER_CURRENT_DATE_FOR_INVOICE_DUE_DATE";
053    public static final String OBJECT_CONSOLIDATIONS = "OBJECT_CONSOLIDATIONS";
054    public static final String OBJECT_LEVELS = "OBJECT_LEVELS";
055    public static final String REMIT_TO_ADDRESS_EDITABLE_IND = "REMIT_TO_ADDRESS_EDITABLE_IND";
056    public static final String REMIT_TO_NAME_EDITABLE_IND = "REMIT_TO_NAME_EDITABLE_IND";
057    public static final String INVOICE_RECURRENCE_INTERVALS = "INVOICE_RECURRENCE_INTERVALS";
058    public static final String MAXIMUM_RECURRENCES_BY_INTERVAL = "MAXIMUM_RECURRENCES_BY_INTERVAL";
059    public static final String ENABLE_SALES_TAX_IND = "ENABLE_SALES_TAX_IND";
060    public static final String CUSTOMER_INVOICE_AGE = "CUSTOMER_INVOICE_AGE";
061    public static final String WRITEOFF_APPROVAL_THRESHOLD = "APPROVAL_THRESHOLD";
062    public static final String DEFAULT_FORMAT = "DEFAULT_FORMAT";
063    public static final String DUE_DATE_DAYS = "DUE_DATE_DAYS";
064    public static final String INCLUDE_ZERO_BALANCE_CUSTOMERS = "INCLUDE_ZERO_BALANCE_CUSTOMERS";
065
066    public static final String DUNNING_LETTER_GENERATION_CODE = "DUNNING_LETTER_GENERATION_CODE";
067    public static final String FROM_EMAIL_ADDRESS = "FROM_EMAIL_ADDRESS";
068    public static final String BASIS_OF_ACCOUNTING = "DEFAULT_BASIS_OF_ACCOUNTING_FOR_BILLING";
069    public static final String BASIS_OF_ACCOUNTING_CASH = "1";
070    public static final String BASIS_OF_ACCOUNTING_ACCRUAL = "2";
071    public static final String DUNNING_LETTER_TEMPLATE_UPLOAD = "template.dunningLetterTemplateUpload";
072    public static final String DUNNING_LETTER_TEMPLATE_TYPE = "Dunning Letter";
073    public static final String DUNNING_LETTER_TEMPLATE_NEW_FILE_NAME_PREFIX = "Dunning_Letter_Template_";
074    public static final String INVOICE_TEMPLATE_UPLOAD = "document.invoiceTemplateUpload";
075    public static final String INVOICE_TEMPLATE_TYPE = "Invoice";
076    public static final String INVOICE_TEMPLATE_NEW_FILE_NAME_PREFIX = "Invoice_Template_";
077
078    public static final String CONTRACTS_GRANTS_INVOICE_COMPONENT = "ContractsGrantsInvoice";
079
080
081    // Valid number of days the invoice due date can be more than invoice creation date.
082    public static final int VALID_NUMBER_OF_DAYS_INVOICE_DUE_DATE_PAST_INVOICE_DATE = 90;
083
084    public static final String NEW_CUSTOMER_INVOICE_DETAIL_ERROR_PATH_PREFIX = "newCustomerInvoiceDetail";
085    public static final String NEW_CASH_CONTROL_DETAIL_ERROR_PATH_PREFIX = "newCashControlDetail";
086
087    public static final String CUSTOMER_INVOICE_DOCUMENT_GL_POSTING_HELPER_BEAN_ID = "customerInvoiceDocumentGeneralLedgerPostingHelper";
088
089    public static final String CUSTOMER_INVOICE_DETAIL_UOM_DEFAULT = "EA"; // TODO: System parameter?
090
091    public static final String LOOKUP_INVOICE_NUMBER = "invoiceNumber";
092    public static final String LOOKUP_INVOICE_NUMBERS = "invoiceNumbers";
093    public static final String GLPE_WRITEOFF_GENERATION_METHOD_CHART = "1";
094    public static final String GLPE_WRITEOFF_GENERATION_METHOD_ORG_ACCT_DEFAULT = "2";
095    public static final String ALLOW_SALES_TAX_LIABILITY_ADJUSTMENT_IND_NO = "N";
096    public static final String COPY_CUSTOMER_INVOICE_DOCUMENT_WITH_DISCOUNTS_QUESTION = "ConfirmationForCopyingInvoiceWithDiscounts";
097    public static final String SUSPENSION_CATEGORIES_PRESENT_QUESTION = "ConfirmationForSuspensionCategoriesPresent";
098
099    public static final String CUSTOMER_INVOICE_DETAIL_DEFAULT_DISCOUNT_DESCRIPTION_PREFIX = "LINE ITEM DISCOUNT";
100
101    // We need a higher scale than the default 2 for item quantity in Customer Invoice and Credit Memo,
102    // because we might have a very small invoice open amount and need to apply very small item quantity in credit memo.
103    public static int ITEM_QUANTITY_SCALE = 10;
104
105    public static final String AWARD_LOOKUP_IMPL = "awardLookupable";
106    public static final String CUSTOMER_OPEN_ITEM_REPORT_LOOKUPABLE_IMPL = "arCustomerOpenItemReportLookupable";
107
108    public static class PermissionNames {
109        public static final String REPORT = "Report";
110    }
111
112    public static final String INV_DOCUMENT_TYPE = "INV";
113    public static final String INV_DOCUMENT_DESCRIPTION = "Customer Invoice";
114    public static final String DEFAULT_PROCESSING_CHART = "DEFAULT_PROCESSING_CHART";
115    public static final String DEFAULT_PROCESSING_ORG = "DEFAULT_PROCESSING_ORG";
116
117    public static final String NEW_COLLECTION_EVENT_ERROR_PATH_PREFIX = "newCollectionEvent";
118
119    public static final String CUSTOMER_COMPONENT = "Customer";
120
121    public static final String CLEAR_INIT_TAB_METHOD = "clearInitTab";
122    public static final String CONTINUE_LOC_REVIEW_METHOD = "continueLOCReview";
123    public static final String DOWNLOAD_METHOD = "download";
124    public static final String EXPORT_METHOD = "export";
125    public static final String PRINT_METHOD = "print";
126    public static final String PRINT_CREDIT_MEMO_PDF_METHOD = "printCreditMemoPDF";
127    public static final String PRINT_INVOICE_PDF_METHOD = "printInvoicePDF";
128    public static final String PRINT_STATEMENT_PDF_METHOD = "printStatementPDF";
129    public static final String UPLOAD_METHOD = "upload";
130    public static final String CLEAR_BUTTON_FILE_NAME = "buttonsmall_clear.gif";
131    public static final String CLEAR_BUTTON_ALT_TEXT = "Clear";
132    public static final String CONTINUE_BUTTON_FILE_NAME = "buttonsmall_continue.gif";
133    public static final String CONTINUE_BUTTON_ALT_TEXT = "Continue";
134    public static final String EXPORT_BUTTON_FILE_NAME = "buttonsmall_export.gif";
135    public static final String EXPORT_BUTTON_ALT_TEXT = "Export";
136    public static final String EXPORT_BUTTON_ONCLICK_TEXT = "excludeSubmitRestriction=true";
137    public static final String PRINT_BUTTON_FILE_NAME = "buttonsmall_genprintfile.gif";
138    public static final String PRINT_BUTTON_ALT_TEXT = "Print";
139    public static final String PRORATE_BUTTON_METHOD = "methodToCall.prorateBill";
140    public static final String PRORATE_BUTTON_FILE_NAME = "buttonsmall_prorate.gif";
141    public static final String PRORATE_BUTTON_ALT_TEXT = "Prorate Bill";
142    public static final String TRANSMIT_GENERATE_BUTTON_FILE_NAME = "buttonsmall_transmitgenerate.gif";
143    public static final String TRANSMIT_GENERATE_BUTTON_ALT_TEXT = "transmit/generate print file";
144    public static final String MAPPING_PRINT_PDF = "arPrintPDF";
145    public static final String ACTIONS_LABEL = "Actions";
146
147    public static final String CUSTOMER_STATEMENT_LABEL = "Customer Statement";
148
149    // Agency Address
150    public static final String AGENCY_PRIMARY_ADDRESSES_TYPE_CODE = "P";
151    public static final String AGENCY_ALTERNATE_ADDRESSES_TYPE_CODE = "A";
152
153    public static class TemplateUploadSystem {
154        static final public String EXTENSION = ".pdf";
155        static final public String TEMPLATE_MIME_TYPE = "application/pdf";
156    }
157
158    public static class PaymentMediumCode {
159        public static final String CASH = "CA";
160        public static final String CHECK = "CK";
161        public static final String WIRE_TRANSFER = "WT";
162        public static final String CREDIT_CARD = "CR";
163    }
164
165    public static class ReportOptionFieldValues {
166        public static final String PROCESSING_ORG = "Processing Organization";
167        public static final String BILLING_ORG = "Billing Organization";
168    }
169
170    public static class LOCReportTypeFieldValues {
171        public static final String DRAW_DETAILS = "Details Report";
172        public static final String AMOUNTS_NOT_DRAWN = "Amounts Not Drawn Report";
173    }
174
175    public static class CustomerAgingReportFields {
176        public static final String ACCT = "Account";
177
178        public static final String TOTAL_0_TO_30 = "total0to30";
179        public static final String TOTAL_31_TO_60 = "total31to60";
180        public static final String TOTAL_61_TO_90 = "total61to90";
181        public static final String TOTAL_91_TO_SYSPR = "total90toSYSPR";
182        public static final String TOTAL_SYSPR_PLUS_1_OR_MORE = "totalSYSPRplus1orMore";
183        public static final String TOTAL_AMOUNT_DUE = "totalAmountDue";
184
185
186        public static final String AGENCY_SHORT_NAME = "Agency Short Name";
187        public static final String UNAPPLIED_PAYMENTS = "Unapplied Payments";
188        public static final String TOTAL_WRITEOFF = "Total Write-Off";
189    }
190
191    public static class OrganizationAccountingOptionsConstants {
192        public static final String ORG_ACCT_DEFAULT_RECEIVABLE_TAB_NAME = "Edit Organization Receivable Account Defaults";
193        public static final String ORG_ACCT_DEFAULT_WRITEOFF_TAB_NAME = "Edit Organization Writeoff Account Defaults";
194    }
195
196    public static class CustomerCreditMemoStatuses {
197        public static final String INITIATE = "INIT";
198        public static final String IN_PROCESS = "INPR";
199    }
200
201    public static class CustomerInvoiceWriteoffStatuses {
202        public static final String INITIATE = "INIT";
203        public static final String IN_PROCESS = "INPR";
204    }
205
206    public static class CustomerCreditMemoConstants {
207        public static final String CUSTOMER_CREDIT_MEMO_ITEM_QUANTITY = "qty";
208        public static final String CUSTOMER_CREDIT_MEMO_ITEM_TOTAL_AMOUNT = "itemAmount";
209        public static final String BOTH_QUANTITY_AND_ITEM_TOTAL_AMOUNT_ENTERED = "both";
210        public static final String GENERATE_CUSTOMER_CREDIT_MEMO_DOCUMENT_QUESTION_ID = "GenerateCustomerCreditMemoDocumentQuestionID";
211    }
212
213    public static final class CustomerLoad {
214        public static final String CUSTOMER_LOAD_FILE_TYPE_IDENTIFIER = "customerLoadInputFileType";
215        public static final String CUSTOMER_CSV_LOAD_FILE_TYPE_IDENTIFIER = "customerLoadCSVInputFileType";
216        public static final String CUSTOMER_LOAD_REPORT_SUBFOLDER = "ar";
217        public static final String BATCH_REPORT_BASENAME = "ar_customer_load";
218    }
219
220    public static final class CustomerInvoiceWriteoff {
221        public static final String CUSTOMER_INVOICE_WRITEOFF_FILE_TYPE_IDENTIFIER = "customerInvoiceWriteoffInputFileType";
222        public static final String CUSTOMER_INVOICE_WRITEOFF_REPORT_SUBFOLDER = "ar";
223        public static final String BATCH_REPORT_BASENAME = "customer_invoice_writeoff";
224    }
225
226    public static final class Lockbox {
227        public static final String LOCKBOX_REPORT_SUBFOLDER = "ar";
228        public static final String BATCH_REPORT_BASENAME = "lockbox_batch";
229        public static final String SUMMARY_AND_ERROR_NOTIFICATION_EMAIL_SUBJECT = "SUMMARY_AND_ERROR_NOTIFICATION_EMAIL_SUBJECT";
230        public static final String SUMMARY_AND_ERROR_NOTIFICATION_TO_EMAIL_ADDRESSES = "SUMMARY_AND_ERROR_NOTIFICATION_TO_EMAIL_ADDRESSES";
231        public static final String CONTACTS_TEXT = "CONTACTS_TEXT";
232    }
233
234    public static final String DISCOUNT_PREFIX = "DISCOUNT - ";
235    public static final String GLPE_WRITEOFF_OBJECT_CODE_BY_CHART = "GLPE_WRITEOFF_OBJECT_CODE_BY_CHART";
236    public static final Object CUSTOMER_INVOICE_WRITEOFF_SUMMARY_ACTION = "viewSummary";
237    public static final String CUSTOMER_INVOICE_WRITEOFF_DOCUMENT_DESCRIPTION = "Writeoff for ";
238
239    public static class PrintInvoiceOptions {
240        public static final String PRINT_BY_PROCESSING_ORG = "Q";
241        public static final String PRINT_BY_USER = "U";
242        public static final String PRINT_BY_BILLING_ORG = "B";
243        public static final String PRINT_INVOICE_NOW = "Y";
244        public static final String PRINT_DO_NOT_PRINT = "N";
245    }
246
247    public static final String LOCKBOX_DOCUMENT_DESCRIPTION = "Created by Lockbox ";
248    public static final String LOCKBOX_REMITTANCE_FOR_INVALID_INVOICE_NUMBER = "Lockbox: Remittance for INVALID invoice number ";
249    public static final String LOCKBOX_REMITTANCE_FOR_CLOSED_INVOICE_NUMBER = "Lockbox: Remittance for CLOSED invoice number ";
250    public static final String LOCKBOX_REMITTANCE_FOR_INVOICE_NUMBER = "Lockbox: Remittance for invoice number ";
251
252    // Probably refactor these two constants out to pull them from a service, system parameter or something.
253    public static final String PAYMENT_APPLICATION_DOCUMENT_TYPE_CODE = "APP";
254    public static final String INVOICE_WRITEOFF_DOCUMENT_TYPE_CODE = "INVW";
255    public static final String CASH_CONTROL_DOCUMENT_TYPE_CODE = "CTRL";
256    public static final String CUSTOMER_CREDIT_MEMO_DOCUMENT_TYPE_CODE = "CRM";
257    public static final String CUSTOMER_INVOICE_DOCUMENT_TYPE_CODE = "INV";
258    public static final String FINAL_BILLED_INDICATOR_DOCUMENT_TYPE_CODE = "FBI";
259
260    // Organization Options Section Ids
261    public static class OrganizationOptionsSections {
262        public static final String EDIT_ORGANIZATION_REMIT_TO_ADDRESS = "Edit Organization Remit To Address";
263    }
264
265    // Customer Billing Statement
266    public static final String STATEMENT_FORMAT_SUMMARY = "Summary";
267    public static final String STATEMENT_FORMAT_DETAIL = "Detail";
268    public static final String INCLUDE_ZERO_BALANCE_YES = "Yes";
269    public static final String INCLUDE_ZERO_BALANCE_NO = "No";
270
271    public static final String DEFAULT_DUNNING_CAMPAIGN_PARAMETER = "DEFAULT_DUNNING_CAMPAIGN";
272    public static final String DEFAULT_BILLING_FREQUENCY_PARAMETER = "DEFAULT_BILLING_FREQUENCY";
273    public static final String DEFAULT_INVOICING_OPTION_PARAMETER = "DEFAULT_INVOICING_OPTION";
274
275
276    public enum ArNotificationSelectionField{
277        CHART("CHART"), ORGANIZATION("ORG"), ACCOUNT("ACCOUNT");
278
279        public String fieldName;
280
281        private ArNotificationSelectionField(String fieldName){
282            this.fieldName = fieldName;
283        }
284    }
285
286    public enum ArNotificationOptions{
287        PROCESSING_ORG("PROCESSING_ORG"), BILLING_ORG("BILLING_ORG"), ACCOUNT("ACCOUNT");
288
289        public String option;
290
291        private ArNotificationOptions(String option){
292            this.option = option;
293        }
294    }
295
296    public static class BatchFileSystem {
297
298        static final public String EXTENSION = ".txt";
299
300        static final public String CGINVOICE_BATCH_VALIDATION_ERROR_OUTPUT_FILE = "cgin_batch_validation_err";
301        static final public String CGINVOICE_BATCH_CREATION_ERROR_OUTPUT_FILE = "cgin_batch_create_doc_err";
302        static final public String CGINVOICE_VALIDATION_ERROR_OUTPUT_FILE = "cgin_validation_err";
303        static final public String CGINVOICE_CREATION_ERROR_OUTPUT_FILE = "cgin_create_doc_err";
304        static final public String LOC_REVIEW_VALIDATION_ERROR_OUTPUT_FILE = "cgin_locReview_validation_err";
305        static final public String LOC_REVIEW_CREATION_ERROR_OUTPUT_FILE = "cgin_locReview_create_doc_err";
306
307        static final public String LOC_CREATION_BY_AWARD_ERROR_OUTPUT_FILE = "cgin_loc_by_award_create_doc_err";
308        static final public String LOC_CREATION_BY_LOCF_ERROR_OUTPUT_FILE = "cgin_loc_by_loc_fund_create_doc_err";
309        static final public String INVOICE_REPORT_EMAIL_DELIVERY_ERROR_OUTPUT_FILE = "cgin_report_email_delivery_err";
310        static final public String LOC_CREATION_BY_LOCFG_ERROR_OUTPUT_FILE = "cgin_loc_by_loc_fund_group_create_doc_err";
311        static final public String LOC_CREATION_PMT_APP_ERROR_OUTPUT_FILE = "cgin_loc_pmt_app_create_doc_err";
312        static final public String EVT_CREATION_CLN_ACT_ERROR_OUTPUT_FILE = "catd_evt_cln_act_create_doc_err";
313        static final public String REFRL_TO_CLCTNS_ERROR_OUTPUT_FILE = "refrl_to_clctns_doc_err";
314
315        static final public String CGINVOICE_DOCUMENT_DESCRIPTION_OF_BATCH_PROCESS = "Auto-generated Invoice Document";
316    }
317
318    public static class ReportsConstants {
319        public static final List<String> awardBalancesReportSubtotalFieldsList = new ArrayList<String>();
320
321        static {
322            awardBalancesReportSubtotalFieldsList.add("agency.fullName");
323            awardBalancesReportSubtotalFieldsList.add("awardStatusCode");
324            awardBalancesReportSubtotalFieldsList.add("awardPrimaryProjectDirector.projectDirector.name");
325            awardBalancesReportSubtotalFieldsList.add("awardPrimaryFundManager.fundManager.name");
326        }
327
328        public static final List<String> reportSearchCriteriaExceptionList = new ArrayList<String>();
329
330        static {
331            reportSearchCriteriaExceptionList.add("backLocation");
332            reportSearchCriteriaExceptionList.add("docFormKey");
333            reportSearchCriteriaExceptionList.add("dummyBusinessObject.invoiceReportOption");
334        }
335
336        public static final List<String> cgInvoiceReportSubtotalFieldsList = new ArrayList<String>();
337
338        static {
339            cgInvoiceReportSubtotalFieldsList.add("proposalNumber");
340        }
341
342        public static final List<String> cgPaymentHistoryReportSubtotalFieldsList = new ArrayList<String>();
343
344        static {
345            cgPaymentHistoryReportSubtotalFieldsList.add("awardNumber");
346            cgPaymentHistoryReportSubtotalFieldsList.add("customerName");
347            cgPaymentHistoryReportSubtotalFieldsList.add("paymentNumber");
348            cgPaymentHistoryReportSubtotalFieldsList.add("paymentDate");
349        }
350
351        public static final List<String> cgLOCReportSubtotalFieldsList = new ArrayList<String>();
352
353        public static final List<String> cgSuspendedInvoiceDetailReportSubtotalFieldsList = new ArrayList<String>();
354
355        public static final String INVOICE_INDICATOR_OPEN = "Open";
356        public static final String INVOICE_INDICATOR_CLOSE = "Close";
357
358    }
359
360    public static class InvoiceTransmissionMethod {
361        static final public String MAIL = "MAIL";
362        static final public String EMAIL = "EMAIL";
363    }
364
365    public static class DunningLetters {
366        public static final String DYS_PST_DUE_FINAL_PARM = "DUNNING_LETTERS_FINAL_DAYS_PAST_DUE";
367        public static final String DYS_PST_DUE_STATE_AGENCY_FINAL_PARM = "DUNNING_LETTERS_STATE_AGENCY_FINAL_DAYS_PAST_DUE";
368
369        public static final String DYS_PST_DUE_CURRENT = "Current";
370        public static final String DYS_PST_DUE_31_60 = "31-60";
371        public static final String DYS_PST_DUE_61_90 = "61-90";
372        public static final String DYS_PST_DUE_91_120 = "91-120";
373        public static final String DYS_PST_DUE_121 = "121+";
374        public static final String DYS_PST_DUE_FINAL = "FINAL";
375        public static final String DYS_PST_DUE_STATE_AGENCY_FINAL = "State Agency FINAL";
376        public static final String DUNNING_LETTER_SENT_TXT = "Dunning Letter has been sent to sponsor.";
377    }
378
379    public static class ContractsGrantsAgingReportFields {
380
381        public static final String TOTAL_0_TO_30 = "total0to30";
382        public static final String TOTAL_31_TO_60 = "total31to60";
383        public static final String TOTAL_61_TO_90 = "total61to90";
384        public static final String TOTAL_91_TO_SYSPR = "total90toSYSPR";
385        public static final String TOTAL_SYSPR_PLUS_1_OR_MORE = "totalSYSPRplus1orMore";
386        public static final String TOTAL_AMOUNT_DUE = "totalAmountDue";
387        public static final String OPEN_INVOCE_REPORT_NAME = "Contracts & Grants Open Invoices Report";
388
389
390        public static final String AGENCY_SHORT_NAME = "Agency Short Name";
391        public static final String UNAPPLIED_PAYMENTS = "Unapplied Payments";
392        public static final String TOTAL_WRITEOFF = "Total Write-Off";
393        public static final String TOTAL_CREDITS = "Total Credits";
394    }
395
396    // Award
397    public static final String LOC_BY_AWARD = "LOC By Award";
398    public static final String LOC_BY_LOC_FUND = "LOC By Letter of Credit Fund";
399    public static final String LOC_BY_LOC_FUND_GRP = "LOC By Letter of Credit Fund Group";
400    public static final String CHECK_LIMIT_DAYS = "CHECK_LIMIT_DAYS";
401
402    public static final String AWARD_TOTAL = "awardTotal";
403    public static final String AWARD_FUND_MANAGER = "awardFundManager";
404    public static final String AWARD_FUND_MANAGERS = "awardFundManagers";
405    public static final String AWARD_PROJECT_DIRECTORS = "awardProjectDirectors";
406    public static final String AWARD_PROJECT_DIRECTOR = "awardProjectDirector";
407    public static final String INVOICE_REPORT_OPTION = "dummyBusinessObject.invoiceReportOption";
408    public static final String CGINV_DOC_ERR_LOG_REPORT = "Contracts & Grants Invoice Document Error Log Report";
409    public static final String OUTSTANDING_INVOICE_REPORT = "Outstanding Invoice Report";
410    public static final String OUTSTANDING_INVOICES = "Outstanding Invoices";
411    public static final String PAST_DUE_INVOICES = "Past Due Invoices";
412    public static final String LETTER_OF_CREDIT_FUND_GROUP_PROPERTY = "letterOfCreditFundGroup";
413    public static final String FUND_MANAGER = "fundManager";
414    public static final String CONTRACTS_GRANTS_SUSPENDED_INVOICE_SUMMARY_REPORT = "ContractsGrantsSuspendedInvoiceSummaryReport";
415    public static final String CONTRACTS_GRANTS_SUSPENDED_INVOICE_DETAIL_REPORT = "ContractsGrantsSuspendedInvoiceDetailReport";
416    public static final String CONTRACTS_GRANTS_PAYMENT_HISTORY_REPORT = "ContractsGrantsPaymentHistoryReport";
417    public static final String CONTRACTS_GRANTS_LOC_REPORT = "ContractsGrantsLOCReport";
418    public static final String CONTRACTS_GRANTS_MILESTONE_REPORT = "ContractsGrantsMilestoneReport";
419    public static final String COLLECTION_ACTIVITY_REPORT_SORT_FIELD = "CollectionActivityReport";
420    public static final String CONTRACTS_GRANTS_INVOICE_REPORT_SORT_FIELD = "ContractsGrantsInvoiceReport";
421    public static final String CONTRACTS_GRANTS_INVOICE_ERROR_LOG_REPORT_SORT_FIELD = "ContractsGrantsInvoiceDocumentErrorLog";
422    public static final String TICKLERS_REPORT_SORT_FIELD = "TicklersReport";
423    public static final String COLLECTION_ACTIVITY_REPORT_TITLE = "Collection Activity Report";
424    public static final String PROJECT_DIRECTOR = "projectDirector";
425    public static final String QUARTER1 = "q1";
426    public static final String QUARTER2 = "q2";
427    public static final String QUARTER3 = "q3";
428    public static final String QUARTER4 = "q4";
429    public static final String SEMI_ANNUAL = "Sa";
430    public static final String ANNUAL = "An";
431    public static final String FINAL = "F";
432
433    public static class ArDocumentTypeCodes {
434        public static final String COLLECTION_EVENT = "CVNT";
435        public static final String CONTRACTS_GRANTS_COLLECTION_ACTIVTY = "CCA";
436        public static final String CONTRACTS_GRANTS_INVOICE = "CINV";
437        public static final String LETTER_OF_CREDIT_REVIEW = "LCR";
438    }
439
440    // CG Invoice Document
441    public static final String CONTRACTS_AND_GRANTS_INVOICE_CATEGORIES = "CONTRACTS_AND_GRANTS_INVOICE_CATEGORIES";
442    public static final String CONTRACTS_GRANTS_INVOICE_DOCUMENT_DESCRIPTION = "Contracts & Grants Invoice";
443    public static final String ACCOUNT = "Account";
444    public static final String CONTRACT_CONTROL_ACCOUNT = "Contract Control Account";
445    public static final String BILL_SECTION = "Bills";
446    public static final String MILESTONES_SECTION = "Milestones";
447
448    public static final String INCOME_ACCOUNT = "Income";
449    public static final String AR_ACCOUNT = "Accounts Receivable";
450    public static final String INV_AWARD = "1";
451    public static final String INV_ACCOUNT = "2";
452    public static final String INV_CONTRACT_CONTROL_ACCOUNT = "3";
453    public static final String INVOICE_AMOUNT_LABEL = "Invoice Amount";
454    public static final String PRINT_INVOICES_FROM_LABEL = "Print Invoices From";
455    public static final String PRINT_INVOICES_TO_LABEL = "Print Invoices To";
456
457    public static final String LETTER_OF_CREDIT_FUND_GROUP = "Letter of Credit Fund Group";
458    public static final String LETTER_OF_CREDIT_REVIEW_DOCUMENT = "Letter Of Credit Review Document.";
459
460    static final public String REMINDER_EMAIL_SUBJECT = "REMINDER_EMAIL_SUBJECT";
461
462    // Agency Collections Maintenance
463    public static final String CHAPTER7_CODE = "C7";
464    public static final String CHAPTER11_CODE = "C11";
465    public static final String CHAPTER13_CODE = "C13";
466    public static final String JUDGMENT_OBTAINED_CODE = "JO";
467
468    public static final String CHAPTER7  = "Chapter 7";
469    public static final String CHAPTER11 = "Chapter 11";
470    public static final String CHAPTER13 = "Chapter 13";
471    public static final String JUDGMENT_OBTAINED= "Judgment Obtained";
472
473    public static final String CUS = "CUS";
474    public static final String INVR = "INVR";
475    public static final String PREDETERMINED_BILLING_SCHEDULE_CODE = "PDBS";
476    public static final String MILESTONE_BILLING_SCHEDULE_CODE = "MILE";
477    public static final String MONTHLY_BILLING_SCHEDULE_CODE = "MNTH";
478    public static final String QUATERLY_BILLING_SCHEDULE_CODE = "QUAR";
479    public static final String SEMI_ANNUALLY_BILLING_SCHEDULE_CODE = "SEMI";
480    public static final String ANNUALLY_BILLING_SCHEDULE_CODE = "ANNU";
481    public static final String LOC_BILLING_SCHEDULE_CODE = "LOCB";
482
483    public static final String YEAR_MONTH_DAY_HOUR_MINUTE_SECONDS_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
484    public static final String INVOICES_FILE_PREFIX = "Invoices-";
485    public static final String INVOICE_ENVELOPES_FILE_PREFIX = "InvoiceEnvelopes-";
486    public static final String INVOICE_ZIP_FILE_PREFIX = "Invoice-report";
487
488    // federal financial report
489    public static final String FF_425_TEMPLATE_NM = "FEDERAL_FINANCIAL_FORM_425";
490    public static final String FF_425A_TEMPLATE_NM = "FEDERAL_FINANCIAL_FORM_425A";
491    public static final String FEDERAL_FORM_425 = "425";
492    public static final String FEDERAL_FORM_425A = "425A";
493
494    public static class ReportBuilderDataServiceBeanNames {
495        public static final String CONTRACTS_GRANTS_SUSPENDED_INVOICE_SUMMARY = "contractsGrantsSuspendedInvoiceSummaryReportBuilderService";
496        public static final String CONTRACTS_GRANTS_AGING = "contractsGrantsAgingReportBuilderService";
497        public static final String CONTRACTS_GRANTS_INVOICE = "contractsGrantsInvoiceReportBuilderService";
498        public static final String CONTRACTS_GRANTS_INVOICE_ERROR_LOG = "contractsGrantsInvoiceDocumentErrorLogReportBuilderService";
499        public static final String COLLECTION_ACTIVITY = "collectionActivityReportBuilderService";
500        public static final String CONTRACTS_GRANTS_LOC = "contractsGrantsLOCReportBuilderService";
501        public static final String CONTRACTS_GRANTS_MILESTONE = "contractsGrantsMilestoneReportBuilderService";
502        public static final String CONTRACTS_GRANTS_PAYMENT_HISTORY = "contractsGrantsPaymentHistoryReportBuilderService";
503        public static final String TICKLERS = "ticklersReportBuilderService";
504        public static final String CONTRACTS_GRANTS_SUSPENDED_INVOICE_DETAIL = "contractsGrantsSuspendedInvoiceDetailReportBuilderService";
505    }
506    public static class Actions {
507        public static final String ACCOUNTS_RECEIVABLE_INVOICE_TEMPLATE_UPLOAD = "arAccountsReceivableInvoiceTemplateUpload";
508        public static final String ACCOUNTS_RECEIVABLE_DUNNING_LETTER_TEMPLATE_UPLOAD = "arAccountsReceivableDunningLetterTemplateUpload";
509        public static final String TRANSMIT_CONTRACTS_AND_GRANTS_INVOICES = "arTransmitContractsAndGrantsInvoices";
510        public static final String CONTRACTS_GRANTS_LOC_REPORT = "contractsGrantsLOCReport";
511        public static final String AR_TICKLER_REPORT = "arTicklersReport";
512    }
513
514    public static class MultipleValueReturnActions {
515        public static final String CONTRACTS_GRANTS_COLLECTION_ACTIVITY_INVOICES = "arContractsGrantsCollectionActivityDocument.do";
516        public static final String CONTRACTS_GRANTS_INVOICES = "arContractsGrantsInvoiceSummary.do";
517        public static final String GENERATE_DUNNING_LETTERS_SUMMARY = "arGenerateDunningLettersSummary.do";
518    }
519
520    public static class UrlActions {
521        public static final String ACCOUNTS_RECEIVABLE_DUNNING_LETTER_TEMPLATE_UPLOAD = "arAccountsReceivableDunningLetterTemplateUpload.do";
522        public static final String ACCOUNTS_RECEIVABLE_INVOICE_TEMPLATE_UPLOAD = "arAccountsReceivableInvoiceTemplateUpload.do";
523        public static final String CUSTOMER_OPEN_ITEM_REPORT_LOOKUP = "arCustomerOpenItemReportLookup.do";
524        public static final String CASH_CONTROL_DOCUMENT = "arCashControlDocument.do";
525        public static final String CUSTOMER_CREDIT_MEMO_DOCUMENT = "arCustomerCreditMemoDocument.do";
526        public static final String CUSTOMER_INVOICE_DOCUMENT = "arCustomerInvoiceDocument.do";
527        public static final String CONTRACTS_GRANTS_LETTER_OF_CREDIT_REVIEW_DOCUMENT = "arContractsGrantsLetterOfCreditReviewDocument.do";
528        public static final String CUSTOMER_STATEMENT = "arCustomerStatement.do";
529        public static final String FEDERAL_FINANCIAL_REPORT = "arFederalFinancialReport.do";
530    }
531
532    public static class CostCategoryMaintenanceSections {
533        public static final String EDIT_CATEGORY = "EditCategory";
534        public static final String EDIT_OBJECT_CODES = "EditObjectCodes";
535        public static final String EDIT_OBJECT_LEVELS = "EditObjectLevels";
536        public static final String EDIT_OBJECT_CONSOLIDATIONS = "EditObjectConsolidations";
537    }
538
539    public static enum ContractsAndGrantsInvoiceDocumentCreationProcessType {
540        BATCH("B", "Batch"), LOC("L", "LOC"), MANUAL("M", "Manual");
541
542        private String code;
543        private String name;
544
545        ContractsAndGrantsInvoiceDocumentCreationProcessType(String code, String name) {
546            this.code = code;
547            this.name = name;
548        }
549
550        public String getCode() {
551            return this.code;
552        }
553
554        public String getName() {
555            return this.name;
556        }
557
558        public static String getName(String code) {
559            for(ContractsAndGrantsInvoiceDocumentCreationProcessType type : ContractsAndGrantsInvoiceDocumentCreationProcessType.values()) {
560                if(type.getCode().equals(code)){
561                    return type.getName();
562                }
563            }
564            return null;
565        }
566    }
567
568    /**
569     * Convenience class to hold a month and day without a year
570     */
571    public static class MonthDay {
572        private int month;
573        private int day;
574
575        public MonthDay(int month, int day) {
576            this.month = month;
577            this.day = day;
578        }
579
580        public int getMonth() {
581            return month;
582        }
583
584        public int getDay() {
585            return day;
586        }
587
588        public java.util.Date getDateForYear(int year) {
589            Calendar c = Calendar.getInstance();
590            c.clear();
591            c.set(Calendar.MONTH, getMonth());
592            c.set(Calendar.DAY_OF_MONTH, getDay());
593            c.set(Calendar.YEAR, year);
594            return c.getTime();
595        }
596    }
597
598    public static class BillingQuarterLastDays {
599        public static MonthDay FIRST_QUARTER = new MonthDay(Calendar.MARCH, 31);
600        public static MonthDay SECOND_QUARTER = new MonthDay(Calendar.JUNE, 30);
601        public static MonthDay THIRD_QUARTER = new MonthDay(Calendar.SEPTEMBER, 30);
602        public static MonthDay FOURTH_QUARTER = new MonthDay(Calendar.DECEMBER, 31);
603    }
604
605    public static class PdfReportFonts {
606        public static final Font LOC_REVIEW_TITLE_FONT = new Font(Font.TIMES_ROMAN, 18, Font.BOLD);
607        public static final Font LOC_REVIEW_HEADER_FONT = new Font(Font.TIMES_ROMAN, 16, Font.BOLD);
608        public static final Font LOC_REVIEW_SMALL_BOLD = new Font(Font.TIMES_ROMAN, 14, Font.BOLD);
609        public static final Font ENVELOPE_TITLE_FONT = new Font(Font.TIMES_ROMAN, 12, Font.BOLD);
610        public static final Font ENVELOPE_SMALL_FONT = new Font(Font.TIMES_ROMAN, 9, Font.NORMAL);
611    }
612
613    public static class LOCReviewPdf {
614        public static final float LENGTH = 1350f;
615        public static final float WIDTH = 595f;
616        public static final float RESULTS_TABLE_WIDTH = 1300f;
617        public static final float RESULTS_TABLE_CELL_PADDING = 20f;
618        public static final int RESULTS_TABLE_COLSPAN = 11;
619        public static final int INNER_TABLE_COLUMNS = 8;
620        public static final float INNER_TABLE_WIDTH = 1000f;
621    }
622
623    public static class InvoiceEnvelopePdf {
624        public static final float LENGTH = 650f;
625        public static final float WIDTH = 320f;
626        public static final float INDENTATION_LEFT = 20f;
627    }
628
629    public static class Federal425APdf {
630        public static final int NUMBER_OF_SUMMARIES_PER_PAGE = 30;
631    }
632
633    public static final String FEDERAL_FUND_425_REPORT_ABBREVIATION = "FF425";
634    public static final String FEDERAL_FUND_425A_REPORT_ABBREVIATION = "FF425A";
635
636    public static final String FROM_SUFFIX = " From";
637    public static final String TO_SUFFIX = " To";
638
639    public static final String LETTER_OF_CREDIT_REVIEW_INIT_SECTION = "letterOfCreditReviewInitSection";
640}