The Take Process

This topic discusses:

  • Daily data.

  • The role of system elements in daily data.

  • Take process (detail).

  • Daily processing (detail).

When you run the Take process, one of the first things the program does is expand each absence event in the process list that occurred for a payee during the absence processing period (or current segment, if the processing period is segmented). Expanding the event means that the system creates a detailed row of data for each day of the absence in the GP_RSLT_ABS record. We call these rows daily data.

The Take process expands each event that includes a date in the current segment. It creates a row for each day of the absence event, including days that fall outside the processing period. The system also populates the work schedule and holiday schedule system elements for the day before and after the absence, if the payee was not absent on those days. If the payee was absent the day before or the day after the reported absence, other absence-related system elements can be populated, depending on your rules.

For example, assume that the processing period is May 1 to 31, and there is no segmentation. If the payee is absent from May 5 to May 6 and again from May 29 to June 2, the Take process creates two rows of daily data for the first absence and five rows for the second absence.

This diagram illustrates how the system creates daily data for each day of an absence event.

Daily data is created for each day of an absence event

Even though the system creates a row of daily data for each day of an absence event, this does not mean that each day is processed. The entire event is expanded so that the system has all the information it needs to accurately evaluate each absent day. Only those days that occurred during the processing period are processed. Using the above example, the system would process the following absent days: May 5, 6, 29, 30, and 31.

Sources of Daily Data

Data that populates the daily data row initially comes from two sources:

  • The payee's work and holiday schedules, which provide the day of the week, scheduled hours, and holiday type.

  • The absence event, which provides the absence take, begin and end dates, partial days absent, if applicable, and other information.

This diagram illustrates the sources of daily data:

Sources of daily data

The Take process also contributes to the daily data. When it applies the absence rules—defined by your absence elements—to the event and schedule data, it derives a set of results that populates the daily data. The results include the beginning entitlement balance, absent units, paid and unpaid units, ending balance, and other information.

The day formula, which you create and assign to your take rule, is what drives the results. This formula interprets each day of the absence and returns the number of units that the absent day represents; for example, four hours or one day. Once the system knows the absence day count, it can compare the count to the entitlement balance, determine whether a wait period or any other requirements for payment have been met and determine whether any part of the absent day should be paid. It can also calculate the ending entitlement balance.

Much of the daily absence data is stored by system elements—a collection of predefined elements.

Using System Elements in Formulas

When you define a take element, you identify the day count formula that the system will use to calculate the number of units that the payee was absent for the day being processed. The formula makes use of any information that is stored in the daily data, including—in some cases—data from the day before or after the day that is being evaluated. For example, three system elements store a payee's scheduled hours:

  • SCHED_HRS captures the number of hours that the payee was scheduled to work for the day that is being evaluated.

  • SCHED_HRS_DB captures the number of hours that the payee was scheduled to work the day before.

  • SCHED_HRS_DA captures the number of hours that the payee was scheduled to work the day after.

You might create a day count formula that uses the prior or next day's values in its calculations. Or you might create a day count formula that uses the value of the SCHED_HRS element to calculate the day count.

Depending on what absence features you want to use, you might need to create other formulas. Any of these formulas can make use of the daily data that is captured by the system elements.

Using User-Defined Fields

User-defined system elements enable you to capture and use absence data that is specific to your organization. Data that is entered into these fields is stored by system elements and added to the Daily Data records during the Take process. As is true of all system elements, the data captured by these elements can be used by any absence formula.

Each of the following pages includes a set of user-defined fields:

  • Absence Event Entry.

  • Take Calculation.

  • Shift.

  • Absence Request (manager or employee).

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.

  1. Search for take element.

    1. 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.

    2. 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.

    3. If an event or daily row is not found, go to the next take in the array.

  2. Get rule definition.

    For the current take element in the take process array:

    1. 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.

    2. Get the entitlement definition for each entitlement child record.

    3. 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.

  3. 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:

    1. Set the take process pointer to the correct take definition. This also indicates that the row has been processed.

    2. Update Absence Type, Take Config fields using the take process pointer.

    3. Link rows such that the daily order/absence take section order for overlaps is set correctly.

  4. 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.

  5. 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:

    1. Work schedule data.

    2. Alternate work schedule data.

    3. Holiday data.

    4. Event data.

    5. Set Insert — No.

    6. Set take process pointer to the correct take definition. This also indicates how that row is to be processed.

    7. Absence Take data — Absence Type, Take Config fields using the take process pointer.

    8. Link rows such that the daily order/absence take section order for overlaps is set correctly.

  6. 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):

  1. Initialize day.

    1. If Auditing is on, initialize the audit array, and create a new audit row for the take element.

    2. If the take has changed and the prior take had an override definition, reset the prior SOVR values to the original values.

    3. 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).

    4. 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.

    5. If there are no absences for the prior or the next day, load the schedule data into the appropriate system elements.

    6. If Allow Duplicates is set to Yes, total the partial hours for all take elements for the current day.

  2. Initialize event. This is only performed for the begin day or the first process day of the event in segment.

    1. 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.

    2. 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.

  3. Get day counts.

    1. Call the PIN Manager to resolve the Day Count formula.

    2. Call the PIN Manager to resolve the Wait Count formula, if any.

  4. Evaluate day to produce paid and unpaid units. This is only performed for regular and forecasting processes.

    1. Check the minimum requirement, if applicable.

    2. Check the eligibility date, if applicable.

    3. Check the wait period, if applicable.

    4. Loop through the entitlement array till the take units to be processed = 0, or there is no more entitlement.

    5. 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.

    6. Add Day Counts Paid and Day Counts Unpaid units to the PIN Manager return list for the daily row.

  5. Process forecast PIN. This is only performed for forecasting or balance inquiries.

    Call the PIN Manager to resolve the forecast PIN.

  6. 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.

  7. Add mapped to and redirected days.

    1. Call the PIN Manager to resolve the conditional formula for mapping.

    2. 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.

    3. If the day has been redirected, insert a duplicate absence row for the current day for the redirected take.

    4. 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.

    5. 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.

    6. 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.

  8. Terminate the day.

    1. Store the day results on the daily row.

    2. If End Day is set to Yes, get the forecast element result value.

    3. If the absence date is the same as the segment end date, store the forecast results.

    4. Set Insert to Yes on the daily row processed.

    5. Set the Daily Process switch to Processed.

    6. If Auditing is on, update the audit row for the take element, and write the resolution chain.

    7. 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.