Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions content/applications/hr/payroll.rst
Original file line number Diff line number Diff line change
Expand Up @@ -897,6 +897,7 @@ form.
- :doc:`payroll/work_entries`
- :doc:`payroll/salary_attachments`
- :doc:`payroll/payslips`
- :doc:`payroll/batches`
- :doc:`payroll/reporting`
- :doc:`payroll/work_entry_analysis`
- :doc:`payroll/salary_attachment`
Expand All @@ -909,6 +910,7 @@ form.
payroll/work_entries
payroll/salary_attachments
payroll/payslips
payroll/batches
payroll/reporting
payroll/work_entry_analysis
payroll/salary_attachment
Expand Down
204 changes: 204 additions & 0 deletions content/applications/hr/payroll/batches.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
=======
Batches
=======

Batches are used to generate multiple :doc:`payslips <payslips>` at once and process them in a
group, rather than create and process individual payslips. This method not only helps the payroll
department pay employees in less time, but it also helps keep payslips organized.

Typically, a company's payroll department :ref:`creates a new batch <payroll/new-batch>` for each
salary structure, for every pay period (usually weekly, bi-weekly, or monthly). If desired, batches
can be further organized by department, job position, or salary structure type.

Once a batch is made, :ref:`payslips are added to the batch <payroll/add-payslips>`, then the batch
is processed, and employees are paid.

View batches
============

To view all the batches in the database, navigate to :menuselection:`Payroll app --> Payslips -->
Batches` to display all payslip batches that have been created. These payslip batches are displayed
in a list view, by default.

Each batch displays the :guilabel:`Name`, the dates the batch includes (the :guilabel:`Date From`
and :guilabel:`Date To` fields), its :guilabel:`Status`, the number of payslips in the batch
(:guilabel:`Payslips Count`), and the :guilabel:`Company`.

.. image:: batches/batches.png
:alt: View displaying all batches created.

.. _payroll/new-batch:

Create a new batch
==================

New batches of payslips must be created from the :guilabel:`Payslips Batches` dashboard, by
navigating to :menuselection:`Payroll app --> Payslips --> Batches`. Click the :guilabel:`New`
button in the top-left corner. Doing so reveals a blank payslip batch form on a separate page.

On the new payslip batch form, enter the :guilabel:`Batch Name`. This should be something short and
descriptive, to keep records organized.

.. example::
A company pays its employees on a bi-weekly basis, and creates separate batches for their two
different :ref:`salary structures <payroll/structure-types>` they use: worker pay and regular
pay.

The names for their four August 2025 batches are:

- `Aug 1-14 2025 - Worker`
- `Aug 1-14 2025 - Regular`
- `Aug 15-31 2025 - Worker`
- `Aug 15-31 2025 - Regular`

Next, select the date range to which the batch applies. Click into one of the :guilabel:`Period`
fields, and a calendar pop-up window appears. From this calendar pop-up window, navigate to the
correct month, and click on the corresponding day for both the start and end dates of the batch.

The current company populates the :guilabel:`Company` field. If operating in a multi-company
environment, it is **not** possible to modify the :guilabel:`Company` from the form. The batch
**must** be created while in the database for the desired company.

.. image:: batches/new-batch-details.png
:alt: The details entered for the new batch.

.. _payroll/add-payslips:

Add payslips to a batch
=======================

Once a :ref:`batch has been created <payroll/new-batch>`, payslips need to be added to the batch.
Payslips can either be :ref:`created and added <payroll/generate>` to the batch, or if they have
*already* been created, they can be :ref:`added to the batch <payroll/add>`.

.. important::
Batches can only have payslips added to them when they are in the :guilabel:`New` stage. Payslips
can either be :ref:`created by the database <payroll/generate>` and added to the batch, or
:ref:`pre-existing payslips can be individually added <payroll/add>` to the batch.

Once either of these methods has been used, the status of the batch changes to
:guilabel:`Confirmed`, and both options to add payslips no longer appears.

.. _payroll/generate:

Generate payslips
-----------------

To generate the payslips and add them to the batch, first open the batch by navigating to
:menuselection:`Payroll app --> Payslips --> Batches`, and click on the desired batch. Next, click
the :guilabel:`Generate Payslips` button and a :guilabel:`Generate Payslips` pop-up window loads.

This form contains three sections, and the configuration of this form determines which payslips are
created. The :guilabel:`Employees Selection` section determines which employees' payslips to create.
Using the drop-down menus, configure the :guilabel:`Department`, :guilabel:`Job Position`, and
:guilabel:`Salary Structure Type` fields, if desired. As selections are made, the
:guilabel:`Employees` section at the bottom updates to show which payslips are going to be
generated.

The :guilabel:`Payslip Generation` section allows the user to pick a specific :guilabel:`Salary
Structure` to create payslips for. If left blank, the default structure for each employee is used to
calculate their pay.

.. note::
By default, Odoo lists all employees in the :guilabel:`Employees` section when generating
payslips.

The list filters automatically as selections are made.

Configuration is optional unless a batch is being created **excluding** certain employees.

Once all the desired configurations have been made, click the :guilabel:`Generate` button, and all
payslips are created and attached to the batch. Once generated, a :icon:`fa-book`
:guilabel:`Payslips` smart button appears at the top, along with the number of payslips in the
batch. Click this smart button to view a list of all the payslips in the batch.

Once the payslips have been generated and attached to the batch, the status of the batch changes to
:guilabel:`Confirmed`.

.. image:: batches/generate.png
:alt: Payslips being generated for marketing and community managers.

.. _payroll/add:

Add payslips
------------

Instead of generating payslips, :ref:`individual payslips that have already been created
<payroll/new-payslip>` can be added to a batch. Start by opening the desired batch by navigating to
:menuselection:`Payroll app --> Payslips --> Batches`, and clicking on the desired batch.

Next, click the :guilabel:`Add Payslips` button, and an :guilabel:`Add Payslips` form loads in a
pop-up window. All available payslips that have not yet been added to a batch, appear on the list.

.. note::
**All** payslips not yet assigned to a batch appear in the list, regardless of status
(:guilabel:`Draft`, :guilabel:`Waiting`, :guilabel:`Paid`, or :guilabel:`Cancelled`). This allows
already processed or cancelled payslips to be grouped retroactively for reporting or record
keeping purposes.

Tick the checkbox next to each desired payslip to be added, then click the :guilabel:`Select` button
at the bottom. All selected payslips are added to the batch, and the status of the batch changes to
:guilabel:`Confirmed`. A :icon:`fa-book` :guilabel:`Payslips` smart button appears at the top, along
with the number of payslips in the batch. Click this smart button to view a list of all the payslips
in the batch.

.. image:: batches/add-payslips.png
:alt: Adding individual payslips to a batch by selecting them form this list.

.. _payroll/batch-process:

Process a batch
===============

After a :ref:`batch has been created <payroll/new-batch>` , and :ref:`all required payslips have
been added <payroll/add-payslips>`, the batch must then be processed, and employees paid.

Open the desired batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and
clicking on the desired batch. For a batch to be processed, it must have a status of
:guilabel:`Confirmed`. That means the batch has been created and payslips have been added to them,
but the payslips have *not* been processed yet.

Click the :guilabel:`Create Draft Entry` button to confirm and create a draft of the individual
payslips. After this occurs, the batch status changes to :guilabel:`Done`.

.. note::
At any time, the batch needs to be reverted back to a status of :guilabel:`New`, click the
:guilabel:`Set to Draft` button. This action does **not** remove any payslips that have already
been added to the batch, instead, the status changes back to :guilabel:`New`.

After any desired changes have been made, click :guilabel:`Confirm` and the batch status changes
to :guilabel:`Confirmed`.

It is important to note, that if any payslips in the batch have a status of :guilabel:`Paid`, the
batch **cannot** revert to a status of :guilabel:`New`.

Once the status has changed to :guilabel:`Done`, the payments must be logged in the database. Click
the :guilabel:`Create Payment Report` button, and a pop-up window loads, where the payment report
details are entered.

Using the drop-down menu, select the :guilabel:`Export Format` for the payment report. The two
default options available are :guilabel:`NACHA`, and :guilabel:`CSV`.

The :guilabel:`NACHA` option creates a compatible ACH file which is sent to the company's bank, and
outlines all the banking information to transfer money from the company to the employees, either via
direct deposit (most common) or a check. Refer to the :ref:`fiscal localization document
<l10n_us/nacha>` for more information.

.. note::
Other options may be available depending on the :doc:`payroll localization
<payroll_localizations>` installed in the database.

If :guilabel:`CSV` is selected, all other fields are hidden form view. Once this is selected,
click the :guilabel:`Generate` button to create the payment report.

Next, select the desired :guilabel:`Bank Journal` the paychecks are logged on. Last, using the
calendar selector, set the date the paychecks are issued in the :guilabel:`Effective Date` field.

Once the pop-up window is configured, click the :guilabel:`Generate` button, and the file appears on
the batch form, in a new :guilabel:`Payment Report` field.

After the report is created, click the :guilabel:`Mark as paid` button to mark the payslips as paid
in the database.

.. image:: batches/generate-payslips.png
:alt: Adding individual payslips to a batch by selecting them form this list.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
170 changes: 1 addition & 169 deletions content/applications/hr/payroll/payslips.rst
Original file line number Diff line number Diff line change
Expand Up @@ -284,175 +284,7 @@ click the :guilabel:`⚙️ (gear) Actions` icon in the top-center of the page,

.. image:: payslips/export-select.png
:align: center
:alt: The individual list of employee ayslips with three selected to be exported.
:alt: The individual list of employee payslips with three selected to be exported.

.. note::
Both *To Pay* and *All Payslips* display all the detailed information for each payslip.

Batches
=======

To view payslips in batches, navigate to :menuselection:`Payroll app --> Payslips --> Batches` to
display all the payslip batches that have been created. These payslip batches are displayed in a
list view, by default.

Each batch displays the :guilabel:`Name`, :guilabel:`Date From` and :guilabel:`Date To` dates, its
:guilabel:`Status`, the number of payslips in the batch (:guilabel:`Payslips Count`), and the
:guilabel:`Company`.

.. image:: payslips/batches.png
:align: center
:alt: View displaying all batches created.

Create a new batch
------------------

To create a new batch of payslips from the :guilabel:`Payslips Batches` page
(:menuselection:`Payroll app --> Payslips --> Batches`), click the :guilabel:`New` button in the
top-left corner. Doing so reveals a blank payslip batch form on a separate page.

On the new payslip batch form, enter the :guilabel:`Batch Name`.

Next, select the date range to which the batch applies. Click into one of the :guilabel:`Period`
fields, and a calendar pop-up window appears. From this calendar pop-up window, navigate to the
correct month, and click on the corresponding day for both the start and end dates of the batch.

The current company populates the :guilabel:`Company` field. If operating in a multi-company
environment, it is **not** possible to modify the :guilabel:`Company` from the form. The batch
**must** be created while in the database for the desired company.

.. image:: payslips/new-batch-details.png
:align: center
:alt: Enter the details for the new batch.

.. _payroll/batch-process:

Process a batch
---------------

Click on an individual batch to view the details for that batch on a separate page. On this batch
detail page, different options (buttons) appear at the top, depending on the status of the batch:

- :guilabel:`New` status: batches without any payslips added to them have a status of
:guilabel:`New`. The following button options appear for these batches:

.. image:: payslips/batch-new.png
:align: center
:alt: A batch with a status of new, with the available buttons highlighted.

- :guilabel:`Add Payslips`: click the :guilabel:`Add Payslips` button to add payslips to the
batch, and an :guilabel:`Add Payslips` pop-up window appears. Only payslips that can be added
to the batch (payslips not currently part of a batch) appear on the list.

Select the desired payslips by clicking the checkbox to the left of each payslip name, then
click the :guilabel:`Select` button to add them to the batch. Once payslips are selected and
added to the batch, the status changes to :guilabel:`Confirmed`.

- :guilabel:`Generate Payslips`: after payslips have been added to the batch, click the
:guilabel:`Generate Payslips` button to process the payslips and create individual payslips in
the database.

A :guilabel:`Generate Payslips` pop-up window appears. If only a specific :guilabel:`Salary
Structure` and/or specific :guilabel:`Department` is desired to make payslips for, select them
from the corresponding drop-down menus. If no selections are made, then all payslips listed in
the pop-up window are processed as usual.

Click the :guilabel:`Generate` button to create the payslips. The :guilabel:`Generate Payslips`
button changes to a :guilabel:`Create Draft Entry` button, and the status changes to
:guilabel:`Confirmed`.

- :guilabel:`Confirmed` status: batches that have been created and have payslips in them, but the
payslips have *not* been processed, have a status of :guilabel:`Confirmed`. The following two
button options appear for these batches:

.. image:: payslips/batch-confirmed.png
:align: center
:alt: A batch with a status of confirmed, with the available buttons highlighted.

- :guilabel:`Create Draft Entry`: click the :guilabel:`Create Draft Entry` button to confirm the
individual payslips (and the batch), and create a draft of the payslips. The batch now has a
status of :guilabel:`Done`.
- :guilabel:`Set to Draft`: if at any point the batch needs to be reverted back to a status of
:guilabel:`New`, click the :guilabel:`Set to Draft` button. This action does **not** remove any
payslips that have already been added to the batch.

- :guilabel:`Done` status: batches with confirmed payslips in them have a status of
:guilabel:`Done`. The following button options appear for these batches:

.. image:: payslips/batch-done.png
:align: center
:alt: A batch with a status of done, with the available buttons highlighted.

- :guilabel:`Create Payment Report`: click the :guilabel:`Create Payment Report` button, and a
:guilabel:`Select a bank journal` pop-up window appears. Select the correct bank journal from
the drop-down menu.

The batch name appears in the :guilabel:`File name` field, but this can be modified, if desired.
Finally, click :guilabel:`Confirm` to process the payslips, and pay the employees.
- :guilabel:`Mark as paid`: after the payments have been created via the :guilabel:`Create Payment
Report` button, the payslips need to be marked as paid in the database.

Click the :guilabel:`Mark as paid` button, and the status of the batch changes to
:guilabel:`Paid`.
- :guilabel:`Set to Draft`: if at any point the batch needs to be reverted back to a status of
:guilabel:`New`, click the :guilabel:`Set to Draft` button. This action does **not** remove any
payslips that have already been added to the batch.

- :guilabel:`Paid` status: batches that have been completed have a status of :guilabel:`Paid`. No
other button options appear for this status.

.. image:: payslips/batch-paid-2.png
:align: center
:alt: A batch with a status of paid, with the available buttons highlighted.

On the batch detail page, the individual payslips in the batch are accessible, via the
:guilabel:`Payslips` smart button, located above the batch information, in the center. Click the
:guilabel:`Payslips` smart button to view a list of all the individual payslips.

Use the breadcrumb menu to navigate back to the individual batch detail page, or back to the list of
all batches.

Generate warrant payslips
-------------------------

Commissions are paid to employees in Odoo using *warrant payslips*.

Warrant payslips can be generated directly from the :guilabel:`Payslips Batches` page
(:menuselection:`Payroll app --> Payslips --> Batches`).

First, select the desired batches by clicking the box to the left of each batch for which commission
payslips should be created. Next, click the :guilabel:`Generate Warrant Payslips` button at the top
of the page.

Doing so reveals a :guilabel:`Generate Warrant Payslips` pop-up window, in which the necessary
information **must** be filled out.

.. image:: payslips/commission-details.png
:align: center
:alt: Enter the commission details.

In this pop-up window, click on the drop-down menus, located beside the :guilabel:`Period` field, to
reveal calendar pop-up windows. On these calendar pop-up windows, select the desired period for
which the payslips are being generated. Using the :guilabel:`< (left)` and :guilabel:`> (right)`
arrow icons, navigate to the correct month, and click on the date to select it.

In the :guilabel:`Department` field, select the desired department from the drop-down menu.

When a department is selected, the employees listed for that department appear in the
:guilabel:`Employee` section.

Under the :guilabel:`Employee` section, enter the :guilabel:`Commission Amount` for each employee in
the far-right column. To remove an employee, click the :guilabel:`🗑️ (trash)` icon to remove the
line.

Add a new entry by clicking :guilabel:`Add a Line`, and entering the :guilabel:`Employee` and the
appropriate :guilabel:`Commission Amount`.

Click the :guilabel:`Upload your file` button to add a file, if necessary. Any file type is
accepted.

Once all the commissions are properly entered, click the :guilabel:`Generate Payslips` button to
create the warrant payslips in a batch.

:ref:`Process the batch <payroll/batch-process>` in the same way as a typical batch to complete the
payment process.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed content/applications/hr/payroll/payslips/batches.png
Binary file not shown.
Binary file not shown.
Binary file not shown.