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 }