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.businessobject;
017
018 import java.sql.Date;
019 import java.text.ParseException;
020 import java.text.SimpleDateFormat;
021 import java.util.ArrayList;
022 import java.util.LinkedHashMap;
023 import java.util.List;
024 import java.util.Map;
025 import java.util.regex.Matcher;
026 import java.util.regex.Pattern;
027
028 import org.apache.commons.lang.StringUtils;
029 import org.kuali.kfs.coa.businessobject.A21SubAccount;
030 import org.kuali.kfs.coa.businessobject.Account;
031 import org.kuali.kfs.coa.businessobject.AccountingPeriod;
032 import org.kuali.kfs.coa.businessobject.BalanceType;
033 import org.kuali.kfs.coa.businessobject.Chart;
034 import org.kuali.kfs.coa.businessobject.ObjectCode;
035 import org.kuali.kfs.coa.businessobject.ObjectType;
036 import org.kuali.kfs.coa.businessobject.ProjectCode;
037 import org.kuali.kfs.coa.businessobject.SubAccount;
038 import org.kuali.kfs.coa.businessobject.SubObjectCode;
039 import org.kuali.kfs.coa.service.AccountService;
040 import org.kuali.kfs.gl.GeneralLedgerConstants;
041 import org.kuali.kfs.gl.exception.LoadException;
042 import org.kuali.kfs.sys.KFSConstants;
043 import org.kuali.kfs.sys.KFSPropertyConstants;
044 import org.kuali.kfs.sys.Message;
045 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
046 import org.kuali.kfs.sys.businessobject.OriginationCode;
047 import org.kuali.kfs.sys.businessobject.SystemOptions;
048 import org.kuali.kfs.sys.businessobject.UniversityDate;
049 import org.kuali.kfs.sys.context.SpringContext;
050 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO;
051 import org.kuali.rice.kew.service.impl.KEWModuleService;
052 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
053 import org.kuali.rice.kns.service.DateTimeService;
054 import org.kuali.rice.kns.util.KualiDecimal;
055
056 /**
057 * This class represents a full origin entry
058 */
059 public class OriginEntryFull extends PersistableBusinessObjectBase implements Transaction, OriginEntryInformation, FlexibleAccountUpdateable {
060 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OriginEntryFull.class);
061 private static OriginEntryFieldUtil originEntryFieldUtil;
062
063 public static final Pattern MATCH_CONTROL_CHARACTERS = Pattern.compile("\\p{Cntrl}");
064 public static final String REPLACE_MATCHED_CONTROL_CHARACTERS = " ";
065
066 // 17 characters while it is 19 character in DD. Don't change, it has to be 17.
067 // KFSMI-3308 - changed to 20
068
069
070 private Integer entryId;
071 private Integer entryGroupId;
072 protected String accountNumber;
073 protected String documentNumber;
074 protected String referenceFinancialDocumentNumber;
075 protected String referenceFinancialDocumentTypeCode;
076 protected Date financialDocumentReversalDate;
077 protected String financialDocumentTypeCode;
078 protected String financialBalanceTypeCode;
079 protected String chartOfAccountsCode;
080 protected String financialObjectTypeCode;
081 protected String financialObjectCode;
082 protected String financialSubObjectCode;
083 protected String financialSystemOriginationCode;
084 protected String referenceFinancialSystemOriginationCode;
085 protected String organizationDocumentNumber;
086 protected String organizationReferenceId;
087 protected String projectCode;
088 protected String subAccountNumber;
089 protected Date transactionDate;
090 protected String transactionDebitCreditCode;
091 protected String transactionEncumbranceUpdateCode;
092 protected Integer transactionLedgerEntrySequenceNumber;
093 protected KualiDecimal transactionLedgerEntryAmount;
094 protected String transactionLedgerEntryDescription;
095 protected String universityFiscalPeriodCode;
096 protected Integer universityFiscalYear;
097 private boolean transactionScrubberOffsetGenerationIndicator;
098
099 // bo references
100 private OriginEntryGroup group;
101 private Account account;
102 private SubAccount subAccount;
103 private A21SubAccount a21SubAccount;
104 private BalanceType balanceType;
105 private Chart chart;
106 private ObjectCode financialObject;
107 private SubObjectCode financialSubObject;
108 private ObjectType objectType;
109 private ProjectCode project;
110 private DocumentTypeEBO financialSystemDocumentTypeCode;
111 private UniversityDate universityDate;
112 private SystemOptions option;
113 private AccountingPeriod accountingPeriod;
114 private UniversityDate reversalDate;
115 private OriginationCode origination;
116 private DocumentTypeEBO referenceFinancialSystemDocumentTypeCode;
117
118 private static final String DATE_FORMAT = "yyyy-MM-dd";
119
120 public void copyFieldsFromTransaction(Transaction t) {
121 setAccountNumber(t.getAccountNumber());
122 setDocumentNumber(t.getDocumentNumber());
123 setReferenceFinancialDocumentNumber(t.getReferenceFinancialDocumentNumber());
124 setReferenceFinancialDocumentTypeCode(t.getReferenceFinancialDocumentTypeCode());
125 setFinancialDocumentReversalDate(t.getFinancialDocumentReversalDate());
126 setFinancialDocumentTypeCode(t.getFinancialDocumentTypeCode());
127 setFinancialBalanceTypeCode(t.getFinancialBalanceTypeCode());
128 setChartOfAccountsCode(t.getChartOfAccountsCode());
129 setFinancialObjectTypeCode(t.getFinancialObjectTypeCode());
130 setFinancialObjectCode(t.getFinancialObjectCode());
131 setFinancialSubObjectCode(t.getFinancialSubObjectCode());
132 setFinancialSystemOriginationCode(t.getFinancialSystemOriginationCode());
133 setReferenceFinancialSystemOriginationCode(t.getReferenceFinancialSystemOriginationCode());
134 setOrganizationDocumentNumber(t.getOrganizationDocumentNumber());
135 setOrganizationReferenceId(t.getOrganizationReferenceId());
136 setProjectCode(t.getProjectCode());
137 setSubAccountNumber(t.getSubAccountNumber());
138 setTransactionDate(t.getTransactionDate());
139 setTransactionDebitCreditCode(t.getTransactionDebitCreditCode());
140 setTransactionEncumbranceUpdateCode(t.getTransactionEncumbranceUpdateCode());
141 setTransactionLedgerEntrySequenceNumber(t.getTransactionLedgerEntrySequenceNumber());
142 setTransactionLedgerEntryAmount(t.getTransactionLedgerEntryAmount());
143 setTransactionLedgerEntryDescription(t.getTransactionLedgerEntryDescription());
144 setUniversityFiscalPeriodCode(t.getUniversityFiscalPeriodCode());
145 setUniversityFiscalYear(t.getUniversityFiscalYear());
146 }
147
148 protected java.sql.Date parseDate(String sdate, boolean beLenientWithDates) throws ParseException {
149 if ((sdate == null) || (sdate.trim().length() == 0)) {
150 return null;
151 }
152 else {
153
154 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
155 sdf.setLenient(beLenientWithDates);
156
157 java.util.Date d = sdf.parse(sdate);
158 return new Date(d.getTime());
159 }
160 }
161
162 protected String formatDate(Date date) {
163 if (date == null) {
164 return GeneralLedgerConstants.getSpaceTransactionDate();
165 }
166 else {
167 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
168 return sdf.format(date);
169 }
170 }
171
172 protected String getValue(String line, int s, int e) {
173 // String v = line.substring(s, e);
174 return org.springframework.util.StringUtils.trimTrailingWhitespace(StringUtils.substring(line, s, e));
175 }
176
177 /**
178 * This method loads the fields of this origin entry by parsing the passed in the string It is assumed that the String does not
179 * contain the origin entry ID, but if it does, it will be ignored
180 *
181 * @param line a string representing an origin entry
182 * @param lineNumber used to render an error message by identifying this line
183 * @throws LoadException
184 */
185
186 public List<Message> setFromTextFileForBatch(String line, int lineNumber) throws LoadException {
187 List<Message> returnList = new ArrayList<Message>();
188 final Map<String, Integer> pMap = getOriginEntryFieldUtil().getFieldBeginningPositionMap();
189
190 // KFSMI-5958: Don't want any control characters in output files. They potentially disrupt further processing
191 Matcher controlCharacterMatcher = MATCH_CONTROL_CHARACTERS.matcher(line);
192 line = controlCharacterMatcher.replaceAll(REPLACE_MATCHED_CONTROL_CHARACTERS);
193
194 // Just in case
195 line = org.apache.commons.lang.StringUtils.rightPad(line, GeneralLedgerConstants.getSpaceAllOriginEntryFields().length(), ' ');
196
197 if (!GeneralLedgerConstants.getSpaceUniversityFiscalYear().equals(line.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)))) {
198 try {
199 setUniversityFiscalYear(new Integer(getValue(line, pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE))));
200 }
201 catch (NumberFormatException e) {
202 returnList.add(new Message("Fiscal year '" + line.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)) + "' contains an invalid value." , Message.TYPE_FATAL));
203 setUniversityFiscalYear(null);
204 }
205 }
206 else {
207 setUniversityFiscalYear(null);
208 }
209
210 setChartOfAccountsCode(getValue(line, pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER)));
211 setAccountNumber(getValue(line, pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER)));
212
213 // if chart code is empty while accounts cannot cross charts, then derive chart code from account number
214 AccountService acctserv = SpringContext.getBean(AccountService.class);
215 if (StringUtils.isEmpty(getChartOfAccountsCode()) && StringUtils.isNotEmpty(getAccountNumber()) && !acctserv.accountsCanCrossCharts()) {
216 Account account = acctserv.getUniqueAccountForAccountNumber(getAccountNumber());
217 if (account != null) {
218 setChartOfAccountsCode(account.getChartOfAccountsCode());
219 }
220 }
221
222 setSubAccountNumber(getValue(line, pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE)));
223 setFinancialObjectCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE)));
224 setFinancialSubObjectCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE)));
225 setFinancialBalanceTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE)));
226 setFinancialObjectTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE), pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE)));
227 setUniversityFiscalPeriodCode(getValue(line, pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE)));
228 setFinancialDocumentTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE)));
229 setFinancialSystemOriginationCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER)));
230 setDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER)));
231
232 // don't trim sequenceNumber because SpaceTransactionEntrySequenceNumber is " "
233 if (!GeneralLedgerConstants.getSpaceTransactionEntrySequenceNumber().equals(line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC))) && !GeneralLedgerConstants.getZeroTransactionEntrySequenceNumber().equals(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC)))) {
234 try {
235 setTransactionLedgerEntrySequenceNumber(new Integer(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC))));
236 }
237 catch (NumberFormatException e) {
238 returnList.add(new Message("Transaction Sequence Number '" + line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC)) + "' contains an invalid value." , Message.TYPE_FATAL));
239 setTransactionLedgerEntrySequenceNumber(null);
240 }
241 }
242 else {
243 setTransactionLedgerEntrySequenceNumber(null);
244 }
245
246 setTransactionLedgerEntryDescription(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT)));
247
248 if (!getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT), pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE)).equals(GeneralLedgerConstants.EMPTY_CODE)){
249 try {
250 setTransactionLedgerEntryAmount(new KualiDecimal(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT), pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE)).trim()));
251 }
252 catch (NumberFormatException e) {
253 returnList.add(new Message("Transaction Amount '" + line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT), pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE)) + "' contains an invalid value." , Message.TYPE_FATAL));
254 setTransactionLedgerEntryAmount(KualiDecimal.ZERO);
255 }
256 } else {
257 returnList.add(new Message("Transaction Amount cannot be blank." , Message.TYPE_FATAL));
258 setTransactionLedgerEntryAmount(KualiDecimal.ZERO);
259 }
260
261 setTransactionDebitCreditCode(line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE), pMap.get(KFSPropertyConstants.TRANSACTION_DATE)));
262
263 if (!getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_DATE), pMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER)).equals(GeneralLedgerConstants.EMPTY_CODE)){
264 // FSKD-193, KFSMI-5441
265 try {
266 setTransactionDate(parseDate(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_DATE), pMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER)), false));
267 }
268 catch (ParseException e) {
269 setTransactionDate(SpringContext.getBean(DateTimeService.class).getCurrentSqlDate());
270 }
271 } else {
272 setTransactionDate(null);
273 }
274
275 setOrganizationDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER), pMap.get(KFSPropertyConstants.PROJECT_CODE)));
276 setProjectCode(getValue(line, pMap.get(KFSPropertyConstants.PROJECT_CODE), pMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID)));
277 setOrganizationReferenceId(getValue(line, pMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID), pMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE)));
278 setReferenceFinancialDocumentTypeCode(getValue(line, pMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE), pMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE)));
279 setReferenceFinancialSystemOriginationCode(getValue(line, pMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR)));
280 setReferenceFinancialDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE)));
281
282 if (!getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE), pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD)).equals(GeneralLedgerConstants.EMPTY_CODE)){
283 try {
284 setFinancialDocumentReversalDate(parseDate(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE), pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD)), false));
285 }
286 catch (ParseException e) {
287 setFinancialDocumentReversalDate(null);
288 returnList.add(new Message("Reversal Date '" + line.substring(pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE), pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD)) + "' contains an invalid value." , Message.TYPE_FATAL));
289
290 }
291 } else {
292 setFinancialDocumentReversalDate(null);
293 }
294
295 //set till end
296 setTransactionEncumbranceUpdateCode(line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD), GeneralLedgerConstants.getSpaceAllOriginEntryFields().length()));
297
298 return returnList;
299 }
300
301
302 protected String getField(int size, String value) {
303 if (value == null) {
304 return GeneralLedgerConstants.getSpaceAllOriginEntryFields().substring(0, size);
305 }
306 else {
307 if (value.length() < size) {
308 return value + GeneralLedgerConstants.getSpaceAllOriginEntryFields().substring(0, size - value.length());
309 }
310 else {
311 return value.substring(0, size);
312 }
313 }
314 }
315
316 public String getLine() {
317 StringBuffer sb = new StringBuffer();
318 Map<String, Integer> fieldLengthMap = getOriginEntryFieldUtil().getFieldLengthMap();
319
320 if (universityFiscalYear == null) {
321 sb.append(GeneralLedgerConstants.getSpaceUniversityFiscalYear());
322 }
323 else {
324 sb.append(universityFiscalYear);
325 }
326
327 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), chartOfAccountsCode));
328 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.ACCOUNT_NUMBER), accountNumber));
329 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER), subAccountNumber));
330 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE), financialObjectCode));
331 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE), financialSubObjectCode));
332 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE), financialBalanceTypeCode));
333 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE), financialObjectTypeCode));
334 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE), universityFiscalPeriodCode));
335 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE), financialDocumentTypeCode));
336 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), financialSystemOriginationCode));
337 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.DOCUMENT_NUMBER), documentNumber));
338
339 // This is the cobol code for transaction sequence numbers.
340 // 3025 019280 IF TRN-ENTR-SEQ-NBR OF GLEN-RECORD NOT NUMERIC
341 // 3026 019290 MOVE ZEROES TO TRN-ENTR-SEQ-NBR OF GLEN-RECORD
342 // 3027 019300 END-IF
343 // 3028 019310 IF TRN-ENTR-SEQ-NBR OF GLEN-RECORD = SPACES
344 // 3029 019320 MOVE ZEROES
345 // 3030 019330 TO TRN-ENTR-SEQ-NBR OF ALT-GLEN-RECORD
346 // 3031 019340 ELSE
347 // 3032 019350 MOVE TRN-ENTR-SEQ-NBR OF GLEN-RECORD
348 // 3033 019360 TO TRN-ENTR-SEQ-NBR OF ALT-GLEN-RECORD
349 // 3034 019370 END-IF
350 String seqNum ="";
351 if (transactionLedgerEntrySequenceNumber != null) {
352 seqNum = transactionLedgerEntrySequenceNumber.toString();
353 }
354 // Format to a length of 5
355 sb.append(StringUtils.leftPad(seqNum.trim(), fieldLengthMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), "0"));
356
357 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC), transactionLedgerEntryDescription));
358 if (transactionLedgerEntryAmount == null) {
359 sb.append(GeneralLedgerConstants.getZeroTransactionLedgerEntryAmount());
360 }
361 else {
362 String a = transactionLedgerEntryAmount.abs().toString();
363 if (transactionLedgerEntryAmount.isNegative()) {
364 sb.append("-");
365 } else {
366 sb.append("+");
367 }
368 sb.append(GeneralLedgerConstants.getZeroTransactionLedgerEntryAmount().substring(1, fieldLengthMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT) - a.length()));
369 sb.append(a);
370 }
371 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE), transactionDebitCreditCode));
372 sb.append(formatDate(transactionDate));
373 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER), organizationDocumentNumber));
374 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.PROJECT_CODE), projectCode));
375 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID), organizationReferenceId));
376 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE), referenceFinancialDocumentTypeCode));
377 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE), referenceFinancialSystemOriginationCode));
378 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR), referenceFinancialDocumentNumber));
379 sb.append(formatDate(financialDocumentReversalDate));
380 sb.append(getField(fieldLengthMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD), transactionEncumbranceUpdateCode));
381 // pad to full length
382 while (GeneralLedgerConstants.getSpaceAllOriginEntryFields().length() > sb.toString().length()) {
383 sb.append(' ');
384 }
385
386 // KFSMI-5958: Don't want any control characters in output files. They potentially disrupt further processing
387 Matcher controlCharacterMatcher = MATCH_CONTROL_CHARACTERS.matcher(sb);
388 String returnString = controlCharacterMatcher.replaceAll(REPLACE_MATCHED_CONTROL_CHARACTERS);
389
390 return returnString;
391 }
392
393 public boolean isTransactionScrubberOffsetGenerationIndicator() {
394 return transactionScrubberOffsetGenerationIndicator;
395 }
396
397 public void setTransactionScrubberOffsetGenerationIndicator(boolean transactionScrubberOffsetGenerationIndicator) {
398 this.transactionScrubberOffsetGenerationIndicator = transactionScrubberOffsetGenerationIndicator;
399 }
400
401 public String getAccountNumber() {
402 return accountNumber;
403 }
404
405 public void setAccountNumber(String accountNumber) {
406 this.accountNumber = accountNumber;
407 }
408
409 public String getFinancialBalanceTypeCode() {
410 return financialBalanceTypeCode;
411 }
412
413 public void setFinancialBalanceTypeCode(String financialBalanceTypeCode) {
414 this.financialBalanceTypeCode = financialBalanceTypeCode;
415 }
416
417 public String getChartOfAccountsCode() {
418 return chartOfAccountsCode;
419 }
420
421 public void setChartOfAccountsCode(String chartOfAccountsCode) {
422 this.chartOfAccountsCode = chartOfAccountsCode;
423 }
424
425 public String getTransactionDebitCreditCode() {
426 return transactionDebitCreditCode;
427 }
428
429 public void setTransactionDebitCreditCode(String transactionDebitCreditCode) {
430 if (transactionDebitCreditCode != null) {
431 this.transactionDebitCreditCode = transactionDebitCreditCode.toUpperCase();
432 }
433 }
434
435 public String getDocumentNumber() {
436 return documentNumber;
437 }
438
439 public void setDocumentNumber(String documentNumber) {
440 this.documentNumber = documentNumber;
441 }
442
443 public Date getFinancialDocumentReversalDate() {
444 return financialDocumentReversalDate;
445 }
446
447 public void setFinancialDocumentReversalDate(Date financialDocumentReversalDate) {
448 this.financialDocumentReversalDate = financialDocumentReversalDate;
449 }
450
451 public String getFinancialDocumentTypeCode() {
452 return financialDocumentTypeCode;
453 }
454
455 public void setFinancialDocumentTypeCode(String financialDocumentTypeCode) {
456 this.financialDocumentTypeCode = financialDocumentTypeCode;
457 }
458
459 public String getTransactionEncumbranceUpdateCode() {
460 return transactionEncumbranceUpdateCode;
461 }
462
463 public void setTransactionEncumbranceUpdateCode(String transactionEncumbranceUpdateCode) {
464 this.transactionEncumbranceUpdateCode = transactionEncumbranceUpdateCode;
465 }
466
467 public Integer getEntryGroupId() {
468 return entryGroupId;
469 }
470
471 public void setEntryGroupId(Integer entryGroupId) {
472 this.entryGroupId = entryGroupId;
473 }
474
475 public Integer getEntryId() {
476 return entryId;
477 }
478
479 public void setEntryId(Integer entryId) {
480 this.entryId = entryId;
481 }
482
483 public void resetEntryId() {
484 this.entryId = null;
485 this.versionNumber = null;
486 }
487
488 public String getFinancialObjectCode() {
489 return financialObjectCode;
490 }
491
492 public void setFinancialObjectCode(String financialObjectCode) {
493 this.financialObjectCode = financialObjectCode;
494 }
495
496 public String getFinancialObjectTypeCode() {
497 return financialObjectTypeCode;
498 }
499
500 public void setFinancialObjectTypeCode(String financialObjectTypeCode) {
501 this.financialObjectTypeCode = financialObjectTypeCode;
502 }
503
504 public String getOrganizationDocumentNumber() {
505 return organizationDocumentNumber;
506 }
507
508 public void setOrganizationDocumentNumber(String organizationDocumentNumber) {
509 this.organizationDocumentNumber = organizationDocumentNumber;
510 }
511
512 public String getOrganizationReferenceId() {
513 return organizationReferenceId;
514 }
515
516 public void setOrganizationReferenceId(String organizationReferenceId) {
517 this.organizationReferenceId = organizationReferenceId;
518 }
519
520 public String getFinancialSystemOriginationCode() {
521 return financialSystemOriginationCode;
522 }
523
524 public void setFinancialSystemOriginationCode(String financialSystemOriginationCode) {
525 this.financialSystemOriginationCode = financialSystemOriginationCode;
526 }
527
528 public String getProjectCode() {
529 if (StringUtils.isBlank(projectCode)) {
530 projectCode = KFSConstants.getDashProjectCode();
531 }
532 return projectCode;
533 }
534
535 public void setProjectCode(String projectCode) {
536 this.projectCode = projectCode;
537 }
538
539 public String getReferenceFinancialDocumentNumber() {
540 return referenceFinancialDocumentNumber;
541 }
542
543 public void setReferenceFinancialDocumentNumber(String referenceFinancialDocumentNumber) {
544 this.referenceFinancialDocumentNumber = referenceFinancialDocumentNumber;
545 }
546
547 public String getReferenceFinancialDocumentTypeCode() {
548 return referenceFinancialDocumentTypeCode;
549 }
550
551 public void setReferenceFinancialDocumentTypeCode(String referenceFinancialDocumentTypeCode) {
552 this.referenceFinancialDocumentTypeCode = referenceFinancialDocumentTypeCode;
553 }
554
555 public String getReferenceFinancialSystemOriginationCode() {
556 return referenceFinancialSystemOriginationCode;
557 }
558
559 public void setReferenceFinancialSystemOriginationCode(String referenceFinancialSystemOriginationCode) {
560 this.referenceFinancialSystemOriginationCode = referenceFinancialSystemOriginationCode;
561 }
562
563 public String getSubAccountNumber() {
564 if (StringUtils.isBlank(subAccountNumber)) {
565 subAccountNumber = KFSConstants.getDashSubAccountNumber();
566 }
567 return subAccountNumber;
568 }
569
570 public void setSubAccountNumber(String subAccountNumber) {
571 this.subAccountNumber = subAccountNumber;
572 }
573
574 public String getFinancialSubObjectCode() {
575 if (StringUtils.isBlank(financialSubObjectCode)) {
576 financialSubObjectCode = KFSConstants.getDashFinancialSubObjectCode();
577 }
578 return financialSubObjectCode;
579 }
580
581 public void setFinancialSubObjectCode(String financialSubObjectCode) {
582 this.financialSubObjectCode = financialSubObjectCode;
583 }
584
585 public Date getTransactionDate() {
586 return transactionDate;
587 }
588
589 public void setTransactionDate(Date transactionDate) {
590 this.transactionDate = transactionDate;
591 }
592
593 public Integer getTransactionLedgerEntrySequenceNumber() {
594 return transactionLedgerEntrySequenceNumber;
595 }
596
597 public void setTransactionLedgerEntrySequenceNumber(Integer transactionLedgerEntrySequenceNumber) {
598 this.transactionLedgerEntrySequenceNumber = transactionLedgerEntrySequenceNumber;
599 }
600
601 public KualiDecimal getTransactionLedgerEntryAmount() {
602 return transactionLedgerEntryAmount;
603 }
604
605 public void setTransactionLedgerEntryAmount(KualiDecimal transactionLedgerEntryAmount) {
606 this.transactionLedgerEntryAmount = transactionLedgerEntryAmount;
607 }
608
609 public void setTransactionLedgerEntryAmount(String transactionLedgerEntryAmount) {
610 this.transactionLedgerEntryAmount = new KualiDecimal(transactionLedgerEntryAmount);
611 }
612
613 public void clearTransactionLedgerEntryAmount() {
614 this.transactionLedgerEntryAmount = null;
615 }
616
617 public String getTransactionLedgerEntryDescription() {
618 return transactionLedgerEntryDescription;
619 }
620
621 public void setTransactionLedgerEntryDescription(String transactionLedgerEntryDescription) {
622 this.transactionLedgerEntryDescription = transactionLedgerEntryDescription;
623 }
624
625 public String getUniversityFiscalPeriodCode() {
626 return universityFiscalPeriodCode;
627 }
628
629 public void setUniversityFiscalPeriodCode(String universityFiscalPeriodCode) {
630 this.universityFiscalPeriodCode = universityFiscalPeriodCode;
631 }
632
633 public Integer getUniversityFiscalYear() {
634 return universityFiscalYear;
635 }
636
637 public void setUniversityFiscalYear(Integer universityFiscalYear) {
638 this.universityFiscalYear = universityFiscalYear;
639 }
640
641 public boolean isDebit() {
642 return KFSConstants.GL_DEBIT_CODE.equals(this.transactionDebitCreditCode);
643 }
644
645 public boolean isCredit() {
646 return KFSConstants.GL_CREDIT_CODE.equals(this.transactionDebitCreditCode);
647 }
648
649 public void setFieldValue(String fieldName, String fieldValue) {
650 if ("universityFiscalYear".equals(fieldName)) {
651 if (StringUtils.isNotBlank(fieldValue)) {
652 setUniversityFiscalYear(Integer.parseInt(fieldValue));
653 }
654 else {
655 setUniversityFiscalYear(null);
656 }
657 }
658 else if ("chartOfAccountsCode".equals(fieldName)) {
659 setChartOfAccountsCode(fieldValue);
660 }
661 else if ("accountNumber".equals(fieldName)) {
662 setAccountNumber(fieldValue);
663 }
664 else if ("subAccountNumber".equals(fieldName)) {
665 setSubAccountNumber(fieldValue);
666 }
667 else if ("financialObjectCode".equals(fieldName)) {
668 setFinancialObjectCode(fieldValue);
669 }
670 else if ("financialSubObjectCode".equals(fieldName)) {
671 setFinancialSubObjectCode(fieldValue);
672 }
673 else if ("financialBalanceTypeCode".equals(fieldName)) {
674 setFinancialBalanceTypeCode(fieldValue);
675 }
676 else if ("financialObjectTypeCode".equals(fieldName)) {
677 setFinancialObjectTypeCode(fieldValue);
678 }
679 else if ("universityFiscalPeriodCode".equals(fieldName)) {
680 setUniversityFiscalPeriodCode(fieldValue);
681 }
682 else if ("financialDocumentTypeCode".equals(fieldName)) {
683 setFinancialDocumentTypeCode(fieldValue);
684 }
685 else if ("financialSystemOriginationCode".equals(fieldName)) {
686 setFinancialSystemOriginationCode(fieldValue);
687 }
688 else if (KFSPropertyConstants.DOCUMENT_NUMBER.equals(fieldName)) {
689 setDocumentNumber(fieldValue);
690 }
691 else if ("transactionLedgerEntrySequenceNumber".equals(fieldName)) {
692 if (StringUtils.isNotBlank(fieldValue)) {
693 setTransactionLedgerEntrySequenceNumber(Integer.parseInt(fieldValue));
694 }
695 else {
696 setTransactionLedgerEntrySequenceNumber(null);
697 }
698 }
699 else if ("transactionLedgerEntryDescription".equals(fieldName)) {
700 setTransactionLedgerEntryDescription(fieldValue);
701 }
702 else if ("transactionLedgerEntryAmount".equals(fieldName)) {
703 if (StringUtils.isNotBlank(fieldValue)) {
704 setTransactionLedgerEntryAmount(new KualiDecimal(fieldValue));
705 }
706 else {
707 clearTransactionLedgerEntryAmount();
708 }
709 }
710 else if ("transactionDebitCreditCode".equals(fieldName)) {
711 setTransactionDebitCreditCode(fieldValue);
712 }
713 else if ("transactionDate".equals(fieldName)) {
714 if (StringUtils.isNotBlank(fieldValue)) {
715 try {
716 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
717 setTransactionDate(new java.sql.Date((df.parse(fieldValue)).getTime()));
718 }
719 catch (ParseException e) {
720 setTransactionDate(null);
721 }
722 }
723 else {
724 setTransactionDate(null);
725 }
726 }
727 else if ("organizationDocumentNumber".equals(fieldName)) {
728 setOrganizationDocumentNumber(fieldValue);
729 }
730 else if ("projectCode".equals(fieldName)) {
731 setProjectCode(fieldValue);
732 }
733 else if ("organizationReferenceId".equals(fieldName)) {
734 setOrganizationReferenceId(fieldValue);
735 }
736 else if ("referenceFinancialDocumentTypeCode".equals(fieldName)) {
737 setReferenceFinancialDocumentTypeCode(fieldValue);
738 }
739 else if ("referenceFinancialSystemOriginationCode".equals(fieldName)) {
740 setReferenceFinancialSystemOriginationCode(fieldValue);
741 }
742 else if ("referenceFinancialDocumentNumber".equals(fieldName)) {
743 setReferenceFinancialDocumentNumber(fieldValue);
744 }
745 else if ("financialDocumentReversalDate".equals(fieldName)) {
746 if (StringUtils.isNotBlank(fieldValue)) {
747 try {
748 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
749 setFinancialDocumentReversalDate(new java.sql.Date((df.parse(fieldValue)).getTime()));
750 }
751 catch (ParseException e) {
752 setFinancialDocumentReversalDate(null);
753 }
754 }
755 else {
756 setFinancialDocumentReversalDate(null);
757 }
758 }
759 else if ("transactionEncumbranceUpdateCode".equals(fieldName)) {
760 setTransactionEncumbranceUpdateCode(fieldValue);
761 }
762 else {
763 throw new IllegalArgumentException("Invalid Field Name " + fieldName);
764 }
765 }
766
767 public Object getFieldValue(String fieldName) {
768 if ("universityFiscalYear".equals(fieldName)) {
769 return getUniversityFiscalYear();
770 }
771 else if ("chartOfAccountsCode".equals(fieldName)) {
772 return getChartOfAccountsCode();
773 }
774 else if ("accountNumber".equals(fieldName)) {
775 return getAccountNumber();
776 }
777 else if ("subAccountNumber".equals(fieldName)) {
778 return getSubAccountNumber();
779 }
780 else if ("financialObjectCode".equals(fieldName)) {
781 return getFinancialObjectCode();
782 }
783 else if ("financialSubObjectCode".equals(fieldName)) {
784 return getFinancialSubObjectCode();
785 }
786 else if ("financialBalanceTypeCode".equals(fieldName)) {
787 return getFinancialBalanceTypeCode();
788 }
789 else if ("financialObjectTypeCode".equals(fieldName)) {
790 return getFinancialObjectTypeCode();
791 }
792 else if ("universityFiscalPeriodCode".equals(fieldName)) {
793 return getUniversityFiscalPeriodCode();
794 }
795 else if ("financialDocumentTypeCode".equals(fieldName)) {
796 return getFinancialDocumentTypeCode();
797 }
798 else if ("financialSystemOriginationCode".equals(fieldName)) {
799 return getFinancialSystemOriginationCode();
800 }
801 else if (KFSPropertyConstants.DOCUMENT_NUMBER.equals(fieldName)) {
802 return getDocumentNumber();
803 }
804 else if ("transactionLedgerEntrySequenceNumber".equals(fieldName)) {
805 return getTransactionLedgerEntrySequenceNumber();
806 }
807 else if ("transactionLedgerEntryDescription".equals(fieldName)) {
808 return getTransactionLedgerEntryDescription();
809 }
810 else if ("transactionLedgerEntryAmount".equals(fieldName)) {
811 return getTransactionLedgerEntryAmount();
812 }
813 else if ("transactionDebitCreditCode".equals(fieldName)) {
814 return getTransactionDebitCreditCode();
815 }
816 else if ("transactionDate".equals(fieldName)) {
817 return getTransactionDate();
818 }
819 else if ("organizationDocumentNumber".equals(fieldName)) {
820 return getOrganizationDocumentNumber();
821 }
822 else if ("projectCode".equals(fieldName)) {
823 return getProjectCode();
824 }
825 else if ("organizationReferenceId".equals(fieldName)) {
826 return getOrganizationReferenceId();
827 }
828 else if ("referenceFinancialDocumentTypeCode".equals(fieldName)) {
829 return getReferenceFinancialDocumentTypeCode();
830 }
831 else if ("referenceFinancialSystemOriginationCode".equals(fieldName)) {
832 return getReferenceFinancialSystemOriginationCode();
833 }
834 else if ("referenceFinancialDocumentNumber".equals(fieldName)) {
835 return getReferenceFinancialDocumentNumber();
836 }
837 else if ("financialDocumentReversalDate".equals(fieldName)) {
838 return getFinancialDocumentReversalDate();
839 }
840 else if ("transactionEncumbranceUpdateCode".equals(fieldName)) {
841 return getTransactionEncumbranceUpdateCode();
842 }
843 else {
844 throw new IllegalArgumentException("Invalid Field Name " + fieldName);
845 }
846 }
847
848 public OriginEntryFull(GeneralLedgerPendingEntry glpe) {
849 accountNumber = glpe.getAccountNumber();
850 documentNumber = glpe.getDocumentNumber();
851 referenceFinancialDocumentNumber = glpe.getReferenceFinancialDocumentNumber();
852 referenceFinancialDocumentTypeCode = glpe.getReferenceFinancialDocumentTypeCode();
853 financialDocumentReversalDate = glpe.getFinancialDocumentReversalDate();
854 financialDocumentTypeCode = glpe.getFinancialDocumentTypeCode();
855 financialBalanceTypeCode = glpe.getFinancialBalanceTypeCode();
856 chartOfAccountsCode = glpe.getChartOfAccountsCode();
857 financialObjectTypeCode = glpe.getFinancialObjectTypeCode();
858 financialObjectCode = glpe.getFinancialObjectCode();
859 financialSubObjectCode = glpe.getFinancialSubObjectCode();
860 financialSystemOriginationCode = glpe.getFinancialSystemOriginationCode();
861 referenceFinancialSystemOriginationCode = glpe.getReferenceFinancialSystemOriginationCode();
862 organizationDocumentNumber = glpe.getOrganizationDocumentNumber();
863 organizationReferenceId = glpe.getOrganizationReferenceId();
864 projectCode = glpe.getProjectCode();
865 subAccountNumber = glpe.getSubAccountNumber();
866 transactionDate = glpe.getTransactionDate();
867 transactionDebitCreditCode = glpe.getTransactionDebitCreditCode();
868 transactionEncumbranceUpdateCode = glpe.getTransactionEncumbranceUpdateCode();
869 transactionLedgerEntrySequenceNumber = glpe.getTransactionLedgerEntrySequenceNumber();
870 transactionLedgerEntryAmount = glpe.getTransactionLedgerEntryAmount();
871 transactionLedgerEntryDescription = glpe.getTransactionLedgerEntryDescription();
872 universityFiscalPeriodCode = glpe.getUniversityFiscalPeriodCode();
873 universityFiscalYear = glpe.getUniversityFiscalYear();
874 }
875
876 /**
877 *
878 */
879 public OriginEntryFull(String financialDocumentTypeCode, String financialSystemOriginationCode) {
880 super();
881
882 setChartOfAccountsCode(KFSConstants.EMPTY_STRING);
883 setAccountNumber(KFSConstants.EMPTY_STRING);
884
885 setFinancialDocumentTypeCode(financialDocumentTypeCode);
886 setFinancialSystemOriginationCode(financialSystemOriginationCode);
887
888 setFinancialObjectCode(KFSConstants.EMPTY_STRING);
889 setFinancialBalanceTypeCode(KFSConstants.EMPTY_STRING);
890 setFinancialObjectTypeCode(KFSConstants.EMPTY_STRING);
891 setDocumentNumber(KFSConstants.EMPTY_STRING);
892 setFinancialDocumentReversalDate(null);
893
894 setUniversityFiscalYear(new Integer(0));
895 setUniversityFiscalPeriodCode(KFSConstants.EMPTY_STRING);
896
897 setTransactionLedgerEntrySequenceNumber(new Integer(1));
898 setTransactionLedgerEntryAmount(KualiDecimal.ZERO);
899 setTransactionLedgerEntryDescription(KFSConstants.EMPTY_STRING);
900 setTransactionDate(null);
901 setTransactionDebitCreditCode(KFSConstants.EMPTY_STRING);
902 setTransactionEncumbranceUpdateCode(null);
903
904 setOrganizationDocumentNumber(KFSConstants.EMPTY_STRING);
905 setOrganizationReferenceId(KFSConstants.EMPTY_STRING);
906
907 setReferenceFinancialDocumentTypeCode(KFSConstants.EMPTY_STRING);
908 setReferenceFinancialSystemOriginationCode(KFSConstants.EMPTY_STRING);
909 setReferenceFinancialDocumentNumber(KFSConstants.EMPTY_STRING);
910 }
911
912 /**
913 *
914 */
915 public OriginEntryFull() {
916 this(null, null);
917 }
918
919 public OriginEntryFull(Transaction t) {
920 this();
921 copyFieldsFromTransaction(t);
922 }
923
924 public OriginEntryFull(String line) {
925 try {
926 setFromTextFileForBatch(line, 0);
927 }
928 catch (LoadException e) {
929 LOG.error("OriginEntryFull() Error loading line", e);
930 }
931 }
932
933 protected LinkedHashMap toStringMapper() {
934 LinkedHashMap map = new LinkedHashMap();
935 map.put("entryId", getEntryId());
936 map.put("entryGroupId", getEntryGroupId());
937 map.put("universityFiscalYear", getUniversityFiscalYear());
938 map.put("universityFiscalPeriodCode", getUniversityFiscalPeriodCode());
939 map.put("chartOfAccountsCode", getChartOfAccountsCode());
940 map.put("accountNumber", getAccountNumber());
941 map.put("subAccountNumber", getSubAccountNumber());
942 map.put("financialObjectCode", getFinancialObjectCode());
943 map.put("financialObjectTypeCode", getFinancialObjectTypeCode());
944 map.put("financialSubObjectCode", getFinancialSubObjectCode());
945 map.put("financialBalanceTypeCode", getFinancialBalanceTypeCode());
946 map.put(KFSPropertyConstants.DOCUMENT_NUMBER, getDocumentNumber());
947 map.put("financialDocumentTypeCode", getFinancialDocumentTypeCode());
948 map.put("financialSystemOriginationCode", getFinancialSystemOriginationCode());
949 map.put("transactionLedgerEntrySequenceNumber", getTransactionLedgerEntrySequenceNumber());
950 map.put("transactionLedgerEntryDescription", getTransactionLedgerEntryDescription());
951 return map;
952 }
953
954 public OriginEntryGroup getGroup() {
955 return group;
956 }
957
958 public void setGroup(OriginEntryGroup oeg) {
959 if (oeg != null) {
960 setEntryGroupId(oeg.getId());
961 group = oeg;
962 }
963 else {
964 setEntryGroupId(null);
965 group = null;
966 }
967 }
968
969 public A21SubAccount getA21SubAccount() {
970 return a21SubAccount;
971 }
972
973 public void setA21SubAccount(A21SubAccount subAccount) {
974 a21SubAccount = subAccount;
975 }
976
977 public Account getAccount() {
978 return account;
979 }
980
981 public void setAccount(Account account) {
982 this.account = account;
983 }
984
985 public BalanceType getBalanceType() {
986 return balanceType;
987 }
988
989 public void setBalanceType(BalanceType balanceType) {
990 this.balanceType = balanceType;
991 }
992
993 public Chart getChart() {
994 return chart;
995 }
996
997 public void setChart(Chart chart) {
998 this.chart = chart;
999 }
1000
1001 public DocumentTypeEBO getFinancialSystemDocumentTypeCode() {
1002 return financialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, financialSystemDocumentTypeCode, "financialSystemDocumentTypeCode");
1003 }
1004
1005 public ObjectCode getFinancialObject() {
1006 return financialObject;
1007 }
1008
1009 public void setFinancialObject(ObjectCode financialObject) {
1010 this.financialObject = financialObject;
1011 }
1012
1013 public SubObjectCode getFinancialSubObject() {
1014 return financialSubObject;
1015 }
1016
1017 public void setFinancialSubObject(SubObjectCode financialSubObject) {
1018 this.financialSubObject = financialSubObject;
1019 }
1020
1021 public ObjectType getObjectType() {
1022 return objectType;
1023 }
1024
1025 public void setObjectType(ObjectType objectType) {
1026 this.objectType = objectType;
1027 }
1028
1029 public SystemOptions getOption() {
1030 return option;
1031 }
1032
1033 public void setOption(SystemOptions option) {
1034 this.option = option;
1035 }
1036
1037 public ProjectCode getProject() {
1038 return project;
1039 }
1040
1041 public void setProject(ProjectCode project) {
1042 this.project = project;
1043 }
1044
1045 public SubAccount getSubAccount() {
1046 return subAccount;
1047 }
1048
1049 public void setSubAccount(SubAccount subAccount) {
1050 this.subAccount = subAccount;
1051 }
1052
1053 public UniversityDate getUniversityDate() {
1054 return universityDate;
1055 }
1056
1057 public void setUniversityDate(UniversityDate universityDate) {
1058 this.universityDate = universityDate;
1059 }
1060
1061 public AccountingPeriod getAccountingPeriod() {
1062 return accountingPeriod;
1063 }
1064
1065 public void setAccountingPeriod(AccountingPeriod accountingPeriod) {
1066 this.accountingPeriod = accountingPeriod;
1067 }
1068
1069 public UniversityDate getReversalDate() {
1070 return reversalDate;
1071 }
1072
1073 public void setReversalDate(UniversityDate reversalDate) {
1074 this.reversalDate = reversalDate;
1075 }
1076
1077 public OriginationCode getOrigination() {
1078 return origination;
1079 }
1080
1081 public void setOrigination(OriginationCode origination) {
1082 this.origination = origination;
1083 }
1084
1085 public DocumentTypeEBO getReferenceFinancialSystemDocumentTypeCode() {
1086 return referenceFinancialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, referenceFinancialSystemDocumentTypeCode, "referenceFinancialSystemDocumentTypeCode");
1087 }
1088
1089 public static OriginEntryFull copyFromOriginEntryable(OriginEntryInformation oe) {
1090 OriginEntryFull newOriginEntry = new OriginEntryFull();
1091 newOriginEntry.setAccountNumber(oe.getAccountNumber());
1092 newOriginEntry.setDocumentNumber(oe.getDocumentNumber());
1093 newOriginEntry.setReferenceFinancialDocumentNumber(oe.getReferenceFinancialDocumentNumber());
1094 newOriginEntry.setReferenceFinancialDocumentTypeCode(oe.getReferenceFinancialDocumentTypeCode());
1095 newOriginEntry.setFinancialDocumentReversalDate(oe.getFinancialDocumentReversalDate());
1096 newOriginEntry.setFinancialDocumentTypeCode(oe.getFinancialDocumentTypeCode());
1097 newOriginEntry.setFinancialBalanceTypeCode(oe.getFinancialBalanceTypeCode());
1098 newOriginEntry.setChartOfAccountsCode(oe.getChartOfAccountsCode());
1099 newOriginEntry.setFinancialObjectTypeCode(oe.getFinancialObjectTypeCode());
1100 newOriginEntry.setFinancialObjectCode(oe.getFinancialObjectCode());
1101 newOriginEntry.setFinancialSubObjectCode(oe.getFinancialSubObjectCode());
1102 newOriginEntry.setFinancialSystemOriginationCode(oe.getFinancialSystemOriginationCode());
1103 newOriginEntry.setReferenceFinancialSystemOriginationCode(oe.getReferenceFinancialSystemOriginationCode());
1104 newOriginEntry.setOrganizationDocumentNumber(oe.getOrganizationDocumentNumber());
1105 newOriginEntry.setOrganizationReferenceId(oe.getOrganizationReferenceId());
1106 newOriginEntry.setProjectCode(oe.getProjectCode());
1107 newOriginEntry.setSubAccountNumber(oe.getSubAccountNumber());
1108 newOriginEntry.setTransactionDate(oe.getTransactionDate());
1109 newOriginEntry.setTransactionDebitCreditCode(oe.getTransactionDebitCreditCode());
1110 newOriginEntry.setTransactionEncumbranceUpdateCode(oe.getTransactionEncumbranceUpdateCode());
1111 newOriginEntry.setTransactionLedgerEntrySequenceNumber(oe.getTransactionLedgerEntrySequenceNumber());
1112 newOriginEntry.setTransactionLedgerEntryAmount(oe.getTransactionLedgerEntryAmount());
1113 newOriginEntry.setTransactionLedgerEntryDescription(oe.getTransactionLedgerEntryDescription());
1114 newOriginEntry.setUniversityFiscalPeriodCode(oe.getUniversityFiscalPeriodCode());
1115 newOriginEntry.setUniversityFiscalYear(oe.getUniversityFiscalYear());
1116 return newOriginEntry;
1117 }
1118
1119 /**
1120 * @return the static instance of the OriginEntryFieldUtil
1121 */
1122 protected static OriginEntryFieldUtil getOriginEntryFieldUtil() {
1123 if (originEntryFieldUtil == null) {
1124 originEntryFieldUtil = new OriginEntryFieldUtil();
1125 }
1126 return originEntryFieldUtil;
1127 }
1128 }