The salary of an employee can be processed based on a salary table. When this happens, the salary of an employee will increase over time when a new version of a salary table is created. However, this will not cause an extra record in the salary dashlet within Nmbrs. So this article is only applicable when employees are paid based on a salary table.
Employee salary based on salary table
The values retrieved with the Salary_GetAll_AllEmployeesByCompany API call can differ from what's expected. The output of this call will always be the current known salary of the salary table scale/step.
in case of an increase in the salary table, no new 'entry' will be created for the employees. However, the actual salary of this employee will rise by the increase of the salary table. This new value is what's retrieved by the API call Salary_GetAll_AllEmployeesByCompany. This means that historic data is also adjusted, based on the newly known salaries within the salary table.
Retrieving historic data
To get the (actual) salaries of the employees, it is best to use a call that is based on the already processed salaries (which is called run output). Examples of these calls are WageCodesByRun - with filter and WageComponentsPerPeriod.
If you want to collect salaries from employees, the following wagecodes (runoutput) are of value. All of these values are also visible on the payslip of an employee:
20030 Full-time Salary
20031 Hourly wage
1000 Salary (paid as salary)
The EmployeeService call SalaryGet is also available to retrieve historic data. The period has to be specified in the input of this call, hence the accuracy of this call. However, usage of this call to retrieve historic salary data will consist of looping the call for multiple periods.
Retrieving current data
Salary_GetAll_AllEmployeesByCompany will always give the most recent data for the current period. This is however subject to change when a new period starts, as described above.
The EmployeeService call SalaryGet_Current is available to retrieve the current salary data for one employee. Thus, to retrieve salary data for multiple employees, the call has to be looped for multiple EmployeeIDs.