Skip to content

Commit e6a64f3

Browse files
committed
[ADD] Payroll: Working Schedules
1 parent 4df5cf1 commit e6a64f3

File tree

7 files changed

+349
-44
lines changed

7 files changed

+349
-44
lines changed

content/applications/hr/employees.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ Work organization
105105

106106
Using the drop-down menu, select the default :guilabel:`Company Working Hours`. The default options
107107
are :guilabel:`Standard 40 hours/week`, :guilabel:`Appointment Resource Default Calendar`, and
108-
:guilabel:`Standard 32 hours/week (4 work days, friday free)`.
108+
:guilabel:`Standard 32 hours/week (4 work days, Friday free)`.
109109

110-
The available working hours listed are the same as the configured :ref:`working schedules
111-
<payroll/working-times>` in the **Payroll** app. Working hours can be created and modified from both
112-
the **Payroll** and **Employees** apps.
110+
The available working hours listed are the same as the configured :doc:`working schedules
111+
<payroll/working_schedules>` in the **Payroll** app. Working hours can be created and modified from
112+
both the **Payroll** and **Employees** apps.
113113

114114
Employee update rights
115115
----------------------

content/applications/hr/payroll.rst

Lines changed: 249 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -166,57 +166,269 @@ Reporting section
166166
:align: center
167167
:alt: New work entry type form with all fields to be filled in.
168168

169-
.. _payroll/working-times:
169+
Salary
170+
======
170171

171-
Working schedules
172-
-----------------
172+
.. _payroll/structure-types:
173173

174-
To view the currently configured working schedules, go to :menuselection:`Payroll app -->
175-
Configuration --> Work Entries --> Working Schedules`. The working schedules that are available for
176-
an employee's contracts are found in this list.
174+
Structure types
175+
---------------
177176

178-
Working schedules are company-specific. Each company **must** identify each type of working schedule
179-
they use. If the database is created for only one company, the company column is not available.
177+
In Odoo, structure types are used to identify group of people referring to the same payroll rules.
178+
A structure type contains specific options and a subset of structures that will be used according
179+
the situation.
180180

181-
.. example::
182-
An Odoo database containing multiple companies that use a standard 40-hour work week needs to
183-
have a separate working schedule entry for each company that uses the 40-hour standard work week.
181+
In Odoo, an employee's payslip is based on *structures* and *structure types*, which both affect how
182+
an employee enters timesheets. Each structure type is an individual set of rules for processing a
183+
timesheet entry, which consists of different structures nested within it. Structure types define how
184+
often an employee gets paid, the working hours, and if wages are based on a salary (fixed) or how
185+
many hours the employee worked (varied).
186+
187+
For example, a structure type could be `Employee`, and that structure type could have two different
188+
structures in it: a `Regular Pay` structure which includes all the separate rules for processing
189+
regular pay, as well as a structure for an `End of Year Bonus` which includes the rules only for the
190+
end of year bonus. Both the `Regular Pay` structure and `End of Year Bonus` structure are structures
191+
within the `Employee` structure type.
192+
193+
The different :guilabel:`Structure Types` can be seen by navigating to :menuselection:`Payroll app
194+
--> Configuration --> Salary: Structure Types`.
195+
196+
Two default structure types are configured in Odoo: :guilabel:`Employee` and :guilabel:`Worker`.
184197

185-
A database with five companies that all use a standard 40-hour work week needs to have five
186-
separate 40-hour working schedules configured.
198+
Typically, :guilabel:`Employee` is used for salaried employees, which is why the wage type is
199+
:guilabel:`Monthly Fixed Wage`, and :guilabel:`Worker` is typically used for employees paid by the
200+
hour, so the wage type is :guilabel:`Hourly Wage`.
187201

188-
.. image:: payroll/working-schedules.png
202+
.. image:: payroll/structure-type.png
189203
:align: center
190-
:alt: All working schedules available to use currently set up in the database for the company.
204+
:alt: List of all currently configured structure types available to use.
205+
206+
.. _payroll/new-structure-type:
207+
208+
New structure type
209+
~~~~~~~~~~~~~~~~~~
210+
211+
To make a new structure type, click the :guilabel:`New` button, and a blank structure type form
212+
appears.
213+
214+
Proceed to enter information in the fields. Most fields are pre-populated, but all the fields can be
215+
modified.
216+
217+
- :guilabel:`Structure Type`: enter the name for the new structure type, such as `Employee` or
218+
`Worker`.
219+
- :guilabel:`Country`: select the country that the new structure type applies to from the drop-down
220+
menu.
221+
- :guilabel:`Wage Type`: select what type of wage the new structure type uses, either
222+
:guilabel:`Fixed Wage` or :guilabel:`Hourly Wage`.
223+
224+
If the type is to be used for salaried employees, who receive the same wage every pay period,
225+
select :guilabel:`Fixed Wage`.
226+
227+
If the type is to be used for employees, who receive wages based on how many hours they worked
228+
during a pay period, select :guilabel:`Hourly Wage`.
229+
- :guilabel:`Default Scheduled Pay`: select the typical pay schedule for the new structure type from
230+
the drop-down menu. Options are :guilabel:`Monthly`, :guilabel:`Quarterly`,
231+
:guilabel:`Semi-annually`, :guilabel:`Annually`, :guilabel:`Weekly`, :guilabel:`Bi-weekly`,
232+
:guilabel:`Bi-monthly`. This indicates how often this specific type of structure is paid out.
233+
- :guilabel:`Default Working Hours`: select the default working hours for the new structure type
234+
from the drop-down menu. All available working hours for the currently selected company appear in
235+
the drop-down menu. The default working hours that are pre-configured in Odoo is the
236+
:guilabel:`Standard 40 hours/week` option. If the needed working hours do not appear in the list,
237+
a :ref:`new set of default working hours can be created <new-default-working-hours>`.
238+
- :guilabel:`Regular Pay Structure`: type in the name for the regular pay structure. It will be
239+
used as the default option when generating payslips.
240+
- :guilabel:`Default Work Entry Type`: For employees whose contracts is referred under this
241+
structure type, the main work entry type used for all period of work is defined here. It will
242+
commonly be set as **Attendance**,
243+
:guilabel:`Overtime Hours`, :guilabel:`Generic Time Off`, :guilabel:`Compensatory Time Off`,
244+
:guilabel:`Home Working`, :guilabel:`Unpaid`, :guilabel:`Sick Time Off`, :guilabel:`Paid Time
245+
Off`, :guilabel:`Out Of Contract`, :guilabel:`Extra Hours`, and :guilabel:`Long Term Time Off`.
246+
247+
To view all the options for the :guilabel:`Default Work Entry Type`, click the :guilabel:`Search
248+
More..` button at the bottom of the drop-down list.
249+
250+
Depending on the localization settings, this list may contain more options in addition to the
251+
default options.
252+
253+
.. image:: payroll/new-structure.png
254+
:align: center
255+
:alt: New structure type form to fill out when creating a new structure type.
256+
257+
.. _new-default-working-hours:
258+
259+
New default working hours
260+
~~~~~~~~~~~~~~~~~~~~~~~~~
261+
262+
To make new default working hours, type the name for the new working hours in the :guilabel:`Default
263+
Working Hours` field on the new structure type form. Click :guilabel:`Create and edit`. A default
264+
working hours form pops up. The default working hours form has two sections, a general information
265+
section and a tab listing out all the individual working hours by day and time. When the form is
266+
completed, click :guilabel:`Save & Close`.
267+
268+
- :guilabel:`Name`: type in the name for the new default working hours. This should be descriptive
269+
and clear to understand, such as `Standard 20 Hours/Week`.
270+
- :guilabel:`Company`: select the company that can use these new default working hours from the
271+
drop-down menu. Blank field means it's available for all companies.
272+
- :guilabel:`Average Hour Per Day`: the average hours per day field is auto-populated, based on the
273+
working hours configured in the :guilabel:`Working Hours` tab. This entry affects resource
274+
planning, since the average daily hours affect what resources can be used, and in what quantity,
275+
per work day.
276+
- :guilabel:`Timezone`: select the time zone to be used for the new default working hours from the
277+
drop-down menu.
278+
- :guilabel:`Company Full Time`: enter the number of hours per week an employee would need to work
279+
to be considered a full-time employee. Typically, this is approximately 40 hours, and this number
280+
affects what types of benefits an employee can receive, based on their employment status
281+
(full-time vs part-time).
282+
- :guilabel:`Work Time Rate`: this percentage is auto-generated based on the entry for the
283+
:guilabel:`Company Full Time` and the working hours configured in the :guilabel:`Working Hours`
284+
tab. This number should be between `0.00%` and `100%`, so if the percentage is above `100%`, it is
285+
an indication that the working times and/or :guilabel:`Company Full Time` hours need adjustment.
286+
- :guilabel:`Working Hours` Tab: this tab is where each day's specific working hours are listed.
287+
When a new default working hour form is created, the :guilabel:`Working Hours` tab is
288+
pre-populated with a default 40-hour week, with each day divided into three timed sections.
289+
290+
Every day has morning (8:00-12:00), lunch (12:00-13:00), and evening (13:00-17:00) hours
291+
configured, using a 24 hour time format.
292+
293+
To adjust any of these hours, click on the specific field to adjust, and make the adjustment using
294+
the drop-down menus, or in the specific case of the times, type in the desired time.
295+
296+
Keep in mind, working hours are company-specific, and cannot be shared between companies. Each
297+
company needs to have their own working hours set.
298+
299+
.. note::
300+
If the working hours are not consistent each week, and the hours are on a bi-weekly schedule
301+
instead, click the :guilabel:`Switch to 2 week calendar` button at the top of the new default
302+
working hours form. This changes the :guilabel:`Working Hours` tab to display two weeks of
303+
working times that can be adjusted.
304+
305+
Structures
306+
----------
191307

192-
.. _payroll/new-working-schedule:
308+
*Salary structures* are the different situations an employee could be paid within a specific
309+
*structure*, and are specifically defined by various rules.
193310

194-
New working schedule
195-
~~~~~~~~~~~~~~~~~~~~
311+
The amount of structures a company needs for each structure type depends on how many different ways
312+
employees are paid, and how their pay is calculated. For example, a common structure that could be
313+
useful to add may be a `Bonus`.
196314

197-
To create a new working schedule, click the :guilabel:`New` button, and enter the information on the
198-
form.
315+
To view all the various structures for each structure type, go to :menuselection:`Payroll app -->
316+
Configuration --> Salary --> Structures`.
199317

200-
The fields are auto-populated for a regular 40-hour work week but can be modified. First, change the
201-
name of the working time by modifying the text in the :guilabel:`Name` field. Next, make any
202-
adjustments to the days and times that apply to the new working time.
318+
Each :ref:`structure type <payroll/structure-types>` lists the various structures associated with
319+
it. Each structure contains a set of rules that define it.
203320

204-
In the :guilabel:`Working Hours` tab, modify the :guilabel:`Day of Week`, :guilabel:`Day Period`,
205-
and :guilabel:`Work Entry Type` selections by clicking on the drop-down menus in each column and
206-
making the desired selection. The :guilabel:`Work From` and :guilabel:`Work To` columns are modified
207-
by typing in the time.
321+
.. image:: payroll/salary-structure.png
322+
:align: center
323+
:alt: All available salary structures.
208324

209-
.. note::
210-
The :guilabel:`Work From` and :guilabel:`Work To` times must be in a 24-hour format. For example,
211-
`2:00 PM` would be entered as `14:00`.
325+
Click on a structure to view its :guilabel:`Salary Rules`. These rules define how the payslip will
326+
be computed for the employee.
327+
328+
.. image:: payroll/structure-regular-pay-rules.png
329+
:align: center
330+
:alt: Salary structure details for Regular Pay, listing all the specific Salary Rules.
331+
332+
Rules
333+
-----
334+
335+
Each structure has a set of salary rules used to compute the various amounts considered in the pay.
336+
These rules are configured by the localization and affect the computation of the salaries. Modification
337+
or creation of rules should only be done when necessary.
338+
339+
To view all the rules, go to :menuselection:`Payroll app --> Configuration --> Salary --> Rules`.
340+
Click on a structure (such as :guilabel:`Regular Pay`) to view all the rules.
341+
342+
To make a new rule, click :guilabel:`New`. A new rule form appears. Enter the following information
343+
in the fields.
344+
345+
Top section
346+
~~~~~~~~~~~
347+
348+
- :guilabel:`Rule Name`: enter a name for the rule. This field is required.
349+
- :guilabel:`Category`: select a category the rule applies to from the drop-down menu, or enter a
350+
new one. This field is required.
351+
- :guilabel:`Code`: enter a code to be used for this new rule. This field is required.
352+
- :guilabel:`Sequence`: enter a number indicating when this rule is calculated in the sequence of
353+
all other rules.
354+
- :guilabel:`Salary Structure`: select a salary structure the rule applies to from the drop-down
355+
menu, or enter a new one. This field is required.
356+
- :guilabel:`Active`: enable this toggle, so the rule is available for use. Disable the toggle to
357+
continue to show it on the payslip, but skip the computation.
358+
- :guilabel:`Appears on payslip`: tick the checkbox to have the rule appear on employee printed
359+
payslip.
360+
- :guilabel:`View on Employer Cost Dashboard`: tick the checkbox to have the rule appear on the
361+
:guilabel:`Employer Cost` report, located on the *Payroll* app dashboard.
362+
- :guilabel:`View on Payroll Reporting`: tick the checkbox to have the rule appear on payroll
363+
reports.
364+
365+
.. image:: payroll/new-rule.png
366+
:align: center
367+
:alt: Enter the information for the new rule on the new rule form.
368+
369+
General tab
370+
~~~~~~~~~~~
371+
372+
Conditions
373+
**********
374+
375+
- :guilabel:`Condition Based on`: select from the drop-down menu whether the rule is
376+
:guilabel:`Always True` (always applies), a :guilabel:`Range` (applies to a specific range, which
377+
is entered beneath the selection), or a :guilabel:`Python Expression` (the code is entered beneath
378+
the selection). This field is required.
379+
380+
Computation
381+
***********
382+
383+
- :guilabel:`Amount Type`: select from the drop-down menu whether the amount is a :guilabel:`Fixed
384+
Amount`, a :guilabel:`Percentage (%)`, or a :guilabel:`Python Code`. Depending on what is
385+
selected, the fixed amount, percentage, or Python code needs to be entered next. This field is
386+
required.
387+
388+
Company contribution
389+
********************
390+
391+
- :guilabel:`Partner`: if another company financially contributes to this rule, select the company
392+
from the drop-down menu.
393+
394+
Description tab
395+
~~~~~~~~~~~~~~~
396+
397+
Provide any additional information in this tab to help clarify the rule. This tab only appears in
398+
the rule form.
399+
400+
Accounting tab
401+
~~~~~~~~~~~~~~
402+
403+
- :guilabel:`Debit Account`: select the debit account from the drop-down menu the rule affects.
404+
- :guilabel:`Credit Account`: select the credit account from the drop-down menu the rule affects.
405+
- :guilabel:`Not computed in net accountability`: If checked, the amount of the rule will be show
406+
independantly from the Net Salary, to allow a better reporting in Accounting.
407+
408+
Other input types
409+
-----------------
410+
411+
When creating payslips, it is sometimes necessary to add other entries for specific circumstances,
412+
like expenses, reimbursements, or deductions. These other inputs can be configured by navigating to
413+
:menuselection:`Payroll app --> Configuration --> Salary --> Other Input Types`.
414+
415+
.. image:: payroll/other-input.png
416+
:align: center
417+
:alt: A list of other input types for payroll that can be selected when creating a new entry for
418+
a payslip.
419+
420+
To create a new input type, click the :guilabel:`New` button. Enter the :guilabel:`Description`, the
421+
:guilabel:`Code`, and which structure it applies to in the :guilabel:`Availability in Structure`
422+
field.
212423

213-
If the working time should be in a two-week configuration, click the :guilabel:`Switch to 2 weeks
214-
calendar` button in the top-left. This creates entries for an :guilabel:`Even week` and an
215-
:guilabel:`Odd week`.
424+
.. important::
425+
The :guilabel:`Code` is used in the salary rules to compute payslips. If the
426+
:guilabel:`Availability in Structure` field is left blank, it indicates that the new input type
427+
is available for all payslips and is not exclusive to a specific structure.
216428

217-
.. image:: payroll/new-working-schedule.png
429+
.. image:: payroll/input-type-new.png
218430
:align: center
219-
:alt: New working schedule form.
431+
:alt: A new Input Type form filled in.
220432

221433
.. _payroll/salary-attachment-types:
222434

@@ -496,6 +708,7 @@ form.
496708
- :doc:`payroll/contracts`
497709
- :doc:`payroll/salaries`
498710
- :doc:`payroll/work_entries`
711+
- :doc:`payroll/working_schedules`
499712
- :doc:`payroll/time_off_to_report`
500713
- :doc:`payroll/salary_attachments`
501714
- :doc:`payroll/payslips`
@@ -512,6 +725,7 @@ form.
512725
payroll/contracts
513726
payroll/salaries
514727
payroll/work_entries
728+
payroll/working_schedules
515729
payroll/time_off_to_report
516730
payroll/salary_attachments
517731
payroll/payslips

0 commit comments

Comments
 (0)