Test 3 - Paid After Termination
In our last test, Paid Before Hired, we looked for any employees who might have been paid before their official hire date. Not surprisingly, we didn't identify any issues. Today, we're going to be looking for a much more common issue: employees paid after their termination date. In our data, the final paycheques are issued on the pay date (last working day of each month) following the termination date. So, we can create a computed field that looks for any issues where an employee was paid after the month that they were terminated in.
Calculating the date of the last day of each month could get tricky, but, luckily, we can use the EOMONTH( ) function to identify the first of the month following the employee's termination date. Then, we can look for any issues where the employee was paid on or after the first of the month following their termination date.
Risk
Employees are paid after their termination date.
Objective
Identify employees who were paid in the month following their termination date.
Preparing Data
If you've been with us since the last episode in our Payroll Series, you've already related the Empmast table with the Payroll table, using the Employee Number as the key field. If you're just joining us now, ensure that you create this relationship.
Analyzing Data
-
We're only interested in the terminated employees, so we'll apply a filter to so that we're left with only the employees who have a termination date and extract them to a new table, t_TermEmps. Ensure that you use the Fields option, and select all of the fields from the Payroll table as well as the Empmast table.
- Empmast.termination_date <> `19000101`
Show me
OPEN Payroll
SET FILTER TO Empmast.termination_date <> `19000101`EXTRACT RECORD TO "t_TermEmps"
Did you know?
By using EXTRACT RECORD, the relationship with Empmast is retained in the created table, t_TermEmps. -
In our t_TermEmps table, we'll use the EOMONTH( ) function to create a computed field, c_MonthAfterTerm, to identify the first of the month following the employee's termination date:
- EOMONTH( termination_date ) + 1
Show me
OPEN Payroll
SET FILTER TO Empmast.termination_date <> `19000101`EXTRACT RECORD TO "t_TermEmps"
OPEN t_TermEmps
DEFINE FIELD c_MonthAfterTerm COMPUTED EOMONTH( Empmast.termination_date ) + 1 -
Now we can apply our computed field, c_MonthAfterTerm, as a filter to identify employees paid on or after the first of the month following the employee's termination date, and extract the results to a new table, r_EmpPaidAfterTerm:
- paydate >= c_MonthAfterTerm
Show me
OPEN Payroll
SET FILTER TO Empmast.termination_date <> `19000101`
EXTRACT RECORD TO "t_TermEmps"OPEN t_TermEmps
DEFINE FIELD c_MonthAfterTerm COMPUTED EOMONTH( Empmast.termination_date ) + 1
SET FILTER TO paydate >= c_MonthAfterTerm
EXTRACT RECORD TO r_EmpPaidAfterTerm
Conclusion
If employees receive pay after their termination, it could be a sign of fraud, or a lack of communication between the Human Resources and Payroll departments. Quite often, when employees switch departments, a new employee number is created for them, so their old employee number may show up as "terminated." It's important to keep potential false positives like this in mind, particularly if they may be indicative of process flaws.
Beyond genuine mistakes, there is the possibility of collusion. Consider a current employee who colludes with the terminated employee to postpone their termination date in the system in order to allow payments to continue. The terminated employee becomes a phantom (ghost) employee. Why would an employee make this agreement? It could be for any number of reasons, but, most commonly, they're receiving a cut of the continued pay. If this is the case, the termination date may be set to several pay periods in the future. An excessive number of days between today and the termination date is a possible indicator of this form of fraud.
On the other hand, there might not even be a termination date, which would make the phantom employee much more difficult to find. Stay tuned for more phantom employee tests!