Take Process (Detail)
The primary job of the take element is to determine paid and unpaid units. The Take process expands each absence event into daily data and generates positive input for the pay run. It also updates balance accumulators.
-
Search for take element.
-
Search the event array for the current take element in the take process array, where the event is in the current segment. If not found, search days for current segment.
-
If an event or daily row is found, set Event Found to Yes and/or Daily row Found to Yes, take Process to Yes for the current take element in the take process array and continue.
-
If an event or daily row is not found, go to the next take in the array.
-
-
Get rule definition.
For the current take element in the take process array:
-
Get the definition of the take element and the take element child records: Entitlement child record; Earning Deduction child record; Same day Take element child record; and Forecast element child record.
-
Get the entitlement definition for each entitlement child record.
-
Set the take pointer on the take process array to the correct effective-dated take definition. This is done per segment, even if the take definition has already been loaded.
-
-
Update existing daily absence rows. If Daily Row Found is set to Yes, update the existing daily rows which match the current take element of the take process array, are within the segment and which have not been processed:
-
Set the take process pointer to the correct take definition. This also indicates that the row has been processed.
-
Update Absence Type, Take Config fields using the take process pointer.
-
Link rows such that the daily order/absence take section order for overlaps is set correctly.
-
-
If the work schedule is not already loaded, for each EmplRcd per segment within the absence period:
Get the work schedule and the holiday data for the current period. This includes the day before and the day after the current period to accommodate DB and DA system elements.
-
Expand events for the current segment. If Event Found is set to Yes, expand the events for the current take element in the take process array and create an absence daily row for each day absent for that event. Each daily row includes:
-
Work schedule data.
-
Alternate work schedule data.
-
Holiday data.
-
Event data.
-
Set Insert — No.
-
Set take process pointer to the correct take definition. This also indicates how that row is to be processed.
-
Absence Take data — Absence Type, Take Config fields using the take process pointer.
-
Link rows such that the daily order/absence take section order for overlaps is set correctly.
-
-
Perform daily processing, which is documented in detail in the following subsection:
Daily Processing (Detail)
This lists a detail of the steps taken to perform daily processing (from step number 6 above):
-
Initialize day.
-
If Auditing is on, initialize the audit array, and create a new audit row for the take element.
-
If the take has changed and the prior take had an override definition, reset the prior SOVR values to the original values.
-
If the take has changed and the current take has an override definition in effect, store the prior values for this take's override definition (SOVR's) and add new values for this take's override definition (SOVR's).
-
For the current day being processed, set the following pointers so that data is available for the system elements: Current Day; Prior and Next Days; and Parent take element, when the take has been mapped from another element.
-
If there are no absences for the prior or the next day, load the schedule data into the appropriate system elements.
-
If Allow Duplicates is set to Yes, total the partial hours for all take elements for the current day.
-
-
Initialize event. This is only performed for the begin day or the first process day of the event in segment.
-
If the absence date is the same as the event begin date:
Check for the minimum period requirements.
Check linking, per absence only.
Check for eligibility requirements.
Check for a wait period.
-
If the absence date is not the same as the event begin date:
Copy the fields related to the event from the prior day to the current day.
Check for eligibility.
Check for a wait period.
-
-
Get day counts.
-
Call the PIN Manager to resolve the Day Count formula.
-
Call the PIN Manager to resolve the Wait Count formula, if any.
-
-
Evaluate day to produce paid and unpaid units. This is only performed for regular and forecasting processes.
-
Check the minimum requirement, if applicable.
-
Check the eligibility date, if applicable.
-
Check the wait period, if applicable.
-
Loop through the entitlement array till the take units to be processed = 0, or there is no more entitlement.
-
Get the balance for the current entitlement:
If the balance > 0, compare it to the units to be processed. If the balance covers the remaining units, consider the units paid. Apply the negative balance rules if the balance is insufficient and no other entitlement is available.
If there are paid units, add the auto-assigned Paid Units to the PIN Manager return list.
-
Add Day Counts Paid and Day Counts Unpaid units to the PIN Manager return list for the daily row.
-
-
Process forecast PIN. This is only performed for forecasting or balance inquiries.
Call the PIN Manager to resolve the forecast PIN.
-
Loop per Earning/Deduction Counts. This is only performed for the regular process.
Call the PIN Manager to resolve the unit formula:
If the formula results = 0, call the PIN Manager to resolve the Percent formula, Rate formula and/or Amount formula.
If the formula results do not equal 0, add the earning/deduction elements, units, and the percent to the daily positive input.
-
Add mapped to and redirected days.
-
Call the PIN Manager to resolve the conditional formula for mapping.
-
If there is no formula or the formula does not equal 0, insert a duplicate absence row for the current day for the mapped take.
-
If the day has been redirected, insert a duplicate absence row for the current day for the redirected take.
-
Search the take process array for the mapped and redirected take, if found. If Take Process is set to No, get the rule definition as was done in the take process array loop. If it is set to Yes, the rule definitions are already loaded.
-
If the take for the Mapped to or Redirected day is found in the take process array:
Set the take process pointer to the correct take definition.
Update the Absence Type and Take Config fields using the take process pointer.
-
Set the absence pointers so that the new row is linked such that the daily order/absence take section order for overlaps is set correctly.
-
-
Terminate the day.
-
Store the day results on the daily row.
-
If End Day is set to Yes, get the forecast element result value.
-
If the absence date is the same as the segment end date, store the forecast results.
-
Set Insert to Yes on the daily row processed.
-
Set the Daily Process switch to Processed.
-
If Auditing is on, update the audit row for the take element, and write the resolution chain.
-
If there is an override definition in effect and no more rows to process, restore the previous values of the override elements (SOVR's) for the current take override definition.
-