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