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 017 package org.kuali.kfs.module.ld.businessobject; 018 019 import java.math.BigDecimal; 020 import java.sql.Date; 021 import java.sql.Timestamp; 022 import java.text.ParseException; 023 import java.text.SimpleDateFormat; 024 import java.util.ArrayList; 025 import java.util.List; 026 import java.util.Map; 027 import java.util.regex.Matcher; 028 029 import org.apache.commons.lang.StringUtils; 030 import org.kuali.kfs.coa.businessobject.Account; 031 import org.kuali.kfs.coa.businessobject.AccountingPeriod; 032 import org.kuali.kfs.coa.service.AccountService; 033 import org.kuali.kfs.gl.GeneralLedgerConstants; 034 import org.kuali.kfs.gl.businessobject.OriginEntryFull; 035 import org.kuali.kfs.gl.businessobject.OriginEntryInformation; 036 import org.kuali.kfs.module.ld.LaborConstants; 037 import org.kuali.kfs.module.ld.LaborPropertyConstants; 038 import org.kuali.kfs.sys.KFSPropertyConstants; 039 import org.kuali.kfs.sys.Message; 040 import org.kuali.kfs.sys.businessobject.OriginationCode; 041 import org.kuali.kfs.sys.context.SpringContext; 042 import org.kuali.rice.kew.doctype.bo.DocumentTypeEBO; 043 import org.kuali.rice.kew.service.impl.KEWModuleService; 044 import org.kuali.rice.kns.util.KualiDecimal; 045 046 /** 047 * Labor business object for LaborOriginEntry. 048 */ 049 public class LaborOriginEntry extends OriginEntryFull implements OriginEntryInformation, LaborTransaction { 050 private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(LaborOriginEntry.class); 051 private static LaborOriginEntryFieldUtil laborOriginEntryFieldUtil; 052 private static final String DATE_FORMAT = "yyyy-MM-dd"; 053 private String positionNumber; 054 private Date transactionPostingDate; 055 private Date payPeriodEndDate; 056 private BigDecimal transactionTotalHours; 057 private Integer payrollEndDateFiscalYear; 058 private String payrollEndDateFiscalPeriodCode; 059 private String financialDocumentApprovedCode; 060 private String transactionEntryOffsetCode; 061 private Timestamp transactionEntryProcessedTimestamp; 062 private String emplid; 063 private Integer employeeRecord; 064 private String earnCode; 065 private String payGroup; 066 private String salaryAdministrationPlan; 067 private String grade; 068 private String runIdentifier; 069 private String laborLedgerOriginalChartOfAccountsCode; 070 private String laborLedgerOriginalAccountNumber; 071 private String laborLedgerOriginalSubAccountNumber; 072 private String laborLedgerOriginalFinancialObjectCode; 073 private String laborLedgerOriginalFinancialSubObjectCode; 074 private String hrmsCompany; 075 private String setid; 076 private Date transactionDateTimeStamp; 077 private DocumentTypeEBO referenceFinancialSystemDocumentTypeCode; 078 private OriginationCode referenceFinancialSystemOrigination; 079 private AccountingPeriod payrollEndDateFiscalPeriod; 080 081 public LaborOriginEntry(LaborLedgerPendingEntry pendingEntry){ 082 083 accountNumber = pendingEntry.getAccountNumber(); 084 documentNumber = pendingEntry.getDocumentNumber(); 085 referenceFinancialDocumentNumber = pendingEntry.getReferenceFinancialDocumentNumber(); 086 referenceFinancialDocumentTypeCode = pendingEntry.getReferenceFinancialDocumentTypeCode(); 087 financialDocumentReversalDate = pendingEntry.getFinancialDocumentReversalDate(); 088 financialDocumentTypeCode = pendingEntry.getFinancialDocumentTypeCode(); 089 financialBalanceTypeCode = pendingEntry.getFinancialBalanceTypeCode(); 090 chartOfAccountsCode = pendingEntry.getChartOfAccountsCode(); 091 financialObjectTypeCode = pendingEntry.getFinancialObjectTypeCode(); 092 financialObjectCode = pendingEntry.getFinancialObjectCode(); 093 financialSubObjectCode = pendingEntry.getFinancialSubObjectCode(); 094 financialSystemOriginationCode = pendingEntry.getFinancialSystemOriginationCode(); 095 referenceFinancialSystemOriginationCode = pendingEntry.getReferenceFinancialSystemOriginationCode(); 096 organizationDocumentNumber = pendingEntry.getOrganizationDocumentNumber(); 097 organizationReferenceId = pendingEntry.getOrganizationReferenceId(); 098 projectCode = pendingEntry.getProjectCode(); 099 subAccountNumber = pendingEntry.getSubAccountNumber(); 100 transactionDate = pendingEntry.getTransactionDate(); 101 transactionDebitCreditCode = pendingEntry.getTransactionDebitCreditCode(); 102 transactionEncumbranceUpdateCode = pendingEntry.getTransactionEncumbranceUpdateCode(); 103 transactionLedgerEntrySequenceNumber = pendingEntry.getTransactionLedgerEntrySequenceNumber(); 104 transactionLedgerEntryAmount = pendingEntry.getTransactionLedgerEntryAmount(); 105 transactionLedgerEntryDescription = pendingEntry.getTransactionLedgerEntryDescription(); 106 universityFiscalPeriodCode = pendingEntry.getUniversityFiscalPeriodCode(); 107 universityFiscalYear = pendingEntry.getUniversityFiscalYear(); 108 109 //TODO:- need to check 110 111 positionNumber = pendingEntry.getPositionNumber(); 112 transactionPostingDate = pendingEntry.getTransactionPostingDate(); 113 payPeriodEndDate = pendingEntry.getPayPeriodEndDate(); 114 transactionTotalHours = pendingEntry.getTransactionTotalHours(); 115 payrollEndDateFiscalYear = pendingEntry.getPayrollEndDateFiscalYear(); 116 payrollEndDateFiscalPeriodCode = pendingEntry.getPayrollEndDateFiscalPeriodCode(); 117 emplid = pendingEntry.getEmplid(); 118 employeeRecord = pendingEntry.getEmployeeRecord(); 119 earnCode = pendingEntry.getEarnCode(); 120 payGroup = pendingEntry.getPayGroup(); 121 salaryAdministrationPlan = pendingEntry.getSalaryAdministrationPlan(); 122 grade = pendingEntry.getGrade(); 123 runIdentifier = pendingEntry.getRunIdentifier(); 124 laborLedgerOriginalChartOfAccountsCode = pendingEntry.getLaborLedgerOriginalChartOfAccountsCode(); 125 laborLedgerOriginalAccountNumber = pendingEntry.getLaborLedgerOriginalAccountNumber(); 126 laborLedgerOriginalSubAccountNumber = pendingEntry.getLaborLedgerOriginalSubAccountNumber(); 127 laborLedgerOriginalFinancialObjectCode = pendingEntry.getLaborLedgerOriginalFinancialObjectCode(); 128 laborLedgerOriginalFinancialSubObjectCode = pendingEntry.getLaborLedgerOriginalFinancialSubObjectCode(); 129 hrmsCompany = pendingEntry.getHrmsCompany(); 130 setid = pendingEntry.getSetid(); 131 //TODO:- timestamp???? 132 //transactionDateTimeStamp = pendingEntry.getTransactionDateTimeStamp(); 133 transactionEntryOffsetCode = pendingEntry.getTransactionEntryOffsetCode(); 134 payrollEndDateFiscalPeriod = pendingEntry.getPayrollEndDateFiscalPeriod(); 135 136 //TODO:- don't need it? 137 //reversalDate = pendingEntry.getReversalDate(); 138 139 //TODO:- check: no positionData in laborOriginEntry 140 //positionData = pendingEntry.getPositionData(); 141 142 } 143 144 /** 145 * Constructor with financialDocumentTypeCode and financialSystemOriginationCode. 146 * 147 * @param financialDocumentTypeCode 148 * @param financialSystemOriginationCode 149 */ 150 public LaborOriginEntry(String financialDocumentTypeCode, String financialSystemOriginationCode) { 151 super(financialDocumentTypeCode, financialSystemOriginationCode); 152 } 153 154 /** 155 * Default constructor. 156 */ 157 public LaborOriginEntry() { 158 this(null, null); 159 } 160 161 /** 162 * Constructor with laborTransaction 163 * 164 * @param t 165 */ 166 public LaborOriginEntry(LaborTransaction t) { 167 this(); 168 copyFieldsFromTransaction(t); 169 setPositionNumber(t.getPositionNumber()); 170 setTransactionPostingDate(t.getTransactionPostingDate()); 171 setPayPeriodEndDate(t.getPayPeriodEndDate()); 172 setTransactionTotalHours(t.getTransactionTotalHours()); 173 setPayrollEndDateFiscalYear(t.getPayrollEndDateFiscalYear()); 174 setPayrollEndDateFiscalPeriodCode(t.getPayrollEndDateFiscalPeriodCode()); 175 setFinancialDocumentApprovedCode(t.getFinancialDocumentApprovedCode()); 176 setTransactionEntryOffsetCode(t.getTransactionEntryOffsetCode()); 177 setTransactionEntryProcessedTimestamp(t.getTransactionEntryProcessedTimestamp()); 178 setEmplid(t.getEmplid()); 179 setEmployeeRecord(t.getEmployeeRecord()); 180 setEarnCode(t.getEarnCode()); 181 setPayGroup(t.getPayGroup()); 182 setSalaryAdministrationPlan(t.getSalaryAdministrationPlan()); 183 setGrade(t.getGrade()); 184 setRunIdentifier(t.getRunIdentifier()); 185 setLaborLedgerOriginalChartOfAccountsCode(t.getLaborLedgerOriginalChartOfAccountsCode()); 186 setLaborLedgerOriginalAccountNumber(t.getLaborLedgerOriginalAccountNumber()); 187 setLaborLedgerOriginalSubAccountNumber(t.getLaborLedgerOriginalSubAccountNumber()); 188 setLaborLedgerOriginalFinancialObjectCode(t.getLaborLedgerOriginalFinancialObjectCode()); 189 setLaborLedgerOriginalFinancialSubObjectCode(t.getLaborLedgerOriginalFinancialSubObjectCode()); 190 setHrmsCompany(t.getHrmsCompany()); 191 setSetid(t.getSetid()); 192 this.referenceFinancialSystemDocumentTypeCode = t.getReferenceFinancialSystemDocumentTypeCode(); 193 setReferenceFinancialSystemOrigination(t.getReferenceFinancialSystemOrigination()); 194 setPayrollEndDateFiscalPeriod(t.getPayrollEndDateFiscalPeriod()); 195 } 196 197 /** 198 * Constructor with string line 199 * 200 * @param line 201 */ 202 public LaborOriginEntry(String line) { 203 setFromTextFileForBatch(line, 0); 204 } 205 206 /** 207 * Gets the positionNumber 208 * 209 * @return Returns the positionNumber 210 */ 211 public String getPositionNumber() { 212 return positionNumber; 213 } 214 215 /** 216 * Sets the positionNumber 217 * 218 * @param positionNumber The positionNumber to set. 219 */ 220 public void setPositionNumber(String positionNumber) { 221 this.positionNumber = positionNumber; 222 } 223 224 /** 225 * Gets the transactionPostingDate 226 * 227 * @return Returns the transactionPostingDate 228 */ 229 public Date getTransactionPostingDate() { 230 return transactionPostingDate; 231 } 232 233 /** 234 * Sets the transactionPostingDate 235 * 236 * @param transactionPostingDate The transactionPostingDate to set. 237 */ 238 public void setTransactionPostingDate(Date transactionPostingDate) { 239 this.transactionPostingDate = transactionPostingDate; 240 } 241 242 /** 243 * Gets the payPeriodEndDate 244 * 245 * @return Returns the payPeriodEndDate 246 */ 247 public Date getPayPeriodEndDate() { 248 return payPeriodEndDate; 249 } 250 251 /** 252 * Sets the payPeriodEndDate 253 * 254 * @param payPeriodEndDate The payPeriodEndDate to set. 255 */ 256 public void setPayPeriodEndDate(Date payPeriodEndDate) { 257 this.payPeriodEndDate = payPeriodEndDate; 258 } 259 260 /** 261 * Gets the transactionTotalHours 262 * 263 * @return Returns the transactionTotalHours 264 */ 265 public BigDecimal getTransactionTotalHours() { 266 return transactionTotalHours; 267 } 268 269 /** 270 * Sets the transactionTotalHours 271 * 272 * @param transactionTotalHours The transactionTotalHours to set. 273 */ 274 public void setTransactionTotalHours(BigDecimal transactionTotalHours) { 275 this.transactionTotalHours = transactionTotalHours; 276 } 277 278 /** 279 * Gets the payrollEndDateFiscalYear 280 * 281 * @return Returns the payrollEndDateFiscalYear 282 */ 283 public Integer getPayrollEndDateFiscalYear() { 284 return payrollEndDateFiscalYear; 285 } 286 287 /** 288 * Sets the payrollEndDateFiscalYear 289 * 290 * @param payrollEndDateFiscalYear The payrollEndDateFiscalYear to set. 291 */ 292 public void setPayrollEndDateFiscalYear(Integer payrollEndDateFiscalYear) { 293 this.payrollEndDateFiscalYear = payrollEndDateFiscalYear; 294 } 295 296 /** 297 * Gets the payrollEndDateFiscalPeriodCode 298 * 299 * @return Returns the payrollEndDateFiscalPeriodCode 300 */ 301 public String getPayrollEndDateFiscalPeriodCode() { 302 return payrollEndDateFiscalPeriodCode; 303 } 304 305 /** 306 * Sets the payrollEndDateFiscalPeriodCode 307 * 308 * @param payrollEndDateFiscalPeriodCode The payrollEndDateFiscalPeriodCode to set. 309 */ 310 public void setPayrollEndDateFiscalPeriodCode(String payrollEndDateFiscalPeriodCode) { 311 this.payrollEndDateFiscalPeriodCode = payrollEndDateFiscalPeriodCode; 312 } 313 314 /** 315 * Gets the financialDocumentApprovedCode 316 * 317 * @return Returns the financialDocumentApprovedCode 318 */ 319 public String getFinancialDocumentApprovedCode() { 320 return financialDocumentApprovedCode; 321 } 322 323 /** 324 * Sets the financialDocumentApprovedCode 325 * 326 * @param financialDocumentApprovedCode The financialDocumentApprovedCode to set. 327 */ 328 public void setFinancialDocumentApprovedCode(String financialDocumentApprovedCode) { 329 this.financialDocumentApprovedCode = financialDocumentApprovedCode; 330 } 331 332 /** 333 * Gets the transactionEntryOffsetCode 334 * 335 * @return Returns the transactionEntryOffsetCode 336 */ 337 public String getTransactionEntryOffsetCode() { 338 return transactionEntryOffsetCode; 339 } 340 341 /** 342 * Sets the transactionEntryOffsetCode 343 * 344 * @param transactionEntryOffsetCode The transactionEntryOffsetCode to set. 345 */ 346 public void setTransactionEntryOffsetCode(String transactionEntryOffsetCode) { 347 this.transactionEntryOffsetCode = transactionEntryOffsetCode; 348 } 349 350 /** 351 * Gets the transactionEntryProcessedTimestamp 352 * 353 * @return Returns the transactionEntryProcessedTimestamp 354 */ 355 public Timestamp getTransactionEntryProcessedTimestamp() { 356 return transactionEntryProcessedTimestamp; 357 } 358 359 /** 360 * Sets the transactionEntryProcessedTimestamp 361 * 362 * @param transactionEntryProcessedTimestamp The transactionEntryProcessedTimestamp to set. 363 */ 364 public void setTransactionEntryProcessedTimestamp(Timestamp transactionEntryProcessedTimestamp) { 365 this.transactionEntryProcessedTimestamp = transactionEntryProcessedTimestamp; 366 } 367 368 /** 369 * Gets the emplid 370 * 371 * @return Returns the emplid 372 */ 373 public String getEmplid() { 374 return emplid; 375 } 376 377 /** 378 * Sets the emplid 379 * 380 * @param emplid The emplid to set. 381 */ 382 public void setEmplid(String emplid) { 383 this.emplid = emplid; 384 } 385 386 /** 387 * Gets the employeeRecord 388 * 389 * @return Returns the employeeRecord 390 */ 391 public Integer getEmployeeRecord() { 392 return employeeRecord; 393 } 394 395 /** 396 * Sets the employeeRecord 397 * 398 * @param employeeRecord The employeeRecord to set. 399 */ 400 public void setEmployeeRecord(Integer employeeRecord) { 401 this.employeeRecord = employeeRecord; 402 } 403 404 /** 405 * Gets the earnCode 406 * 407 * @return Returns the earnCode 408 */ 409 public String getEarnCode() { 410 return earnCode; 411 } 412 413 /** 414 * Sets the earnCode 415 * 416 * @param earnCode The earnCode to set. 417 */ 418 public void setEarnCode(String earnCode) { 419 this.earnCode = earnCode; 420 } 421 422 /** 423 * Gets the payGroup 424 * 425 * @return Returns the payGroup 426 */ 427 public String getPayGroup() { 428 return payGroup; 429 } 430 431 /** 432 * Sets the payGroup 433 * 434 * @param payGroup The payGroup to set. 435 */ 436 public void setPayGroup(String payGroup) { 437 this.payGroup = payGroup; 438 } 439 440 /** 441 * Gets the salaryAdministrationPlan 442 * 443 * @return Returns the salaryAdministrationPlan 444 */ 445 public String getSalaryAdministrationPlan() { 446 return salaryAdministrationPlan; 447 } 448 449 /** 450 * Sets the salaryAdministrationPlan 451 * 452 * @param salaryAdministrationPlan The salaryAdministrationPlan to set. 453 */ 454 public void setSalaryAdministrationPlan(String salaryAdministrationPlan) { 455 this.salaryAdministrationPlan = salaryAdministrationPlan; 456 } 457 458 /** 459 * Gets the grade 460 * 461 * @return Returns the grade 462 */ 463 public String getGrade() { 464 return grade; 465 } 466 467 /** 468 * Sets the grade 469 * 470 * @param grade The grade to set. 471 */ 472 public void setGrade(String grade) { 473 this.grade = grade; 474 } 475 476 /** 477 * Gets the runIdentifier 478 * 479 * @return Returns the runIdentifier 480 */ 481 public String getRunIdentifier() { 482 return runIdentifier; 483 } 484 485 /** 486 * Sets the runIdentifier 487 * 488 * @param runIdentifier The runIdentifier to set. 489 */ 490 public void setRunIdentifier(String runIdentifier) { 491 this.runIdentifier = runIdentifier; 492 } 493 494 /** 495 * Gets the laborLedgerOriginalChartOfAccountsCode 496 * 497 * @return Returns the laborLedgerOriginalChartOfAccountsCode 498 */ 499 public String getLaborLedgerOriginalChartOfAccountsCode() { 500 return laborLedgerOriginalChartOfAccountsCode; 501 } 502 503 /** 504 * Sets the laborLedgerOriginalChartOfAccountsCode 505 * 506 * @param laborLedgerOriginalChartOfAccountsCode The laborLedgerOriginalChartOfAccountsCode to set. 507 */ 508 public void setLaborLedgerOriginalChartOfAccountsCode(String laborLedgerOriginalChartOfAccountsCode) { 509 this.laborLedgerOriginalChartOfAccountsCode = laborLedgerOriginalChartOfAccountsCode; 510 } 511 512 /** 513 * Gets the laborLedgerOriginalAccountNumber 514 * 515 * @return Returns the laborLedgerOriginalAccountNumber 516 */ 517 public String getLaborLedgerOriginalAccountNumber() { 518 return laborLedgerOriginalAccountNumber; 519 } 520 521 /** 522 * Sets the laborLedgerOriginalAccountNumber 523 * 524 * @param laborLedgerOriginalAccountNumber The laborLedgerOriginalAccountNumber to set. 525 */ 526 public void setLaborLedgerOriginalAccountNumber(String laborLedgerOriginalAccountNumber) { 527 this.laborLedgerOriginalAccountNumber = laborLedgerOriginalAccountNumber; 528 } 529 530 /** 531 * Gets the laborLedgerOriginalSubAccountNumber 532 * 533 * @return Returns the laborLedgerOriginalSubAccountNumber 534 */ 535 public String getLaborLedgerOriginalSubAccountNumber() { 536 return laborLedgerOriginalSubAccountNumber; 537 } 538 539 /** 540 * Sets the laborLedgerOriginalSubAccountNumber 541 * 542 * @param laborLedgerOriginalSubAccountNumber The laborLedgerOriginalSubAccountNumber to set. 543 */ 544 public void setLaborLedgerOriginalSubAccountNumber(String laborLedgerOriginalSubAccountNumber) { 545 this.laborLedgerOriginalSubAccountNumber = laborLedgerOriginalSubAccountNumber; 546 } 547 548 /** 549 * Gets the laborLedgerOriginalFinancialObjectCode 550 * 551 * @return Returns the laborLedgerOriginalFinancialObjectCode 552 */ 553 public String getLaborLedgerOriginalFinancialObjectCode() { 554 return laborLedgerOriginalFinancialObjectCode; 555 } 556 557 /** 558 * Sets the laborLedgerOriginalFinancialObjectCode 559 * 560 * @param laborLedgerOriginalFinancialObjectCode The laborLedgerOriginalFinancialObjectCode to set. 561 */ 562 public void setLaborLedgerOriginalFinancialObjectCode(String laborLedgerOriginalFinancialObjectCode) { 563 this.laborLedgerOriginalFinancialObjectCode = laborLedgerOriginalFinancialObjectCode; 564 } 565 566 /** 567 * Gets the laborLedgerOriginalFinancialSubObjectCode 568 * 569 * @return Returns the laborLedgerOriginalFinancialSubObjectCode 570 */ 571 public String getLaborLedgerOriginalFinancialSubObjectCode() { 572 return laborLedgerOriginalFinancialSubObjectCode; 573 } 574 575 /** 576 * Sets the laborLedgerOriginalFinancialSubObjectCode 577 * 578 * @param laborLedgerOriginalFinancialSubObjectCode The laborLedgerOriginalFinancialSubObjectCode to set. 579 */ 580 public void setLaborLedgerOriginalFinancialSubObjectCode(String laborLedgerOriginalFinancialSubObjectCode) { 581 this.laborLedgerOriginalFinancialSubObjectCode = laborLedgerOriginalFinancialSubObjectCode; 582 } 583 584 /** 585 * Gets the hrmsCompany 586 * 587 * @return Returns the hrmsCompany 588 */ 589 public String getHrmsCompany() { 590 return hrmsCompany; 591 } 592 593 /** 594 * Sets the hrmsCompany 595 * 596 * @param hrmsCompany The hrmsCompany to set. 597 */ 598 public void setHrmsCompany(String hrmsCompany) { 599 this.hrmsCompany = hrmsCompany; 600 } 601 602 /** 603 * Gets the setid 604 * 605 * @return Returns the setid 606 */ 607 public String getSetid() { 608 return setid; 609 } 610 611 /** 612 * Sets the setid 613 * 614 * @param setid The setid to set. 615 */ 616 public void setSetid(String setid) { 617 this.setid = setid; 618 } 619 620 /** 621 * Gets the transactionDateTimeStamp 622 * 623 * @return Returns the transactionDateTimeStamp 624 */ 625 public Date getTransactionDateTimeStamp() { 626 return transactionDateTimeStamp; 627 } 628 629 /** 630 * Sets the transactionDateTimeStamp 631 * 632 * @param transactionDateTimeStamp The transactionDateTimeStamp to set. 633 */ 634 public void setTransactionDateTimeStamp(Date transactionDateTimeStamp) { 635 this.transactionDateTimeStamp = transactionDateTimeStamp; 636 } 637 638 /** 639 * Gets the payrollEndDateFiscalPeriod 640 * 641 * @return Returns the payrollEndDateFiscalPeriod. 642 */ 643 public AccountingPeriod getPayrollEndDateFiscalPeriod() { 644 return payrollEndDateFiscalPeriod; 645 } 646 647 /** 648 * Sets the payrollEndDateFiscalPeriod 649 * 650 * @param payrollEndDateFiscalPeriod The payrollEndDateFiscalPeriod to set. 651 */ 652 public void setPayrollEndDateFiscalPeriod(AccountingPeriod payrollEndDateFiscalPeriod) { 653 this.payrollEndDateFiscalPeriod = payrollEndDateFiscalPeriod; 654 } 655 656 /** 657 * Gets the referenceFinancialDocumentType 658 * 659 * @return Returns the referenceFinancialDocumentType. 660 */ 661 public DocumentTypeEBO getReferenceFinancialSystemDocumentTypeCode() { 662 return referenceFinancialSystemDocumentTypeCode = SpringContext.getBean(KEWModuleService.class).retrieveExternalizableBusinessObjectIfNecessary(this, referenceFinancialSystemDocumentTypeCode, "referenceFinancialSystemDocumentTypeCode"); 663 } 664 665 /** 666 * Gets the referenceFinancialSystemOrigination 667 * 668 * @return Returns the referenceFinancialSystemOrigination. 669 */ 670 public OriginationCode getReferenceFinancialSystemOrigination() { 671 return referenceFinancialSystemOrigination; 672 } 673 674 /** 675 * Sets the referenceFinancialSystemOrigination 676 * 677 * @param referenceFinancialSystemOrigination The referenceFinancialSystemOrigination to set. 678 */ 679 public void setReferenceFinancialSystemOrigination(OriginationCode referenceFinancialSystemOrigination) { 680 this.referenceFinancialSystemOrigination = referenceFinancialSystemOrigination; 681 } 682 683 /** 684 * Sets transactionTotalHours to null. 685 */ 686 public void clearTransactionTotalHours() { 687 this.transactionTotalHours = null; 688 } 689 690 /** 691 * Get lines from string 692 */ 693 public String getLine() { 694 StringBuilder sb = new StringBuilder(); 695 Map<String, Integer> lMap = getLaborOriginEntryFieldUtil().getFieldLengthMap(); 696 Map<String, Integer> pMap = getLaborOriginEntryFieldUtil().getFieldBeginningPositionMap(); 697 int entryLength = pMap.get(LaborPropertyConstants.SET_ID) + lMap.get(LaborPropertyConstants.SET_ID); 698 699 if (universityFiscalYear == null) { 700 sb.append(GeneralLedgerConstants.getSpaceUniversityFiscalYear()); 701 } 702 else { 703 sb.append(universityFiscalYear); 704 } 705 706 sb.append(getField(lMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), chartOfAccountsCode)); 707 sb.append(getField(lMap.get(KFSPropertyConstants.ACCOUNT_NUMBER), accountNumber)); 708 sb.append(getField(lMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER), subAccountNumber)); 709 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE), financialObjectCode)); 710 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE), financialSubObjectCode)); 711 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE), financialBalanceTypeCode)); 712 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE), financialObjectTypeCode)); 713 sb.append(getField(lMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE), universityFiscalPeriodCode)); 714 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE), financialDocumentTypeCode)); 715 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), financialSystemOriginationCode)); 716 sb.append(getField(lMap.get(KFSPropertyConstants.DOCUMENT_NUMBER), documentNumber)); 717 718 String seqNum =""; 719 if (transactionLedgerEntrySequenceNumber != null) { 720 seqNum = transactionLedgerEntrySequenceNumber.toString(); 721 } 722 // Format to a length of 5 723 sb.append(StringUtils.leftPad(seqNum.trim(), lMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), "0")); 724 725 // Labor Specified fields 726 sb.append(getField(lMap.get(KFSPropertyConstants.POSITION_NUMBER), positionNumber)); 727 sb.append(getField(lMap.get(KFSPropertyConstants.PROJECT_CODE), projectCode)); 728 sb.append(getField(lMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC), transactionLedgerEntryDescription)); 729 730 if (transactionLedgerEntryAmount == null) { 731 sb.append(GeneralLedgerConstants.getZeroTransactionLedgerEntryAmount()); 732 } 733 else { 734 String a = transactionLedgerEntryAmount.abs().toString(); 735 if (transactionLedgerEntryAmount.isNegative()) { 736 sb.append("-"); 737 } else { 738 sb.append("+"); 739 } 740 sb.append(GeneralLedgerConstants.getZeroTransactionLedgerEntryAmount().substring(1, lMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT) - a.length())); 741 sb.append(a); 742 } 743 744 sb.append(getField(lMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE), transactionDebitCreditCode)); 745 sb.append(formatDate(transactionDate)); 746 sb.append(getField(lMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER), organizationDocumentNumber)); 747 sb.append(getField(lMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID), organizationReferenceId)); 748 sb.append(getField(lMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE), referenceFinancialDocumentTypeCode)); 749 sb.append(getField(lMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE), referenceFinancialSystemOriginationCode)); 750 sb.append(getField(lMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR), referenceFinancialDocumentNumber)); 751 sb.append(formatDate(financialDocumentReversalDate)); 752 sb.append(getField(lMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD), transactionEncumbranceUpdateCode)); 753 sb.append(formatDate(transactionPostingDate)); 754 sb.append(formatDate(payPeriodEndDate)); 755 756 if (transactionTotalHours == null) { 757 sb.append(StringUtils.rightPad("", lMap.get(KFSPropertyConstants.TRANSACTION_TOTAL_HOURS), " ")); 758 } 759 else { 760 String totalhour = getField(lMap.get(KFSPropertyConstants.TRANSACTION_TOTAL_HOURS), transactionTotalHours.toString()); 761 sb.append(StringUtils.leftPad(totalhour.trim(), lMap.get(KFSPropertyConstants.TRANSACTION_TOTAL_HOURS), " ")); 762 } 763 764 if (payrollEndDateFiscalYear == null) { 765 sb.append(StringUtils.rightPad("", lMap.get(KFSPropertyConstants.PAYROLL_END_DATE_FISCAL_YEAR), " ")); 766 } 767 else { 768 sb.append(getField(lMap.get(KFSPropertyConstants.PAYROLL_END_DATE_FISCAL_YEAR), payrollEndDateFiscalYear.toString())); 769 } 770 771 sb.append(getField(lMap.get(LaborPropertyConstants.PAYROLL_END_DATE_FISCAL_PERIOD_CODE), payrollEndDateFiscalPeriodCode)); 772 sb.append(getField(lMap.get(KFSPropertyConstants.EMPLID), emplid)); 773 774 if (employeeRecord == null) { 775 sb.append(StringUtils.rightPad("", lMap.get(KFSPropertyConstants.EMPLOYEE_RECORD), " ")); 776 } 777 else { 778 String empRecord = getField(lMap.get(KFSPropertyConstants.EMPLOYEE_RECORD), employeeRecord.toString()); 779 sb.append(StringUtils.leftPad(empRecord.trim(), lMap.get(KFSPropertyConstants.EMPLOYEE_RECORD), " ")); 780 } 781 782 sb.append(getField(lMap.get(KFSPropertyConstants.EARN_CODE), earnCode)); 783 sb.append(getField(lMap.get(KFSPropertyConstants.PAY_GROUP), payGroup)); 784 sb.append(getField(lMap.get(LaborPropertyConstants.SALARY_ADMINISTRATION_PLAN), salaryAdministrationPlan)); 785 sb.append(getField(lMap.get(LaborPropertyConstants.GRADE), grade)); 786 sb.append(getField(lMap.get(LaborPropertyConstants.RUN_IDENTIFIER), runIdentifier)); 787 sb.append(getField(lMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_CHART_OF_ACCOUNTS_CODE), laborLedgerOriginalChartOfAccountsCode)); 788 sb.append(getField(lMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_ACCOUNT_NUMBER), laborLedgerOriginalAccountNumber)); 789 sb.append(getField(lMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_SUB_ACCOUNT_NUMBER), laborLedgerOriginalSubAccountNumber)); 790 sb.append(getField(lMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_OBJECT_CODE), laborLedgerOriginalFinancialObjectCode)); 791 sb.append(getField(lMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_SUB_OBJECT_CODE), laborLedgerOriginalFinancialSubObjectCode)); 792 sb.append(getField(lMap.get(LaborPropertyConstants.HRMS_COMPANY), hrmsCompany)); 793 sb.append(getField(lMap.get(LaborPropertyConstants.SET_ID), setid)); 794 795 // pad to full length of 295 chars. 796 while (entryLength > sb.toString().length()) { 797 sb.append(' '); 798 } 799 800 // KFSMI-5958: Don't want any control characters in output files. They potentially disrupt further processing 801 Matcher controlCharacterMatcher = MATCH_CONTROL_CHARACTERS.matcher(sb); 802 String returnString = controlCharacterMatcher.replaceAll(REPLACE_MATCHED_CONTROL_CHARACTERS); 803 804 return returnString; 805 } 806 807 /** 808 * Sets the entries from text file. 809 */ 810 811 public List<Message> setFromTextFileForBatch(String line, int lineNumber) { 812 List<Message> returnList = new ArrayList(); 813 Map<String, Integer> pMap = getLaborOriginEntryFieldUtil().getFieldBeginningPositionMap(); 814 Map<String, Integer> lMap = getLaborOriginEntryFieldUtil().getFieldLengthMap(); 815 int entryLength = pMap.get(LaborPropertyConstants.SET_ID) + lMap.get(LaborPropertyConstants.SET_ID); 816 817 // KFSMI-5958: Don't want any control characters in output files. They potentially disrupt further processing 818 Matcher controlCharacterMatcher = MATCH_CONTROL_CHARACTERS.matcher(line); 819 line = controlCharacterMatcher.replaceAll(REPLACE_MATCHED_CONTROL_CHARACTERS); 820 821 // Just in case 822 line = org.apache.commons.lang.StringUtils.rightPad(line, entryLength, ' '); 823 String fiscalYearString = line.substring(pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR), pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE)); 824 if (!GeneralLedgerConstants.getSpaceUniversityFiscalYear().equals(fiscalYearString)) { 825 try { 826 setUniversityFiscalYear(new Integer(fiscalYearString)); 827 } 828 catch (NumberFormatException e) { 829 returnList.add(new Message("Fiscal year '" + fiscalYearString + "' contains an invalid value." , Message.TYPE_FATAL)); 830 setUniversityFiscalYear(null); 831 } 832 833 } 834 else { 835 setUniversityFiscalYear(null); 836 } 837 838 setChartOfAccountsCode(getValue(line, pMap.get(KFSPropertyConstants.CHART_OF_ACCOUNTS_CODE), pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER))); 839 setAccountNumber(getValue(line, pMap.get(KFSPropertyConstants.ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER))); 840 841 // if chart code is empty while accounts cannot cross charts, then derive chart code from account number 842 AccountService acctserv = SpringContext.getBean(AccountService.class); 843 if (StringUtils.isEmpty(getChartOfAccountsCode()) && StringUtils.isNotEmpty(getAccountNumber()) && !acctserv.accountsCanCrossCharts()) { 844 Account account = acctserv.getUniqueAccountForAccountNumber(getAccountNumber()); 845 if (account != null) { 846 setChartOfAccountsCode(account.getChartOfAccountsCode()); 847 } 848 } 849 850 setSubAccountNumber(getValue(line, pMap.get(KFSPropertyConstants.SUB_ACCOUNT_NUMBER), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE))); 851 setFinancialObjectCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE))); 852 setFinancialSubObjectCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_SUB_OBJECT_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE))); 853 setFinancialBalanceTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_BALANCE_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE))); 854 setFinancialObjectTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_OBJECT_TYPE_CODE), pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE))); 855 setUniversityFiscalPeriodCode(getValue(line, pMap.get(KFSPropertyConstants.UNIVERSITY_FISCAL_PERIOD_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE))); 856 setFinancialDocumentTypeCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_TYPE_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE))); 857 setFinancialSystemOriginationCode(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_SYSTEM_ORIGINATION_CODE), pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER))); 858 setDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.DOCUMENT_NUMBER), pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER))); 859 860 String sequenceNumberString = line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_ENTRY_SEQUENCE_NUMBER), pMap.get(KFSPropertyConstants.POSITION_NUMBER)); 861 if (!GeneralLedgerConstants.getSpaceTransactionEntrySequenceNumber().equals(sequenceNumberString) && !GeneralLedgerConstants.getZeroTransactionEntrySequenceNumber().equals(sequenceNumberString)) { 862 try { 863 setTransactionLedgerEntrySequenceNumber(new Integer(sequenceNumberString.trim())); 864 } 865 catch (NumberFormatException e) { 866 returnList.add(new Message("Transaction Sequence Number '" + sequenceNumberString + "' contains an invalid value." , Message.TYPE_FATAL)); 867 setTransactionLedgerEntrySequenceNumber(null); 868 } 869 } 870 else { 871 setTransactionLedgerEntrySequenceNumber(null); 872 } 873 874 setPositionNumber(getValue(line, pMap.get(KFSPropertyConstants.POSITION_NUMBER), pMap.get(KFSPropertyConstants.PROJECT_CODE))); 875 setProjectCode(getValue(line, pMap.get(KFSPropertyConstants.PROJECT_CODE), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC))); 876 setTransactionLedgerEntryDescription(getValue(line, pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC), pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT))); 877 878 String amountString = line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_AMOUNT), pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE)); 879 if (!amountString.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 880 try { 881 setTransactionLedgerEntryAmount(new KualiDecimal(amountString.trim())); 882 } 883 catch (NumberFormatException e) { 884 returnList.add(new Message("Transaction Amount '" + amountString + "' contains an invalid value." , Message.TYPE_FATAL)); 885 setTransactionLedgerEntryAmount(KualiDecimal.ZERO); 886 } 887 } else { 888 returnList.add(new Message("Transaction Amount cannot be blank." , Message.TYPE_FATAL)); 889 setTransactionLedgerEntryAmount(KualiDecimal.ZERO); 890 } 891 892 setTransactionDebitCreditCode(line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_DEBIT_CREDIT_CODE), pMap.get(KFSPropertyConstants.TRANSACTION_DATE))); 893 894 String transactionDateString = line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_DATE), pMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER)); 895 if (!transactionDateString.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 896 try { 897 setTransactionDate(parseDate(org.springframework.util.StringUtils.trimTrailingWhitespace(transactionDateString), false)); 898 } 899 catch (ParseException e) { 900 setTransactionDate(null); 901 returnList.add(new Message("Transaction Date '" + transactionDateString + "' contains an invalid value." , Message.TYPE_FATAL)); 902 } 903 } else { 904 setTransactionDate(null); 905 } 906 907 setOrganizationDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.ORGANIZATION_DOCUMENT_NUMBER), pMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID))); 908 setOrganizationReferenceId(getValue(line, pMap.get(KFSPropertyConstants.ORGANIZATION_REFERENCE_ID), pMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE))); 909 setReferenceFinancialDocumentTypeCode(getValue(line, pMap.get(KFSPropertyConstants.REFERENCE_FIN_DOCUMENT_TYPE_CODE), pMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE))); 910 setReferenceFinancialSystemOriginationCode(getValue(line, pMap.get(KFSPropertyConstants.FIN_SYSTEM_REF_ORIGINATION_CODE), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR))); 911 setReferenceFinancialDocumentNumber(getValue(line, pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REFERENCE_NBR), pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE))); 912 913 String revDateStr = line.substring(pMap.get(KFSPropertyConstants.FINANCIAL_DOCUMENT_REVERSAL_DATE), pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD)); 914 if (!revDateStr.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 915 try { 916 setFinancialDocumentReversalDate(parseDate(org.springframework.util.StringUtils.trimTrailingWhitespace(revDateStr), false)); 917 } 918 catch (ParseException e) { 919 setFinancialDocumentReversalDate(null); 920 returnList.add(new Message("Reversal Date '" + revDateStr + "' contains an invalid value." , Message.TYPE_FATAL)); 921 } 922 } else { 923 setFinancialDocumentReversalDate(null); 924 } 925 926 setTransactionEncumbranceUpdateCode(line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_ENCUMBRANCE_UPDT_CD), pMap.get(KFSPropertyConstants.TRANSACTION_POSTING_DATE))); 927 928 String postDateStr = line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_POSTING_DATE), pMap.get(KFSPropertyConstants.PAY_PERIOD_END_DATE)); 929 if (!postDateStr.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 930 try { 931 setTransactionPostingDate(parseDate(org.springframework.util.StringUtils.trimTrailingWhitespace(postDateStr), false)); 932 } 933 catch (ParseException e) { 934 setTransactionPostingDate(null); 935 returnList.add(new Message("Transaction Posting Date '" + postDateStr + "' contains an invalid value." , Message.TYPE_FATAL)); 936 } 937 } else { 938 setTransactionPostingDate(null); 939 } 940 941 String payPeriodDateStr = line.substring(pMap.get(KFSPropertyConstants.PAY_PERIOD_END_DATE), pMap.get(KFSPropertyConstants.TRANSACTION_TOTAL_HOURS)); 942 if (!payPeriodDateStr.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 943 try { 944 setPayPeriodEndDate(parseDate(org.springframework.util.StringUtils.trimTrailingWhitespace(payPeriodDateStr), false)); 945 } 946 catch (ParseException e) { 947 setPayPeriodEndDate(null); 948 returnList.add(new Message("Pay Period End Date '" + payPeriodDateStr + "' contains an invalid value." , Message.TYPE_FATAL)); 949 } 950 } else { 951 setPayPeriodEndDate(null); 952 } 953 954 String transTotHrsStr = line.substring(pMap.get(KFSPropertyConstants.TRANSACTION_TOTAL_HOURS), pMap.get(KFSPropertyConstants.PAYROLL_END_DATE_FISCAL_YEAR)); 955 if (!transTotHrsStr.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 956 try { 957 setTransactionTotalHours(new BigDecimal(transTotHrsStr.trim())); 958 } 959 catch (NumberFormatException e) { 960 setTransactionTotalHours(null); 961 returnList.add(new Message("Transaction Total Hours '" + transTotHrsStr.trim() + "' contains an invalid value." , Message.TYPE_FATAL)); 962 } 963 } else { 964 setTransactionTotalHours(null); 965 } 966 String payEndFisYrStr = line.substring(pMap.get(KFSPropertyConstants.PAYROLL_END_DATE_FISCAL_YEAR), pMap.get(LaborPropertyConstants.PAYROLL_END_DATE_FISCAL_PERIOD_CODE)); 967 if (!GeneralLedgerConstants.getSpaceUniversityFiscalYear().equals(payEndFisYrStr)) { 968 try { 969 setPayrollEndDateFiscalYear(new Integer(org.springframework.util.StringUtils.trimTrailingWhitespace(payEndFisYrStr))); 970 } 971 catch (NumberFormatException e) { 972 returnList.add(new Message("Payroll End Date Fiscal Year '" + payEndFisYrStr + "' contains an invalid value." , Message.TYPE_FATAL)); 973 setPayrollEndDateFiscalYear(null); 974 } 975 } 976 else { 977 setPayrollEndDateFiscalYear(null); 978 } 979 980 setPayrollEndDateFiscalPeriodCode(getValue(line, pMap.get(LaborPropertyConstants.PAYROLL_END_DATE_FISCAL_PERIOD_CODE), pMap.get(KFSPropertyConstants.EMPLID))); 981 setEmplid(getValue(line, pMap.get(KFSPropertyConstants.EMPLID), pMap.get(KFSPropertyConstants.EMPLOYEE_RECORD))); 982 983 String empRecordStr = line.substring(pMap.get(KFSPropertyConstants.EMPLOYEE_RECORD), pMap.get(KFSPropertyConstants.EARN_CODE)); 984 if (!empRecordStr.trim().equals(GeneralLedgerConstants.EMPTY_CODE)){ 985 try { 986 setEmployeeRecord(new Integer(empRecordStr.trim())); 987 } 988 catch (NumberFormatException e) { 989 returnList.add(new Message("Employee Record '" + empRecordStr.trim() + "' contains an invalid value." , Message.TYPE_FATAL)); 990 setEmployeeRecord(null); 991 } 992 } else { 993 setEmployeeRecord(null); 994 } 995 996 setEarnCode(getValue(line, pMap.get(KFSPropertyConstants.EARN_CODE), pMap.get(KFSPropertyConstants.PAY_GROUP))); 997 setPayGroup(getValue(line, pMap.get(KFSPropertyConstants.PAY_GROUP), pMap.get(LaborPropertyConstants.SALARY_ADMINISTRATION_PLAN))); 998 setSalaryAdministrationPlan(getValue(line, pMap.get(LaborPropertyConstants.SALARY_ADMINISTRATION_PLAN), pMap.get(LaborPropertyConstants.GRADE))); 999 setGrade(getValue(line, pMap.get(LaborPropertyConstants.GRADE), pMap.get(LaborPropertyConstants.RUN_IDENTIFIER))); 1000 setRunIdentifier(getValue(line, pMap.get(LaborPropertyConstants.RUN_IDENTIFIER), pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_CHART_OF_ACCOUNTS_CODE))); 1001 setLaborLedgerOriginalChartOfAccountsCode(getValue(line, pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_CHART_OF_ACCOUNTS_CODE), pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_ACCOUNT_NUMBER))); 1002 setLaborLedgerOriginalAccountNumber(getValue(line, pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_ACCOUNT_NUMBER), pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_SUB_ACCOUNT_NUMBER))); 1003 setLaborLedgerOriginalSubAccountNumber(getValue(line, pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_SUB_ACCOUNT_NUMBER), pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_OBJECT_CODE))); 1004 setLaborLedgerOriginalFinancialObjectCode(getValue(line, pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_OBJECT_CODE), pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_SUB_OBJECT_CODE))); 1005 setLaborLedgerOriginalFinancialSubObjectCode(getValue(line, pMap.get(LaborPropertyConstants.LABORLEDGER_ORIGINAL_FINANCIAL_SUB_OBJECT_CODE), pMap.get(LaborPropertyConstants.HRMS_COMPANY))); 1006 setHrmsCompany(getValue(line, pMap.get(LaborPropertyConstants.HRMS_COMPANY), pMap.get(LaborPropertyConstants.SET_ID))); 1007 setSetid(getValue(line, pMap.get(LaborPropertyConstants.SET_ID), entryLength)); 1008 1009 return returnList; 1010 } 1011 1012 1013 /** 1014 * Get fieldValue from fieldName. 1015 * 1016 * @param fieldName 1017 */ 1018 1019 public Object getFieldValue(String fieldName) { 1020 if ("universityFiscalYear".equals(fieldName)) { 1021 return getUniversityFiscalYear(); 1022 } 1023 else if ("chartOfAccountsCode".equals(fieldName)) { 1024 return getChartOfAccountsCode(); 1025 } 1026 else if ("accountNumber".equals(fieldName)) { 1027 return getAccountNumber(); 1028 } 1029 else if ("subAccountNumber".equals(fieldName)) { 1030 return getSubAccountNumber(); 1031 } 1032 else if ("financialObjectCode".equals(fieldName)) { 1033 return getFinancialObjectCode(); 1034 } 1035 else if ("financialSubObjectCode".equals(fieldName)) { 1036 return getFinancialSubObjectCode(); 1037 } 1038 else if ("financialBalanceTypeCode".equals(fieldName)) { 1039 return getFinancialBalanceTypeCode(); 1040 } 1041 else if ("financialObjectTypeCode".equals(fieldName)) { 1042 return getFinancialObjectTypeCode(); 1043 } 1044 else if ("universityFiscalPeriodCode".equals(fieldName)) { 1045 return getUniversityFiscalPeriodCode(); 1046 } 1047 else if ("financialDocumentTypeCode".equals(fieldName)) { 1048 return getFinancialDocumentTypeCode(); 1049 } 1050 else if ("financialSystemOriginationCode".equals(fieldName)) { 1051 return getFinancialSystemOriginationCode(); 1052 } 1053 else if (KFSPropertyConstants.DOCUMENT_NUMBER.equals(fieldName)) { 1054 return getDocumentNumber(); 1055 } 1056 else if ("transactionLedgerEntrySequenceNumber".equals(fieldName)) { 1057 return getTransactionLedgerEntrySequenceNumber(); 1058 } 1059 else if ("positionNumber".equals(fieldName)) { 1060 return getPositionNumber(); 1061 } 1062 else if ("transactionLedgerEntryDescription".equals(fieldName)) { 1063 return getTransactionLedgerEntryDescription(); 1064 } 1065 else if ("transactionLedgerEntryAmount".equals(fieldName)) { 1066 return getTransactionLedgerEntryAmount(); 1067 } 1068 else if ("transactionDebitCreditCode".equals(fieldName)) { 1069 return getTransactionDebitCreditCode(); 1070 } 1071 else if ("transactionDate".equals(fieldName)) { 1072 return getTransactionDate(); 1073 } 1074 else if ("organizationDocumentNumber".equals(fieldName)) { 1075 return getOrganizationDocumentNumber(); 1076 } 1077 else if ("projectCode".equals(fieldName)) { 1078 return getProjectCode(); 1079 } 1080 else if ("organizationReferenceId".equals(fieldName)) { 1081 return getOrganizationReferenceId(); 1082 } 1083 else if ("referenceFinancialDocumentTypeCode".equals(fieldName)) { 1084 return getReferenceFinancialDocumentTypeCode(); 1085 } 1086 else if ("referenceFinancialSystemOriginationCode".equals(fieldName)) { 1087 return getReferenceFinancialSystemOriginationCode(); 1088 } 1089 else if ("referenceFinancialDocumentNumber".equals(fieldName)) { 1090 return getReferenceFinancialDocumentNumber(); 1091 } 1092 else if ("financialDocumentReversalDate".equals(fieldName)) { 1093 return getFinancialDocumentReversalDate(); 1094 } 1095 else if ("transactionEncumbranceUpdateCode".equals(fieldName)) { 1096 return getTransactionEncumbranceUpdateCode(); 1097 } 1098 else if ("transactionPostingDate".equals(fieldName)) { 1099 return getTransactionPostingDate(); 1100 } 1101 else if ("payPeriodEndDate".equals(fieldName)) { 1102 return getPayPeriodEndDate(); 1103 } 1104 else if ("transactionTotalHours".equals(fieldName)) { 1105 return getTransactionTotalHours(); 1106 } 1107 else if ("payrollEndDateFiscalYear".equals(fieldName)) { 1108 return getPayrollEndDateFiscalYear(); 1109 } 1110 else if ("payrollEndDateFiscalPeriodCode".equals(fieldName)) { 1111 return getPayrollEndDateFiscalPeriodCode(); 1112 } 1113 else if ("financialDocumentApprovedCode".equals(fieldName)) { 1114 return getFinancialDocumentApprovedCode(); 1115 } 1116 else if ("transactionEntryOffsetCode".equals(fieldName)) { 1117 return getTransactionEntryOffsetCode(); 1118 } 1119 else if ("financialDocumentApprovedCode".equals(fieldName)) { 1120 return getFinancialDocumentApprovedCode(); 1121 } 1122 else if ("transactionEntryProcessedTimestamp".equals(fieldName)) { 1123 return getTransactionEntryProcessedTimestamp(); 1124 } 1125 else if ("emplid".equals(fieldName)) { 1126 return getEmplid(); 1127 } 1128 else if ("employeeRecord".equals(fieldName)) { 1129 return getEmployeeRecord(); 1130 } 1131 else if ("earnCode".equals(fieldName)) { 1132 return getEarnCode(); 1133 } 1134 else if ("payGroup".equals(fieldName)) { 1135 return getPayGroup(); 1136 } 1137 else if ("salaryAdministrationPlan".equals(fieldName)) { 1138 return getSalaryAdministrationPlan(); 1139 } 1140 else if ("grade".equals(fieldName)) { 1141 return getGrade(); 1142 } 1143 else if ("runIdentifier".equals(fieldName)) { 1144 return getRunIdentifier(); 1145 } 1146 else if ("laborLedgerOriginalChartOfAccountsCode".equals(fieldName)) { 1147 return getLaborLedgerOriginalChartOfAccountsCode(); 1148 } 1149 else if ("laborLedgerOriginalAccountNumber".equals(fieldName)) { 1150 return getLaborLedgerOriginalAccountNumber(); 1151 } 1152 else if ("laborLedgerOriginalSubAccountNumber".equals(fieldName)) { 1153 return getLaborLedgerOriginalSubAccountNumber(); 1154 } 1155 else if ("laborLedgerOriginalFinancialObjectCode".equals(fieldName)) { 1156 return getLaborLedgerOriginalFinancialObjectCode(); 1157 } 1158 else if ("laborLedgerOriginalFinancialSubObjectCode".equals(fieldName)) { 1159 return getLaborLedgerOriginalFinancialSubObjectCode(); 1160 } 1161 else if ("hrmsCompany".equals(fieldName)) { 1162 return getHrmsCompany(); 1163 } 1164 else if ("setid".equals(fieldName)) { 1165 return getSetid(); 1166 } 1167 else { 1168 throw new IllegalArgumentException("Invalid Field Name " + fieldName); 1169 } 1170 } 1171 1172 /** 1173 * Sets the fieldValue 1174 * 1175 * @param fieldName 1176 * @param fieldValue 1177 */ 1178 public void setFieldValue(String fieldName, String fieldValue) { 1179 if ("universityFiscalYear".equals(fieldName)) { 1180 if (StringUtils.isNotBlank(fieldValue)) { 1181 setUniversityFiscalYear(Integer.parseInt(fieldValue)); 1182 } 1183 else { 1184 setUniversityFiscalYear(null); 1185 } 1186 } 1187 else if ("chartOfAccountsCode".equals(fieldName)) { 1188 setChartOfAccountsCode(fieldValue); 1189 } 1190 else if ("accountNumber".equals(fieldName)) { 1191 setAccountNumber(fieldValue); 1192 } 1193 else if ("subAccountNumber".equals(fieldName)) { 1194 setSubAccountNumber(fieldValue); 1195 } 1196 else if ("financialObjectCode".equals(fieldName)) { 1197 setFinancialObjectCode(fieldValue); 1198 } 1199 else if ("financialSubObjectCode".equals(fieldName)) { 1200 setFinancialSubObjectCode(fieldValue); 1201 } 1202 else if ("financialBalanceTypeCode".equals(fieldName)) { 1203 setFinancialBalanceTypeCode(fieldValue); 1204 } 1205 else if ("financialObjectTypeCode".equals(fieldName)) { 1206 setFinancialObjectTypeCode(fieldValue); 1207 } 1208 else if ("universityFiscalPeriodCode".equals(fieldName)) { 1209 setUniversityFiscalPeriodCode(fieldValue); 1210 } 1211 else if ("financialDocumentTypeCode".equals(fieldName)) { 1212 setFinancialDocumentTypeCode(fieldValue); 1213 } 1214 else if ("financialSystemOriginationCode".equals(fieldName)) { 1215 setFinancialSystemOriginationCode(fieldValue); 1216 } 1217 else if (KFSPropertyConstants.DOCUMENT_NUMBER.equals(fieldName)) { 1218 setDocumentNumber(fieldValue); 1219 } 1220 else if ("transactionLedgerEntrySequenceNumber".equals(fieldName)) { 1221 if (StringUtils.isNotBlank(fieldValue)) { 1222 setTransactionLedgerEntrySequenceNumber(Integer.parseInt(fieldValue)); 1223 } 1224 else { 1225 setTransactionLedgerEntrySequenceNumber(null); 1226 } 1227 } 1228 else if ("positionNumber".equals(fieldName)) { 1229 setPositionNumber(fieldValue); 1230 } 1231 else if ("projectCode".equals(fieldName)) { 1232 setProjectCode(fieldValue); 1233 } 1234 else if ("transactionLedgerEntryDescription".equals(fieldName)) { 1235 setTransactionLedgerEntryDescription(fieldValue); 1236 } 1237 else if ("transactionLedgerEntryAmount".equals(fieldName)) { 1238 if (StringUtils.isNotBlank(fieldValue)) { 1239 setTransactionLedgerEntryAmount(new KualiDecimal(fieldValue)); 1240 } 1241 else { 1242 clearTransactionLedgerEntryAmount(); 1243 } 1244 } 1245 else if ("transactionDebitCreditCode".equals(fieldName)) { 1246 setTransactionDebitCreditCode(fieldValue); 1247 } 1248 else if ("transactionDate".equals(fieldName)) { 1249 if (StringUtils.isNotBlank(fieldValue)) { 1250 try { 1251 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 1252 setTransactionDate(new java.sql.Date((df.parse(fieldValue)).getTime())); 1253 } 1254 catch (ParseException e) { 1255 setTransactionDate(null); 1256 } 1257 } 1258 else { 1259 setTransactionDate(null); 1260 } 1261 } 1262 else if ("organizationDocumentNumber".equals(fieldName)) { 1263 setOrganizationDocumentNumber(fieldValue); 1264 } 1265 else if ("organizationReferenceId".equals(fieldName)) { 1266 setOrganizationReferenceId(fieldValue); 1267 } 1268 else if ("referenceFinancialDocumentTypeCode".equals(fieldName)) { 1269 setReferenceFinancialDocumentTypeCode(fieldValue); 1270 } 1271 else if ("referenceFinancialSystemOriginationCode".equals(fieldName)) { 1272 setReferenceFinancialSystemOriginationCode(fieldValue); 1273 } 1274 else if ("referenceFinancialDocumentNumber".equals(fieldName)) { 1275 setReferenceFinancialDocumentNumber(fieldValue); 1276 } 1277 else if ("financialDocumentReversalDate".equals(fieldName)) { 1278 if (StringUtils.isNotBlank(fieldValue)) { 1279 try { 1280 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 1281 setFinancialDocumentReversalDate(new java.sql.Date((df.parse(fieldValue)).getTime())); 1282 } 1283 catch (ParseException e) { 1284 setFinancialDocumentReversalDate(null); 1285 } 1286 } 1287 else { 1288 setFinancialDocumentReversalDate(null); 1289 } 1290 } 1291 else if ("transactionEncumbranceUpdateCode".equals(fieldName)) { 1292 setTransactionEncumbranceUpdateCode(fieldValue); 1293 } 1294 else if ("transactionPostingDate".equals(fieldName)) { 1295 if (StringUtils.isNotBlank(fieldValue)) { 1296 try { 1297 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 1298 setTransactionPostingDate(new java.sql.Date((df.parse(fieldValue)).getTime())); 1299 } 1300 catch (ParseException e) { 1301 setTransactionPostingDate(null); 1302 } 1303 } 1304 else { 1305 setTransactionPostingDate(null); 1306 } 1307 } 1308 else if ("payPeriodEndDate".equals(fieldName)) { 1309 if (StringUtils.isNotBlank(fieldValue)) { 1310 try { 1311 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 1312 setPayPeriodEndDate(new java.sql.Date((df.parse(fieldValue)).getTime())); 1313 } 1314 catch (ParseException e) { 1315 setPayPeriodEndDate(null); 1316 } 1317 } 1318 else { 1319 setPayPeriodEndDate(null); 1320 } 1321 } 1322 else if ("transactionTotalHours".equals(fieldName)) { 1323 if (StringUtils.isNotBlank(fieldValue)) { 1324 setTransactionTotalHours(new BigDecimal(fieldValue)); 1325 } 1326 else { 1327 clearTransactionTotalHours(); 1328 } 1329 } 1330 else if ("payrollEndDateFiscalYear".equals(fieldName)) { 1331 if (StringUtils.isNotBlank(fieldValue)) { 1332 setPayrollEndDateFiscalYear(Integer.parseInt(fieldValue)); 1333 } 1334 else { 1335 setPayrollEndDateFiscalYear(null); 1336 } 1337 } 1338 else if ("payrollEndDateFiscalPeriodCode".equals(fieldName)) { 1339 setPayrollEndDateFiscalPeriodCode(fieldValue); 1340 } 1341 else if ("emplid".equals(fieldName)) { 1342 setEmplid(fieldValue); 1343 } 1344 else if ("employeeRecord".equals(fieldName)) { 1345 if (StringUtils.isNotBlank(fieldValue)) { 1346 setEmployeeRecord(Integer.parseInt(fieldValue)); 1347 } 1348 else { 1349 setEmployeeRecord(null); 1350 } 1351 } 1352 else if ("earnCode".equals(fieldName)) { 1353 setEarnCode(fieldValue); 1354 } 1355 else if ("payGroup".equals(fieldName)) { 1356 setPayGroup(fieldValue); 1357 } 1358 else if ("salaryAdministrationPlan".equals(fieldName)) { 1359 setSalaryAdministrationPlan(fieldValue); 1360 } 1361 else if ("grade".equals(fieldName)) { 1362 setGrade(fieldValue); 1363 } 1364 else if ("runIdentifier".equals(fieldName)) { 1365 setRunIdentifier(fieldValue); 1366 } 1367 else if ("laborLedgerOriginalChartOfAccountsCode".equals(fieldName)) { 1368 setLaborLedgerOriginalChartOfAccountsCode(fieldValue); 1369 } 1370 else if ("laborLedgerOriginalAccountNumber".equals(fieldName)) { 1371 setLaborLedgerOriginalAccountNumber(fieldValue); 1372 } 1373 else if ("laborLedgerOriginalSubAccountNumber".equals(fieldName)) { 1374 setLaborLedgerOriginalSubAccountNumber(fieldValue); 1375 } 1376 else if ("laborLedgerOriginalFinancialObjectCode".equals(fieldName)) { 1377 setLaborLedgerOriginalFinancialObjectCode(fieldValue); 1378 } 1379 else if ("laborLedgerOriginalFinancialSubObjectCode".equals(fieldName)) { 1380 setLaborLedgerOriginalFinancialSubObjectCode(fieldValue); 1381 } 1382 else if ("hrmsCompany".equals(fieldName)) { 1383 setHrmsCompany(fieldValue); 1384 } 1385 else if ("setid".equals(fieldName)) { 1386 setSetid(fieldValue); 1387 } 1388 else { 1389 throw new IllegalArgumentException("Invalid Field Name " + fieldName); 1390 } 1391 } 1392 1393 /** 1394 * Formats date and returns date 1395 * 1396 * @param date 1397 * @see org.kuali.kfs.gl.businessobject.OriginEntryLite#formatDate(java.sql.Date) 1398 */ 1399 protected String formatDate(Date date) { 1400 if (date == null) { 1401 return LaborConstants.getSpaceTransactionDate(); 1402 } 1403 else { 1404 SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); 1405 return sdf.format(date); 1406 } 1407 } 1408 1409 /** 1410 * @return an initialized version of the LaborOriginEntryFieldUtil 1411 */ 1412 protected static LaborOriginEntryFieldUtil getLaborOriginEntryFieldUtil() { 1413 if (laborOriginEntryFieldUtil == null) { 1414 laborOriginEntryFieldUtil = new LaborOriginEntryFieldUtil(); 1415 } 1416 return laborOriginEntryFieldUtil; 1417 } 1418 }