001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.gl;
017    
018    import java.util.List;
019    
020    import org.apache.commons.lang.StringUtils;
021    import org.kuali.kfs.coa.businessobject.A21SubAccount;
022    import org.kuali.kfs.coa.businessobject.BalanceType;
023    import org.kuali.kfs.coa.businessobject.ObjectCode;
024    import org.kuali.kfs.gl.batch.CollectorBatch;
025    import org.kuali.kfs.gl.businessobject.CollectorDetail;
026    import org.kuali.kfs.gl.businessobject.OriginEntryFieldUtil;
027    import org.kuali.kfs.gl.businessobject.OriginEntryFull;
028    import org.kuali.kfs.gl.batch.CollectorBatch;
029    import org.kuali.kfs.sys.KFSPropertyConstants;
030    import org.kuali.kfs.sys.businessobject.OriginationCode;
031    import org.kuali.kfs.sys.context.SpringContext;
032    import org.kuali.rice.kns.datadictionary.AttributeDefinition;
033    import org.kuali.rice.kns.service.DataDictionaryService;
034    
035    
036    /**
037     * This class holds constants specifically for use within the General Ledger module.
038     */
039    public class GeneralLedgerConstants {
040    
041        public static final String INSERT_CODE = "I";
042        public static final String UPDATE_CODE = "U";
043        public static final String DELETE_CODE = "D";
044        public static final String SELECT_CODE = "S";
045        public static final String EMPTY_CODE = "";
046        public static final String ERROR_CODE = "E";
047        public static final String FINALNCIAL_BALANCE_TYPE_FOR_COLLECTOR_DETAIL_RECORD = "AC";
048        
049        //public static final String RETAIN_DAYS = "RETAIN_DAYS";
050    
051        public static class DummyBusinessObject {
052            static final public String COST_SHARE_OPTION = "dummyBusinessObject.costShareOption";
053            static final public String PENDING_ENTRY_OPTION = "dummyBusinessObject.pendingEntryOption";
054            static final public String CONSOLIDATION_OPTION = "dummyBusinessObject.consolidationOption";
055            static final public String LINK_BUTTON_OPTION = "dummyBusinessObject.linkButtonOption";
056        }
057    
058        public static class PendingEntryOptions {
059            static final public String APPROVED = "Approved";
060            static final public String ALL = "All";
061        }
062    
063        public static class ColumnNames {
064            static final public String SUB_ACCOUNT_NUMBER = "SUB_ACCT_NBR";
065            static final public String CURRENT_BDLN_BALANCE_AMOUNT = "CURR_BDLN_BAL_AMT";
066            static final public String ACCOUNTING_LINE_ACTUALS_BALANCE_AMOUNT = "ACLN_ACTLS_BAL_AMT";
067            static final public String ACCOUNTING_LINE_ENCUMBRANCE_BALANCE_AMOUNT = "ACLN_ENCUM_BAL_AMT";
068            static final public String CONSOLIDATION_OBJECT_CODE = "FIN_CONS_OBJ_CD";
069            static final public String REPORT_SORT_CODE = "FIN_REPORT_SORT_CD";
070            static final public String CONSOLIDATION_REPORT_SORT_CODE = "CONS_FIN_REPORT_SORT_CD";
071            static final public String OBJECT_LEVEL_CODE = "FIN_OBJ_LVL_CD";
072            static final public String OBJECT_LEVEL_CODE2 = "FIN_OBJ_LEVEL_CD";
073            static final public String OBJECT_CODE = "FIN_OBJECT_CD";
074            // amounts in the balances table
075            static final public String ANNUAL_BALANCE = "ACLN_ANNL_BAL_AMT";
076            static final public String BEGINNING_BALANCE = "FIN_BEG_BAL_LN_AMT";
077            static final public String CONTRACT_AND_GRANTS_BEGINNING_BALANCE = "CONTR_GR_BB_AC_AMT";
078    
079            static final public String UNIVERSITY_FISCAL_YEAR = "UNIV_FISCAL_YR";
080            static final public String CHART_OF_ACCOUNTS_CODE = "FIN_COA_CD";
081            static final public String ACCOUNT_NUMBER = "ACCOUNT_NBR";
082            static final public String SUB_OBJECT_CODE = "FIN_SUB_OBJ_CD";
083            static final public String OBJECT_TYPE_CODE = "FIN_OBJ_TYP_CD";
084            static final public String BALANCE_TYPE_CODE = "FIN_BALANCE_TYP_CD";
085            static final public String FISCAL_PERIOD_CODE = "UNIV_FISCAL_PRD_CD";
086            static final public String DEBIT_CREDIT_CODE = "TRN_DEBIT_CRDT_CD";
087            static final public String OBJECT_TYPE_DEBIT_CREDIT_CODE = "FIN_OBJTYP_DBCR_CD";
088            static final public String OFFSET_GENERATION_CODE = "FIN_OFFST_GNRTN_CD";
089            static final public String TRANSACTION_LEDGER_ENTRY_AMOUNT = "TRN_LDGR_ENTR_AMT";
090            static final public String TRANSACTION_DEBIT_CREDIT_CD = "TRN_DEBIT_CRDT_CD";
091    
092            static final public String TRANSACTION_DT = "TRANSACTION_DT";
093            static final public String FIN_OBJ_TYP_CODE = "FIN_OBJ_TYP_CODE";
094            static final public String NET_EXP_OBJECT_CD = "NET_EXP_OBJECT_CD";
095            static final public String NET_REV_OBJECT_CD = "NET_REV_OBJECT_CD";
096            static final public String FUND_BAL_OBJ_TYP_CD = "FUND_BAL_OBJ_TYP_CD";
097            static final public String FUND_BAL_OBJECT_CD = "FUND_BAL_OBJECT_CD";
098            static final public String UNIV_DT = "UNIV_DT";
099            
100            static final public String FINANCIAL_DOCUMENT_TYPE_CODE = "FDOC_TYP_CD";
101            static final public String ORIGINATION_CODE = "FS_ORIGIN_CD";
102            static final public String DOCUMENT_NUMBER = "FDOC_NBR";
103    
104            static final public String CURRENT_BUDGET_LINE_BALANCE_AMOUNT = "CURR_BDLN_BAL_AMT";
105            static final public String ACCOUNT_LINE_ACTUALS_BALANCE_AMOUNT = "ACLN_ACTLS_BAL_AMT";
106            static final public String ACCOUNT_LINE_ENCUMBRANCE_BALANCE_AMOUNT = "ACLN_ENCUM_BAL_AMT";
107            
108            static final public String ACCOUNT_LINE_ENCUMBRANCE_AMOUNT = "ACLN_ENCUM_AMT";
109            static final public String ACCOUNT_LINE_ENCUMBRANCE_CLOSED_AMOUNT = "ACLN_ENCUM_CLS_AMT";
110            
111            static final public String MONTH_1_ACCT_AMT = "MO1_ACCT_LN_AMT";
112            static final public String MONTH_2_ACCT_AMT = "MO2_ACCT_LN_AMT";
113            static final public String MONTH_3_ACCT_AMT = "MO3_ACCT_LN_AMT";
114            static final public String MONTH_4_ACCT_AMT = "MO4_ACCT_LN_AMT";
115            static final public String MONTH_5_ACCT_AMT = "MO5_ACCT_LN_AMT";
116            static final public String MONTH_6_ACCT_AMT = "MO6_ACCT_LN_AMT";
117            static final public String MONTH_7_ACCT_AMT = "MO7_ACCT_LN_AMT";
118            static final public String MONTH_8_ACCT_AMT = "MO8_ACCT_LN_AMT";
119            static final public String MONTH_9_ACCT_AMT = "MO9_ACCT_LN_AMT";
120            static final public String MONTH_10_ACCT_AMT = "MO10_ACCT_LN_AMT";
121            static final public String MONTH_11_ACCT_AMT = "MO11_ACCT_LN_AMT";
122            static final public String MONTH_12_ACCT_AMT = "MO12_ACCT_LN_AMT";
123            static final public String MONTH_13_ACCT_AMT = "MO13_ACCT_LN_AMT";
124    
125        }
126    
127        public static class BalanceInquiryDrillDowns {
128            static final public String OBJECT_LEVEL_CODE = "financialObject.financialObjectLevel.financialObjectLevelCode";
129            static final public String REPORTING_SORT_CODE = "financialObject.financialObjectLevel.financialReportingSortCode";
130            static final public String CONSOLIDATION_OBJECT_CODE = "financialObject.financialObjectLevel.financialConsolidationObject.finConsolidationObjectCode";
131        }
132    
133        public static class LookupableBeanKeys {
134            static final public String PENDING_ENTRY = "glPendingEntryLookupable";
135            public static final String SEGMENTED_LOOKUP_FLAG_NAME = "segmented";
136        }
137    
138        public static final String GL_SCRUBBER_GROUP = "ScrubberStep";
139        public static final String GL_ORGANIZATION_REVERSION_SELECTION_GROUP = "OrganizationReversion";
140    
141        public static final String ANNUAL_CLOSING_TRANSACTION_DATE_PARM = "ANNUAL_CLOSING_TRANSACTION_DATE";
142        public static final String ANNUAL_CLOSING_FISCAL_YEAR_PARM = "ANNUAL_CLOSING_FISCAL_YEAR";
143        public static final String FISCAL_YEAR_PARM = "FISCAL_YEAR";
144        public static final String ANNUAL_CLOSING_FUND_BALANCE_OBJECT_CODE_PARM = "ANNUAL_CLOSING_FUND_BALANCE_OBJECT_CODE";
145        public static final String ANNUAL_CLOSING_FUND_BALANCE_OBJECT_TYPE_PARM = "ANNUAL_CLOSING_FUND_BALANCE_OBJECT_TYPE";
146        public static final String ANNUAL_CLOSING_DOCUMENT_TYPE = "ANNUAL_CLOSING_DOCUMENT_TYPE";
147    
148        public static class GlAccountBalanceGroupParameters {
149            static final public String EXPENSE_OBJECT_TYPE_CODES = "EXPENSE_OBJECT_TYPE_CODES";
150            static final public String EXPENSE_TRANSFER_OBJECT_TYPE_CODES = "EXPENSE_TRANSFER_OBJECT_TYPE_CODES";
151            static final public String INCOME_OBJECT_TYPE_CODES = "INCOME_OBJECT_TYPE_CODES";
152            static final public String INCOME_TRANSFER_OBJECT_TYPE_CODES = "INCOME_TRANSFER_OBJECT_TYPE_CODES";
153        }
154    
155        public static class GlScrubberGroupParameters {
156            static final public String CAPITALIZATION_IND = "CAPITALIZATION_IND";
157            static final public String CAPITALIZATION_SUBTYPE_OBJECT = "CAPITALIZATION_OBJECT_CODE_BY_OBJECT_SUB_TYPE";
158    
159            static final public String COST_SHARE_OBJECT_CODE_BY_LEVEL_PARM_NM = "COST_SHARE_OBJECT_CODE_BY_OBJECT_LEVEL";
160            static final public String COST_SHARE_OBJECT_CODE_PARM_NM = "COST_SHARE_OBJECT_CODE";
161    
162            static final public String LIABILITY_IND = "LIABILITY_IND";
163            static final public String LIABILITY_OBJECT_CODE = "LIABILITY_OBJECT_CODE";
164    
165            static final public String PLANT_INDEBTEDNESS_IND = "PLANT_INDEBTEDNESS_IND";
166    
167            static final public String SCRUBBER_CUTOFF_TIME = "CUTOFF_TIME";
168        }
169    
170        public static class GlScrubberGroupRules {
171            static final public String CAPITALIZATION_DOC_TYPE_CODES = "CAPITALIZATION_DOCUMENT_TYPES";
172            static final public String CAPITALIZATION_FISCAL_PERIOD_CODES = "CAPITALIZATION_FISCAL_PERIODS";
173            static final public String CAPITALIZATION_OBJ_SUB_TYPE_CODES = "CAPITALIZATION_OBJECT_SUB_TYPES";
174            static final public String CAPITALIZATION_SUB_FUND_GROUP_CODES = "CAPITALIZATION_SUB_FUND_GROUPS";
175            static final public String CAPITALIZATION_CHART_CODES = "CAPITALIZATION_CHARTS";
176    
177            static final public String COST_SHARE_OBJ_TYPE_CODES = "COST_SHARE_OBJECT_TYPES";
178            static final public String COST_SHARE_FISCAL_PERIOD_CODES = "COST_SHARE_FISCAL_PERIODS";
179    
180            static final public String COST_SHARE_ENC_BAL_TYP_CODES = "COST_SHARE_ENCUMBRANCE_BALANCE_TYPES";
181            static final public String COST_SHARE_ENC_DOC_TYPE_CODES = "COST_SHARE_DOCUMENT_TYPES";
182            static final public String COST_SHARE_ENC_FISCAL_PERIOD_CODES = "COST_SHARE_ENCUMBRANCE_FISCAL_PERIODS";
183    
184            static final public String LIABILITY_CHART_CODES = "LIABILITY_CHARTS";
185            static final public String LIABILITY_DOC_TYPE_CODES = "LIABILITY_DOCUMENT_TYPES";
186            static final public String LIABILITY_FISCAL_PERIOD_CODES = "LIABILITY_FISCAL_PERIODS";
187            static final public String LIABILITY_OBJ_SUB_TYPE_CODES = "LIABILITY_OBJECT_SUB_TYPES";
188            static final public String LIABILITY_SUB_FUND_GROUP_CODES = "LIABILITY_SUB_FUND_GROUPS";
189    
190            static final public String OFFSET_DOC_TYPE_CODES = "OFFSET_GENERATION_DOCUMENT_TYPES";
191            static final public String OFFSET_FISCAL_PERIOD_CODES = "OFFSET_GENERATION_FISCAL_PERIODS";
192            
193            static final public String DOCUMENT_TYPES_REQUIRING_FLEXIBLE_OFFSET_BALANCING_ENTRIES = "DOCUMENT_TYPES_REQUIRING_FLEXIBLE_OFFSET_BALANCING_ENTRIES";
194    
195            static final public String PLANT_FUND_CAMPUS_OBJECT_SUB_TYPE_CODES = "PLANT_FUND_CAMPUS_OBJECT_SUB_TYPES";
196            static final public String PLANT_FUND_ORG_OBJECT_SUB_TYPE_CODES = "PLANT_FUND_ORGANIZATION_OBJECT_SUB_TYPES";
197    
198            static final public String PLANT_INDEBTEDNESS_OBJ_SUB_TYPE_CODES = "PLANT_INDEBTEDNESS_OBJECT_SUB_TYPES";
199            static final public String PLANT_INDEBTEDNESS_SUB_FUND_GROUP_CODES = "PLANT_INDEBTEDNESS_SUB_FUND_GROUPS";
200    
201            static final public String CONTINUATION_ACCOUNT_BYPASS_ORIGINATION_CODES = "CONTINUATION_ACCOUNT_BYPASS_ORIGINATIONS";
202            static final public String CONTINUATION_ACCOUNT_BYPASS_BALANCE_TYPE_CODES = "CONTINUATION_ACCOUNT_BYPASS_BALANCE_TYPE_CODES";
203            static final public String CONTINUATION_ACCOUNT_BYPASS_DOCUMENT_TYPE_CODES = "CONTINUATION_ACCOUNT_BYPASS_DOCUMENT_TYPES";
204        }
205    
206        public static class GlSummaryReport {
207            static final public String CURRENT_YEAR_LOWER = "CURRENT_YEAR_LOWER";
208            static final public String CURRENT_YEAR_UPPER = "CURRENT_YEAR_UPPER";
209            static final public String CURRENT_AND_LAST_YEAR = "CURRENT_AND_LAST_YEAR";
210        }
211    
212        public static class OrganizationReversionProcess {
213            static final public String ORGANIZATION_REVERSION_COA = "ORGANIZATION_REVERSION_COA";
214            static final public String CARRY_FORWARD_OBJECT_CODE = "CARRY_FORWARD_OBJECT_CODE";
215            static final public String DEFAULT_FINANCIAL_SYSTEM_ORIGINATION_CODE = "MANUAL_FEED_ORIGINATION";
216            static final public String DEFAULT_FINANCIAL_BALANCE_TYPE_CODE = "CASH_REVERSION_DEFAULT_BALANCE_TYPE";
217            static final public String DEFAULT_FINANCIAL_BALANCE_TYPE_CODE_YEAR_END = "BUDGET_REVERSION_DEFAULT_BALANCE_TYPE";
218            static final public String DEFAULT_DOCUMENT_NUMBER_PREFIX = "DEFAULT_DOCUMENT_NUMBER_PREFIX";
219            static final public String UNALLOC_OBJECT_CODE_PARM = "UNALLOCATED_OBJECT_CODE";
220        }
221    
222        public static class PosterService {
223            static final public String SYMBOL_USE_EXPENDITURE_ENTRY = "@";
224            static final public String SYMBOL_USE_ICR_FROM_ACCOUNT = "#";
225            static final public String ENCUMBRANCE_OPEN_AMOUNT_OVERRIDING_DOCUMENT_TYPES = "ENCUMBRANCE_OPEN_AMOUNT_OVERRIDING_DOCUMENT_TYPES"; 
226    
227        }
228        
229        public static class Balancing {
230            public static final String NUMBER_OF_PAST_FISCAL_YEARS_TO_INCLUDE = "NUMBER_OF_PAST_FISCAL_YEARS_TO_INCLUDE";
231            public static final String NUMBER_OF_COMPARISON_FAILURES_TO_PRINT_PER_REPORT = "NUMBER_OF_COMPARISON_FAILURES_TO_PRINT_PER_REPORT";        
232        }
233        
234        public static class BatchFileSystem {
235            static final public String EXTENSION = ".data";
236            static final public String DONE_FILE_EXTENSION = ".done"; 
237            
238            //static final public String GL_ENTRY = "";
239            static final public String ENTERPRISE_FEED = "gl_glentry_entp";
240            static final public String COLLECTOR_OUTPUT = "gl_glentry_coll";
241            //TODO:- move to OriginEntrySource??
242            static final public String SCRUBBER_ERROR_PREFIX = "scrberr2";
243    
244            static final public String AUTO_DISAPPROVE_DOCUMENTS_OUTPUT_FILE = "sys_autoDisapprove_output";
245            static final public String AUTO_DISAPPROVE_DOCUMENTS_ERROR_OUTPUT_FILE = "sys_autoDisapprove_errs";
246            static final public String TEXT_EXTENSION = ".txt";
247            
248            static final public String BACKUP_FILE = "gl_glbackup";
249            
250            static final public String  COLLECTOR_BACKUP_FILE = "col_glbackup";
251            
252            static final public String COLLECTOR_PRE_SCRUBBER = "col_prescrub";
253            static final public String COLLECTOR_SCRUBBER_INPUT_FILE = "col_sortscrb";
254            static final public String COLLECTOR_SCRUBBER_VALID_OUTPUT_FILE = "col_scrbout1";
255            static final public String COLLECTOR_SCRUBBER_ERROR_OUTPUT_FILE = "col_scrberr1";
256            static final public String COLLECTOR_SCRUBBER_EXPIRED_OUTPUT_FILE = "col_expaccts";
257            static final public String COLLECTOR_SCRUBBER_ERROR_SORTED_FILE = "col_sorterr1";
258            static final public String COLLECTOR_DEMERGER_VAILD_OUTPUT_FILE = "col_scrbout2";
259            static final public String COLLECTOR_DEMERGER_ERROR_OUTPUT_FILE = "col_scrberr2";
260            
261            static final public String PRE_SCRUBBER_FILE = "gl_prescrub";
262            static final public String SCRUBBER_INPUT_FILE = "gl_sortscrb";
263            static final public String SCRUBBER_VALID_OUTPUT_FILE = "gl_scrbout1";
264            static final public String SCRUBBER_ERROR_OUTPUT_FILE = "gl_scrberr1";
265            static final public String SCRUBBER_EXPIRED_OUTPUT_FILE = "gl_expaccts";
266            static final public String SCRUBBER_ERROR_SORTED_FILE = "gl_sorterr1";
267            static final public String DEMERGER_VAILD_OUTPUT_FILE = "gl_scrbout2";
268            static final public String DEMERGER_ERROR_OUTPUT_FILE = "gl_scrberr2";
269            
270            static final public String POSTER_INPUT_FILE = "gl_sortpost";
271            static final public String REVERSAL_POSTER_VALID_OUTPUT_FILE = "gl_workfile";
272            static final public String REVERSAL_POSTER_ERROR_OUTPUT_FILE = "gl_workerrs";
273            static final public String POSTER_VALID_OUTPUT_FILE = "gl_postout";
274            
275            static final public String POSTER_ERROR_OUTPUT_FILE = "gl_posterrs";
276            static final public String ICR_TRANSACTIONS_OUTPUT_FILE = "gl_icrtrans";
277            //todo - create sort step
278            static final public String ICR_POSTER_INPUT_FILE = "gl_sorticr";
279            
280            static final public String ICR_POSTER_ERROR_OUTPUT_FILE = "gl_icrerrs";
281            
282                    static final public String NIGHTLY_OUT_FILE = "gl_glentry_kfs";
283                    static final public String EXTRACT_TRANSACTION_FILE = "gl_glentry_pdp";
284                    
285                    //year end part
286                    static final public String ORGANIZATION_REVERSION_PRE_CLOSING_FILE = "gl_org_reversion_pre_closing";
287                    static final public String ORGANIZATION_REVERSION_CLOSING_FILE = "gl_org_reversion_closing";
288                    static final public String ENCUMBRANCE_FORWARD_FILE = "gl_encumbrance_forward";
289                    static final public String CLOSE_NOMINAL_ACTIVITY_FILE = "gl_close_nominal_activity";
290                    static final public String BALANCE_FORWARDS_FILE = "gl_balance_forwards";
291                    static final public String BALANCE_FORWARDS_CLOSED_FILE = "gl_balance_forwards_closed";
292                    
293                    static final public String LABOR_GL_ENTRY_FILE = "gl_glentry_lab";
294        }
295    
296        public static class PosterOutputSummaryEntry {
297            static final public String ASSET_EXPENSE_OBJECT_TYPE_CODES = "ASSET_EXPENSE_OBJECT_TYPE_CODES";
298        }
299    
300        public static class BalanceForwardRule {
301            static final public String BALANCE_TYPES_TO_ROLL_FORWARD_FOR_BALANCE_SHEET = "BALANCE_TYPES_TO_ROLL_FORWARD_FOR_BALANCE_SHEET";
302            static final public String BALANCE_TYPES_TO_ROLL_FORWARD_FOR_INCOME_EXPENSE = "BALANCE_TYPES_TO_ROLL_FORWARD_FOR_INCOME_EXPENSE";
303            static final public String SUB_FUND_GROUPS_FOR_INCEPTION_TO_DATE_REPORTING = "SUB_FUND_GROUPS_FOR_INCEPTION_TO_DATE_REPORTING";
304        }
305    
306        public static class EncumbranceClosingOriginEntry {
307            static final public String GENERATED_TRANSACTION_LEDGER_ENTRY_DESCRIPTION = "GENERATED_TRANSACTION_LEDGER_ENTRY_DESCRIPTION";
308            static final public String BEGINNING_FUND_BALANCE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION = "BEGINNING_FUND_BALANCE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION";
309            static final public String OFFSET_OBJECT_CODE_FOR_INTERNAL_ENCUMBRANCE = "OFFSET_OBJECT_CODE_FOR_INTERNAL_ENCUMBRANCE";
310            static final public String OFFSET_OBJECT_CODE_FOR_PRE_ENCUMBRANCE = "OFFSET_OBJECT_CODE_FOR_PRE_ENCUMBRANCE";
311            static final public String OFFSET_OBJECT_CODE_FOR_EXTERNAL_ENCUMBRANCE = "OFFSET_OBJECT_CODE_FOR_EXTERNAL_ENCUMBRANCE";
312            static final public String FORWARDING_ENCUMBRANCE_BALANCE_TYPES = "FORWARDING_ENCUMBRANCE_BALANCE_TYPES";
313            static final public String FORWARD_ENCUMBRANCE_BALANCE_TYPE_AND_ORIGIN_CODE = "FORWARD_ENCUMBRANCE_BALANCE_TYPE_AND_ORIGIN_CODE";
314        }
315    
316        public static class Reconciliation {
317            // the case of these strings is not important
318            public static final String TABLE_DEF_STRING = "c";
319            public static final String COLUMN_DEF_STRING = "s";
320            public static final String CHECKSUM_DEF_STRING = "e";
321    
322            public static final String COMMENT_STRING = "#";
323        }
324        
325        // Some static method calls below that could be done in static variables instead but isn't safe to do during class loading
326        // w/SpringContext.
327        private static String SPACE_UNIVERSITY_FISCAL_PERIOD_CODE = null;
328    
329        public static String getSpaceUniversityFiscalPeriodCode() {
330            if (SPACE_UNIVERSITY_FISCAL_PERIOD_CODE == null) {
331                SPACE_UNIVERSITY_FISCAL_PERIOD_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE), ' ');
332            }
333            return SPACE_UNIVERSITY_FISCAL_PERIOD_CODE;
334        }
335    
336        private static String SPACE_BALANCE_TYPE_CODE = null;
337    
338        public static String getSpaceBalanceTypeCode() {
339            if (SPACE_BALANCE_TYPE_CODE == null) {
340                SPACE_BALANCE_TYPE_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(BalanceType.class, KFSPropertyConstants.CODE), ' ');
341            }
342            return SPACE_BALANCE_TYPE_CODE;
343        }
344    
345        private static String SPACE_FINANCIAL_SYSTEM_ORIGINATION_CODE = null;
346    
347        public static String getSpaceFinancialSystemOriginationCode() {
348            if (SPACE_FINANCIAL_SYSTEM_ORIGINATION_CODE == null) {
349                SPACE_FINANCIAL_SYSTEM_ORIGINATION_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginationCode.class, KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), ' ');
350            }
351            return SPACE_FINANCIAL_SYSTEM_ORIGINATION_CODE;
352        }
353    
354        private static String SPACE_DEBIT_CREDIT_CODE = null;
355    
356        public static String getSpaceDebitCreditCode() {
357            if (SPACE_DEBIT_CREDIT_CODE == null) {
358                SPACE_DEBIT_CREDIT_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE), ' ');
359            }
360            return SPACE_DEBIT_CREDIT_CODE;
361        }
362    
363        private static String SPACE_FINANCIAL_OBJECT_CODE = null;
364    
365        public static String getSpaceFinancialObjectCode() {
366            if (SPACE_FINANCIAL_OBJECT_CODE == null) {
367                SPACE_FINANCIAL_OBJECT_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(ObjectCode.class, KFSPropertyConstants.FINANCIAL_OBJECT_CODE), ' ');
368            }
369            return SPACE_FINANCIAL_OBJECT_CODE;
370        }
371    
372        private static String SPACE_TRANSACTION_DATE = null;
373    
374        public static String getSpaceTransactionDate() {
375            if (SPACE_TRANSACTION_DATE == null) {
376                SPACE_TRANSACTION_DATE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.TRANSACTION_DATE), ' ');
377            }
378            return SPACE_TRANSACTION_DATE;
379        }
380    
381        private static String SPACE_UNIVERSITY_FISCAL_YEAR = null;
382    
383        public static String getSpaceUniversityFiscalYear() {
384            if (SPACE_UNIVERSITY_FISCAL_YEAR == null) {
385                SPACE_UNIVERSITY_FISCAL_YEAR = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), ' ');
386            }
387            return SPACE_UNIVERSITY_FISCAL_YEAR;
388        }
389    
390        private static String SPACE_TRANSACTION_ENTRY_SEQUENCE_NUMBER = null;
391    
392        public static String getSpaceTransactionEntrySequenceNumber() {
393            if (SPACE_TRANSACTION_ENTRY_SEQUENCE_NUMBER == null) {
394                SPACE_TRANSACTION_ENTRY_SEQUENCE_NUMBER = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), ' ');
395            }
396            return SPACE_TRANSACTION_ENTRY_SEQUENCE_NUMBER;
397        }
398    
399        private static String SPACE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION = null;
400    
401        public static String getSpaceTransactionLedgetEntryDescription() {
402            if (SPACE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION == null) {
403                SPACE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC), ' ');
404            }
405            return SPACE_TRANSACTION_LEDGER_ENTRY_DESCRIPTION;
406        }
407    
408        private static String SPACE_SUB_ACCOUNT_TYPE_CODE = null;
409    
410        public static String getSpaceSubAccountTypeCode() {
411            if (SPACE_SUB_ACCOUNT_TYPE_CODE == null) {
412                SPACE_SUB_ACCOUNT_TYPE_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(A21SubAccount.class, KFSPropertyConstants.SUB_ACCOUNT_TYPE_CODE), ' ');
413            }
414            return SPACE_SUB_ACCOUNT_TYPE_CODE;
415        }
416    
417        private static String SPACE_ALL_ORIGIN_ENTRY_FIELDS = null;
418    
419        public static String getSpaceAllOriginEntryFields() {
420            if (SPACE_ALL_ORIGIN_ENTRY_FIELDS == null) {
421                List<AttributeDefinition> attributes = SpringContext.getBean(DataDictionaryService.class).getDataDictionary().getBusinessObjectEntry(OriginEntryFull.class.getName()).getAttributes();
422    
423                int totalLength = 0;
424    
425                for ( AttributeDefinition attributeDefinition : attributes ) {
426    
427                    if (!(KFSPropertyConstants.ENTRY_GROUP_ID.equals(attributeDefinition.getName()) || KFSPropertyConstants.ENTRY_ID.equals(attributeDefinition.getName()))) {
428                        totalLength += attributeDefinition.getMaxLength();
429                    }
430                }
431    
432                SPACE_ALL_ORIGIN_ENTRY_FIELDS = StringUtils.rightPad("", totalLength, ' ');
433            }
434    
435            return SPACE_ALL_ORIGIN_ENTRY_FIELDS;
436        }
437    
438        private static String SPACE_ALL_COLLECTOR_BATCH_HEADER_FIELDS = null;
439        
440        public static String getSpaceAllCollectorBatchHeaderFields() {
441            if (SPACE_ALL_COLLECTOR_BATCH_HEADER_FIELDS == null) {
442                List<AttributeDefinition> attributes = SpringContext.getBean(DataDictionaryService.class).getDataDictionary().getBusinessObjectEntry(CollectorBatch.class.getName()).getAttributes();
443    
444                int totalLength = 0;
445    
446                for ( AttributeDefinition attributeDefinition : attributes ) {
447                    if (!(KFSPropertyConstants.TRAILER_RECORD_FIRST_EMPTY_FIELD.equals(attributeDefinition.getName()) ||
448                        KFSPropertyConstants.TOTAL_RECORDS.equals(attributeDefinition.getName()) || 
449                        KFSPropertyConstants.TRAILER_RECORD_SECOND_EMPTY_FIELD.equals(attributeDefinition.getName()) ||
450                        KFSPropertyConstants.TOTAL_AMOUNT.equals(attributeDefinition.getName()))) {
451                        totalLength += attributeDefinition.getMaxLength();
452                    }
453                }
454    
455                SPACE_ALL_COLLECTOR_BATCH_HEADER_FIELDS = StringUtils.rightPad("", totalLength, ' ');
456            }
457    
458            return SPACE_ALL_COLLECTOR_BATCH_HEADER_FIELDS;
459        }
460        
461        private static String SPACE_ALL_COLLECTOR_BATCH_TRAILER_FIELDS = null;
462        
463        public static String getSpaceAllCollectorBatchTrailerFields() {
464            if (SPACE_ALL_COLLECTOR_BATCH_TRAILER_FIELDS == null) {
465                List<AttributeDefinition> attributes = SpringContext.getBean(DataDictionaryService.class).getDataDictionary().getBusinessObjectEntry(CollectorBatch.class.getName()).getAttributes();
466    
467                int totalLength = 0;
468                
469                for ( AttributeDefinition attributeDefinition : attributes ) {
470                    if ((KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR.equals(attributeDefinition.getName()) ||
471                         KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE.equals(attributeDefinition.getName()) ||
472                         KFSPropertyConstants.ORGANIZATION_CODE.equals(attributeDefinition.getName()) ||
473                         KFSPropertyConstants.TRANSMISSION_DATE.equals(attributeDefinition.getName()) ||
474                         KFSPropertyConstants.COLLECTOR_BATCH_RECORD_TYPE.equals(attributeDefinition.getName()) ||
475                         KFSPropertyConstants.TRAILER_RECORD_FIRST_EMPTY_FIELD.equals(attributeDefinition.getName()) ||
476                         KFSPropertyConstants.TOTAL_RECORDS.equals(attributeDefinition.getName()) || 
477                         KFSPropertyConstants.TRAILER_RECORD_SECOND_EMPTY_FIELD.equals(attributeDefinition.getName()) ||
478                         KFSPropertyConstants.TOTAL_AMOUNT.equals(attributeDefinition.getName()))) {
479                         totalLength += attributeDefinition.getMaxLength();
480                    }
481                }
482    
483                SPACE_ALL_COLLECTOR_BATCH_TRAILER_FIELDS = StringUtils.rightPad("", totalLength, ' ');
484            }
485    
486            return SPACE_ALL_COLLECTOR_BATCH_TRAILER_FIELDS;
487        }
488        
489        private static String SPACE_ALL_COLLECTOR_DETAIL_FIELDS = null;
490        
491        public static String getSpaceAllCollectorDetailFields() {
492            if (SPACE_ALL_COLLECTOR_DETAIL_FIELDS == null) {
493                List<AttributeDefinition> attributes = SpringContext.getBean(DataDictionaryService.class).getDataDictionary().getBusinessObjectEntry(CollectorDetail.class.getName()).getAttributes();
494    
495                int totalLength = 0;
496    
497                for ( AttributeDefinition attributeDefinition : attributes ) {
498                    totalLength += attributeDefinition.getMaxLength();
499                }
500    
501                SPACE_ALL_COLLECTOR_DETAIL_FIELDS = StringUtils.rightPad("", totalLength, ' ');
502            }
503    
504            return SPACE_ALL_COLLECTOR_DETAIL_FIELDS;
505        }
506        
507        
508        private static String ZERO_TRANSACTION_ENTRY_SEQUENCE_NUMBER = null;
509    
510        public static String getZeroTransactionEntrySequenceNumber() {
511            if (ZERO_TRANSACTION_ENTRY_SEQUENCE_NUMBER == null) {
512                ZERO_TRANSACTION_ENTRY_SEQUENCE_NUMBER = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), '0');
513            }
514            return ZERO_TRANSACTION_ENTRY_SEQUENCE_NUMBER;
515        }
516        
517        public static String getZeroTransactionLedgerEntryAmount(){
518            OriginEntryFieldUtil oefu = new OriginEntryFieldUtil();
519            int length = oefu.getFieldLengthMap().get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT);
520            
521            String amount = "";
522            amount = StringUtils.rightPad("+", length - 3, "0") + ".00"; 
523            
524            return amount;
525        }
526    
527        private static String DASH_ORGANIZATION_REFERENCE_ID = null;
528    
529        public static String getDashOrganizationReferenceId() {
530            if (DASH_ORGANIZATION_REFERENCE_ID == null) {
531                DASH_ORGANIZATION_REFERENCE_ID = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.ORGANIZATION_REFERENCE_ID), '-');
532            }
533            return DASH_ORGANIZATION_REFERENCE_ID;
534        }
535        
536        private static String SPACE_CHART_OF_ACCOUNTS_CODE = null;
537    
538        public static String getSpaceChartOfAccountsCode() {
539            if (SPACE_CHART_OF_ACCOUNTS_CODE == null) {
540                SPACE_CHART_OF_ACCOUNTS_CODE = StringUtils.rightPad("", SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(OriginEntryFull.class, KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), ' ');
541            }
542            return SPACE_CHART_OF_ACCOUNTS_CODE;
543        }
544        public static final String INCOME_OR_EXPENSE_TRANSFER_CONSOLIDATION_CODE = "TRSF";    
545    }