Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this article

Table of Contents
minLevel1
maxLevel4

Problem

Your XYZ company is using uses Exact Online to manage the payroll process by ensuring that your their employees book the work hours in a timely manner and on the correct project(s). For consultancy-related projects, the timely booking of hours also ensures that the correct invoices can be are sent to your customers in a timely manner. The process of checking on the timely and complete booking of hours can be is tedious and time-consuming. Although there are some build-in notification options for this issue, these are quite limited. they have their limitations.
A general reminder can be sent at the end of the week when an employee has not booked all their hours for the current week. However, this message does not provide further details on the booked hours; as in whether they are rejected hours or drafted hours or need to be submitted. Also, the reminder is sent only once, there are no options for follow-ups or for checks on a longer period (for example the end-of-month closure).

...

Using the Exact Online Snap Pack, we the XYZ organization can check on all the registered hours over a period of the last 5 weeks, and group them by employee and hour-status (booked, drafted, rejected). We then compare the booked hours with the employee-contract to determine if all expected hours have been booked in a correct manner. If this is not the case, a personalized email is sent out to the employee and their manager (if applicable) to notify them of this discrepancy. The email contains an overview of the hours booked for the different hour-statuses and details the missing hours. Also, a link to Exact Online portal is added, so that the employee can rectify the issue right-away from the email notification.

...

No.

Step

Configuration

Result/Output

Snap 1

Add and configure an Exact Online Read Snap to query Payroll - Employments data. 

Select EndDateEmployeeEmployeeHID and ID fields under the Output Field Selection field set.

All records of Employments data from the ExactOnline API.

Snap 2, 3

Add two Filter Snaps to filter employees that are no longer active and employees that need to be excluded (based on requirements). 

Filter expression for non-active members:
$EndDate == null || (($EndDate.replace("/Date(","").replace(")/","")) > Date.now().getTime())

Filter expression for excluded members:
_EmployeesExcluded.indexOf($EmployeeHID) == -1

All records of active Employees.

Snap 4

Add and configure an Exact Online Read Snap to query Payroll - Employees data. 

Filter EmployeeHID using the Filter Records field set.
Select ID and EmployeeHID fields using the Output Field Selection field set.

All records of active Employees data from the ExactOnline API.

Snap 5

Add a Mapper Snap to map the ID as $Employee.

Map the $ID with $Employee.

Data of all IDs of active employees.

Snap 6

Add and configure an Exact Online Read Snap to query Project - TimeTransactions data. 

Filter Employee field using the Filter Records field set and filter the Date field to only return data for the last 5 weeks. Select Employee, QuantityHourStatus, DateCreated, and Project fields using Output Field Selection field set.

TimeTransactions data of active employees from ExactOnline API.

Snap 7

Add a Router Snap to route the hours based on their status. 

Add four output views in the Router Snap.

Routes the output from the upstream Snap to four output views.

Snap 8,17, 18, 19

Add three Aggregate Snaps and one Mapper Snap for each status of the hours, summing up the number of hours grouped per employee.

  • Booked hours (status 10 & 20)

  • Rejected Hours (status 2)

  • Drafted Hours (status 1)

  • No Hours (no status)

For the three Aggregate Snaps configure the settings as follows:

Image RemovedImage RemovedImage RemovedImage Removed

apply the SUM function, enter the Field of $Quantity, and name the Result field as

  • Function: SUM

  • Field: $Quantity

  • Result field:

    • HoursBooked(10 --and 20)

,
    • HoursRejected(2)

,
    • HoursDrafted(1)

. And group by fields of $Employee with output field Employee and $original.EmployeeHID with output field EmployeeHID. 

GROUP-BY fields

  • Field

    • $Employee

    • $original.EmployeeHID

  • Output field

    • Employee

    • EmployeeHID

For the output3 (an employee has booked no hours at all), add the child pipeline (Snap 20) to process the no hours notification.Please see the below section 

Image Added

Learn more, Send email notifications to employees and their managers who do not book any hour.

Employee and EmployeeHID data based on the group by result.

If the pileline Building a pipeline to send emails to employees who don't book any hour and their managersis invoked, the result of e mail sending data from this pipeline will be shown.

Add a Union Snap (Snap 9) to combine Snap 9, 10, 11, 12, 13

Add a Union Snap, Group by N Snap, JSON Splitter snap, Sort Snap and Group by Fields Snap.

Combine the output from the different routes (HourStatuses) and create an overview per employee. This step also includes Group by N Snap, JSON Splitter snap, Sort snap and Group by Fields snap(Snap 10, 11, 12, 13).Unioned .

Combined data of Employee and EmployeeHID with fields of HoursBooked(10 --and 20), HoursRejected(2), HoursDrafted(1).19.

Snap 14

Add the child pipeline Booked Pipeline Booked Hours Notifications - Check Hours to check the scheduled hours. Please see the below section Building a pipeline to check the scheduled hours (Snap 14) Learn more, Check the scheduled hours.

The data of employeeID with fileds fields of different hour types (HoursBooked, HoursDrafted, HoursRejected, AverageHours, ContractHours).10.

Snap 15

Add the child pipeline Booked Pipeline Booked Hours Notifications - Send Email to send notifications via email. Please see the below section Building a pipeline to send Learn more,Send emails to employees who don't book enough hours and their managers(Snap 15.

Response Data of email sending result from pipeline Building a pipeline to send Pipeline 

Learn more, Send emails to employees who don't book enough hours and their managers.

Snap 16

Finally add a join snap to merge the response from email sending child Pipelines.

Joined result data of child Pipelines Send emails to employees and their managers who do not book any hours.

Send emails to employees and their managers who do not book enough hours .

...