Mass Load - Rewrite
Mass Loading in USPS-R is overly complicated and impossible to maintain (uses groovy 'magic' and recursive reflection). This has made the loaders unable to handle specific scenarios users need as well as forced only concrete classes to be loaded in the same file. The service is build on query build and should be removed in favor of loaders for specific entity types.
Entities that need to have spreadsheet loading in USPS
Compensation
Compensation Adjustment
Employee
Position
Payroll Items
Payroll Item Config
Payroll Item Employee Error Adjustments
Payroll Item Employer Error Adjustments
Payroll Accounts
Pay Distributions
Leaves?
Current 'supported' types that should be removed
Absence / Attendance (Attendance Import should be used)
Concrete Payroll Item classes
Concrete Payroll Item Config classes
Non Contract compensations
Date Text Fields
Leaves?
The User Interface only displays a upload box and import buttons. We have a lot of white space to work with. Maybe we could display the require headers for each type right in the application? We could also return more robust results to the user after the file has been processed.
When we begin this epic we might want to look at OpenCSV to see if it will handle the loading for us
A new module should be created in USPS and all things related to mass loading should be kept there (unit tests, dtos, dependencies...etc)
Epic for Mass Loaders USPSR-4932
Employee Mass Loader
This section will detail all property headers for the Employee CSV file
CSV Header | Header Value (if specific input required) | Required Header when Creating | Required Header when Updating |
---|---|---|---|
number | Y | Y | |
name.lastName | Y | N | |
name.firstName | Y | N | |
name.middleName | N | N | |
name.suffix | N | N | |
ssn | Y | N | |
legalName.lastName | N | N | |
legalName.firstName | N | N | |
legalName.middleName | N | N | |
legalName.suffix | N | N | |
address.street1 | N | N | |
address.street2 | N | N | |
address.city | N | N | |
address.state | N | N | |
address.postalCode | N | N | |
address.foreignAddress | true false | N | N |
address.province | N | N | |
address.country | N | N | |
birthDate | MM/dd/YYYY | N | N |
maritalStatus | Single Married Unstated | N | N |
race.white | true false | N | N |
race.black | true false | N | N |
race.asian | true false | N | N |
race.americanIndianAlaskaNative | true false | N | N |
race.nativeHawaiianPacificIslander | true false | N | N |
race.hispanicLatinoOptions | HispanicOrLatino NotHispanicOrLatino Unknown | N | N |
hireDate | MM/dd/YYYY | N | N |
newHireReportedODJFS | true false | N | N |
terminationDate | MM/dd/YYYY | N | N |
odjfsHireDate | MM/dd/YYYY | N | N |
osdiCode | N | N | |
emailDirectDeposit | true false | N | N |
reportToEmis | true false | N | N |
archived | true false | N | N |
odjfsReportable | true false | N | N |
customFields.accredDistrictExperience.value | N | N | |
customFields.authorizedExperience.value | N | N | |
customFields.buildingExperience.value | N | N | |
customFields.checkDistribution.value | N | N | |
customFields.credentialID.value | N | N | |
customFields.degreeType.value | N | N | |
customFields.districtExperience.value | N | N | |
customFields.ECEQualification.value | N | N | |
customFields.eligibleForRetirement.value | N | N | |
customFields.emisId.value | N | N | |
customFields.gender.value | N | N | |
customFields.handicapStatus.value | N | N | |
customFields.homePhone.value | N | N | |
customFields.homePhoneUnlisted.value | N | N | |
customFields.lastEvaluation.value | N | N | |
customFields.longTermIllness.value | N | N | |
customFields.militaryExperience.value | N | N | |
customFields.multilingual.value | N | N | |
customFields.nextEvaluation.value | N | N | |
customFields.nonCertificateEmployeeID.value | N | N | |
customFields.nonOhioPrivateExperience.value | N | N | |
customFields.nonOhioPublicExperience.value | N | N | |
customFields.otherEmail.value | N | N | |
customFields.ohioPrivateExperience.value | N | N | |
customFields.ohioPublicExperience.value | N | N | |
customFields.otherCredentials.value | N | N | |
customFields.partTime.value | N | N | |
customFields.payrollCode1.value | N | N | |
customFields.payrollCode2.value | N | N | |
customFields.payrollCode3.value | N | N | |
customFields.payrollCode4.value | N | N | |
customFields.payrollDate1.value | N | N | |
customFields.payrollDate2.value | N | N | |
customFields.payrollMoney1.value | N | N | |
customFields.payrollMoney2.value | N | N | |
customFields.payrollMoney3.value | N | N | |
customFields.payrollMoney4.value | N | N | |
customFields.payrollText1.value | N | N | |
customFields.payrollText2.value | N | N | |
customFields.personnelCode1.value | N | N | |
customFields.personnelCode2.value | N | N | |
customFields.personnelCode3.value | N | N | |
customFields.personnelCode4.value | N | N | |
customFields.personnelDate1.value | N | N | |
customFields.personnelDate2.value | N | N | |
customFields.personnelMoney1.value | N | N | |
customFields.personnelMoney2.value | N | N | |
customFields.personnelMoney3.value | N | N | |
customFields.personnelMoney4.value | N | N | |
customFields.personnelText1.value | N | N | |
customFields.personnelText2.value | N | N | |
customFields.primaryEmail.value | N | N | |
customFields.primaryRace.value | N | N | |
customFields.principalExperience.value | N | N | |
customFields.purchasedExperience.value | N | N | |
customFields.retireSystemExperience.value | N | N | |
customFields.secondaryEmail.value | N | N | |
customFields.semesterHours.value | N | N | |
customFields.spouseFirstName.value | N | N | |
customFields.subDays.value | N | N | |
customFields.totalExperience.value | N | N | |
customFields.tradeExperience.value | N | N | |
customFields.workPhone.value | N | N |