Payroll: Payscales

image-20240412-134206.png

Introduction

Payscale is a range of salary paid for a particular job, relating to different degrees of skill or experience. 

In other words, it determines how an employee is to be paid as a wage or salary for a particular job, based on such factors as:

  • the employee's rank or status within the employer's organization;

  • skills/ level of proficiency;

  • the difficulty of the work performed;

  • the length of service/ employment (also called seniority) etc.

We can also say that the Payscale represents a payment contract/ agreement of the employee.

image-20240202-104545.png

 Example:

In the maritime industry, a Captain usually gets paid the highest wages among the employees due to the job complexity.

However, a Captain who has been employed for 20 years will normally have higher wages than a Captain only been employed for 2 years.

 

Payscales Division

In Adonis, we divide all the Payscales into Tables and Codes.

Payscale Codes are usually associated with positions. Each Code represents some unique position within one contract/agreement type

  • Payscale codes are grouped into Payscale Tables.

  • There may be Codes for the same position under different Tables, but they will probably have different rates or calculation rules, etc.

Payscale Tables are usually associated with departments/ organizations/ unions/ agencies.

  • Payscale Tables are presented to provide some logical grouping to Payscale Codes in the system.

  • The grouping you make greatly depends on your organization type & structure and the complexity of the payroll system. There is no one unique setup that can be shared by all the companies. However, there are a few commonly used setup types that we can recommend (see below).

 

Let’s consider a few examples:

Option 1

If you are a maritime company that doesn’t have a complex organizational structure and payroll system, then you might want to have the following division:

Payscale Tables representing departments/ sub-departments;(e.g. Deck, Engine, Hotel, etc.).

Payscale Codes representing positions under those departments;(e.g. Captain,  etc.).

 

 

  Option 2

In case you are an HR company providing staff for specific personnel (e.g. medical) to different maritime companies and manage simple payroll for those crew, then you might consider the following structure:

Payscale Tables representing separate companies/agencies;(e.g. Adonis Cruises, Poseidon Cruises, etc.).

Payscale Codes for all the positions you are managing;(e.g. Doctor, Nurse, etc.).

Option 3

If you have a complex organizational structure and manage a difficult payroll for a lot of stuff, then you might need to have a more diverse grouping:

Payscale Tables are split by organizations, departments, and sometimes currencies;(e.g. Adonis Cruises Deck & Engine EUR, Adonis Cruises Deck & Engine USD, etc.).

Payscale Codes represent positions under those units.

 

 

Setup and Configuration

Location

Payscales are set up and configured under the Payroll Module -> Payscales that can also be accessed from the Setup > Tables -> Payscales.

To access this functionality a user should have corresponding rights set for routine 680 Payscales in Adonis Control Centre.

Maintenance

Click the Payscales button to open the Maintenance screen.
Here you can add new Payscales or adjust the existing ones.

Section 1

In the top part of the screen, there is a Manage Menu.

It contains the controls used for:

  • creating new Payscale Tables/Codes;

  • adjusting/deleting/duplicating the existing ones;

  • checking the history of changes applied to different Payscale Tables/Codes etc.;

You can double-click the right mouse button to open the quick access menu.

Section 2

In the left part of the screen, there is a list of all the existing Payscale Tables;

Section 3

In the right part of the screen, there is a list of the Payscale Codes available under the selected Payscale Table.

 

Payscale Table Properties

As we learned in the previous chapter, Payscale Tables are usually associated with departments/ organizations/ unions/ agencies. They were introduced to provide some logical grouping to the Payscale Codes based on the organization type & structure, as well as the complexity of the payroll system.

  • To add a new Table click the New button in the Ribbon Menu.

  • If you want to adjust the existing Table, click Open.

The Payscale Table Properties contains many options affecting the calculation of payments for the crew on this payment contract. The view is split into several configuration tabs, depending on their purpose.

In this course, we will not talk about all of the options but highlight only the most significant and frequently used ones.

General Options

General options are located at the top of the Properties window. 

They contain the main information about the Payscale Table.

Some of those options are rather important as they affect the calculation of the payments.

  • Table Code – unique numeric identifier of the Payscale table.

  • Table Name – the Payscale table name.

  • Valid from/to – start and end dates for the Payscale. It is possible to leave the fields blank.

  • Previous – shows a payscale that was set before a current one if any.

  • Next – shows a payscale that is to be set after the current one expires. 

  • When creating a payroll entry for a person, the application checks if his current payscale is expired. 
    If so - the next payscale is fetched from this field. It works the same in the activity datagroup & personal details.

  • Currency Code – the currency code to be used for this contract.

  • All the payscale rates will be in this currency.

  • The system will automatically convert them into the company calculation currency during calculation.

  • Nationality – dropdown list offering all available nationalities. The payscale can be linked to one nationality only


Generation of auto-entries

The main principle for the entries auto-generation in APM is based on the Activity as the main criterion. By default, the system generates all the entries that are set as auto-generated under the General Codes > Activity Codes.

However, it's possible to apply additional limitations to this logic on the Payscale level.

Under the Transaction Codes, you can narrow down the selection of the auto-entries that were set on the Activity Code. 

When payroll is being calculated, only those payroll entries that are listed both for the corresponding Activity Code and the Payscale, are created.

 


Options affecting the calculation of payroll entries

Several general options have a direct impact on the calculation of payroll entries.

Let us take a look at each of them in detail.

Include planned activities in the calculation & always calculate opened activity to the estimated end date. 

  • When ON, any current and planned activities with this payscale will be calculated in payroll to the Estimated End Date (EED). If the payscale in activity details is blank is blank, then the payscale from personal details is used.

Calculate Sea Service to Estimated End Date

  • If ON, current sea-service activities that end before the payroll period end, will be calculated till the Estimated End Date (EED).  If the EED is greater than the period end, then up to the end of the payroll period.

  • If OFF, current sea-service activities will always be calculated till the end of the payroll period, regardless of the EED.

Ignore Estimated End Date If Less Than Today 

  • Available only if the previous option is on. When set, the system ignores EED if it is less than today and uses the current date instead.

Auto Entry Also When Start From 31st 

Note: Relevant only if you have a 30-day payroll calculation.

  • When ON, a one-day auto entry will be generated for the activity starting on the 31st. By default, it is not generated.

Number of days based on 15 days period

  • The option doesn't affect payroll calculation, it is used only for identifying that this is a 15-day payscale (bi-weekly payroll).

 

Rates sub-tab

On the Rates tab, you can specify the payment rates to be used for the employees on this payscale.

  • Usually, rates are figures used during payroll calculations.
    e.g. Basic Wages, Leave Pay, Compensation, Overtime, etc.

  • However, you can also set some other information as a rate.
    e.g. rate identifying if it is a daily or monthly pay-scale (Y/N) etc.

Adding new rate

  1. Open the Rates tab and click the Insert Row button.

  2. Add a Name and Value to this rate.

  3. Click OK to save the changes.

 

Seniority handling

It is often that the Payscale rates should be increased based on a person's seniority.

In this chapter, we will learn how to activate the seniority handing in APM.

For the seniority calculation to be activated, you need to turn ON the “Activities Calculating Seniority” option under the Set Up -> Global Options -> Datagroups -> Activities.

When the option is turned OFF, the seniority calculation is not performed under any condition.

Setting up seniority calculation

Step 1: Under the Payscale Table Properties, select the seniority measurement option: Years or Month.

  • When the Seniority year option is ON, the calculation is years.

  • When it is OFF, the calculation is in months.

 

Step 2: Insert new columns for seniority years/month handling under the Rates sub-tab.

Step 3: Define the measurement for each column and set the proper value for the rate (if applicable on the Table level, if not then later on the code level).

Step 4: Save the changes.


Calculation

Payroll seniority is calculated automatically from the "Start date" entered under the Datagroups > Personal Details > Seniority tab > Seniority Section > Payroll.

You can also add the "Pre-earned Years" from the previous employment in another company. 

During the calculation of payments, the program will automatically use the correct pay rates for the person, depending on the current seniority value.

 

Using formulas

Setting formula on rate

Not only the static information as numbers or letters can be set as "rates". 

You can also use a formula that will calculate the value based on the other pay-scale rates.

At the beginning of the formula you need to put the @ sign, then you need to type in the formula itself. 

Here is a list of fields that can be used in the formula:

Formula

Description

Example

X + (rate raw number)

Payscale rate (Seniority 1)

XA, XB, XC can be used to display the exact rate for a certain seniority period.

X1, X2, X3

XA8, XB4

X + (rate raw number) + s

Payscale rate (Seniority 2)

XA, XB, XC can be used to display the exact rate for a certain seniority period.

X1s, X2s

XA8s, XB4s 

Note:
Seniority1: The payroll seniority. Can be overridden by the activity record or the manual seniority field of payroll entry
Seniority2: Sea-service seniority (after the seniority start date and before the seniority end date or the last date of the current period)

To create a formula, you need to have some basic knowledge of Arithmetic and Logic since it works with basic arithmetic operations such as addition, subtraction, multiplication, and division.

Here's the list of operators that you can use:

Operator

Description

Example of use

+

to plus the values of parameter 2 with parameter 1

@(XA2+XA3)

-

to deduct the value of parameter 2 from parameter 1

@(XB2-XB3-XB4)

*

to multiply parameter 1 with parameter 2

@(XA1*XA2)

/

to divide parameter 1 by parameter 2

@(XC10/XC3)

()

to separate the condition into a separate clause

@(XA1*(XA2/XA3))

[]

to round the amount within those brackets

+0,5 is usually added to round to whole/integer number

@[(XA1*(XA2/XA3))+0,5]

Previewing results

If you want to view the result returned by the formula on the Pascale Code press the Calculate button.
This can help you to verify if the value is correct.

 

Appraisals sub-tab

Used for filtering the Appraisal Views available in the Appraisals datagoup based on the person’s Payscale set in the Personal Details.

Payscale properties > Appraisals

Appraisals datagoup

 

Timecards sub-tab

For those who are using the Time Card Module in APM for the manual time registration, it is possible to filter off the Work types, Cost Places/Groups on the Payscale level.

Payscale Properties > Time Card

The displayed information in the Time Card module will be then limited based on the person’s payscale set in the Personal Details on an employee.

Auto-generate sub-tab

Previously we learned that Activity is a primary criterion for the entries auto-generation. 

On the Auto-generate tab, you can add a limitation to the auto-generation rule by Activity Code. Here you can filter off the activities that are not payable for this type of contract. Meaning that they shouldn't automatically generate any payments.

Here's how it works:

  • If no activity is selected in the Auto-Generate section, then ALL the activities will generate Entry Codes (payments).

  • If at least one activity is added to the Auto-Generate section, then Entry Codes (payments) are generated only for this activity.

Activities calculating seniority sub-tab

On this tab, you may define activities that will contribute to the seniority calculation. 

Here's how it works:

  • If no activity is selected in this section, then ALL the activities will be added days to the seniority calculation.

  • If at least one activity is selected, then seniority is calculated only for this activity.

 

Personal rates sub-tab

On this tab, you can filter off the Personal rates to be displayed under the Personal details -> Payroll -> Rates tab and under the Payroll Module -> Rates tab based on the person’s payscale set in the Personal Details.

It contains all the Personal Rates listed under Organization -> System 0-5 (99 lines) for Personal Rates.

Check the chapter on Rates Handling for more details.

 

Overtime sub-tab

The Overtime tab allows you to configure the calculation of the overtime hours and their transfer to Payroll.

The section is split into 4 parts:

  • Calendar

  • Normal Hours 

  • OT Calculation Rules

  • Transactions

 

Calendar

Calendar is an essential part of the setup for the overtime hours calculation since it is used for the definition of Holidays. 

To create a Calendar go to General Codes> Miscellaneous > Calendar.

The following types of holidays are available:  

  • fixed

  • floating

  • pre-holidays

Once the Calendar is defined you can link it to our Payscale Table.

Open Overtime -> Calendar and select the appropriate one from the list.

Normal hours

The next setup is the configuration of the normal working hours.

Normal hours - numeric fields to input the Minimum/ Maximum/ Guaranteed values for work hours for each day of the week. 

Normal hours are used for the calculation of overtime hours depending on the day of the week: workday, weekend, or holiday.

  • All hours/ minutes worked over the maximum value are counted as overtime.

  • Hours worked less than the Min value are counted as negative overtime that will be subtracted from the total overtime hours value.

  • If the Guaranteed value is set and a person worked less than the minimum hours, then the guaranteed value is returned instead of the actual hours.

Max working hours per week / Max working hours per month - used in the customized APP reports. Do not affect anything.

OT Calculation Rules

Negative OT section:

Include in OT summary - this option defines if negative overtime (hours worked less than standard) should decrease existing positive overtime hours or should be ignored.

  • If the option is ON, hours worked less than the Min value will be counted as negative overtime.

  • If OFF, no negative overtime will be calculated.

Exclude negative OT on SignOn / SignOff.

  • It is natural that when signing on & off a person works less than the standard hours.
    When the options are ON the negative overtime will not be calculated on the sign-on/ off days.

Round to 30 Minutes 

  • When the option is ON, each time registration is rounded to 30 min. If not set - rounding to 15 min is applied.

Overtime calculation by section:

Under this section, we define whether the work hours will be grouped & calculated within the weekly period or within the defined Time Card period. Usually, none of the options is selected and the default grouping by timesheet period is used.

Various:

Fixed Overtime per month row (x) - here we define which row will store a value for fixed monthly overtime that is not paid extra. The value is then used for the calculating of the APP Overtime report.

Overtime rate row (x) - here we define which row will store a value for the overtime rate on the pay scale.
The value is then used for the calculating of the APP Overtime report. 

Compensations:

Night Time compensation between - certain companies pay bonuses for night-time work. Please define the period in hours that corresponds to night-time that is paid extra. By default, it is set to 00:00 which means that you do not pay any bonus in this case.

Night Time Compensation Rate row (x) - to define which row will store a value for night-time compensation.

Transactions

Entry code section - you can link an Entry Code to a certain service method, for its returning results to be posted in payroll. You can provide an additional limitation into Create Entry When field, by populating SQL condition (syntax after WHERE operator to be applied)

Week Nr in Field - drop-down to define payroll fields that will be used for storing Week Number.

Time Sheet Period in Field - drop-down to define payroll fields that will be used for storing Timesheet Period.

Group By selection - choose if you will use a grouping of timesheets by the week or by a defined timesheet period.

Week nr in field / Time Sheet period in the field - one of these fields is disabled depending on selection in the "Group By" section. This is the drop-down box listing payroll fields where the timesheet period is stored.

 

Comments sub-tab

Comment - a free input text block used for adding a description/comment to the selected Payscale table.

Leave Days sub-tab

Under the Leave Days tab, we set the calculation rules for the leave days earning/ deduction.

The rules set here will overwrite the settings on the Activity and Organization level.

You can read more about it in this article: https://adonishr.atlassian.net/wiki/spaces/KB/pages/3205563127

Payscale Code Properties

The settings on the Payscale Code level are quite similar to the ones on the Table.

The difference is that most of the General options are not available on the Code selection.
Only a few of them are present under the Details tab.

Such tabs, such as Appraisals, Activities Calculating Seniority, and Personal Rates are also missing.
Instead, there is a new section called Ranks.

Under Ranks, you define which ranks correspond to the selected Payscale Code. This can be later used in the reports to identify if all the crew are linked to the correct Payscale based on their Current Rank.

Coloring

The values highlighted in red were inherited from the Table.

The values highlighted in black are unique for the selected Code.

You can always overwrite the inherited value on the Code level.