Compare commits

...

54 Commits

Author SHA1 Message Date
Tom Aarab (toaa) 217705119e [IMP] Localization: Kenya
Updating and expanding the Kenyan localization.

taskid-3794719
2024-06-12 11:32:05 +02:00
Lara Martini (larm) 9feca1b4e4 [ADD] Referrals: new rewards doc
closes odoo/documentation#9615

closes odoo/documentation#9621

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-10 19:25:47 +00:00
Lara Martini (larm) d42810f05d [ADD] Recruitment: new applicant doc
closes odoo/documentation#9662

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-10 18:05:46 +00:00
Nguyen Minh Tran Manh Cuong d77c24d556 [FIX] tutorials/server_framework_101: position of form's notebook element
The notebook element should be nested in the sheet element.

closes odoo/documentation#9744

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-10 10:06:02 +00:00
Serge Bayet (seba) 6366c20ffa [ADD] administration: neutralized databases doc
This commit updates the documentation for neutralized databases to
include information about how search engine indexing is prevented for
these databases.

task-3895772

closes odoo/documentation#9708

X-original-commit: c770eb5618
Signed-off-by: Serge Bayet (seba) <seba@odoo.com>
2024-06-10 08:38:39 +00:00
Odoo Translation Bot 43426fa893 [I18N] Update translation terms from Transifex 2024-06-09 00:41:20 +02:00
Sam Lieber (sali) 3c9ea881a9 [ADD] accounting/l10n_us: usa accounting
closes odoo/documentation#9206

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: tiku-odoo <tiku@odoo.com>
Co-authored-by: larm-odoo <larm@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-06-08 02:20:13 +00:00
Felicious 928e3bb43e [MOV] inventory: shipping labels
closes odoo/documentation#9620

X-original-commit: 48d4fb5269
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-07 22:41:48 +00:00
jero-odoo 57212a6798 [IMP] email faqs: email limit
closes odoo/documentation#9672

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-07 21:14:38 +00:00
Lara Martini (larm) cd32574f88 [ADD] Recruitment: New refuse applicants doc
closes odoo/documentation#9663

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-07 17:08:41 +00:00
jero-odoo f6994a1047 [ADD] CRM: Forecast report
closes odoo/documentation#9582

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-07 14:54:43 +00:00
Lara Martini (larm) 55d3d59a64 [ADD] Appraisals: new reporting doc
closes odoo/documentation#9619

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-06 18:44:22 +00:00
Parish Bracha 6c74ac42f9 [IMP] sales: add discounts section to pricing doc
closes odoo/documentation#9597

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-06 18:44:21 +00:00
Parish Bracha 96f3a3e846 [IMP] crm: add equation explanation in leads doc
closes odoo/documentation#9631

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-06-06 17:28:51 +00:00
Lara Martini (larm) 148549b3d0 [ADD] Referrals: new rewards doc
closes odoo/documentation#9615

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-06 15:53:25 +00:00
John Holton (hojo) 3b1f9f6df2 [ADD] Quality: Failure locations
closes odoo/documentation#9585

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-06 14:01:41 +00:00
Enmanuel Otero Montano 83db1bdd8d [FIX] howtos/javascript_view: fix typo
A typo was found. The word "customeKanbanView" is misspelled and should be "customKanbanView", which is the constant exported correctly in the code. Therefore, the corrected line would be:

closes odoo/documentation#9661

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-06 12:24:59 +00:00
Sam Lieber (sali) 2341f42d4a [ADD] marketing automation: double opt-in template
closes odoo/documentation#9513

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-05 22:39:59 +00:00
Felicious fe3281523c [IMP] inventory: carrier label and export doc
closes odoo/documentation#9588

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-05 01:51:22 +00:00
KC (ksc) 011ef11978 [MOV] surveys: rename time_random to questions
closes odoo/documentation#9525

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-04 21:52:55 +00:00
KC (ksc) 184dd5f93f [IMP] events: full rewrite of essentials
closes odoo/documentation#8779

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-04 21:52:54 +00:00
jero-odoo 5f566009c7 [IMP] essentials: activities updates
closes odoo/documentation#9526

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-04 16:42:19 +00:00
guillaume gallant (guga) 4983adb63f [ADD] Field service: adding itinerary planning page
Added a new page to plan itinerary maps

taskid-3959000

closes odoo/documentation#9540

Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-06-04 12:37:19 +00:00
KC (ksc) a99c1cd7e1 [FIX] crm: typo in gamification doc
closes odoo/documentation#9614

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-03 21:00:51 +00:00
Naman Shah 90fe2b31b1 [ADD] accounting/l10n: add section in GSTR-1 report (India)
In this commit added the flow of generate spreadsheet view of GSTR-1 report.

task-3884120

closes odoo/documentation#9453

Signed-off-by: Naman Shah (nash) <nash@odoo.com>
2024-06-03 12:45:50 +00:00
Odoo Translation Bot 69b145716c [I18N] Update translation terms from Transifex 2024-06-02 00:41:38 +02:00
KC (ksc) 4d21807379 [IMP] events: full rewrite of sell tickets
closes odoo/documentation#8928

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-31 21:34:47 +00:00
Alice Gaudon 15c6bb8b0e [IMP] tutorials: add example code for LazyComponent
js framework/Build a Dashboard/part 8 (LazyComponent)

There is no explicit instructions on how to use `LazyComponent`.

- add an example code snippet for minimal use of `LazyComponent`
- add the `.js` extension to the file you're supposed to create to make it a bit more intuitive
- fix `actions` registry name (missing an s)
- reword instructions in a more straightforward way

closes odoo/documentation#9521

Signed-off-by: Florent Dardenne (dafl) <dafl@odoo.com>
2024-05-31 17:12:23 +00:00
Lara Martini (larm) 9a0e87e861 [IMP] Payroll: add necessary contract modules
closes odoo/documentation#9472

X-original-commit: 27eaaf860b
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-31 17:12:19 +00:00
tiku-odoo 0745c3f180 [ADD] essentials: contacts
closes odoo/documentation#9558

X-original-commit: 3d5841894d
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-31 14:37:48 +00:00
Tiffany Chang (tic) f1d8cb8f16 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#9570

X-original-commit: bd40de3
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-05-31 12:46:59 +00:00
Lara Martini (larm) aef490c600 [ADD] Attendances: moving check in section to new doc
closes odoo/documentation#9434

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-30 21:48:59 +00:00
jero-odoo ab659db849 [ADD] Purchase: procurement expenses report
closes odoo/documentation#9443

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-05-30 19:57:10 +00:00
jero-odoo f46dda5e61 [IMP] Purchase: vendor costs report 17.0
closes odoo/documentation#9547

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-30 16:21:32 +00:00
Xavier-Do f1bd4ec134 [IMP] adapt documentation for new install script
closes odoo/documentation#9544

X-original-commit: 109c82776a
Related: odoo/odoo#167350
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-30 16:21:30 +00:00
Felicious 05cd6af1ed [ADD] inventory: print delivery slip
closes odoo/documentation#9459

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-29 23:44:29 +00:00
Lara Martini (larm) cb644b0834 [ADD] Frontdesk: moving visitors section to new doc
closes odoo/documentation#9454

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-29 21:52:54 +00:00
Felicious 6bfa0802c7 [ADD] inventory: locations dashboard
closes odoo/documentation#9458

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-29 19:28:02 +00:00
jero-odoo e59188d85b [REM] crm: generate leads
closes odoo/documentation#9510

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-28 19:46:24 +00:00
KC (ksc) fb2f1d5f8b [ADD] events: event templates doc
closes odoo/documentation#9076

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-28 19:46:20 +00:00
Yaroslav Soroko (yaso) ed15f46531 [IMP] point_of_sale: Setup all Ingenico terminals
Currently we only tell how to setup Ingenico Lane/5000 terminal.
Actually, Lane/5000 and Move/5000 can be set up in almost the same way,
only the button to enter settings is different.

This PR adds a more generic configutation guide applicable  to all the
Ingenico Lane/Desk/Move terminals

Also, it replaces erroneous Worldline mention in the top by Ingenico

task-3879038

closes odoo/documentation#9495

X-original-commit: 23a1c496bf
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
2024-05-28 12:31:24 +00:00
Donatienne (dopi) da6d3e6740 [IMP] website: multiple website
taskid- 3716945

closes odoo/documentation#9370

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-05-28 10:35:17 +00:00
Felicious fade821930 [IMP] inventory: sendcloud shipping info
closes odoo/documentation#9487

X-original-commit: 6305211a1e
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-27 00:42:41 +00:00
Odoo Translation Bot b94d534bae [I18N] Update translation terms from Transifex 2024-05-26 00:41:22 +02:00
Lara Martini (larm) 714b75ce3b [ADD] Employees: new departments doc
closes odoo/documentation#9442

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-24 19:13:00 +00:00
Lara Martini (larm) 59ba096ee2 [ADD] Time Off: Moving TO request to new doc
closes odoo/documentation#9431

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-24 19:12:59 +00:00
Lara Martini (larm) 4e929b4ebc [ADD] referrals: moving share jobs section to new doc
closes odoo/documentation#9425

X-original-commit: 7ec544281b
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-24 19:12:58 +00:00
jero-odoo 905914c939 [ADD] crm: email and manual leads
closes odoo/documentation#9345

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-24 19:12:57 +00:00
Jonathan 801a165df4 [IMP] inventory-mrp: rename the category into Supply Chain
closes odoo/documentation#9464

X-original-commit: 9f279170a5
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-05-24 17:40:01 +00:00
Donatienne (dopi) 693a48f150 [IMP] website: google search console
taskid-3932743

closes odoo/documentation#9399

X-original-commit: abf62125ea
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-05-24 12:49:04 +00:00
jero-odoo 5c781afe88 [MOV] helpdesk: move getting started, reorg toctree
closes odoo/documentation#9440

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-23 16:38:24 +00:00
Ray Carnes eca1b7ffd3 [IMP] eCommerce: fix digital file location on portal
Corrected the part of the Customer Portal where digital products can be found after purchase.

closes odoo/documentation#9437

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-23 06:09:53 +00:00
Felicious de7fd89137 [ADD] inventory: aging report
closes odoo/documentation#9433

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-23 06:09:52 +00:00
Lara Martini (larm) 9fb69e4eaf [ADD] Appraisals: Moving goals to new doc
closes odoo/documentation#9429

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-23 04:39:01 +00:00
500 changed files with 442798 additions and 225961 deletions
@@ -21,7 +21,7 @@ turned into a testing environment.
Deactivated features
====================
Here is a non-exhaustive list of the deactivated parameters:
Here is a non-exhaustive list of the deactivated features:
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
- outgoing emails
@@ -29,6 +29,7 @@ Here is a non-exhaustive list of the deactivated parameters:
- payment providers
- delivery methods
- :abbr:`IAP (In-App Purchase)` tokens
- website visibility (prevent search engines from indexing your site)
.. note::
**A red banner at the top of the screen is displayed on the neutralized database so that it can
+9 -5
View File
@@ -277,18 +277,22 @@ Dependencies
.. tab:: Debian/Ubuntu
For Debian-based systems, the packages are listed in the `debian/control
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
On Debian/Ubuntu, the following commands should install the required packages:
.. code-block:: console
$ cd /CommunityPath
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
$ cd odoo #CommunityPath
$ sudo ./setup/debinstall.sh
The `setup/debinstall.sh` script will parse the `debian/control
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
.. tab:: Install with pip
.. warning::
Using pip may lead to security issues and broken dependencies; only do this if you
know what you are doing.
As some of the Python packages need a compilation step, they require system libraries to
be installed.
+1
View File
@@ -7,5 +7,6 @@ Odoo essentials
essentials/activities
essentials/reporting
essentials/search
essentials/contacts
essentials/export_import_data
essentials/in_app_purchase
+40 -44
View File
@@ -2,20 +2,22 @@
Activities
==========
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
*Activities* are follow-up tasks tied to a record in an Odoo database.
.. _activities/important:
The icon used to display activities varies depending on the :ref:`activity type <activities/types>`:
The icon used to display activities varies, depending on the :ref:`activity type
<activities/types>`:
- :guilabel:`🕘 (clock)`: the default icon, which appears if nothing is scheduled.
- :guilabel:`📞 (phone)`: this icon appears if a phone call is scheduled.
- :guilabel:`✉️ (envelope)`: this icon appears if an email is scheduled.
- :guilabel:`✔️ (checkmark)`: this icon appears if a to-do is scheduled.
- :guilabel:`(group of people)`: this icon appears if a meeting is scheduled.
- :guilabel:`(arrow pointing up above a line)`: this icon appears if a document is scheduled to be
uploaded.
- :guilabel:`(pencil in a box)`: this icon appears if a signature request is scheduled.
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
Schedule activities
===================
@@ -44,13 +46,9 @@ Schedule Activity form <activities/form>`.
Kanban view
-----------
Another way that activities are created is from the Kanban view in an application.
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
.. image:: activities/kanban.png
:align: center
:alt: The Kanban icon in the top menu, highlighted.
To do so, click on the :guilabel:`🕘 (clock)` icon located at the bottom of an individual record.
To do so, click on the |clock| located at the bottom of an individual record.
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
<activities/form>`.
@@ -60,28 +58,26 @@ Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Sch
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. _activities/list:
List view
---------
Activities can also be created from a list view.
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
If the :guilabel:`Activities` column is hidden, reveal it using the :guilabel:`(additional options
toggle)` icon in the far-right of the top row, represented by two horizontal lines with two dots.
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
:guilabel:`(settings adjust)` icon in the far-right of the top row.
Then, click on the :guilabel:`🕘 (clock)` icon for the record the activity is being added to, then
click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form
<activities/form>` that appears.
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
appears.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. image:: activities/schedule-list-activity.png
:align: center
@@ -92,10 +88,10 @@ click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule
Activity view
-------------
Most applications in Odoo have an *Activity* view available. If available, a :guilabel:`🕘 (clock)`
activity icon is visible in the top-right of the main menu bar.
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
the top-right corner of the main menu bar, amongst the other view option icons.
To open the activity view, click the :guilabel:`🕘 (clock)` activity icon.
To open the activity view, click the |clock|.
.. image:: activities/activities.png
:align: center
@@ -114,12 +110,12 @@ If multiple activity types are scheduled for a record, a number appears in the b
total number of scheduled activities.
.. note::
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
regardless of the activity type, or the view.
To schedule an activity for a record, hover over the corresponding field, and a :guilabel:` (plus
sign)` appears. Click the :guilabel:` (plus sign)`, and then :ref:`fill out the Schedule Activity
form <activities/form>`.
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
<activities/form>`.
.. image:: activities/activity-view.png
:align: center
@@ -140,12 +136,6 @@ Enter the following information on the form:
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
Depending on what other applications are installed, additional options may be available.
.. note::
Individual applications have a list of dedicated :ref:`activity types <activities/types>`. For
example, installing the *Sales* application makes :guilabel:`Order Upsell` available, while
installing the *Sign* application makes :guilabel:`Request Signature` available.
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
@@ -187,11 +177,11 @@ buttons:
All scheduled activities
========================
To view a consolidated list of activities, organized by application, click the :guilabel:`🕘
(clock)` icon in the header menu, located in the top-right.
To view a consolidated list of activities, organized by application, click the |clock| in the header
menu, located in the top-right corner.
If any activities are scheduled, the number of activities appear in a red bubble on the
:guilabel:`🕘 (clock)` icon.
|clock|.
All activities for each application are further divided into subsections, indicating where in the
application the activity is to be completed. Each sub-section lists the number of scheduled
@@ -252,6 +242,11 @@ To view the currently configured types of activities in the database, navigate t
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
.. tip::
Individual applications have a list of *Activity Types* dedicated to that application. For
example, to view and edit the activities available for the *CRM* application, go to
:menuselection:`CRM app --> Configuration --> Activity Types`.
.. image:: activities/activity-list.png
:align: center
:alt: The list of activity types already configured and available.
@@ -264,7 +259,7 @@ activity type form loads.
Make any desired changes to the activity type form. The form automatically saves, but it can be
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
:guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
Create new activity types
-------------------------
@@ -347,3 +342,4 @@ It is possible to have another activity either suggested or triggered. To do so,
.. seealso::
- :doc:`../productivity/discuss`
- :doc:`../productivity/discuss/team_communication`
- :doc:`../sales/crm/optimize/utilize_activities`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,238 @@
========
Contacts
========
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
the company does business with through Odoo. A contact is a repository of vital business
information, facilitating communication and business transactions.
Contact form
============
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
:guilabel:`Create`. A new form appears where various contact information can be added.
Contact type
------------
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
Name
----
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
appears throughout the database. This field is **mandatory**.
.. tip::
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
first name field.
Address
-------
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
.. tip::
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
Address`.
Additional fields
-----------------
Additional details are included on the initial form. The following fields are available:
- :guilabel:`VAT`: Value Added Tax number.
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
on :guilabel:`Individual`).
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
:guilabel:`Individual`).
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
message by hovering over the field on the saved form, and clicking the desired option.
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
- :guilabel:`Email`: enter the email address with the domain.
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
menu, and selecting one. To create a new one, type the new tag in the field, and click
:guilabel:`Create` from the resulting drop-down menu.
Contacts & Addresses tab
------------------------
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
example, a specific contact person for the company can be listed here.
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
.. image:: contacts/contact-form-add-address.png
:align: center
:alt: Add a contact/address to the contact form.
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
Address` field at the top to reveal a drop-down menu of address-related options.
Select any of the following options:
- :guilabel:`Contact`: adds another contact to the existing contact form.
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
- :guilabel:`Private Address`: adds a private address to the existing contact form.
.. image:: contacts/create-contact-window.png
:align: center
:alt: Create a new contact/address on a contact form.
Once an option is selected, enter the corresponding contact information that should be used for the
specified address type.
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
selected. This is similar to the :guilabel:`Individual` contact.
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
applicable to the customer or contact.
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
Sales & Purchase tab
--------------------
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
**or** *Point of Sale* applications are installed.
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
:guilabel:`Fiscal Position` from the drop-down menu.
Sales section
~~~~~~~~~~~~~
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
Point Of Sale section
~~~~~~~~~~~~~~~~~~~~~
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
of a *Loyalty Program*.
Purchase section
~~~~~~~~~~~~~~~~
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
Misc section
~~~~~~~~~~~~
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
information for this contact. If this contact should only be accessible for one company in a
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
*Helpdesk* SLA policy to this contact.
Accounting tab
--------------
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
Identifier, if necessary.
Internal Notes tab
------------------
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
left on this contact form, just like on the contact form noted above.
Partner Assignment tab
----------------------
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
Review` configurations. These are **only** present when the *Enterprise Resellers* module is
installed.
Membership tab
--------------
Finally, there is the :guilabel:`Membership` tab, which can help users manage any memberships that
are being offered to this specific contact. It should be noted that this tab only appears when the
*Members* applications is installed.
Smart buttons
=============
At the top of the contact form, there are some additional options available, known as *smart
buttons*.
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
Odoo integrates information from every single app, so there are many smart buttons.
.. example::
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
related to this customer from the *CRM* app are accessible.
.. tip::
If the corresponding applications are installed, their related smart buttons appear
automatically on a contact form.
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
this, should there be any outstanding/on-file for this contact.
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
clicking the :guilabel:`Go to Website` smart button.
Archive contacts
----------------
If a user decides they no longer want to have this contact active, the record can be archived. To do
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
:guilabel:`Archive`.
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
With this contact successfully archived, as indicated by a banner at the top, they do not show up
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
.. tip::
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
the contact is restored.
.. seealso::
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
- `Odoo's eLearning Contacts tutorial
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
.. seealso::
:doc:`Cash basis <accounting/taxes/cash_basis>`
.. _accounting/multi-company:
Multi-company
=============
@@ -15,6 +15,8 @@ When browsing your chart of accounts, you can sort the accounts by :guilabel:`Co
.. image:: chart_of_accounts/chart-of-accounts-sort.png
:alt: Group the accounts by type in Odoo Accounting
.. _chart-of-account/create:
Configuration of an account
===========================
@@ -20,6 +20,8 @@ for use at a later date:
- `Odoo Tutorials: Bank Configuration
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
.. _payments/register:
Registering payment from an invoice or bill
===========================================
@@ -40,6 +40,8 @@ of your organisation as at a particular date.
.. image:: reporting/main_reports09.png
.. _accounting/reporting/balance-sheet:
Profit and Loss
---------------
@@ -49,6 +51,8 @@ report period.
.. image:: reporting/main_reports10.png
.. _accounting/reporting/executive-summary:
Executive Summary
-----------------
@@ -126,6 +130,8 @@ payment during a selected month and several months prior.
.. image:: reporting/main_reports07.png
.. _accounting/reporting/cash-flow-statement:
Cash Flow Statement
-------------------
@@ -121,7 +121,7 @@ available on Odoo.
- :doc:`United Arab Emirates - Accounting <fiscal_localizations/united_arab_emirates>`
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
- Ukraine - Accounting
- United States - Accounting
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
- Uruguay - Accounting
- Venezuela - Accounting
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
@@ -159,3 +159,4 @@ available on Odoo.
fiscal_localizations/vietnam
fiscal_localizations/united_arab_emirates
fiscal_localizations/united_kingdom
fiscal_localizations/united_states
@@ -362,6 +362,16 @@ Send GSTR-1
#. The user can verify the :ref:`GSTR-1 <india/gstr-1_report>` report before uploading it to the
**GST portal** by clicking :guilabel:`GSTR-1 Report`;
#. The user can also get details to be submitted in **GSTR-1** in **Spreadsheet view** by clicking
on :guilabel:`Generate`;
.. image:: india/gst-gstr-1-generate.png
:alt: GSTR-1 generate
.. image:: india/gst-gstr-1-spreadsheet-view.png
:alt: GSTR-1 Spreadsheet View
#. If the **GSTR-1** report is correct, then click :guilabel:`Push to GSTN` to send it to the **GST
portal**. The status of the :guilabel:`GSTR-1` report changes to :guilabel:`Sending`;
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -7,114 +7,336 @@ Kenya
Configuration
=============
:ref:`Install <general/install>` the following modules to get all the features of the Kenyan
localization:
Install the 🇰🇪 **Kenyan** :ref:`fiscal localization package <fiscal_localizations/packages>` to get
all the features of the Kenyan localization.
.. list-table::
:header-rows: 1
eTIMS
=====
* - Name
- Technical name
- Description
* - :guilabel:`Kenyan - Accounting`
- `l10n_ke`
- Installing this module grants you access to the list of accounts used in the local GAAP and
the list of common taxes (VAT, etc.).
* - :guilabel:`Kenyan - Accounting Reports`
- `l10n_ke_reports`
- Installing this module grants you access to improved accounting reports for Kenya, such as
Profit and Loss and Balance Sheets.
The `Kenya Revenue Authority (KRA) <https://www.kra.go.ke/>`_ has implemented the
`electronic Tax Invoice Management System (eTIMS) <https://www.kra.go.ke/online-services/etims>`_
for tax collection.
You also have to install the **Kenya Tremol Device EDI Integration** package to be able to report
your taxes to the **Kenya Revenue Authority (KRA)** using the Tremol G03 Control Unit:
.. list-table::
:header-rows: 1
* - Name
- Technical name
- Description
* - :guilabel:`Kenya Tremol Device EDI Integration`
- `l10n_ke_edi_tremol`
- Installing this module integrates with the Kenyan G03 Tremol control unit device to report
taxes to KRA through TIMS.
.. image:: kenya/modules.png
:align: center
:alt: The three modules for the Kenya Fiscal Localization Package on Odoo
Kenyan TIMS integration
=======================
The Kenya Revenue Authority (KRA) has decided to go digital for tax collection through the **Tax
Invoice Management System (TIMS)**. As of December 1st, 2022, all VAT-registered persons should
comply with TIMS. The goal is to reduce VAT fraud, increase tax revenue, and increase VAT compliance
through standardization, validation, and transmission of invoices to KRA on a real-time or near
real-time basis.
All VAT-registered taxpayers should use a **compliant tax register**. Odoo decided to develop the
integration of the **Tremol G03 Control Unit (type C)**, which can be run locally through USB. This
device validates invoices to ensure financial documents meet the new regulations and send the
validated tax invoices directly to KRA. Installing a proxy server that provides a gateway between
users and the internet is required.
Installing the proxy server on a Windows device
-----------------------------------------------
Go to `odoo.com/download <https://www.odoo.com/page/download>`_, fill out the required information
and click :guilabel:`Download`.
.. image:: kenya/download.png
:align: center
:alt: Install the Proxy Server on a Windows device
Once it is loaded on your computer, a wizard opens. You have to read and agree with the terms of the
agreement. On the next page, select the :guilabel:`type of install: Odoo IoT`. Then, click
:guilabel:`Next` and :guilabel:`Install`. Once completed, click :guilabel:`Next`. Check the
:guilabel:`Start Odoo` box to be redirected to Odoo automatically, and then click :guilabel:`Finish`.
A new page opens, confirming your :doc:`IoT Box <../../general/iot/config/connect>` is up and
running. Connect your physical device **Tremol G03 Control Unit (type C)** to your laptop via USB.
In the :guilabel:`IoT Device` section, check that your Tremol G03 Control Unit (type C) appears,
confirming the connection between the device and your computer.
.. image:: kenya/iot-box.png
:align: center
:alt: Your IoT box is up and running
To submit documents through eTIMS, you must use an :abbr:`OSCU (Online Sales Control Unit)` that
integrates with the existing **Trader Invoicing System (TIS)**, such as the one provided by Odoo.
The OSCU is used to validate, encrypt, sign, transmit, and store tax invoices.
.. note::
If the device is not detected, try to plug it in again or click on the :guilabel:`Restart` button
in the top right corner.
Make sure to :ref:`install <general/install>` the **Kenya eTIMS EDI** modules to use the OSCU
device fully.
.. _kenya/initialization:
OSCU device initialization
--------------------------
The OSCU must be initialized before use. To do so, navigate to :menuselection:`Settings --> General
Settings`, click :guilabel:`Update Info` in the :guilabel:`Companies` section, and enter your
:guilabel:`Tax ID`.
To initialize the OSCU:
#. Go to the :guilabel:`eTIMS` tab.
#. Fill in the :guilabel:`eTIMS Branch Code` and :guilabel:`Serial Number` of the device.
#. Set the :guilabel:`eTIMS Server Mode` to :guilabel:`Test` for the initialization.
#. Tick the **user agreement** and click :guilabel:`Initialize OSCU`.
.. note::
Three server modes are available:
- :guilabel:`Demo`: Designed for demo purposes; it uses mock data and does not require an
initialized OSCU;
- :guilabel:`Test`: Used to test the connection to eTIMS;
- :guilabel:`Production`: Used for live databases that are ready to send data.
.. Important::
If your device has **already been initialized** (through another ERP, for example), enable the
:doc:`../../general/developer_mode`, go to the :guilabel:`eTIMS` tab, and enter the key
obtained through a previous initialization in the :guilabel:`Device Communication Key` field.
Click :guilabel:`Save manually`, then :guilabel:`Initialize OSCU` (which may take a moment to
become available).
eTIMS codes
-----------
Common standard codes are **automatically** fetched from the KRA eTIMS API servers every two days.
To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA standard codes`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Vendors --> KE OSCU Codes` to view the complete list of
fetched OSCU codes.
.. image:: kenya/oscu-codes.png
:alt: List of fetched OSCU codes.
.. _etims/unspsc:
UNSPSC codes
------------
The KRA needs UNSPSC codes for a product to be **registered**. UNSPSC codes are **automatically**
fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch UNSPSC codes from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Vendors --> KE UNSPSC Codes` to view the complete list of
fetched UNSPSC codes.
Notices
-------
Notices are **automatically** fetched from the KRA eTIMS API servers every day. To fetch them
**manually**, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA notices from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the notices.
Go to :menuselection:`Accounting --> Vendors --> KE OSCU Notices` to view the complete list of
fetched notices.
Multi-company
-------------
.. _kenya/branch:
.. seealso::
:doc:`Connect an IoT box to your database <../../general/iot/config/connect>`
:doc:`../../general/companies`
Sending the data to KRA using the Tremol G03 Control Unit
---------------------------------------------------------
If you have :ref:`multiple companies <accounting/multi-company>`, you can centralize and manage them
all on a single Odoo database. The KRA identifies and differentiates the **main** company from
its **subsidiaries** by using IDs. Furthermore, subsidiaries are classified as **branches** of the
main company.
As a pre-requisite, check out that the :ref:`Kenyan Accounting modules
<localization/kenya/configuration>` are installed on your database. Then, go to
:menuselection:`Accounting --> Configuration --> Settings --> Kenya TIMS Integration section`, and
check that the :guilabel:`control Unit Proxy Address` matches the address of the IoT box.
To configure the company ID, open the **Settings** app, click :guilabel:`Update Info` in the
:guilabel:`Companies` section, then click the :guilabel:`eTIMS` tab. The **main company** has a
branch ID equal to `00` in a multi-company environment. Companies that are *not* the main company
have a branch ID other than `00` and are assigned an ID by the KRA.
To send data to KRA, create a new invoice by going to :menuselection:`Accounting Dashboard -->
Customer Invoice card` and clicking :guilabel:`New Invoice`. Upon confirmation of a new invoice, the
:guilabel:`Send invoice to Fiscal Device` button appears. Clicking on it sends the invoice details
to the device and from the device to the government. The :guilabel:`CU Invoice Number` field is now
completed in your invoice, confirming the information has been sent.
To add a branch, go to the :guilabel:`Branches` tab in the **company settings** and click
:guilabel:`Add a line`.
The :guilabel:`Tremol G03 Fiscal Device` tab contains fields that are automatically completed once
the invoice is sent to the government:
- :guilabel:`CU QR Code`: Url from the KRA portal which reflects a QR code.
- :guilabel:`CU Serial Number`: reflects the serial number of the device.
- :guilabel:`CU Signing Date and Time`: The date and time when the invoice has been sent to KRA.
If you click on :guilabel:`Send and Print`, a .pdf of the invoice is generated. The
:guilabel:`Kenyan Fiscal Device Info` is mentioned on the document.
To fetch the **branch ID** from the KRA for your non-main companies, ensure the main company has a
Kenyan :guilabel:`Tax ID` and the OSCU device has been :ref:`initialized <kenya/initialization>`.
Then, go to the :guilabel:`Branches` tab and click :guilabel:`Populate from KRA`.
.. note::
To verify KRA has received the invoice information, take the :guilabel:`CU Invoice Number` and
enter it in the :guilabel:`Invoice Number Checker` section on
`Kenya Revenue Authority website <https://itax.kra.go.ke/KRA-Portal>`_. Click
:guilabel:`Validate` and find the invoice details.
- The KRA considers each **place of supply** as a separate branch (ID).
- The **OSCU** device must be :ref:`initialized independently <kenya/initialization>` for each
branch.
.. image:: kenya/branches.png
:alt: "Populate from KRA" button for branches.
Contact branch ID
-----------------
To attribute a branch ID to a contact, access the contact form, go to the :guilabel:`Accounting`
tab, and enter the branch code in the :guilabel:`eTIMS Branch Code` field.
.. note::
By default, contacts' branch IDs are set to `OO`.
KRA sequences
-------------
.. important::
Odoo invoice sequences and KRA sequences are **different**.
In Odoo, invoice sequences depend on the **main company**. Main companies can see the invoices of
branches, but branches **cannot** see the main company's invoices or those of other branches.
The KRA needs **independent** sequences per branch. Therefore, Odoo manages sequences individually
per branch.
.. example::
If you have a main company with two branches, the invoice sequence would be the following:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00002;
- Creating an invoice on the **main company**: INV/2024/00003.
This is how Odoo manages sequences to be compliant with the KRA regulations:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00001;
- Creating an invoice on the **main company**: INV/2024/00001.
Insurance
=========
For **health service providers**, you can send insurance information about the main and branch
companies and update it in eTIMS. To do so, open the **Settings** app, click :guilabel:`Update Info`
in the :guilabel:`Companies` section, and in the :guilabel:`eTIMS` tab, fill in the fields related
to your company: :guilabel:`Insurance Code`, :guilabel:`Insurance Name`, and :guilabel:`Insurance
Rate`.
.. _kenya/product-registration:
Product registration
====================
The KRA requires **products to be registered** first before conducting business operations (such as
stock movements, :abbr:`BOM (Bill of Materials)`, customer invoices, etc.). For a product to be
registered, the following fields must be defined on the product form:
- In the :guilabel:`General Information` tab: :guilabel:`Cost`.
- In the :guilabel:`Accounting` tab:
- :guilabel:`Packaging Unit`;
- :guilabel:`Packaging Quantity`;
- :guilabel:`Origin Country`;
- :guilabel:`eTIMS Product Type`;
- :guilabel:`Insurance Applicable`;
- :ref:`UNSPSC Category <etims/unspsc>`.
If the elements above are defined, the product is automatically registered while sending the
operation to the KRA. If not, you will be alerted by a yellow banner at the top of the screen
inviting you to check the missing elements.
.. image:: kenya/product-registration.png
:alt: Product registration template.
Stock movements
===============
All **stock movements** must be sent to the KRA. They do not require an invoice if they are
internal operations or stock adjustments; therefore, Odoo automatically sends them if at least one
of the following conditions are met:
#. No contact is set for the move;
#. The contact is your main company or a branch of the main company.
If the stock moves are **external operations** (e.g., to contacts that are not part of the main
company or its branches), the stock moves are automatically sent *after* the invoice is sent to
eTIMS.
.. note::
- The stock move must be confirmed before sending the invoice to eTIMS.
- The product(s) must be :ref:`registered <kenya/product-registration>` for the stock move to be
sent to eTIMS. If the product has not been registered yet, a yellow banner will prompt the
products' registration.
Purchases
=========
Odoo automatically fetches new vendor bills from eTIMS every day. You need to confirm the fetched
vendor bills and send the confirmation to the KRA. To confirm a vendor bill, it must be linked to
one or several confirmed purchase order line(s).
.. _kenya/purchases:
In the case of purchases (not customs imports), the steps to link purchase order lines with bills
are the following:
#. Go to :menuselection:`Accounting --> Vendors --> Bills`.
The vendor bill is fetched from the KRA servers. The JSON file is available in the chatter of the
vendor bill if needed.
#. Odoo looks at the :guilabel:`Tax ID` (PIN) of the vendor (partner);
- If it is unknown, a new contact (partner) is created.
- If it is known and the branch ID is the same, Odoo uses the known contact.
#. In the fetched bill from the KRA, select the :guilabel:`Product`. Each vendor bill *must* contain
a product to be confirmed and sent to eTIMS later on.
#. Odoo checks existing purchase order lines matching the product(s) entered at the previous step
and the partner (if any). Click the :guilabel:`Purchase Order Line` field, and select the correct
related purchase order line(s) matching the product(s). The quantities on the bill *must* be the
same as the received quantities indicated on the purchase order.
If no existing purchase order line matches the lines of the fetched bill, click
:guilabel:`Create Purchase Order` and create a purchase order based on the unmatched line(s).
:guilabel:`Validate` the resulting stock move and :guilabel:`Confirm` the bill.
#. Set a method in the :guilabel:`eTIMS Payment Method` field..
#. Once all steps are completed, click :guilabel:`Send to eTIMS` to send the vendor bill. When the
vendor bill has been confirmed on eTIMS, the **KRA invoice number** can be found in the
:guilabel:`eTIMS Details` tab.
.. image:: kenya/purchase-order-lines.png
:alt: Bill registration steps.
Invoicing
=========
.. note::
The KRA does *not* accept sales if the product is not in stock.
This is the **advised sales flow** in Odoo when selling:
#. Create a **sales order**.
#. :guilabel:`Validate` the delivery.
#. :guilabel:`Confirm` the invoice.
#. Click :guilabel:`Send and print`, and then enable :guilabel:`Send to eTIMS`.
#. Click :guilabel:`Send & print` to send the invoice.
Once the invoice has been sent and signed by the KRA, the following information can be found on
it:
- **KRA invoice number**;
- Mandatory KRA invoice fields, such as **SCU information**, **date**, **SCU ID**, **receipt
number**, **item count**, **internal date**, and **receipt signature**;
- The **KRA tax table**;
- A unique **KRA QR code** for the signed invoice.
Imports
=======
Customs import codes are **automatically** fetched from the KRA eTIMS API servers every day. To
fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Receive Customs Imports from the OSCU`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Vendors --> Customs Imports` to view the imported codes.
The following steps are required to send and have **customs imports** signed by the KRA:
#. Go to :menuselection:`Accounting --> Vendors --> Customs Imports`; The customs import is fetched
automatically from the KRA.
#. Match the imported item with an existing registered product in the :guilabel:`Product` field (or
create a product if no related product exists).
#. Set a vendor in the :guilabel:`Partner` field.
#. Based on the partner, match the imported item with its related purchase order (see
:ref:`purchase steps <kenya/purchases>`). The stock must be correctly adjusted when the customs
import is approved.
If no related purchase order exists, create one and :guilabel:`Confirm` it. Then, confirm the
delivery by clicking :guilabel:`Receive Products`, then :guilabel:`Validate` on the purchase
order.
#. Click :guilabel:`Match and Approve` or :guilabel:`Match and Reject`, depending on the
situation of the goods.
.. note::
The JSON file received from the KRA is attached to the chatter of the customs import.
BOM
===
The KRA requires all BOMs to be sent to them. To send BOMs to eTIMS, the product and its components
*must* be :ref:`registered <kenya/product-registration>`. To access a product's BOM, click on the
product and then click the :guilabel:`Bill of Materials` smart button.
Fill in the KRA's required fields in the :guilabel:`KRA eTIMS details` section of the
:guilabel:`Accounting` tab, then click :guilabel:`Send to eTIMS`. The successful sending of the
BOM is confirmed in the chatter, where you can also find the sent information in an attached JSON
file.
Credit notes
============
The KRA does not accept credit notes with quantities or prices higher than the initial invoice. When
reversing the invoice, a KRA reason must be indicated: in the credit note form, go to the
:guilabel:`eTIMS Details` tab, select the :guilabel:`eTIMS Credit Note Reason`, and then select the
invoice number in the :guilabel:`Reversal of` field.
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -0,0 +1,748 @@
=============
United States
=============
.. |GAAP| replace:: :abbr:`GAAP (Generally Acceptable Accounting Practices)`
.. |FASB| replace:: :abbr:`FASB (Financial Accounting Standards Board)`
.. |SEC| replace:: :abbr:`SEC (Securities and Exchange Commission)`
.. |COA| replace:: :abbr:`CoA (Chart of Accounts)`
.. |AR| replace:: :abbr:`AR (Accounts Receivable)`
.. |AP| replace:: :abbr:`AP (Accounts Payable)`
.. |CFS| replace:: :abbr:`CFS (Cash Flow Statement)`
.. |NACHA| replace:: :abbr:`NACHA (National Automated Clearing House Association)`
.. |ACH| replace:: :abbr:`ACH (Automated Clearing House)`
The Odoo fiscal localization package for the United States follows the Generally Acceptable
Accounting Principles (GAAP) accounting standards and rules used to prepare financial statements,
as outlined by the Financial Accounting Standards Board (FASB) and adopted by the Securities and
Exchange Commission (SEC).
.. seealso::
- `Financial Accounting Standards Board (FASB) <https://asc.fasb.org/Home>`_
- `Securities and Exchange Commission (SEC) <https://www.sec.gov/>`_
In addition, a series of videos on the subject of Accounting are available through Odoo's eLearning
platform. These videos cover how to start from scratch, set up configurations, complete common
workflows, and provide in-depth looks at some specific use cases, as well.
.. seealso::
- `Odoo Tutorials: Accounting & Invoicing
<https://www.odoo.com/slides/accounting-and-invoicing-19>`_
- `Odoo SmartClass: Accounting <https://www.odoo.com/slides/smartclass-accounting-121>`_
Configuration
=============
Below are the available modules in Odoo for accounting use in the United States.
.. note::
The modules listed below are either for reference only or are optional, as the core requirements
to operate under the US fiscal localization in Odoo are already included under the default
package that came installed during database initialization.
Verify the default package is in use by navigating to :menuselection:`Accounting App -->
Settings` and under the :guilabel:`Fiscal Localization` section at the top, look for the `Generic
Chart Template` selection to be listed next to the :guilabel:`Package` field label. This chart
template includes the necessary settings for the US localization for the Odoo *Accounting* app.
.. image:: united_states/us-l10n-generic-chart-template.png
:align: center
:alt: The Generic Chart Template comes pre-configured for the US localization.
Modules installation
--------------------
:ref:`Install <general/install>` the following modules to get all the features of the United States
localization:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`United States - Accounting`
- `l10n_us`
- Base accounting module for United States localization.
* - :ref:`US - Accounting Reports <l10n_us/reports>`
- `l10n_us_reports`
- Adds United States accounting reports.
* - :guilabel:`US Checks Layout`
- `l10n_us_check_printing`
- Enables the printing of payments on pre-printed check paper. Supports the three most common
check formats and will work out of the box with the linked checks from `checkdepot.net
<https://checkdepot.net/collections/computer-checks/Odoo>`_.
- `Check on top: Quicken / QuickBooks standard
<https://checkdepot.net/collections/computer-checks/odoo+top-check>`_
- `Check on middle: Peachtree standard
<https://checkdepot.net/collections/computer-checks/odoo+middle-check>`_
- `Check on bottom: ADP standard
<https://checkdepot.net/collections/computer-checks/odoo+Bottom-Check>`_
* - :ref:`NACHA Payments <l10n_us/nacha>`
- `l10n_us_payment_nacha`
- Export payments as NACHA files for use in the United States.
* - :ref:`1099 Reporting <l10n_us/1099-report>`
- `l10n_us_1099`
- Export 1099 data for e-filing with a 3rd party.
* - :ref:`Avatax <l10n_us/taxes-avatax>`
- `account_avatax`
- Module for the :doc:`AvaTax integration <../accounting/taxes/avatax>` with Odoo.
* - :ref:`United States - Payroll <l10n_us/payroll>`
- `l10n_us_hr_payroll`
- Includes the necessary rules for United States payroll, including:
- Employee Details
- Employee Contracts
- Passport-based Contracts
- Allowances/Deductions
- Allow Configurations for Basic/Gross/Net Salary
- Employee Payslip
- Integration with Leaves Management
* - :ref:`United States - Payroll with Accounting <l10n_us/payroll>`
- `l10n_us_hr_payroll_account`
- Contains the necessary accounting data for the United States payroll rules.
* - :ref:`United States - Payroll - Export to ADP <l10n_us/adp>`
- `l10n_us_hr_payroll_adp`
- Export Work Entries to the ADP payroll software.
.. _l10n_us/coa:
Chart of accounts
=================
The :doc:`chart of accounts (COA) <../accounting/get_started/chart_of_accounts>` for the United
States localization, in Odoo, follows the standard |GAAP| structure, with accounts grouped into
seven main categories, with corresponding numeric values that prefix individual journal entries:
- **Receivable**: the balance of money (or credit) due to the business for goods or services
delivered or used, but not yet paid for by customers. |AR| is indicated by the journal code
labeled (or beginning) with :guilabel:`1`.
- **Payable**: the business's short-term obligations owed to its creditors or suppliers, which have
not yet been paid. |AP| is indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Equity**: the amount of money that would be returned to a company's shareholders if all of the
assets were liquidated and all of the company's debt was paid off in the case of liquidation.
Equity is indicated by the journal code labeled (or beginning) with :guilabel:`3` or
:guilabel:`9`.
- **Assets**: items listed on the balance sheet that contains economic value or have the ability to
generate cash flows in the future, such as a piece of machinery, a financial security, or a
patent. Assets are indicated by the journal code labeled (or beginning) with :guilabel:`1`.
- **Liability**: refers to a company's financial debts or obligations that arise during the course
of business operations. Liabilities are indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Income**: synonymous with *net income*, this is the profit a company retains after paying off
all relevant expenses from sales revenue earned. Income is indicated by the journal code labeled
(or beginning) with :guilabel:`4` or :guilabel:`6`.
- **Expenses**: the cost of operations that a company incurs to generate revenue. Expenses are
indicated by the journal code labeled (or beginning) with a :guilabel:`6`.
.. tip::
Predefined accounts are included in Odoo, as part of the |CoA| that's installed with the US
localization package. The accounts listed below are preconfigured to perform certain operations
within Odoo. It is recommended to **not** delete these accounts; however, if changes are needed,
rename the accounts instead.
.. list-table::
:header-rows: 1
:stub-columns: 1
* - :guilabel:`Type`
- :guilabel:`Account Name`
* - :guilabel:`Current Assets`
- | :guilabel:`Bank Suspense Account`
| :guilabel:`Outstanding Receipts`
| :guilabel:`Outstanding Payments`
| :guilabel:`Liquidity Transfer`
| :guilabel:`Stock Valuation`
| :guilabel:`Stock Interim (Received)`
| :guilabel:`Stock Interim (Delivered)`
| :guilabel:`Cost of Production`
* - :guilabel:`Income`
- | :guilabel:`Foreign Exchange Gain`
| :guilabel:`Cash Difference Gain`
| :guilabel:`Cash Discount Gain`
* - :guilabel:`Expenses`
- | :guilabel:`Cash Discount Loss`
| :guilabel:`Foreign Exchange Loss`
| :guilabel:`Cash Difference Loss`
* - :guilabel:`Current Year Earnings`
- :guilabel:`Undistributed Profits/Losses`
* - :guilabel:`Receivable`
- :guilabel:`Account Receivable`
* - :guilabel:`Payable`
- :guilabel:`Account Payable`
.. seealso::
- :doc:`../accounting/get_started/chart_of_accounts`
- :doc:`../accounting/get_started/cheat_sheet`
View, edit, and sort accounts
-----------------------------
Access the *Chart of Accounts* dashboard in Odoo by navigating to :menuselection:`Accounting app
--> Configuration --> Accounting: Chart of Accounts`.
From the :guilabel:`Chart of Accounts` dashboard, create new accounts by clicking the purple
:guilabel:`New` button in the top-left corner of the dashboard and :ref:`filling in the
corresponding form <chart-of-account/create>`. Search and sort through existing accounts by using
specific :guilabel:`Filters` and :guilabel:`Group By` criteria, which are available in the mega menu
under the :guilabel:`Search...` bar.
To filter accounts by category, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to
access the mega menu and look under the :guilabel:`Filters` column for individual selections.
Clicking on a specific category will only show accounts that match that particular filter.
To view all the available account types, remove all of the filters in the :guilabel:`Search...` bar,
and then click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to access the mega menu. From
there, select :guilabel:`Account Type` under the :guilabel:`Group By` column heading to list all of
the account types in the table.
.. image:: united_states/us-l10n-coa-account-types.png
:align: center
:alt: Chart of Accounts grouped by Account Type.
Besides structure, there are other key differences in the chart of accounts in the United States,
compared to other countries:
- **Specificity**: US |GAAP| often requires more detailed accounts compared to some other countries.
This can include separate accounts for various types of revenue, expenses, and assets, providing
more granular information in financial reports.
- **Regulatory Requirements**: In the United States, there are specific regulatory requirements set
by bodies such as the |SEC| for publicly traded companies. These requirements may influence the
structure and content of the |COA| to ensure compliance with reporting standards.
- **Industry Practices**: Certain industries in the United States may have unique accounting
requirements or specialized |COA| structures. For example, financial institutions often have
specific accounts related to loans, investments, and interest income.
- **Tax Considerations**: The |COA| may also reflect tax considerations, such as accounts for
deductible expenses, deferred tax assets, and liabilities, to ensure compliance with tax laws and
facilitate tax reporting.
These differences, ultimately, should be reflected in the |COA| structure itself, with the addition
of new accounts, as needed, in order to meet the demands of US accounting reporting requirements.
.. seealso::
- :ref:`Create a new account <chart-of-account/create>`
- :doc:`../../essentials/search`
.. _l10n_us/taxes:
Taxes
=====
In the United States, tax rates and what is considered taxable vary by jurisdiction. Default *Sales*
and *Purchase* taxes are created automatically when the Odoo *Accounting* application is installed.
To manage existing or configure additional taxes, navigate to :menuselection:`Accounting -->
Configuration --> Taxes`.
.. _l10n_us/taxes-avatax:
AvaTax
------
**Avalara AvaTax** is a cloud-based tax calculation and compliance software that integrates with
Odoo for the United States and Canadian accounting localizations. Integrating AvaTax with Odoo
provides real-time and region-specific tax calculations when items are sold, purchased, and invoiced
in the database.
.. important::
AvaTax is only available for integration with databases/companies that have locations in the
United States and Canada. This means the fiscal position/country of a database can only be set to
the United States or Canada. Reference this documentation for more information:
:ref:`avatax/fiscal_country`.
.. seealso::
Refer to the documentation articles below to integrate and configure an AvaTax account with an
Odoo database:
- :doc:`AvaTax integration <../accounting/taxes/avatax>`
- :doc:`Avalara management portal <../accounting/taxes/avatax/avalara_portal>`
- :doc:`Calculate taxes with AvaTax <../accounting/taxes/avatax/avatax_use>`
- `US Tax Compliance: AvaTax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
- Avalara's support documents: `About AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
.. _l10n_us/reports:
Reports
=======
A number of :doc:`report selections <../accounting/reporting>` are readily available for the US
localization, under the :menuselection:`Accounting app --> Reporting` drop-down menu:
- :ref:`Balance Sheet <reporting/balance-sheet>`: a "snapshot" of a company's financial position at
a specific point in time, which contains an overview of a company's assets, liabilities, and
equity.
- :ref:`Profit & Loss <accounting/reporting/balance-sheet>`: otherwise known as a *P&L statement* or
*income statement*, provides a summary of a company's revenues, expenses, and profits/losses over
a given period of time.
- :ref:`Cash Flow Statement <l10n_us/cash-flow-statement>`: shows how much cash and cash equivalents
a company has received and spent in a given period.
- :ref:`Executive Summary <accounting/reporting/executive-summary>`: an overview report that covers
the key performance indicators of a company's financial position, such as revenue, profit, and
debt.
- :ref:`Tax Report <reporting/tax-report>`: an official form filed for a tax authority that reports
income, expenses, and other pertinent tax information. Tax reports allow taxpayers to calculate
their tax liability, schedule tax payments, or request refunds for the overpayment of taxes. In
Odoo, the tax report can be made monthly, every two months, quarterly, every 4 months,
semi-annually, and annually.
- :guilabel:`Check Register`: a report that displays cash transactions (regardless of the journal)
with their running balance after the transaction. Only visible with the *US - Accounting Reports*
(`l10n_us_reports`) module installed.
- :ref:`1099 Report <l10n_us/1099-report>`: a CSV download of payments made to non-employees in a
period to file electronically in a third-party service. Only visible with the *1099 Reporting*
(`l10n_us_1099`) module installed.
.. _l10n_us/report-filters:
Depending on the type of report, certain filters are available at the top of the dashboard:
- a *date* filter, indicated by a :icon:`fa-calendar` :guilabel:`(calendar)` icon that precedes a
date in *MM/DD/YYYY* format. Use this to select a specific date or date range for the report.
- a :icon:`fa-bar-chart` :guilabel:`Comparison` filter, to compare reporting periods against each
other
- a *journal* filter, as indicated by a :icon:`fa-book` :guilabel:`(book)` icon and the default
setting of :guilabel:`All Journals`. Use this filter to specify which journals should be included
in the report.
- an *entries type* filter, as indicated by a :icon:`fa-filter` :guilabel:`(filter)` icon, with the
default setting of :guilabel:`Posted Entries Only, Accrual Basis`. Use this filter to determine
which type of journal entries should be included in the report (e.g. posted or draft), along with
the type of accounting method (e.g. accrual or cash basis).
- There are view options in this filter, as well, one that will :guilabel:`Hide lines at 0` for
more relevant viewing, along with a :guilabel:`Split Horizontally` option to keep the report
above the screen's fold, removing the need to scroll.
.. image:: united_states/us-l1on-accounting-method-reporting-menu.png
:align: center
:alt: Accounting method filter menu for reports, covering accrual vs. cash basis methods.
- a *decimal* filter, that by default, includes figures with cents, as indicated by the
:guilabel:`In .$` setting. Use the other options in the drop-down menu to change figures in the
report to whole numbers (:guilabel:`In $`), thousands (:guilabel:`In K$`), or millions
(:guilabel:`In M$`) formats.
- a report *customization* filter, indicated by the :icon:`fa-cogs` :guilabel:`(gears)` icon. Use
this filter to customize the current report's sections and line items, or build new reports, as
desired.
.. seealso::
- :doc:`Accounting reporting <../accounting/reporting>`
- :doc:`../../essentials/search`
.. _l10n_us/1099-report:
1099 report
-----------
The 1099 report, available by :ref:`installing <general/install>` the *1099 Reporting*
(`l10n_us_1099`) module, includes payments that are made to non-employees across a given reporting
period. Use the available CSV download from the report in Odoo to file 1099 payments electronically
via a third-party service.
To generate a 1099 report, navigate to :menuselection:`Accounting app --> Reporting --> Management:
1099 Report` to open a :guilabel:`1099 Report` wizard.
First, enter the date range of the transactions to report in the :guilabel:`Start Date` and
:guilabel:`End Date` fields.
Then, edit the journal items that appear on the wizard. Click :guilabel:`Add a line` to add any
items that are missing. Be sure to remove any items that should not be included in the report by
clicking :icon:`fa-times` :guilabel:`(delete)` on the row.
Finally, once all necessary items are included in the 1099 report, click on the :guilabel:`Generate`
button. Doing so, downloads a CSV file that groups transactions by the partner that received the
payments.
.. _l10n_us/cash-flow-statement:
Cash flow statement
-------------------
Navigate to the *Cash Flow Statement* (CFS) dashboard by going to :menuselection:`Accounting app -->
Reporting --> Statement Reports: Cash Flow Statement`. From here, |CFS| reports can be generated
using the various :ref:`filters <l10n_us/report-filters>` that are available at the top of the
dashboard.
Odoo uses the *direct* cash flow method to compile cash flow statements, which measures actual cash
inflows and outflows from the company's operations, such as when cash is received from customers or
when cash payments are made to suppliers.
By default, an account labeled with any of the three default :guilabel:`Tags` on the
:guilabel:`Chart of Accounts` dashboard will be included in the report, which includes:
:guilabel:`Operating Activities`, :guilabel:`Financing Activities`, and :guilabel:`Investing &
Extraordinary Activities`.
.. image:: united_states/us-l10n-cash-flow-statement-tags.png
:align: center
:alt: Examples of tagged accounts that are included in the Cash Flow Statement in Odoo.
Additionally, the cash flow statement in Odoo:
- is limited to the *Bank* and *Cash* journals to reflect money coming in or out; and
- also contains *Expenses* accounts, to show the counterpart transactions versus *Bank* or *Cash*
journal entries, while excluding |AR| and |AP| activity.
.. example::
Create a vendor bill for $100, as an operating expense (not |AP|). Doing so will **not** reflect
a transaction on the cash flow statement. However, register a corresponding payment for $100,
and the transaction **will** reflect on the cash flow statement as :guilabel:`Cash paid for
operating activities`.
.. image:: united_states/us-l10n-operating-expenses-example.png
:align: center
:alt: Example of a bill registered as an operating expense as part of a cash flow statement.
.. _l10n_us/cash-discount:
Cash discount
=============
Cash discounts can be configured from :menuselection:`Accounting app --> Payment Terms`. Each
payment term can be set up with a cash discount and reduced tax.
.. seealso::
:doc:`../accounting/customer_invoices/cash_discounts`
.. _l10n_us/writing-checks:
Writing checks
==============
Using checks is still a common payment practice in the US. Be sure the *US Checks Layout*
(`l10n_us_check_printing`) module for the US localization is :ref:`installed <general/install>`.
To enable check printing from Odoo, navigate to :menuselection:`Accounting --> Configuration -->
Settings` and find the :guilabel:`Vendor Payments` section. From here, tick the :guilabel:`Checks`
checkbox to reveal several fields for check configuration.
Select a :guilabel:`Check Layout` from the drop-down menu:
- :guilabel:`Print Check (Top) - US`
- :guilabel:`Print Check (Middle) - US`
- :guilabel:`Print Check (Bottom) - US`
Next, choose whether or not to enable the :guilabel:`Multi-Pages Check Stub` checkbox.
Optionally set a :guilabel:`Check Top Margin` and :guilabel:`Check Left Margin`, if required.
Once all check configurations are complete, :guilabel:`Save` the settings.
.. tip::
Some of the check formats may require pre-printed paper from a third party vendor,
https://checkdepot.net/collections/odoo-checks is recommended.
.. seealso::
:doc:`../accounting/payments/pay_checks`
.. _l10n_us/payroll:
Payroll
=======
The *Payroll* application is responsible for calculating an employee's pay, taking into account all
work, vacation, and sick time, benefits, and deductions. The *Payroll* app pulls information from
the *Attendances*, *Timesheets*, *Time Off*, *Employees* and *Expenses* applications, to calculate
the worked hours and compensation for each employee.
When using an external payroll provider, such as *ADP*, it is necessary to export the various
payroll-related data, such as work entries, repayment of expenses, taxes, commissions, and any other
relevant data, so the data can be uploaded into the payroll provider, who then issues the actual
paychecks or directly deposits the funds into an employee's bank account.
In order to export the payroll data, the work entries must first be validated and correct. Refer to
the :doc:`work entries <../../hr/payroll/work_entries>` documentation for more information
regarding validating work entries.
Once work entries are validated, the information can be :ref:`exported to ADP <l10n_us/adp>`.
After payments have been issued to employees, payslips can be processed into batches, validated, and
posted to the corresponding accounting journals to keep all financial records in Odoo current.
Required information
--------------------
It is important to have the *Employees* application installed, and all employee information
populated. Several fields in both the :ref:`employee records <l10n_us/payroll-employee-records>`, as
well as in an :ref:`employee contracts <l10n_us/payroll-employee-contracts>`, are necessary to
properly process the employee's pay. Ensure the following fields are filled out in their respective
places.
.. _l10n_us/payroll-employee-records:
Employee records
~~~~~~~~~~~~~~~~
In each employee record, there is various information the *Payroll* application requires to properly
process payslips, including various banking, tax, and work information.
Navigate to the :menuselection:`Employees app` and select an employee record to view the sections of
the employee form that directly affect *Payroll*:
- :guilabel:`Work Information` tab:
- :guilabel:`Work Address`: indicates where the employee is located, including the state, which
affects the tax calculations.
- :guilabel:`Working Hours`: determines how pay is calculated, and determines if an employee earns
overtime.
- :guilabel:`Private Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Bank Account Number`: the bank account associated with the NACHA payment file.
- :guilabel:`HR Settings` tab:
- :guilabel:`Federal Tax Filing Status`: the tax status an employee uses for Payroll tax
calculations, which can be different from their state status.
- :guilabel:`State Tax Filing Status`: the tax status an employee uses for their state portion of
the Payroll tax calculation.
- :guilabel:`W-2 Form`: a US tax form indicating the summary of wages, taxes, and benefits paid to
an employee during a tax period (typically one year).
- :guilabel:`W-4 Form`: an IRS form that helps outline the amount of federal taxes to withhold for
an employee, which is paid to the IRS by the company.
.. _l10n_us/payroll-employee-contracts:
Employee contracts
~~~~~~~~~~~~~~~~~~
Additionally, there is information that is found in an employee contract that also affects the
*Payroll* application.
Navigate to the :menuselection:`Employees app --> Employees --> Contracts` and select a contract
record to view the sections of a contract that directly affect *Payroll*:
- :guilabel:`General Information`:
- :guilabel:`Salary Structure Type: United States: Employee`: defines when the employee is paid,
their working schedule, and the work entry type.
- :guilabel:`Work Entry source`: determines how work entries are calculated.
- :guilabel:`Salary Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Wage type`: determines how the employee is paid, wether a Fixed wage (salary) or
Hourly wage.
- :guilabel:`Schedule Pay`: defines how often the employee is paid, either :guilabel:`Annually`,
:guilabel:`Semi-annually`, :guilabel:`Quarterly`, :guilabel:`Bi-monthly`, :guilabel:`Monthly`,
:guilabel:`Semi-monthly`, :guilabel:`Bi-weekly`, :guilabel:`Weekly`, or :guilabel:`Daily`. In
the US, Semi-monthly (24 payments a year) or bi-weekly (26 payments a year) are the most common.
- :guilabel:`Wage, Yearly, and Monthly cost`: used to show the total cost of an employee. It is
recommended to populate the :guilabel:`Yearly` wage first, as it auto-populates the other
fields.
- :guilabel:`Pre-tax benefits`: populate this section according to the employee's selections.
Pre-tax benefits decrease the gross wage, which lowers the base amount that is taxed. These are
displayed at the beginning of the payslip.
- :guilabel:`Post-tax benefits`: these benefits are deductions made *after* taxes are calculated.
These appear towards the end of the payslip before the net amount is displayed.
.. seealso::
:doc:`Employees documentation <../../hr/employees/new_employee>`
.. _l10n_us/adp:
Export work entries to ADP
--------------------------
Requirements
~~~~~~~~~~~~
In order to create a report that can be uploaded to ADP, there are some initial configuration steps
that must be completed first.
First, ensure the *United States - Payroll - Export to ADP* (`l10n_us_hr_payroll_adp`) module is
:ref:`installed <general/install>`.
Then, the company **must** have an *ADP Code* entered in the company settings. To do so, navigate
to :menuselection:`Payroll app --> Configuration --> Settings`. Enter the :guilabel:`ADP Code` in
the :guilabel:`US Localization` section.
Next, work entry types **must** have the correct ADP code listed in the *External Code* field for
each work entry type that is being referenced.
Lastly, every employee **must** have an *ADP Code* entered on their employee form. To do so,
navigate to :menuselection:`Employees app`, select an employee record, and open the :guilabel:`HR
Settings` tab. Enter the :guilabel:`ADP Code` in the :guilabel:`ADP Information` section.
The :guilabel:`ADP Code` code is how ADP identifies that particular employee, and is typically a
six-digit number.
.. seealso::
- :ref:`payroll/new-work-entry`
- :doc:`../../hr/employees/new_employee`
Export data
~~~~~~~~~~~
Once :doc:`work entries <../../hr/payroll/work_entries>` have been verified, the information can be
exported to a CSV file, which can then be uploaded into ADP.
To export the data, navigate to :menuselection:`Payroll app --> Reporting --> United States: ADP
Export`, then click :guilabel:`New`. Next, enter the :guilabel:`Start Date` and :guilabel:`End Date`
for the work entries using the calendar pop-over.
Then, enter a :guilabel:`Batch ID` in the corresponding field. The recommendation for this field is
to enter the date in a `YY-MM-DD` format, followed by any other characters to distinguish that
specific batch, such as a department name, or any other defining characteristics for the batch.
Enter a :guilabel:`Batch Description` in the corresponding field. This should be short and
descriptive, but distinct from the :guilabel:`Batch Name`.
Ensure the correct company populates the :guilabel:`Company` field. Change the selected company with
the drop-down menu, if needed.
Lastly, add the employee's work entry information to the list. Click :guilabel:`Add a line` and an
:guilabel:`Add: Employee` pop-up window loads. The list can be :doc:`filtered
<../../essentials/search>` to more easily find the employees to add to the list.
.. tip::
Process the data export in multiple groups instead of in one large group that contains all
employees. This helps to meaningfully differentiate the batches and makes processing more
tenable, overall. The most common ways to group employees is by department, or by wage type
(hourly or salaried).
Select the employees to add to the list by ticking the box to the left of their name. Once all
desired employees have been selected, click the :guilabel:`Select` button in the lower-left corner,
and the employees appear in the list.
To create the CSV file, click the :guilabel:`Generate` button in the top-left corner.
.. _l10n_us/ach-electronic-transfers:
ACH - electronic transfers
==========================
Automated Clearing House (ACH) payments are a modern way to transfer funds electronically between
bank accounts, replacing traditional paper-based methods. |ACH| payments are commonly used for
direct deposits, bill payments, and business transactions.
Receive ACH payments: payment provider integration
--------------------------------------------------
|ACH| payments are supported by *Authorize.net* and *Stripe* payment integrations in Odoo.
.. seealso::
- :ref:`Setting up Authorize.net for ACH payments (Odoo) <authorize/ach_payments>`
- `Authorize.net's ACH payment processing for small businesses documentation
<https://www.authorize.net/resources/blog/2021/ach-payments-for-small-businesses.html>`_
- :doc:`Setting up Stripe for ACH payments (Odoo) <../payment_providers/stripe>`
- `Stripe's ACH Direct Debit documentation <https://docs.stripe.com/payments/ach-debit>`_
.. _l10n_us/nacha:
Send payments: NACHA files
--------------------------
Odoo can generate a National Automated Clearing House Association (NACHA) compatible |ACH| file to
send to a company's bank. For each individual *Bank* journal that the company wishes to pay vendors
with, a |NACHA| configuration section needs to be filled out on the Odoo database.
Configuration
~~~~~~~~~~~~~
First, navigate to the :menuselection:`Accounting app --> Configuration --> Journals`. Open the
bank journal and click into the :guilabel:`Outgoing Payments` tab.
.. image:: united_states/us-l10n-nacha-settings.png
:align: center
:alt: NACHA (National Automated Clearing House Association) configuration settings on Odoo.
.. note::
The following |NACHA| configuration information is normally provided by the company's financial
institution once they have been approved to send payments via their account.
Under the section labeled, :guilabel:`NACHA configuration` are the fields required to generate a
|NACHA| compatible |ACH| file to send to a company's bank. First, enter the routing number of the
financial institution in the field labeled, :guilabel:`Immediate Destination`. This information is
widely available on the Internet and generally varies by bank location. This number is usually
provided during the initial account setup.
Next, enter the registered name of the financial institution in the field called,
:guilabel:`Destination`. This information will be provided by the bank or credit union.
Following the :guilabel:`Destination` field is the :guilabel:`Immediate Origin` field. Enter the
9-digit company ID or Employer Identification Number (EIN) into this field. This information is
provided by the financial institution.
Next, enter the :guilabel:`Company Identification` number, which is a 10-digit number made from
combining the 9-digit company ID or Employer Identification Number (EIN), along with an additional
number at the start of the sequence. This number is often a `1`. Check with the financial
institution should this first number differ to verify that it is correct, as this number is provided
for |ACH| approved accounts.
Enter the :guilabel:`Originating DFI Identification` number next, which should contain an assigned
8-digit number from the financial institution.
.. important::
Enter the numerical values in this section *exactly* as the company's financial institution
(e.g. bank or credit union) has provided them, otherwise risk failing a successful |NACHA|
configuration in Odoo.
.. image:: united_states/us-l10n-nacha-dropdown.png
:align: center
:alt: NACHA settings with the standard entry class code drop-down menu highlighted.
There are two options for the next field: :guilabel:`Standard Entry Class Code`. Select the
drop-down menu to the right of the field and pick either :guilabel:`Corporate Credit or Debit (CCD)`
or :guilabel:`Prearranged Payment and Deposit (PPD)`. Again, this information will be provided by
the financial institution. By default :guilabel:`Corporate Credit or Debit (CCD)` is selected.
Finally, the last option is for :guilabel:`Generated Balanced Files`. Tick the checkbox to the right
of the field to enable :guilabel:`Generated Balanced Files`. Consult the company's accountant or
financial advisor to make an informed decision for this field.
Manually save the configuration by clicking the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)`
icon, or navigate away from this screen to auto-save. The configuration is now complete.
.. _l10n_us/batch-payment:
Create batch payment
~~~~~~~~~~~~~~~~~~~~
Now, record each payment in Odoo using the |NACHA| payment method.
.. seealso::
:ref:`Register Payments in Odoo <payments/register>`
.. important::
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
associated with each payment or the file needs to be sent prior to the cut-off, if the dates
included in it match today's date. Consult the financial institution for the exact cut-off time
for their processing of same-day payments.
Once all the payments to be included in the |NACHA| |ACH| file have been made, a batch payment needs
to be made from the :icon:`fa-cog` :guilabel:`Action` menu.
To create the batch payments, access the payments page, by navigating to :menuselection:`Accounting
--> Vendors --> Payments`. Select all the payments that should be included in the |NACHA| |ACH|
file, by ticking the checkboxes to the far-left of the rows.
.. image:: united_states/us-l10n-create-batch-payments.png
:align: center
:alt: On the payments screen, the action menu is highlighted with create a batch payment
selected.
.. warning::
All payments in the batch must share the same payment method.
Next, navigate to the batched payment (:menuselection:`Accounting --> Vendors --> Batch Payments`).
Click into the payment just created and then click into the :guilabel:`Exported File` tab. The
generated file is listed with the :guilabel:`Generation Date`. Click the :icon:`fa-download`
:guilabel:`(download)` button to download the file.
.. image:: united_states/us-l10n-batch-file.png
:align: center
:alt: The exported file tab highlighted in the batch payment with the download circled.
If any adjustments need to be made, click the :guilabel:`Re-generate Export File` button to recreate
a new |NACHA| |ACH| file.
.. seealso::
- :doc:`../accounting/payments/batch`
- :doc:`Europe's direct debiting <../accounting/payments/batch_sdd>`
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -50,6 +50,8 @@ customer's card, but not charged yet.
.. seealso::
- :doc:`../payment_providers`
.. _authorize/ach_payments:
ACH payments (USA only)
=======================
@@ -12,8 +12,9 @@ Outgoing emails
Email is not sent
-----------------
The first indicator showing that an email has not been sent is the presence of a red :guilabel:`✉️
(envelope)` icon, next to the date and time of the message, located in the chatter.
The first indicator showing that an email has not been sent is the presence of a red
:icon:`fa-envelope` :guilabel:`(envelope)` icon, next to the date and time of the message, located
in the chatter.
.. image:: faq/red-envelop.png
:align: center
@@ -42,13 +43,18 @@ Odoo's email servers from being blacklisted.
Here are the default limits for new databases:
- **200 emails per day** for Odoo Online and Odoo.sh databases with an active subscription.
- **20 emails per day** for one-app free databases.
- **50 emails per day** for trial databases.
- In the case of migration, the daily limit might be reset to 50 emails per day.
- **50 emails per day** for one-app free and trial databases.
.. important::
In a one-app free database, if the *Email Marketing* app is installed, the email limit is **20
emails per day**.
.. note::
In the case of migration, the daily limit might be reset to 50 emails per day.
If the daily limit is reached:
- Contact the Odoo support team, who may increase the daily limit depending on the following
- Contact the Odoo support team, who may increase the daily limit, depending on the following
factors:
#. How many users are in the database?
@@ -72,7 +78,7 @@ If the daily limit is reached:
SMTP error
**********
Simple Mail Transport Protocol (SMTP) error messages explain why an email wasn't transmitted
*Simple Mail Transport Protocol (SMTP)* error messages explain why an email was not transmitted
successfully. :abbr:`SMTP (Simple Mail Transport Protocol)` is a protocol to describe the email
structure, and transmits data from messages over the Internet. The error messages generated by email
services are helpful tools to diagnose and troubleshoot email problems.
@@ -83,9 +89,9 @@ services are helpful tools to diagnose and troubleshoot email problems.
mta4471.mail.bf1.yahoo.com --- Below this line is a copy of the message.`
The debug menu can be used to investigate SMTP sending issues from a database. To access the menu,
:ref:`developer mode <developer-mode>` must be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top right of the menu bar (the :guilabel:`🐞 (bug)` icon),
:menuselection:`Debug Menu --> Manage Messages`
:ref:`developer mode <developer-mode>` **must** be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top-right of the menu bar (the :icon:`fa-bug` :guilabel:`(bug)`
icon), and select :menuselection:`Debug Menu --> Manage Messages` from the resulting drop-down menu.
The :guilabel:`Manage Messages` menu opens a list of all the messages sent in a particular record.
Within each message there is information on sending, including the type, and subtype, of the
@@ -128,11 +134,10 @@ Email is sent late
Email campaigns send at a scheduled time, using a delay pre-programed in the database. Odoo uses a
delayed task to send emails that are considered "not urgent" (newsletter formats, such as: mass
mailing, marketing automation, and events). The system utility **cron** can be used to schedule
programs to run automatically at predetermined intervals. Odoo uses that policy in order to avoid
cluttering the mail servers and, instead, prioritizes individual communication. This **cron** is
called :guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode
<developer-mode>` by going to :menuselection:`Settings app --> Technical menu --> Automation -->
Scheduled Actions`.
programs to run automatically at predetermined intervals. Odoo uses that policy to avoid cluttering
the mail servers and, instead, prioritizes individual communication. This **cron** is called
:guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode <developer-mode>`
by going to :menuselection:`Settings app --> Technical menu --> Automation: Scheduled Actions`.
.. image:: faq/email-scheduled-later.png
:align: center
@@ -154,9 +159,9 @@ invoices, purchase orders, etc.) are sent immediately.
Incoming emails
===============
When there is an issue with incoming emails, there might not be an indication, per se, in Odoo. It
is the sending email client, who tries to contact a database, that will get a bounce-back message
(most of the time a :guilabel:`550: mailbox unavailable` error message).
When there is an issue with incoming emails, there might not be an indication in Odoo. It is the
sending email client, who tries to contact a database, that gets a bounce-back message (most of the
time it is a :guilabel:`550: mailbox unavailable` error message).
Email is not received
---------------------
@@ -229,5 +234,5 @@ of what can be helpful when reaching out to the Odoo Support team about an issue
.. note::
The bounce system parameter needs to be set in the technical settings in order for the database
to correctly receive bounce messages. To access this setting, go to :menuselection:`Settings app
--> Technical menu --> Parameters --> System Parameters`. Then select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it isn't already set.
--> Technical menu --> Parameters: System Parameters`. Then, select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it is not already set.
+10 -154
View File
@@ -1,3 +1,5 @@
:show-content:
==========
Appraisals
==========
@@ -168,29 +170,6 @@ document.
.. note::
In previous versions of Odoo, this section was referred to as :guilabel:`Surveys`.
Tags
----
An additional feature of the *Appraisals* application is the ability to set :ref:`goals
<appraisals/goals>` for employees. On each goal form, there is a field to add tags. The available
tags are pulled from a list that is configured from the settings.
To view a list of all existing goal tags, and to create new tags, go to the :guilabel:`Goal Tags`
page, by navigating to :menuselection:`Appraisals application --> Configuration --> Tags`.
All currently configured tags are presented in a list view.
The *Appraisals* application does **not** have any pre-configured tags, so all tags need to be added
from this list, or directly from the goal form.
To create a new tag from the :guilabel:`Goal Tags` page, click the :guilabel:`New` button, and a
blank line appears.
Enter the name of the tag on the line. Then, press the enter key to save the tag, and create a new
blank line. Repeat this for all tags that need to be added.
The list of tags is automatically arranged in alphabetical order.
Appraisals
==========
@@ -455,137 +434,14 @@ Next, click on the :guilabel:`Meeting` smart button, and the calendar loads. Fol
directions above to create the meeting.
.. note::
If no meetings are scheduled, the :guilabel:`Meeting` smart button says :guilabel:`No Meeting`.
If no meetings are scheduled, the :guilabel:`Meeting` smart button reads :guilabel:`No Meeting`.
.. _appraisals/goals:
.. seealso::
- :doc:`appraisals/goals`
- :doc:`appraisals/reporting`
Goals
=====
.. toctree::
:titlesonly:
The ability to set goals for employees to work toward is an important feature of Odoo *Appraisals*.
Goals are typically set during an appraisal, so the employee knows what they need to work toward
before their next appraisal.
To view all goals, navigate to :menuselection:`Appraisals application --> Goals`. This presents all
the goals for every employee, in a default Kanban view.
Each goal card contains the following information:
- :guilabel:`Skill`: the name of the goal.
- :guilabel:`Name`: the employee the goal is assigned to.
- :guilabel:`Deadline`: the due date for the goal.
- :guilabel:`Progress`: the percentage of competency set for the goal.
- :guilabel:`Employee`: the profile icon of the employee the goal is assigned to.
If a goal is completed, a :guilabel:`Done` banner appears in the top-right corner of the goal card.
.. image:: appraisals/goals.png
:align: center
:alt: The goals Kanban view, with nine goal cards.
.. note::
Every individual goal requires its own entry for each employee. If employees have the same goal,
a goal card for each employee appears on the list. For example, if both Bob and Sara have the
same goal of `Typing`, two cards appear in the Kanban view: one `Typing` goal for Bob, and
another `Typing` goal for Sara.
New goal
--------
To create a new goal, navigate to :menuselection:`Appraisals application --> Goals`, and click
:guilabel:`New` to open a blank goal form.
Enter the information on the card. The information requested is all the same information that
appears on the :ref:`goal card <appraisals/goals>` in the Kanban view, with the addition of a
:guilabel:`Tags` field and a :guilabel:`Description` tab.
The current user populates the :guilabel:`Employee` field by default, and the :guilabel:`Manager`
field populates with the manager set on the employee profile.
Make any necessary changes to the form, and add any notes that might be useful to clarify the goal
in the :guilabel:`Description` tab.
.. image:: appraisals/new-goal.png
:align: center
:alt: A goal form filled out for a Python skill, set to 50% proficiency.
Completed goals
---------------
When a goal has been met, it is important to update the record. A goal can be marked as `Done` in
one of two ways: from the main :guilabel:`Goals` dashboard, or from the individual goal card.
To mark a goal as `Done` from the main :guilabel:`Goals` dashboard, click on the :guilabel:`⋮ (three
dots)` icon in the top-right of a goal card.
.. important::
The :guilabel:`⋮ (three dots)` icon **only** appears when the mouse hovers over the corner of a
goal card.
Then, click :guilabel:`Mark as Done` from the resulting drop-down menu. A green :guilabel:`Done`
banner appears in the top-right corner of the goal card.
To mark a goal as `Done` from the goal card itself, click on a goal card to open that goal's form.
Then, click the :guilabel:`Mark as Done` button in the top-left of the form. When clicked, a green
:guilabel:`Done` banner appears in the top-right corner of the goal form.
Reporting
=========
The *Appraisals* application tracks two metrics across two different reports: an :ref:`appraisal
analysis <appraisals/analysis>`, and a :ref:`skills evolution <appraisals/skills-report>`.
.. _appraisals/analysis:
Appraisal analysis
------------------
To access the *Appraisal Analysis* report, navigate to :menuselection:`Appraisals application -->
Reporting --> Appraisal Analysis`. This displays a report of all the appraisals in the database,
highlighted in different colors to represent their status.
Appraisals in yellow are completed, appraisals in orange are in-progress (the appraisal is
confirmed, but not completed), and appraisals in gray are scheduled (according to the
:ref:`appraisals/appraisal-plan`), but have not been confirmed yet.
The report displays the whole current year, by default, grouped by department.
To change the calendar view presented, change the date settings in the top-left of the report. The
options to display are :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, and :guilabel:`Year`.
Use the arrows to move forward or backward in time.
At any point, click the :guilabel:`Today` button to present the calendar to include today's date in
the view.
The report can have other filters and groupings set in the :guilabel:`Search...` bar at the top.
.. image:: appraisals/analysis.png
:align: center
:alt: A report showing all the appraisals for the Appraisal Analysis report.
.. _appraisals/skills-report:
Skills evolution
----------------
To access the *Skills Evolution* report, navigate to :menuselection:`Appraisals application -->
Reporting --> Skills Evolution`. This displays a report of all skills, grouped by employee.
All the lines of the report are collapsed, by default. To view the details of a line, click on a
line to expand the data.
Each skill has the following information listed:
- :guilabel:`Employee`: name of the employee.
- :guilabel:`Skill Type`: the category the skill falls under.
- :guilabel:`Skill`: the specific, individual skill.
- :guilabel:`Previous Skill Level`: the level the employee had previously achieved for the skill.
- :guilabel:`Previous Skill Progress`: the previous percentage of competency achieved for the skill
(based on the :guilabel:`Skill Level`).
- :guilabel:`Current Skill Level`: the current level the employee has achieved for the skill.
- :guilabel:`Current Skill Progress`: the current percentage of competency achieved for the skill.
- :guilabel:`Justification`: any notes entered on the skill explaining the progress.
.. image:: appraisals/skills-report.png
:align: center
:alt: A report showing all the skills grouped by employee.
appraisals/goals
appraisals/reporting
@@ -0,0 +1,85 @@
=====
Goals
=====
The Odoo *Appraisals* application allows managers to set goals for their employees. That way,
employees know what to work toward before their next review.
To view all goals, navigate to :menuselection:`Appraisals app --> Goals`. This presents all the
goals for every employee, in a default Kanban view.
.. _appraisals/goal-card:
Each goal card contains the following information:
- :guilabel:`Goal`: the name of the goal.
- :guilabel:`Employee`: the employee the goal is assigned to.
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: displays the corresponding :doc:`activity icon
<../../essentials/activities>` for the record. If no activities are scheduled, the default icon is
the :icon:`fa-clock-o` :guilabel:`(clock)`. If any activities have been scheduled, the icon
represents the activity scheduled soonest.
- :guilabel:`Deadline`: the due date for the goal.
- :guilabel:`Progress`: the percentage of competency set for the goal. The options are
:guilabel:`0%`, :guilabel:`25%`, :guilabel:`50%`, :guilabel:`75%`, or :guilabel:`100%`.
- :guilabel:`Employee Icon`: the profile icon of the employee the goal is assigned to.
If a goal is completed, a :guilabel:`Done` banner appears in the top-right corner of the goal card.
.. image:: goals/goals.png
:align: center
:alt: The goals Kanban view, with nine goal cards.
.. note::
Every individual goal requires its own record for each employee. If multiple employees have the
same goal, a goal card for each employee appears on the list.
For example, if Bob and Sara have the same goal of `Typing`, two cards appear in the Kanban view:
one `Typing` goal for Bob, and another `Typing` goal for Sara.
New goal
========
To create a new goal, navigate to :menuselection:`Appraisals app --> Goals`, and click
:guilabel:`New` top-left corner to open a blank goal form.
Input the :guilabel:`Goal`, :guilabel:`Employee`, :guilabel:`Progress`, and :guilabel:`Deadline`,
information on the goal card, as discussed in the :ref:`goal card <appraisals/goal-card>` section of
this document.
The information requested is all the same information that appears on the goal card in the Kanban
view, with the addition of a :guilabel:`Tags` field and a :guilabel:`Description` tab.
.. tip::
The *Appraisals* application does **not** have any pre-configured tags, so all tags need to be
added. To add a tag, enter the name of the tag on the line, then click :guilabel:`Create
"(tag)"`. Repeat this for all tags that need to be added.
The current user populates the :guilabel:`Employee` field, by default, and the :guilabel:`Manager`
field populates with the manager set on the employee profile.
Make any necessary changes to the form, and add any notes that might be useful to clarify the goal
in the :guilabel:`Description` tab.
.. image:: goals/new-goal.png
:align: center
:alt: A goal form filled out for a Python skill, set to 50% proficiency.
Completed goals
===============
When a goal has been met, it is important to update the record. A goal can be marked as `Done` in
one of two ways: from the main :guilabel:`Goals` dashboard, or from the individual goal card.
To mark a goal as `Done` from the main :guilabel:`Goals` dashboard, click on the
:icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` icon in the top-right of a goal card.
.. note::
The :icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` icon **only** appears when the mouse
hovers over the top-right corner of a goal card.
Then, click :guilabel:`Mark as Done` from the resulting drop-down menu. A green :guilabel:`Done`
banner appears in the top-right corner of the goal card.
To mark a goal as `Done` from the goal card itself, click on a goal card to open that goal's form.
Then, click the :guilabel:`Mark as Done` button in the top-left of the form. When clicked, a green
:guilabel:`Done` banner appears in the top-right corner of the goal form.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,130 @@
=========
Reporting
=========
In Odoo's *Appraisals* app, two metrics are tracked as appraisals are completed: an :ref:`appraisal
analysis <appraisals/analysis-report>`, and a :ref:`skills evolution <appraisals/skills-report>`.
.. _appraisals/analysis-report:
Appraisal analysis
------------------
To access the *Appraisal Analysis* report, navigate to :menuselection:`Appraisals app --> Reporting
--> Appraisal Analysis`.
On the :guilabel:`Appraisal Analysis` page, there is a report of all the appraisals in the database,
highlighted in different colors to represent their status.
Appraisals in yellow are *Done*, appraisals in orange are in progress (the *Appraisal Sent*, but not
completed), appraisals in red have been *Cancelled*, and appraisals in gray are scheduled *To Start*
(according to the :ref:`appraisals/appraisal-plan`), but have not been confirmed yet.
The report displays the current year, in a default Gantt view, and is grouped by department.
To change the period of time that is presented by default, adjust the date settings in the top-left
of the report. The options to display are :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, and
:guilabel:`Year`. Use the arrows to move forward or backward in time.
At any point, click the :guilabel:`Today` button to have the Gantt view include today's date in the
view.
The report can have other :ref:`filters <search/filters>` and :ref:`groupings <search/group>` set in
the :guilabel:`Search...` bar at the top.
.. image:: reporting/analysis.png
:align: center
:alt: A report showing all the appraisals for the Appraisal Analysis report.
.. example::
Appraisals that have been cancelled appear in red on the :guilabel:`Appraisal Analysis` report,
but there is no preconfigured filter to show only cancelled appraisals.
To view only cancelled appraisals, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon
in the :guilabel:`Search...` bar.
Next, click :guilabel:`Add Custom Filter` in the :guilabel:`Filters` section, and a
:guilabel:`Add Custom Filter` pop up window loads.
Using the drop-down menu, select :guilabel:`Status` for the first drop-down, then select
:guilabel:`Cancelled` for the third drop-down field. Click the :guilabel:`Add` button, and only
appraisals that have been cancelled appear.
.. image:: reporting/custom-filter.png
:align: center
:alt: The Custom Filter pop-up with the parameters set to only show cancelled appraisals.
.. _appraisals/skills-report:
Skills evolution
----------------
To access the *Skills Evolution* report, navigate to :menuselection:`Appraisals app --> Reporting
--> Skills Evolution`. The :guilabel:`Appraisal Skills Report` page displays a report of all skills,
grouped by employee.
Skill levels are **only** updated after an appraisal is marked as done. Any skill level changes from
any ongoing appraisals that have **not** been finalized are **not** included in this report.
All the lines of the report are collapsed, by default. To view the details of a line, click anywhere
on a line to expand the data.
Each skill has the following information listed:
- :guilabel:`Employee`: name of the employee.
- :guilabel:`Skill Type`: the category the skill falls under.
- :guilabel:`Skill`: the specific, individual skill.
- :guilabel:`Previous Skill Level`: the level the employee had previously achieved for the skill.
- :guilabel:`Previous Skill Progress`: the previous percentage of competency achieved for the skill
(based on the :guilabel:`Skill Level`).
- :guilabel:`Current Skill Level`: the current level the employee has achieved for the skill.
- :guilabel:`Current Skill Progress`: the current percentage of competency achieved for the skill.
- :guilabel:`Justification`: any notes entered on the skill, explaining the progress.
The color of the skill text indicates any changes from the previous appraisal. Skill levels that
have increased since the last appraisal appear in green as an *Improvement*, skill levels that have
not changed appear in black as *No Change*, and skills that have regressed appear in red as
*Regression*.
.. image:: reporting/skills-report.png
:align: center
:alt: A report showing all the skills grouped by employee.
The report can have other :ref:`filters <search/filters>` and :ref:`groupings <search/group>` set in
the :guilabel:`Search...` bar at the top.
.. example::
Since the :guilabel:`Appraisal Skills Report` organizes all skills by employee, it can be
difficult to find employees with a specific skill at a specific level. To find these employees,
a custom filter must be used.
To view only employees with an :guilabel:`Expert` level of the :guilabel:`Javascript` skill,
first remove any active filters in the :guilabel:`Search...` bar.
Next, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon in the :guilabel:`Search...`
bar, then click :guilabel:`Add Custom Filter` in the :guilabel:`Filters` section to load an
:guilabel:`Add Custom Filter` pop up window.
Using the drop-down menu, select :guilabel:`Skill` for the first drop-down, then select
:guilabel:`Javascript` for the third drop-down field.
Next, click the :guilabel:`New Rule` button, and another line appears. In this second line,
select :guilabel:`Current Skill Level` for the first drop-down, then select :guilabel:`Expert`
for the third drop-down field.
After the :guilabel:`New Rule` button is clicked, the word :guilabel:`any` in the sentence
:guilabel:`Match any of the following rules:` changes from plain text into a drop-down menu.
Click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon after the word :guilabel:`any`, and
select :guilabel:`all`.
Finally, click the :guilabel:`Add` button, and only employees that have an :guilabel:`Expert`
level for the skill :guilabel:`Javascript` appear.
.. image:: reporting/javascript.png
:align: center
:alt: The Custom Filter pop-up with the parameters set to only show employees with expert
level for the skill javascript.
.. seealso::
- :doc:`Odoo essentials reporting <../../essentials/reporting>`
- :doc:`../../essentials/search`

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

+23 -106
View File
@@ -4,11 +4,6 @@
Attendances
===========
.. toctree::
:titlesonly:
attendances/hardware
Odoo's *Attendances* application functions as a time clock. Employees are able to check in and out
of work using a dedicated device in kiosk mode, while users are also able to check in and out of
work directly from the database. Managers can quickly see who is available at any given time, create
@@ -20,28 +15,26 @@ checking out of work earlier than expected.
Access rights
=============
It is important to understand how the different access rights affect what users can access in the
*Attendances* application.
It is important to understand how the different access rights affect what options and features users
can access in the *Attendances* application.
Every user in the database is always able to access their own information on the dashboard and can
check in and out directly from the database. Access to all the other features is determined by
access rights.
Every user in the database is able to check in and out directly from the database, without needing
access to the *Attendances* application. Additionally, all users can access their own attendance
records from their employee form in the *Employees* app.
To see what access rights a user has, navigate to the :menuselection:`Settings application --> Users
& Companies: Users`, and click on an individual user. The :guilabel:`Access Rights` tab is visible
by default. Scroll down to the :guilabel:`Human Resources` section to see the setting. For the
Access to both the *Attendances* application, and the various features within the application is
determined by access rights.
To see what access rights a user has, navigate to the :menuselection:`Settings app --> Users &
Companies: Users`, and click on an individual user. The :guilabel:`Access Rights` tab is visible by
default. Scroll down to the :guilabel:`Human Resources` section to see the setting. For the
:guilabel:`Attendances` field, the options are either to leave the field blank or select
:guilabel:`Administrator`.
If the :guilabel:`Administrator` option is selected, the user has full access to the entire
*Attendances* application, with no restrictions. They can view all employee attendance records,
enter kiosk mode from the application, access all reporting metrics, and make modifications to the
settings.
If left blank, the user can only view their own information on the *Attendances* application
dashboard and can view their own personal attendance records under the reporting feature. All other
attendance records are hidden from view on the report. There is no access to either the kiosk mode
or the configuration menu.
enter *Kiosk mMode* from the application, access all reporting metrics, and make modifications to
the settings. If left blank, the user does **not** have access to the *Attendances* application.
.. _attendances/approvers:
@@ -158,92 +151,6 @@ time is not logged.
activated, the extra hours can be :ref:`deducted from an approved time off request
<time_off/deduct-extra-hours>`.
.. _attendances/check-in:
Check in and out via the database
=================================
Odoo's *Attendances* application allows users who are logged into the database to check in and out,
without needing to go into the *Attendances* application, or use a kiosk. For some smaller
companies, where every employee is also a user, this feature may be useful.
A user can check in and out on the main database dashboard, as well as in any application. In the
upper right corner of the top main menu, which is always visible regardless of what application the
user is in, a :guilabel:`🔴 (red circle)` or :guilabel:`🟢 (green circle)` is visible. Click on the
colored circle to reveal the attendance widget, enabling the user to check in and/or out.
.. image:: attendances/top-menu.png
:align: center
:alt: Top right main menu with check in button highlighted.
Check in
--------
If the attendance widget circle is red, this indicates the user is not currently checked in. Click
the :guilabel:`🔴 (red circle)` and the attendance widget appears, displaying a green
:guilabel:`Check in ➡️` button.
.. image:: attendances/check-in.png
:align: center
:alt: Top right main menu with check in button highlighted.
When the user checks in from the database, the *Attendances* app logs the location details for the
user, including the IP Address and GPS coordinates.
.. important::
For the *Attendances* app to log the location details, the user must allow their computer to
access their location information.
If the user has not checked in and out already during the current work day, this button is the only
visible item in the widget. If the user has previously checked in and out, a :guilabel:`Total today`
field appears above the button, and the total amount of time that has been logged for the day
appears beneath that field, in an :guilabel:`HH:MM` (hours:minutes) format.
Click the :guilabel:`Check in ➡️` button to check in. The :guilabel:`🔴 (red circle)` in the top
menu changes to green, and the widget changes appearance as well. The widget updates to reflect that
the user has checked in, by changing the green :guilabel:`Check in ➡️` button to a yellow
:guilabel:`Check out ➡️` button.
Click anywhere on the screen to close the attendance widget.
Check out
---------
If the user is checking out for the first time, :guilabel:`Since HH:MM (AM/PM)` appears at the top
of the widget, with the time the user checked in populating the time field. Beneath that line,
:guilabel:`HH:MM` is displayed, indicating the hours and minutes that have elapsed since checking
in. As time passes, this value is updated to reflect the hours and minutes that have passed since
the user checked in.
If the user has previously checked in and out, additional fields are presented. A :guilabel:`Before
HH:MM (AM/PM)` field appears in addition to the :guilabel:`Since HH:MM (AM/PM)` field. The time
displayed in both of these fields are populated with the most recent check in time, and will match.
Beneath the :guilabel:`Before HH:MM (AM/PM)` field, the previously logged hours are displayed, in an
:guilabel:`HH:MM` (hours:minutes) format.
In addition, beneath both of these fields, a :guilabel:`Total today` field appears. This field is
the sum of both the :guilabel:`Before HH:MM (AM/PM)` and :guilabel:`Since HH:MM (AM/PM)` fields, and
is the total time that will be logged for the user, if they were to log out at that moment.
As time passes, both the :guilabel:`Since HH:MM (AM/PM)` and :guilabel:`Total today` fields are
updated live. To check out, click the yellow :guilabel:`Check out ➡️` button. The attendance widget
updates again, displaying the :guilabel:`Total today` field with the logged time, and the yellow
:guilabel:`Check out ➡️` button changes to a green :guilabel:`Check in ➡️` button.
When the user checks out from the database, the *Attendances* app logs the location details for the
user. This information is **only** logged if the user allows their computer to access this
information.
.. image:: attendances/check-in-database-message.png
:align: center
:alt: The pop-up that appears when an employee checks in inside the database.
.. tip::
There is no limit to the amount of times a user can check in and check out. Users are able to
check in and out without any time elapsing (a value of 00:00). Each time an employee logs in and
out, the information is stored and appears on the dashboard, including check ins and check outs
with no time value.
.. _attendances/kiosk-mode-entry:
Kiosk mode
@@ -548,3 +455,13 @@ button and a pop-up appears. Select the desired spreadsheet, and click :guilabel
.. image:: attendances/reporting.png
:align: center
:alt: The default report view, with all the optional view buttons highlighted.
.. seealso::
- :doc:`attendances/check_in_check_out`
- :doc:`attendances/hardware`
.. toctree::
:titlesonly:
attendances/check_in_check_out
attendances/hardware
@@ -0,0 +1,88 @@
================
Check in and out
================
Odoo's *Attendances* application allows users, who are logged into the database, to check in and
out, without needing to go into the *Attendances* application, or use a kiosk. For smaller
companies, where every employee is also a user, this feature may be useful.
A user can check in and/or out on the main database Odoo dashboard, or while inside any application.
To do so, in the upper-right corner of the top main header menu, which is always visible regardless
of what application the user is in, a :guilabel:`🔴 (red circle)` or :guilabel:`🟢 (green circle)`
is visible. Click on the colored circle to reveal the attendance widget, enabling the user to check
in and/or out.
.. image:: check_in_check_out/top-menu.png
:align: center
:alt: Top right main menu with check in button highlighted.
.. _attendances/check-in:
Check in
========
If the attendance widget circle is red, this indicates the user is not currently checked in. Click
the :guilabel:`🔴 (red circle)`, and the attendance widget appears, displaying a green
:guilabel:`Check in` :icon:`fa-sign-in` button.
.. image:: check_in_check_out/check-in.png
:align: center
:alt: Top right main menu with check in button highlighted.
When the user checks in from the database, the *Attendances* app logs the location details for the
user, including the IP Address and GPS coordinates.
.. important::
For the *Attendances* app to log the location details, the user must allow their computer to
access their location information.
If the user has not already checked in and out during the current work day, this button is the only
visible item in the widget. If the user has previously checked in and out, a :guilabel:`Total today`
field appears above the button, and the total amount of time that has been logged for the day
appears in that field, in an :guilabel:`HH:MM` (hours:minutes) format.
Click the :guilabel:`Check in` :icon:`fa-sign-in` button to check in. The :guilabel:`🔴 (red
circle)` in the top menu changes to green, and the widget changes appearance, as well. The widget
updates to reflect that the user has checked in, by changing the green :guilabel:`Check in`
:icon:`fa-sign-in` button to a yellow :guilabel:`Check out` :icon:`fa-sign-out` button.
Click anywhere on the screen to close the attendance widget.
Check out
=========
If the user is checking out for the first time, :guilabel:`Since HH:MM (AM/PM)` appears at the top
of the widget, with the time the user checked in populating the time field. Beneath that line, the
hours and minutes that have elapsed since checking in are displayed in a :guilabel:`HH:MM` format.
As time passes, this value is updated to reflect the hours and minutes that have passed since the
user checked in.
If the user has previously checked in and out, additional fields are presented. A :guilabel:`Before
HH:MM (AM/PM)` field appears, in addition to the :guilabel:`Since HH:MM (AM/PM)` field. The times
displayed in both of these fields match, and are populated with the most recent check in time.
Beneath the :guilabel:`Before HH:MM (AM/PM)` field, the previously logged time is displayed, in an
:guilabel:`HH:MM` (hours:minutes) format.
In addition, beneath both of these fields, a :guilabel:`Total today` field appears. This field is
the sum of both the :guilabel:`Before HH:MM (AM/PM)` and :guilabel:`Since HH:MM (AM/PM)` fields, and
is the total time that is logged for the user, if they were to log out at that moment.
As time passes, both the :guilabel:`Since HH:MM (AM/PM)` and :guilabel:`Total today` fields are
updated live. To check out, click the yellow :guilabel:`Check out` :icon:`fa-sign-out` button. The
attendance widget updates again, displaying the :guilabel:`Total today` field with the logged time,
while the yellow :guilabel:`Check out` :icon:`fa-sign-out` button changes to a green
:guilabel:`Check in` :icon:`fa-sign-in` button.
When the user checks out from the database, the *Attendances* app logs the location details for the
user. This information is **only** logged if the user allows their computer to access this
information.
.. image:: check_in_check_out/check-in-database-message.png
:align: center
:alt: The pop-up that appears when an employee checks in inside the database.
.. tip::
There is no limit to the amount of times a user can check in and check out. Users are able to
check in and out without any time elapsing (a value of 00:00). Each time an employee logs in and
out, the information is stored and appears on the main *Attendances* dashboard, including check
ins and check outs with no time value.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+1
View File
@@ -12,3 +12,4 @@ Odoo *Employees* organizes a company's employee records, contracts, and departme
:titlesonly:
employees/new_employee
employees/departments
@@ -0,0 +1,151 @@
===========
Departments
===========
All employees in the *Employees* app fall under specific departments within a company.
Create new departments
======================
To make a new department, navigate to :menuselection:`Employees app --> Departments`, then click
:guilabel:`New` in the top-left to reveal a blank department form. Fill out the following
information on the department form:
.. image:: departments/department-form.png
:align: center
:alt: The department for with all fields filled out.
- :guilabel:`Department Name`: enter a name for the department.
- :guilabel:`Manager`: using the drop-down menu, select the department manager.
- :guilabel:`Parent Department`: if the new department is housed within another department (has a
parent department), select the parent department using the drop-down menu.
- :guilabel:`Custom Appraisal Templates`: if employees in this department require a specific
appraisal form that is different from the default appraisal form, tick the checkbox. If this
option is activated, an :guilabel:`Appraisal Templates` tab appears below the form. This field
**only** appears if the *Appraisals* app is installed.
- :guilabel:`Company`: using the drop-down menu, select the company the department is part of.
- :guilabel:`Appraisal Survey`: using the drop-down menu, select the default survey to use for the
department when requesting feedback from employees. This field **only** appears if the
*Appraisals* app is installed, **and** the *360 Feedback* option is enabled in the settings.
- :guilabel:`Color`: select a color for the department. Click the default white color box to display
all the color options. Click on a color to select it.
- :guilabel:`Appraisal Templates` tab: this tab **only** appears if the :guilabel:`Custom Appraisal
Templates` options is activated on the form. Make any desired edits to the appraisal form. The
appraisal form is used for appraisals for all employees within this department.
After the form is completed, click the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon to
manually save the changes. When saved, a :guilabel:`Department Organization` chart appears in the
top-right of the department card.
.. note::
The form auto-saves while data is entered, however the :guilabel:`Department Organization` chart
does **not** appear until the form is manually saved. If the form is not saved, the
:guilabel:`Department Organization` chart is visible upon opening the department card from the
:guilabel:`Departments` dashboard.
.. seealso::
Refer to the :doc:`../appraisals` documentation for more information.
Departments dashboard
=====================
To view the currently configured departments, navigate to :menuselection:`Employees app -->
Departments`. All departments appear in a Kanban view, by default, and are listed in alphabetical
order.
.. image:: departments/departments.png
:align: center
:alt: The departments dashboard view with all the department cards in a Kanban view.
Kanban view
-----------
Each department has its own Kanban card on the main :guilabel:`Departments` :icon:`oi-view-kanban`
:guilabel:`(Kanban)` dashboard view, that can display the following information:
- Department name: the name of the department.
- Company: the company the department is part of.
- :guilabel:`Employees`: the number of employees within the department.
- :guilabel:`Appraisals`: the number of appraisals scheduled for employees in the department.
- :guilabel:`Time Off Requests`: the number of unapproved time off requests for employees in the
department :ref:`awaiting approval <time_off/manage-time-off>` . This **only** appears if there
are requests to approve.
- :guilabel:`Allocation Requests`: the number of unapproved allocation requests for employees in the
department :ref:`awaiting approval <time_off/manage-allocations>`. This **only** appears if there
are requests to approve.
- :guilabel:`New Applicants`: the number of :ref:`new applicants <recruitment/new>` for a position
in this department. This **only** appears if there are new applicants.
- :guilabel:`Expense Reports`: the number of employees in the department with :ref:`open expense
reports to approve <expenses/approve>`. This **only** appears if there are any expense reports
waiting for approval.
- :guilabel:`Absence`: the number of absences for the current day.
- Color bar: the selected color for the department appears as a vertical bar on the left side of the
department card.
.. note::
Click on an alert in a department card, such as :guilabel:`Time Off Requests`, to reveal a list
view of the requests to approve. This list includes **all** open requests to approve, not just
from the specific department.
The default view for the :guilabel:`Departments` dashboard is a Kanban view. It is possible to view
the departments in two other forms: a list view and a hierarchy view.
List view
---------
To view the departments in a list view, click the :icon:`fa-align-justify` :guilabel:`(list)` icon
in the top-right corner. The departments appear in a list view, which displays the
:guilabel:`Department Name`, :guilabel:`Company`, :guilabel:`Manager`, :guilabel:`Employees`,
:guilabel:`Parent Department`, and :guilabel:`Color` for each department.
The departments are sorted alphabetically by :guilabel:`Department Name`, by default.
.. image:: departments/list.png
:align: center
:alt: The departments presented in a list view.
.. tip::
When in list view, departments can be managed in batch by selecting one or multiple record's
checkbox, then select the :icon:`fa-cog` :guilabel:`Actions` button to reveal a drop-down menu of
actions.
Hierarchy view
--------------
To view the departments in a hierarchy view, click the :icon:`fa-share-alt fa-rotate-90`
:guilabel:`(hierarchy)` icon in the top-right corner. The departments appear in an organizational
chart format, with the highest-level department at the top (typically :guilabel:`Management`), and
all other departments beneath it. All child departments of the first-level child departments are
folded.
Each department card displays the :guilabel:`Department Name`, the :guilabel:`Manager` (and their
profile image), the :guilabel:`Number of Employees` in the department, and the ability to expand the
department (:guilabel:`Unfold`) if there are child departments beneath it.
Click the :guilabel:`Unfold` button on a department card to expand it. Once expanded, the
:guilabel:`Unfold` button changes to a :guilabel:`Fold` button. To collapse the department, click
the :guilabel:`Fold` button. Only **one** department *per row* can be unfolded at a time.
Click anywhere on a department card to open the department form. Click the :guilabel:`(#) Employees`
smart button to view a list of all the employees in that department, including all employees in the
child departments beneath it, organized by individual department.
.. example::
In the hierarchy view, if the :guilabel:`(2) Employees` button on the :guilabel:`Management` card
is clicked (the highest-level department card), **all** employees appear in a list view, grouped
by department. This is because **all** departments are children of the :guilabel:`Management`
department.
If the :guilabel:`(3) Employees` button in the :guilabel:`Sales` department card is clicked, the
employees from the :guilabel:`Sales` department, as well as its two child departments
(:guilabel:`East Coast Territory` and :guilabel:`West Coat Territory`), appear in the list.
.. image:: departments/hierarchy.png
:align: center
:alt: The departments presented in a hierarchy view.
.. image:: departments/employee-list.png
:align: center
:alt: The list view of employees for the department that was clicked, including all child
departments.
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+13 -146
View File
@@ -1,3 +1,5 @@
:show-content:
=========
Frontdesk
=========
@@ -184,94 +186,10 @@ Station dashboard
The image selected now appears in the picture field, and is set as the image for the drink.
.. _frontdesk/kiosk:
.. _frontdesk/visitors:
Visitors
========
To access a complete list of visitors that are currently checked in, navigate to
:menuselection:`Frontdesk app --> Visitors`.
The visitors are listed in a list view, with the following details that were entered when they
checked in:
.. note::
By default, the :guilabel:`Planned or Checked-In` and :guilabel:`Today` filters appear in the
:guilabel:`Search...` bar.
- :guilabel:`Name`: the guest's name.
- :guilabel:`Visitor Company`: the company the guest represents.
- :guilabel:`Phone`: the guest's phone number.
- :guilabel:`Drinks`: the drink the guest requested.
- :guilabel:`Host`: who the guest is waiting to see.
- :guilabel:`CheckIn`: the date and time the guest checked in.
- :guilabel:`Checkout`: the date and time the guest checked out. As mentioned, in the default view,
only guests with a :guilabel:`Checked-In` or :guilabel:`Planned` status are visible. Guests with
check-out times are only visible if the :guilabel:`Today` filter is not active.
- :guilabel:`Duration`: the amount of time the guest has been checked in for.
- :guilabel:`Station`: the location of where the guest checked in.
- :guilabel:`Status`: the status of the guest. The options are :guilabel:`Checked-In`,
:guilabel:`Planned`, :guilabel:`Checked-Out`, or :guilabel:`Canceled`. In the default view, only
guests with a :guilabel:`Checked-In` or :guilabel:`Planned` status are visible.
- :guilabel:`Email`: the guest's email address.
To the far right of the titled columns on the :guilabel:`Visitors` page is an untitled column,
where a guest's status can be updated.
When a guest leaves, click the available :guilabel:`Check out` button to update the guest's record,
and log the date and time they left.
If a scheduled guest arrives, and they did not check in using the *Frontdesk* kiosk, they can be
checked in here, by clicking the available :guilabel:`Check in` button to log the date and time they
arrived.
Beside the untitled status column a :guilabel:`Drink Served` button appears, but only if that
particular visitor requested a drink.
When their drink has been served, click the :guilabel:`Drink Served` button to indicate the drink
has been delivered to the guest. Once clicked, that button disappears.
.. image:: frontdesk/visitors.png
:align: center
:alt: The full list of currently checked in visitors, with the drinks to be served highlighted.
If any column is not visible, or if a visible column is preferred to be hidden, click the
:guilabel:`Additional Options (two horizontal lines with dots)` icon, located at the end of the
column name list.
Clicking that reveals a drop-down menu of column options to enable or disable. A :guilabel:`✅
(checkmark)` icon indicates the column is visible.
Planned visitors
----------------
If a guest is expected to arrive at a future date and time, it is possible to enter their
information into the *Frontdesk* application in advance.
To create a planned guest, navigate to :menuselection:`Frontdesk app --> Visitors --> New`. Then,
enter the same information as any other :ref:`visitor <frontdesk/visitors>`. The only required
fields are the visitor's :guilabel:`Name` and the :guilabel:`Station` at which they are expected to
arrive.
.. important::
If a guest is planned in advance, they must be checked in from the list on the
:guilabel:`Visitors` page in the *Frontdesk* application (:menuselection:`Frontdesk app -->
Visitors`). If a planned guest checks in using a kiosk, they will be checked in separately, and
their planned visitor entry remains listed as :guilabel:`Planned`.
Only when a planned guest is checked in inside the application's visitor list, their
:guilabel:`Planned` status changes to :guilabel:`Checked-In`.
If a guest does check in using a kiosk, ensure all records are current, and the list of
currently on-site guests is correct. Be sure to check in and/or check out the correct entries, so
the visitors list correctly reflects who is currently on the premises.
Ensure planned guests are informed that they should **not** check in using the kiosk if they are
listed as a planned guest in advance.
Frontdesk flow
==============
Kiosk setup
===========
Set up each kiosk for use after configuring the various stations. It is recommended to use a
dedicated device for each frontdesk kiosk, such as a tablet.
@@ -288,65 +206,6 @@ Navigate to the kiosk in one of two ways:
It is recommended to log out of the database, and close the tab, after navigating to the kiosk.
That way, there is no possibility of a visitor accessing the database when checking-in.
Visitor flow
------------
When a visitor arrives at a facility, they approach a frontdesk kiosk, and enter their information.
The information requested is what was configured for that specific frontdesk station. If any
information is required, the field displays a red asterisk (*). The visitor must enter the required
information in order to check in.
Once all the information is entered, the visitor taps the :guilabel:`Check In` button.
If drinks were configured for the station, after tapping :guilabel:`Check In`, a registration
confirmation screen loads, along with the question: `Do you want something to drink?`
The visitor can tap either :guilabel:`Yes, please`, or :guilabel:`No, thank you`.
If they select :guilabel:`Yes, please`, a drink selection screen appears, and the pre-configured
options are listed. The visitor then taps the desired selection, or, if they do not want anything,
they can tap the :guilabel:`Nothing, thanks` button at the bottom of the screen.
If a drink selection was made, a `Thank you for registering! Your drink is on the way.` message
appears.
At any point in the check-in process, if ten seconds pass with no selection, the kiosk returns to
the main welcome screen.
Once the visitor has checked in, the person they are visiting, and any other users who were
configured to be notified when checks ins occur at the kiosk, are notified. The notification is
either by email, SMS message, a *Discuss* chat, or any combination of those three options.
If the visitor requested a drink, the user(s) configured as the :guilabel:`People to Notify` on the
drink form, are notified via the *Discuss* application. The message that appears is: `(Visitor Name)
just checked-in. They requested (Drink Name).`
Once the drink has been delivered to the guest, the person who delivered the drink is responsible
for marking the drink as delivered.
To mark a drink as delivered, navigate to :menuselection:`Frontdesk app --> Stations --> (#) Drinks
to serve` on the desired station card.
This opens a list of all the visitors checked in at that station, and are waiting for a drink. Click
the :guilabel:`Drink Served` button at the end of the line for the visitor who was served. Once they
are marked as having their drink served, the visitor disappears from the list.
Once the visitor has completed their business, and has left the premises, it is important to check
them out for accurate record keeping.
To check visitors out properly, navigate to :menuselection:`Frontdesk app --> Stations --> (#) On
Site`. Doing so opens a list of all the visitors who are currently checked-in at that station.
Click the :guilabel:`Check Out` button near the end of the line for the visitor who left. Once they
are marked as checked-out, the visitor disappears from the list.
.. important::
Visitors do **not** check themselves out when they leave. It is important to check out visitors
for accurate record keeping.
Always have an accurate list of who is on the premises at any given time. This is important for
security purposes, and in the case of an emergency.
Reporting
=========
@@ -359,3 +218,11 @@ The :guilabel:`Visitors` report displays the number of visitors by month, for th
:guilabel:`Drinks` report shows how many total requests were made for each drink.
As with all reports in Odoo, the filters and groups can be modified to show other metrics, as well.
.. seealso::
- :doc:`frontdesk/visitors`
.. toctree::
:titlesonly:
frontdesk/visitors
@@ -0,0 +1,165 @@
========
Visitors
========
In the Odoo *Frontdesk* application, a *visitor* is defined as any non-employee (e.g., repair
person, job candidate, etc.). These visitors can be logged upon arrival and departure for security
purposes. This ensures an accurate list of people on the premises.
.. _frontdesk/list:
Visitor list
============
To access a complete list of checked-in visitors, navigate to :menuselection:`Frontdesk app -->
Visitors`.
.. note::
By default, the :guilabel:`Planned or Checked-In` and :guilabel:`Today` filters appear in the
:guilabel:`Search...` bar.
All visitors are presented in a list view, with the following details that were entered upon check
in:
- :guilabel:`Name`: the guest's name.
- :guilabel:`Visitor Company`: the company the guest represents.
- :guilabel:`Phone`: the guest's phone number.
- :guilabel:`Drinks`\*: the drink the guest requested.
- :guilabel:`Host`: who the guest is waiting to see.
- :guilabel:`CheckIn`: the date and time the guest checked in.
- :guilabel:`Checkout`\*: the date and time the guest checked out. In the default view, only guests
with a :guilabel:`Checked-In` or :guilabel:`Planned` status are visible. Guests with check-out
times are only visible if the :guilabel:`Today` filter is not active.
- :guilabel:`Duration`: the amount of time the guest has been checked in for.
- :guilabel:`Station`: the location of where the guest checked in.
- :guilabel:`Status`: the status of the guest. The options are :guilabel:`Checked-In`,
:guilabel:`Planned`, :guilabel:`Checked-Out`, or :guilabel:`Canceled`.
- :guilabel:`Email`\*: the guest's email address.
\* These fields are not visible in the default :guilabel:`Visitor` list. These must be enabled
using the :icon:`oi-settings-adjust` :guilabel:`(settings adjust)` icon in the top-right of the
list.
To the far-right of the titled columns on the :guilabel:`Visitors` page, there is an untitled
column, where a guest's status can be updated.
When a guest leaves, click the available :guilabel:`Check out` button to update the guest's record,
and log the date and time they left.
If a scheduled guest arrives, and they did not check in using the *Frontdesk* kiosk, they can be
checked in here, by clicking the available :guilabel:`Check in` button to log the date and time they
arrived.
Beside the untitled status column, a :guilabel:`Drink Served` button appears, but only if that
particular visitor requested a drink.
When their drink has been served, click the :guilabel:`Drink Served` button to indicate the drink
has been delivered to the guest. Once clicked, that button disappears.
.. image:: visitors/visitors.png
:align: center
:alt: The full list of currently checked in visitors, with the drinks to be served highlighted.
If any column is not visible, or if a visible column is preferred to be hidden, click the
:icon:`oi-settings-adjust` :guilabel:`(additional options)` icon, located at the end of the column
name list. Doing so, reveals a reveals a drop-down menu of column options to enable or disable. A
:icon:`fa-check` :guilabel:`(check)` icon indicates the column is visible.
Planned visitors
================
Enter expected guest information in advance by creating a planned guest in the *Frontdesk* app.
To create a planned guest, navigate to :menuselection:`Frontdesk app --> Visitors`, and click
:guilabel:`New`. Then, enter the same information as any other :ref:`visitor <frontdesk/list>` on
the guest form that appears. The only required fields are the visitor's :guilabel:`Name` and the
:guilabel:`Station` at which they are expected to arrive.
.. important::
If a guest is planned in advance, they must be checked in from the list on the
:guilabel:`Visitors` page in the *Frontdesk* application (:menuselection:`Frontdesk app -->
Visitors`). If a planned guest checks in using a kiosk, they will be checked in separately, and
their planned visitor entry remains listed as :guilabel:`Planned`.
The :guilabel:`Planned` status of a planned guest **only** changes to :guilabel:`Checked-In` when
they are checked in *inside* the application's :guilabel:`Visitors` list.
If a guest does check in using a kiosk, ensure all records are current, and the list of guests
that are currently on-site is correct. Be sure to check in and/or check out the correct entries,
so the visitors list correctly reflects who is currently on the premises.
Ensure planned guests are informed that they should **not** check in using the kiosk if they are
listed as a planned guest in advance.
Visitor flow
============
Visitor check in
----------------
When a visitor arrives at a facility, they approach a :ref:`Frontdesk kiosk <frontdesk/kiosk>`, and
click :guilabel:`Check in`. The information requested from the visitor is what was configured for
that specific *Frontdesk* station. If any information is required, the field displays a red asterisk
(\*). The visitor **must** enter the required information in order to check in.
Once all the information is entered, the visitor taps the :guilabel:`Check In` button.
.. note::
At any point in the check-in process, if ten seconds pass with no selection, the kiosk returns to
the main welcome screen.
Drinks
------
If drinks were configured for the station, after tapping :guilabel:`Check In`, a registration
confirmation screen loads, along with the question: :guilabel:`Do you want something to drink?`
The visitor can tap either :guilabel:`Yes, please`, or :guilabel:`No, thank you`.
If they select :guilabel:`Yes, please`, a drink selection screen appears, and the pre-configured
options are listed. The visitor then taps the desired selection, or, if they do not want anything,
they can tap the :guilabel:`Nothing, thanks` button at the bottom of the screen.
If a drink selection was made, a :guilabel:`Thank you for registering! Your drink is on the way.`
message appears.
Notifications
-------------
Once the visitor has checked in, the person they are visiting, and any other users who were
configured to be notified when check-ins occur at the kiosk, are notified. The notification is
either by email, SMS message, a *Discuss* chat, or any combination of those three options.
If the visitor requested a drink, the user(s) configured as the :guilabel:`People to Notify` on the
drink form, are notified, via the *Discuss* application. The message that appears is:
:guilabel:`(Visitor Name) just checked-in. They requested (Drink Name).`
Once the drink has been delivered to the guest, the person who delivered the drink is responsible
for marking the drink as delivered.
To mark a drink as delivered, navigate to :menuselection:`Frontdesk app --> Stations`, and choose
the desired station card displaying :guilabel:`(#) Drinks to serve`.
This opens a list of all the visitors checked in at that station, and are waiting for a drink. Click
the :guilabel:`Drink Served` button at the end of the line for the visitor who was served. Once they
are marked as having their drink served, the visitor disappears from the list.
Check out
---------
Once the visitor has completed their business, and has left the premises, it is important to check
them out for accurate record keeping.
To check visitors out properly, navigate to :menuselection:`Frontdesk app --> Stations`, and choose
the desired station card displaying :guilabel:`(#) Drinks to serve`. Doing so opens a list of all
the visitors who are currently checked-in at that station.
Click the :guilabel:`Check out` button near the end of the line for the visitor who left. Once they
are marked as checked-out, the visitor disappears from the list.
.. important::
Visitors do **not** check themselves out when they leave. It is important for *Frontdesk* users
to check out visitors for accurate record keeping.
Always have an accurate list of who is on the premises at any given time. This is important for
security purposes, and in the case of an emergency.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

+165 -165
View File
@@ -2,9 +2,9 @@
Contracts
=========
Every employee in Odoo is required to have a contract to be paid. A contract outlines the terms of
an employee's job position, compensation, working hours, and any other details specific to their
role.
Every employee in Odoo is required to have a contract in order to be paid. A contract outlines the
terms of an employee's position, their compensation, working hours, and any other details about
their position.
.. important::
Contract documents (PDFs) are uploaded and organized using the *Documents* application, and are
@@ -12,13 +12,10 @@ role.
contracts. Please refer to the :doc:`../../productivity/documents` and
:doc:`../../productivity/sign` documentation.
To view the employee contracts, go to :menuselection:`Payroll app --> Contracts --> Contracts` from
the top menu. All employee contracts are displayed in a default list view, grouped into four
categories: :guilabel:`New`, :guilabel:`Running`, :guilabel:`Expired`, and :guilabel:`Cancelled`.
The default view has all categories collapsed. The number of contracts in each category is displayed
next to the category name (example: `Running (20)`). To view the list of contracts under any
category, click on the category, and the list expands downward, showing all contracts beneath it.
To view the employee contracts, go to the :menuselection:`Payroll app --> Contracts --> Contracts`
from the top menu. All employee contracts, and their current contract status, are displayed in a
Kanban view, by default. The Kanban view displays running contracts, contracts that require action,
expired contracts, and cancelled contracts.
.. image:: contracts/contracts-overview.png
:align: center
@@ -30,12 +27,12 @@ category, click on the category, and the list expands downward, showing all cont
.. _payroll/new-contract:
Create new contracts
====================
In order for an employee to be paid, an active contract is required. If a new contract is needed,
click the :guilabel:`Create` button on the :guilabel:`Contracts` dashboard. A contract form appears
where the information can be entered. Required fields are underlined in bold.
For an employee to be paid, an active contract is required. When a new contract is needed, click the
:guilabel:`New` button on the :guilabel:`Contracts` dashboard. A contract form appears where the
information can be entered.
New contract form
-----------------
.. _payroll/gen-info:
@@ -91,29 +88,41 @@ General information section
:alt: New contract form to be filled in when creating a new contract, with required fields
outlined in red.
The general information section filled out, with the required fields highlighted in red.
- :guilabel:`Contact Reference`: type in the name or title for the contract, such as `John Smith
Contract`. This field is **required**.
- :guilabel:`Employee`: name of the employee the contract applies to.
- :guilabel:`Contract Start Date`: the date the contract starts. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Contract End Date`: the date the contract ends. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Salary Structure Type`: select one of the salary structure types from the drop-down
menu. The default salary structure types are :guilabel:`Employee` or :guilabel:`Worker`. A new
salary structure type can be created by typing the name in the field. This field is **required**.
- :guilabel:`Working Schedule`: select one of the working schedules from the drop-down menu. This
field is **required**.
- :guilabel:`Department`: the department the contract applies to.
- :guilabel:`Job Position`: the specific job position the contract applies to.
- :guilabel:`Wage on Payroll`: the amount to be paid to the employee each month.
- :guilabel:`Contract Type`: choose from :guilabel:`CDI`, :guilabel:`CDD`, or :guilabel:`PFI` from
the drop-down menu.
Salary Information tab
----------------------
- :guilabel:`CDI` is an open-ended contract with only a start date, but no end date.
- :guilabel:`CDD` is a contract with both a start date and an end date.
- :guilabel:`PFI` is a Belgian-specific contract used when hiring employees that need training,
and covers the training period specifically.
This section is where the specific salary details are defined. This section is country-specific, so
depending on where the company is located, these fields may vary.
- :guilabel:`HR Responsible`: if there is a specific person in HR that is responsible for the
contract, select the person from the drop-down menu. This field is required.
The following fields are universal and apply to all localizations:
- :guilabel:`Wage Type`: select either :guilabel:`Fixed Wage` or :guilabel:`Hourly Wage` from the
drop-down menu.
- :guilabel:`Schedule Pay`: select how often the employee is paid using the drop-down menu. Options
are :guilabel:`Annually`, :guilabel:`Semi-annually`, :guilabel:`Quarterly`,
:guilabel:`Bi-monthly`, :guilabel:`Monthly`, :guilabel:`Semi-monthly`, :guilabel:`Bi-weekly`,
:guilabel:`Weekly`, or :guilabel:`Daily`.
- :guilabel:`Wage`: enter the employee's gross wage. The metric for the :guilabel:`Wage` is based on
what is selected for the :guilabel:`Schedule Pay`.
.. example::
If :guilabel:`Annually` is selected for the :guilabel:`Schedule Pay`, then the :guilabel:`Wage`
field appears in a `$0.00/year` format. If the :guilabel:`Schedule Pay` is set to
:guilabel:`Bi-weekly`, then the :guilabel:`Wage` field appears in a `$0.00/two weeks` format.
.. tip::
The :guilabel:`Working Schedule` drop-down menu displays all the working times for the selected
:guilabel:`Company`. To modify or add to this list, go to :menuselection:`Payroll app -->
Configuration --> Working Times`, and either :guilabel:`Create` a new working time, or click on
an existing working time, then edit it by clicking :guilabel:`Edit`.
- :guilabel:`Yearly Cost (Real)`: this field automatically updates after the :guilabel:`Schedule
Pay` and :guilabel:`Wage` fields are entered. This amount is the total yearly cost for the
@@ -132,8 +141,19 @@ The following fields are universal and apply to all localizations:
Contract Details tab
--------------------
The contract details section allows for the addition and editing of a contract, and the ability to
send the contract to the employee for approval and signatures.
The :guilabel:`Contract Details` tab allows for the addition and editing of a contract, along with
specifying which template to use when a new contract is created. These fields **must** be populated
in order to create a new contract.
.. important::
To access the various contract template fields in the :guilabel:`Contract Details` tab, the
*Salary Configurator* (`hr_contract_salary`) module **must** be :ref:`installed
<general/install>`.
When the *Salary Configurator* module is installed, the *Salary Configurator - Holidays* and
*Salary Configurator - Payroll* modules install, as well.
Once the modules are installed, the database reverts to the main dashboard.
- :guilabel:`Contract Template`: select a pre-existing contract template from the drop-down menu.
Contract templates are typically created through the configuration menu, and stored in the
@@ -193,16 +213,23 @@ Notes section
:align: center
:alt: Contract details in optional tabs for a new contract.
Personal Documents tab
----------------------
- :guilabel:`Analytic Account`: this field allows a link between the contract and a specific
analytic account for accounting purposes.
- :guilabel:`Contract Template`: select a pre-existing contract template from the drop-down menu.
Contract templates are typically created through the *Recruitment* application.
- :guilabel:`New Contract Document Template`: select a contract from the drop-down menu to be
modified for this new employee contract.
- :guilabel:`Contract Update Document Template`: select a contract from the drop-down menu, if the
employee has an existing contract that requires updating.
- :guilabel:`Notes`: the notes field is a text field where any notes for the employee contract can
be entered for future reference.
Once an :guilabel:`Employee` is selected in the :ref:`General Information section
<payroll/gen-info>`, the :guilabel:`Personal Documents` tab appears.
Modify a contract template
~~~~~~~~~~~~~~~~~~~~~~~~~~
If any documents are needed to keep on file, add them in the :guilabel:`Personal Documents` tab.
Depending on what other applications are installed, and what kind of benefits are enabled (and
offered) to the employee, the various options to add a file varies. The :guilabel:`Image` option
always appears, and is available by default.
Click the :icon:`fa-external-link` :guilabel:`(external Link)` icon at the end of either the
:guilabel:`New Contract Document Template` or :guilabel:`Contract Update Document Template` to open
the corresponding contract template, and proceed to make any desired changes.
Click the :guilabel:`Upload your file` button next to the corresponding document, navigate to the
file, then click :guilabel:`Open` to select the document and add it to the tab.
@@ -212,162 +239,135 @@ Modifying contract templates
Contracts templates can be modified at any point when changes are needed.
To modify a contract template, refer to the :ref:`contract templates <payroll/contract-templates>`
section of the main payroll documentation.
- :guilabel:`Tags`: select any tags associated with the contract.
- :guilabel:`Signed Document Workspace`: this is where the signatures are stored. Choose a
pre-configured workspace, or create a new one. To create a new :guilabel:`Signed Document
Workspace`, type in the name of the workspace, then click either :guilabel:`Create` to add the new
workspace, or :guilabel:`Create and Edit` to add the workspace and modify the workspace details.
- :guilabel:`Signed Document Tags`: select or create any tags that are only associated with the
signed contract, as opposed to the original unsigned contract.
- :guilabel:`Redirect Link`: enter a redirect link for the employee to access the contract. A
redirect link takes the user from one URL to another. In this case, it takes them to the
newly-updated contract specifically written for them.
- :guilabel:`Who can Sign`: select either :guilabel:`All Users` or :guilabel:`On Invitation`.
Salary attachments
==================
- :guilabel:`All Users`: any user in the organization can sign the contract.
- :guilabel:`On Invitation`: only users selected in this field can sign the contract.
Any automatic deductions or allocations for an employee, such as child support payments and wage
garnishments, are referred to as a *salary attachment*. Navigate to :menuselection:`Payroll app -->
Contracts --> Salary Attachments` to view a list of all the currently configured salary attachments.
- :guilabel:`Invited Users`: select the person (or people) that can sign the document.
- :guilabel:`Document`: the attached document can be replaced by clicking the :icon:`fa-pencil`
:guilabel:`(pencil)` icon. A pop-up window appears, so another document can be selected for
upload. The file **must** be a PDF. To remove the document, click the :icon:`fa-trash-o`
:guilabel:`(trash can)` icon.
Each salary attachment appears with all its relevant details displayed. The :guilabel:`Status` for
each attachment is color-coded in the far right column.
Once the edits are complete, click the :guilabel:`Save` button. All the information for the selected
contract template populates the fields in the :guilabel:`Salary Information` tab. Any additional
tabs, such as :guilabel:`Personal Documents`, appears if applicable.
Currently running salary attachments have a :guilabel:`Status` of :guilabel:`Running`, and appear in
green. Salary attachments that have been paid in-full, and are no longer active, have a
:guilabel:`Status` of :guilabel:`Completed`, and appear in blue. Cancelled salary attachments have a
:guilabel:`Status` of :guilabel:`Cancelled`, and appear in red.
Salary information
------------------
.. image:: contracts/attachments.png
.. image:: contracts/salary-info.png
:align: center
:alt: A list view of all the salary attachments with their status displayed.
:alt: Optional tabs for a new contract.
New salary attachment
---------------------
This section is where the specific salary details are defined. This section is country-specific, so
these fields vary, depending on where the company is located.
To create a new salary attachment from the :guilabel:`Salary Attachment` page, click
:guilabel:`New`, and a blank salary attachment form loads. Enter the following information on the
form:
Enter the amount in the various fields, or tick a checkbox to apply a benefit. Some options that can
be entered here include :guilabel:`Group Insurance Sacrifice Rate` and :guilabel:`Canteen Cost`, for
example.
- :guilabel:`Employees`: add any employees the salary attachment applies to using the drop-down
menu.
Some fields may be automatically filled in as other fields are entered. For example, the
:guilabel:`Yearly Cost (Real)` and :guilabel:`Monthly Cost (Real)` updates once the :guilabel:`Wage`
is populated.
.. tip::
Multiple employees can be added, if the salary attachment details are identical. After all
employees are added, a :guilabel:`Create Individual Attachments` button appears at the top of
the form.
Personal documents
------------------
After the form is completed, click the :guilabel:`Create Individual Attachments` button to
create separate salary attachments for each of the employees listed in this field.
This tab **only** appears after an :guilabel:`Employee` is selected, and houses any documents that
are linked to the employee on their employee record. Documents cannot be added to this tab, this tab
**only** shows documents that are already uploaded and associated with the employee.
.. image:: contracts/individual-attachments.png
:align: center
:alt: The Create Individual Attachments button that appears after multiple employees are
added to the Employees field.
The available documents in this tab can be downloaded. Click the :icon:`fa-download`
:guilabel:`(download)` icon next to the document to download it.
This is a time-saving tip, so that separate salary attachments do not need to be created
individually. They can be created in a batch using this method.
Save and send the contract
--------------------------
- :guilabel:`Description`: enter a description for the specific type of salary attachment.
- :guilabel:`Type`: select the :ref:`type of salary attachment <payroll/salary-attachment-types>`
from the drop-down menu. The options listed come from the salary attachment types configured in
the configuration menu.
- :guilabel:`Start Date`: enter the date the salary attachment begins. The first of the current
month populates this field, by default. Click on the date, and a calendar appears. Navigate to the
desired month and year, using the :guilabel:`< > (arrow)` icons, and click on the date to select
it.
- :guilabel:`Document`: if any documents are needed for the salary attachment, click the
:guilabel:`Upload your file` button, and a file explorer appears. Navigate to the file, and click
:guilabel:`Open` to select them, and attach them to the form.
- :guilabel:`Monthly Amount`: enter the amount to be taken out of the paycheck each month for this
salary attachment.
- :guilabel:`Estimated End Date`: this field only appears after the :guilabel:`Monthly Amount` field
is populated, and if the :guilabel:`Type` is **not** set to :guilabel:`Child Support`. This date
is when the salary attachment is predicted to end, and is automatically calculated once both, the
:guilabel:`Monthly Amount` and :guilabel:`Total Amount`, fields are populated. This is calculated
based on how much is required to be paid, and how much is paid towards that amount each month. If
either the :guilabel:`Monthly Amount` or :guilabel:`Total Amount` changes, this field
automatically updates. It is **not** possible to modify this field.
- :guilabel:`Total Amount`: enter the total amount to be paid in this field. If :guilabel:`Child
Support` is selected for the :guilabel:`Type`, this field does **not** appear.
Once a contract has been created and/or modified, save the contract by clicking the :guilabel:`Save`
button. Next, the contract must be sent to the employee to be signed.
.. image:: contracts/garnishment.png
:align: center
:alt: Enter a new line for each type of garnishment.
.. important::
When the total amount has been paid for the salary attachment, navigate to the individual salary
attachment, and click the :guilabel:`Mark as Completed` button at the top of the form. This
changes the status to :guilabel:`Completed`, and the garnishments are no longer taken out of the
employee's paychecks.
Offers
======
Once a contract has been created or modified, the contract **must** be sent to the employee to be
accepted and signed.
Send an offer
-------------
Open an individual contract by navigating to :menuselection:`Payroll app --> Contracts ->
Contracts`, and click on a contract to open the contract form. Click on the :guilabel:`Generate
Offer` button at the top of the page, and a :guilabel:`Generate Simulation Link` pop-up form
appears.
Click on one of the following buttons to send the contract to the employee:
.. image:: contracts/send-contract.png
:align: center
:alt: Send the contract to the employee via one of the buttons.
The :guilabel:`Generate Simulation Link` pop-up form contains all the information pulled from the
contract, including the :guilabel:`Contract Template`, :guilabel:`Job Position`, :guilabel:`Job
Title`, :guilabel:`Department`, :guilabel:`Contract Start Date`, :guilabel:`Default Vehicle`,
:guilabel:`Contract Type`, and :guilabel:`Yearly Cost`.
- :guilabel:`Generate Simulation Link`: this option is **only** for Belgian companies. Clicking this
opens a pop-up window that contains the basic information from the contract, as well as a link for
the contract when using the salary configurator. Click :guilabel:`Send` to send an email to the
employee, so they can sign the contract.
At the bottom of the pop-up form is a :guilabel:`Link Expiration Date`. This is the timeframe that
the contract offer is valid for. By default, this field is pre-populated with `30 days`, but it can
be modified.
Click the :guilabel:`Send By Email` button, and a :guilabel:`Send Offer Email` template pop-up
window appears. Make any modifications to the email, and attach any additional documents needed,
then click :guilabel:`Send` to send the offer.
.. note::
In order to send a contract using the :guilabel:`Generate Simulation Link`, there **must** be a
signature field in the contract PDF being sent to the employee, so they can sign it.
.. image:: contracts/send-offer.png
:align: center
:alt: The email template pop-up to send an offer.
- :guilabel:`Signature Request`: clicking this reveals a pop-up window, where an email can be typed
to the employee. Select the document (such as a contract, NDA, or Homeworking Policy) from the
drop-down menu, and fill out the email section. Click :guilabel:`Send` when the email is ready to
be sent.
.. note::
To send a contract using the :guilabel:`Generate Simulation Link`, there **must** be a signature
field in the contract PDF being sent to the employee, so they can sign it.
Accept an offer
---------------
Salary attachments
------------------
Once the offer email is received, the offer can be accepted, and the contract can be signed.
Any automatic deductions or allocations for an employee, such as child support payments and wage
garnishments, are referred to as a *salary attachment*. This section is where all of these
deductions or allocations are set.
In the offer email, click the :guilabel:`Configure your package` button, and the offer loads in a
new tab. Enter the requested information on the form. Next, click the :guilabel:`Review Contract &
Sign` button to begin the signing process.
To add a new deduction, first navigate to :menuselection:`Payroll app --> Contracts --> Salary
Attachments`. Next, click :guilabel:`Create`, and a new salary attachment form loads.
Click the :guilabel:`CLICK TO START` button at the top-left of the contract. Follow the prompts to
complete the signature request. The contract auto-populates with the information entered on the
:guilabel:`Configure your package` page. When done, click the :guilabel:`Validate & Send Completed
Document` button at the bottom of the contract.
After the document is signed by the (potential) employee, management signs the contract next. The
manager's signature is completed directly in the *Sign* application.
.. image:: contracts/sign-contract.png
.. image:: contracts/garnishment.png
:align: center
:alt: The contract offer, ready to sign with the Click to Start button highlighted.
:alt: The salary attachment form with everything filled in for Ronnie Hart's child support.
.. note::
Depending on the localization settings, there may be the option to customize the offer in the
:guilabel:`Configure your package` tab.
Fill out the following fields on the form:
View offers
-----------
- :guilabel:`Employee`: using the drop-down menu, select the employee the salary attachment applies
to.
- :guilabel:`Description`: enter a short description for the salary attachment, such as `Child
Support` or `529 Contribution`.
- :guilabel:`Type`: using the drop-down menu, select the type of salary attachment being created.
Choose from:
To view the current offers, navigate to :menuselection:`Payroll app --> Contracts --> Offers`. This
presents all offers in a list view, grouped by status, and displays the number of offers in each
status category. The statuses are: :guilabel:`Fully Signed`, :guilabel:`Partially Signed`,
:guilabel:`In Progress`, and :guilabel:`Expired`.
- :guilabel:`Attachment of Salary`: any payments taken out towards something that is *not* child
support. Typically any garnishments, such as lawsuit payments, payments toward taxes owed, etc.
- :guilabel:`Assignment of Salary`: any deduction that is not required, but voluntary, such as a
pre-tax allocation to a college savings account.
- :guilabel:`Child Support`: any payments taken out specifically for child support.
To view the offers with a specific status, click on the status to expand the list. If a specific
status has no offers, the status is not visible in the list.
.. image:: contracts/offers.png
:align: center
:alt: The offers in a list view, grouped by status.
- :guilabel:`Start Date`: the date the salary attachment starts. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Estimated End Date`: this field automatically populates after both the
:guilabel:`Monthly Amount` and :guilabel:`Total Amount` fields are populated. This field is
**not** modifiable.
- :guilabel:`Document`: attach any documents relevant to the salary attachment. Click the
:guilabel:`Upload Your File` button, navigate to the desired document in the file explorer, then
click :guilabel:`Open` to select the document, and attach it to the form. To change the attached
document, click the :icon:`fa-pencil` :guilabel:`(pencil)` icon, and select a different document.
To remove a document, click the :icon:`fa-trash-o` :guilabel:`(trash can)` icon.
- :guilabel:`Monthly Amount`: enter the amount to be taken out of the employee's paycheck every
month for this specific salary attachment.
- :guilabel:`Total Amount`: enter the total amount that the employee pays for the salary attachment
to be completed.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -42,6 +42,8 @@ for each click of the arrow, respectively.
At any point, to return to a view containing the current day, click the :guilabel:`Today` button.
.. _payroll/new-work-entry:
Add a new work entry
====================
+2 -264
View File
@@ -490,270 +490,6 @@ the email pop-up.
:alt: Send a custom survey, also referred to as an interview form, to an applicant using a
pre-configured template.
Refuse
~~~~~~
At any point in the recruitment pipeline, an applicant can be refused from the job application
process. To refuse an applicant, click on an applicant's card to navigate to a detailed view of the
applicant's card. At the top of the applicant's card, there are several buttons. Click the one
labeled :guilabel:`Refuse`.
A :guilabel:`Refuse Reason` pop-up window appears. Click the :guilabel:`Refuse Reason` from the
presented options. The default refuse reasons in Odoo, and their corresponding email templates, are:
.. list-table::
:header-rows: 1
:stub-columns: 1
* - Email Template
- Refusal Reason
* - :guilabel:`Recruitment: Refuse`
- | :guilabel:`Doesn't fit the job requirements`
| :guilabel:`Language issues`
| :guilabel:`Role already fulfilled`
| :guilabel:`Duplicate`
| :guilabel:`Spam`
* - :guilabel:`Recruitment: Not interested anymore`
- | :guilabel:`Refused by Applicant: don't like job`
| :guilabel:`Refused by Applicant: better offer`
| :guilabel:`Refused by Applicant: salary`
Additional refusal reasons :ref:`can be created and existing ones can be modified or deleted
<recruitment/new-refuse>`.
.. note::
Pre-configured email templates in Odoo sometimes use dynamic placeholders, which are customized
pieces of data that populate dynamic content. For example, if the applicant's name is a piece of
dynamic content, the applicant's name appears anytime that dynamic placeholder appears on the
email template. For more detailed information on email templates, refer to the
:doc:`../general/companies/email_template` documentation.
After a :guilabel:`Refuse Reason` is selected, two fields appear below the refusal reason:
:guilabel:`Send Email` and :guilabel:`Email Template`.
The applicant's email address automatically populates the :guilabel:`Send Email` field; additional
email recipients cannot be added. If an email should **not** be sent to the applicant, uncheck the
:guilabel:`Send Email` checkbox.
The email template associated with the refusal reason populates the :guilabel:`Email Template`
field. If a different email template is desired, select a different template from the
:guilabel:`Email Template` drop-down menu. To view the email template, click the :guilabel:`External
Link` icon to the right of the :guilabel:`Email Template` field. The email template loads in a
:guilabel:`Open: Email Template` pop-up window, and can be modified if needed. After making
modifications, click :guilabel:`Save & Close`.
To send the refusal email to the applicant, click :guilabel:`Refuse`. The refusal email is sent to
the applicant, and a :guilabel:`Refused` banner appears on the applicant's card in the top-right
corner.
.. image:: recruitment/refuse.png
:align: center
:alt: An applicant's card with the refused banner appearing in the top-right corner in red.
After refusal, the applicant's card is no longer visible in the job position's Kanban view. To view
the refused applicants only, click the :guilabel:`▼ Toggle Search Panel` button in the search box,
then click :guilabel:`Refused` under the :guilabel:`Filters` section. All applicants that have been
refused for the job position appear, in the stage they were when they were refused.
To view all applicants that have been refused from all job positions, navigate to the
:menuselection:`Recruitment app --> Applications --> All Applications`. Click the :guilabel:`▼
Toggle Search Panel` button in the search box, then click :guilabel:`Refused` under the
:guilabel:`Filters` section. All applications for all job positions are presented in a list view,
organized by stage.
.. _recruitment/new-refuse:
Create or modify refuse reasons
*******************************
To view all currently configured refuse reasons, navigate to :menuselection:`Recruitment app -->
Settings --> Applications: Refuse Reasons`. All the refuse reasons appear in a list view.
To create a new refuse reason, click the :guilabel:`New` button in the top-left corner. A blank
line appears at the bottom of the :guilabel:`Description` column.
Type in the new refuse reason in the field. It is recommended to enter a reason that is short and
concise, such as `offer expired` or `withdrew application`.
Then, in the :guilabel:`Email Template` field, click on the field to reveal a drop-down menu.
Select an :guilabel:`Email Template` from the list to be used when this refuse reason is selected.
If a new :guilabel:`Email Template` is desired, type in the name for the new template in the field.
Then, click :guilabel:`Create and edit...` and a :guilabel:`Create Email Template` form pop-up
window appears.
Enter a :guilabel:`Name` for the form and an email :guilabel:`Subject` in the corresponding fields.
Enter the email content in the :guilabel:`Content` tab. Make any other desired modifications to the
template, then click :guilabel:`Save & Close` to save the template and return to the
:guilabel:`Refuse Reasons` list. The new template appears in the new refuse reason :guilabel:`Email
Template` field.
To make any modifications to a refuse reason, click on the line, and make any desired changes.
New applicant
~~~~~~~~~~~~~
An applicant card can be manually added if needed. If an applicant needs to be added to the list of
prospective candidates and an applicant card has not been created yet (they have not applied for the
job online) an applicant card can be easily added from the job position Kanban view in one of two
ways, using either the :ref:`quick add <recruitment/quick-add-applicant>` button or the :ref:`New
<recruitment/create-new-applicant>` button.
.. _recruitment/quick-add-applicant:
Quick add
*********
Quickly add a new applicant using the *quick add* button. If not already in the job position Kanban
view, navigate to the main recruitment dashboard by going to :menuselection:`Recruitment app -->
Applications --> By Job Positions`. Click the :guilabel:`(#) New Applications` button on the job
position card that the applicant should be added to. Then, click on the small :icon:`fa-plus`
:guilabel:`(plus)` icon in the top-right of the :guilabel:`New` stage to quickly add a new
applicant.
Enter the following information on the card:
- :guilabel:`Subject/Application`: Enter the title for the card. Typically this is the applicant's
name and job position being applied to, for example: `Laura Smith - HR Manager`. This field is not
visible in the Kanban view, unless the :guilabel:`Applicant's Name` is left blank. If there is no
:guilabel:`Applicant's Name`, then the :guilabel:`Subject/Application Name` is what is displayed
on the applicant card in the Kanban view.
- :guilabel:`Applicant's Name`: enter the applicant's name.
- :guilabel:`Email`: enter the applicant's email address.
- :guilabel:`Applied Job`: the current job position populates this field. If needed, the job
position can be changed by selecting a different position from the drop-down menu. If a different
job position is selected, after the card is created, the card appears in the selected job
position.
After the information is entered, click :guilabel:`Add`. The applicant appears in the list, and a
new blank applicant card appears. Click either the :icon:`fa-trash-o` :guilabel:`delete` icon or
anywhere on the screen to close the card.
If preferred, after entering the applicant name, click :guilabel:`Edit` and a detailed
:guilabel:`Applicant Form` loads. :ref:`Enter the information on the form
<recruitment/applicant-details>`.
.. image:: recruitment/quick-add.png
:align: center
:alt: All the fields for a new applicant form entered when using the Quick Add option.
.. _recruitment/create-new-applicant:
New
***
Add a new applicant including all the relevant information using the *New* button. If not already in
the Kanban view for the job position to add an applicant to, navigate to the main recruitment
dashboard by going to :menuselection:`Recruitment app --> Applications --> By Job Positions`. Then,
click the :guilabel:`New` button in the top-left of the Kanban view and a blank applicant form
loads.
Certain fields on the applicant card may be pre-populated, depending on how the job position is
configured. Typically, the :guilabel:`Job` section, as well as the :guilabel:`Recruiter` field, are
all pre-populated.
Enter the following information on the new applicant form. Note that not all fields listed below may
be visible. Depending on installed applications and configurations, some fields may not be
displayed.
.. _recruitment/applicant-details:
Applicant section
^^^^^^^^^^^^^^^^^
- :guilabel:`Subject/Application Name`: this is the only required field. Enter the title for the
card. Typically this is the applicant's name and job position being applied to, for example:
`John Smith - Experienced Developer`. This field is not visible in the Kanban view, unless the
:guilabel:`Applicant's Name` is left blank. If there is no :guilabel:`Applicant's Name`, then the
:guilabel:`Subject/Application Name` is what is displayed on the applicant card in the Kanban
view.
- :guilabel:`Applicant's Name`: enter the applicant's name.
- :guilabel:`Email`: enter the applicant's email address.
- :guilabel:`Phone`: enter the applicant's phone number.
- :guilabel:`Mobile`: enter the applicant's mobile number.
- :guilabel:`LinkedIn Profile`: enter the web address for the applicant's personal profile on
LinkedIn.
- :guilabel:`Degree`: select the applicant's highest level of education earned from the drop-down
menu. Options are :guilabel:`Graduate`, :guilabel:`Bachelor Degree`, :guilabel:`Master Degree`, or
:guilabel:`Doctoral Degree`. The :guilabel:`Graduate` option indicates graduating the highest
level of school before a Bachelor's degree, such as a high school or secondary school diploma,
depending on the country.
- :guilabel:`Interviewers`: using the drop-down menu, select the people who will conduct the
interview(s). The selected people must have either *recruiter* or *officer* rights configured for
the Recruitment application to appear in the drop-down list.
- :guilabel:`Recruiter`: select the person responsible for the entire recruitment process for the
job position. Only *users* can be selected, and all users are presented in the drop-down to
select from.
- :guilabel:`Evaluation`: click on one of the stars to select a rating for the applicant. One star
indicates :guilabel:`Good`, two stars indicates :guilabel:`Very Good`, and three stars indicates
:guilabel:`Excellent.`
- :guilabel:`Source`: using the drop-down menu, select where the applicant learned about the job
position. The following options come pre-configured in Odoo: :guilabel:`Search engine`,
:guilabel:`Lead Recall`, :guilabel:`Newsletter`, :guilabel:`Facebook`, :guilabel:`Twitter`,
:guilabel:`LinkedIn`, :guilabel:`Monster`, :guilabel:`Glassdoor`, and :guilabel:`Craigslist`. To
add a new :guilabel:`Source`, type in the source, then click :guilabel:`Create "(new source)"`.
- :guilabel:`Medium`: using the drop-down menu, select the method, or :guilabel:`Medium`, for the
:guilabel:`Source` that the applicant found the job listing with. The pre-configured options are:
:guilabel:`Banner`, :guilabel:`Direct`, :guilabel:`Email`, :guilabel:`Facebook`, :guilabel:`Google
Adwords`, :guilabel:`LinkedIn`, :guilabel:`Phone`, :guilabel:`Television`, :guilabel:`Twitter`
(now known as "X"), or :guilabel:`Website`. To add a new :guilabel:`Medium`, type in the medium,
then click :guilabel:`Create "(new medium)"`.
- :guilabel:`Referred By User`: if referral points are to be earned for this job position in the
*Referrals* application, select the user who referred the applicant from the drop-down menu. The
*Referrals* application must be installed for this field to appear.
- :guilabel:`Availability`: select the available start date for the applicant. To select a date,
click on the field to reveal a calendar. Use the :guilabel:`< (left)` and :guilabel:`> (right)`
arrows on either side of the month to navigate to the desired month, then click on the
:guilabel:`day` to select the date. If no entry is selected that indicates the applicant is ready
to begin work immediately.
- :guilabel:`Tags`: select as many tags as desired from the drop-down menu. To add a tag that does
not exist, type in the tag name, then click :guilabel:`Create "new tag"`.
Job section
^^^^^^^^^^^
The following fields are pre-populated when creating a new applicant, as long as these field are
specified on the Job Position. Editing the fields is possible, if desired.
- :guilabel:`Applied Job`: select the job position the applicant is applying to from the drop-down
menu.
- :guilabel:`Department`: select the department the job position falls under from the drop-down
menu.
- :guilabel:`Company`: select the company the job position is for using the drop-down menu. This
field only appears when in a multi-company database.
Contract section
^^^^^^^^^^^^^^^^
- :guilabel:`Expected Salary`: enter the amount the applicant is requesting for the role in this
field. The number should be in a `XX,XXX.XX` format. The currency is determined by the
localization setting for the company.
- :guilabel:`Extra advantages...`: if any extra advantages are requested by the applicant, enter it
in the :guilabel:`Extra advantages...` field to the right of the :guilabel:`Expected Salary`
field. This should be short and descriptive, such as `1 week extra vacation` or `dental plan`.
- :guilabel:`Proposed Salary`: enter the amount to be offered to the applicant for the role in this
field. The number should be in a `XX,XXX.XX` format. The currency is determined by the
localization setting for the company.
- :guilabel:`Extra advantages...`: if any extra advantages are offered to the applicant, enter it in
the :guilabel:`Extra advantages...` field to the right of the :guilabel:`Proposed Salary` field.
This should be short and descriptive, such as `unlimited sick time` or `retirement plan`.
Application summary tab
^^^^^^^^^^^^^^^^^^^^^^^
Any additional details or notes that should be added to the applicant's card can be typed into this
field.
Skills tab
^^^^^^^^^^
Skills can be added to the applicant's card. To add a skill, follow the same steps as outlined in
the skills section of the :ref:`Create new employees <employees/skills>` document.
.. image:: recruitment/new-applicant.png
:align: center
:alt: All the fields for a new applicant form entered.
.. _recruitment/initial-qualification:
Initial qualification
@@ -1132,3 +868,5 @@ Fill out the rest of the form. For detailed information on the fields, refer to
:titlesonly:
recruitment/new_job
recruitment/add-new-applicants
recruitment/refuse_applicant
@@ -0,0 +1,170 @@
==================
Add new applicants
==================
Once an applicant submits an application, either using the online application, or emailing a job
position alias, an applicant card is automatically created in the *Recruitment* application.
However, in some instances, applicants may need to be created manually in the database. This could
be necessary if, for example, a company accepts paper applications in the mail, or is meeting
prospective applicants at an in-person job fair.
To view current applicants, navigate to the :menuselection:`Recruitment` app, then click the desired
job position card. Doing so reveals the :guilabel:`Applications` page, which displays all
applicants for that specific role, in a default Kanban view, organized by stage.
Add new applicants from a job position's :guilabel:`Applications` page by using either: the
:ref:`New <recruitment/create-new-applicant>` button or the :ref:`quick add
<recruitment/quick-add-applicant>` button.
.. _recruitment/quick-add-applicant:
Quick add
=========
On the :guilabel:`Applications` page, click the on the quick add button, represented by a small
:icon:`fa-plus` :guilabel:`(plus)` icon in the top-right corner of each stage to quickly add a new
applicant to that stage.
Enter the following information on the card:
- :guilabel:`Subject/Application`: enter the title for the card. Typically, this is the applicant's
name, and job position being applied to. For example: `Laura Smith - HR Manager`. The text entered
in this field is **not** visible in the Kanban view of the :guilabel:`Applications` page, unless
the :guilabel:`Applicant's Name` field is left blank.
- :guilabel:`Applicant's Name`: enter the applicant's name. Displays as the card title in the
Kanban view of the :guilabel:`Applications` page.
- :guilabel:`Email`: enter the applicant's email address.
- :guilabel:`Applied Job`: the current job position populates this field. If needed, the job
position can be changed by selecting a different position from the drop-down menu. If a different
job position is selected, after the card is created, the card appears on the
:guilabel:`Applications` page for that newly-selected job position.
After the information is entered, click :guilabel:`Add`. The applicant appears in the list, and a
new blank applicant card appears.
If preferred, after entering the :guilabel:`Applicant's Name` in the Kanban card that appears, click
:guilabel:`Edit`, and a detailed applicant form loads. Refer to the :ref:`New applicant form
<recruitment/applicant-details>` section for details about filling out the form.
When doing a quick add, clicking away from an empty card, or clicking the :icon:`fa-trash-o`
(:guilabel:`trash`) icon, discards the applicant.
.. image:: add-new-applicants/quick-add.png
:align: center
:alt: All the fields for a new applicant form entered when using the Quick Add option.
.. _recruitment/create-new-applicant:
New applicant form
==================
On the new applicant form, the :guilabel:`Subject / Application` field is populated with the
pre-selected job position, by default. Certain fields on the applicant card may also be
pre-populated, depending on how the job position is configured. Typically, the :guilabel:`Job`
section, as well as the :guilabel:`Recruiter` field, are pre-populated.
Complete the fields in the following sections on the new applicant form.
.. note::
Depending on installed applications and configurations, some fields may **not** be displayed.
.. image:: add-new-applicants/new-applicant.png
:align: center
:alt: All the fields for a new applicant form entered.
.. _recruitment/applicant-details:
Applicant section
-----------------
- :guilabel:`Subject/Application Name`: this is the **only** required field. Enter the title for the
card in this field. Typically, this is the applicant's name, and the job position being applied
to. For example: `John Smith - Experienced Developer`. This field is **not** visible in the Kanban
view of the :guilabel:`Applications` page, unless the :guilabel:`Applicant's Name` is left blank.
- :guilabel:`Applicant's Name`: enter the applicant's name. This field is displayed as the card
title in the Kanban view of the :guilabel:`Applications` page.
- :guilabel:`Email`: enter the applicant's email address.
- :guilabel:`Phone`: enter the applicant's phone number.
- :guilabel:`Mobile`: enter the applicant's mobile number.
- :guilabel:`LinkedIn Profile`: enter the web address for the applicant's personal profile on
LinkedIn.
- :guilabel:`Degree`: select the applicant's highest level of education from the drop-down menu.
Options are: :guilabel:`Graduate`, :guilabel:`Bachelor Degree`, :guilabel:`Master Degree`, or
:guilabel:`Doctoral Degree`. The :guilabel:`Graduate` option indicates the applicant graduated at
the highest level of school before a Bachelor's degree, such as a high school or secondary school
diploma, depending on the country.
- :guilabel:`Interviewers`: using the drop-down menu, select the people to conduct the interviews.
The selected people **must** have either *recruiter* or *officer* rights configured for the
*Recruitment* application to appear in the drop-down list. Refer to the :doc:`Access rights
<../../general/users/access_rights>` documentation for more information.
- :guilabel:`Recruiter`: select the user responsible for the entire recruitment process for the job
position.
- :guilabel:`Evaluation`: represents a rating for the applicant: one star (:icon:`fa-star`
:icon:`fa-star-o` :icon:`fa-star-o`) is :guilabel:`Good`, two stars (:icon:`fa-star`
:icon:`fa-star` :icon:`fa-star-o`) is :guilabel:`Very Good`, and three stars (:icon:`fa-star`
:icon:`fa-star` :icon:`fa-star`)is :guilabel:`Excellent.`
- :guilabel:`Source`: using the drop-down menu, select where the applicant learned about the job
position. The following options come pre-configured in Odoo: :guilabel:`Search engine`,
:guilabel:`Lead Recall`, :guilabel:`Newsletter`, :guilabel:`Facebook`, :guilabel:`Twitter`,
:guilabel:`LinkedIn`, :guilabel:`Monster`, :guilabel:`Glassdoor`, and :guilabel:`Craigslist`. To
add a new :guilabel:`Source`, type in the source, then click :guilabel:`Create "(new source)"`.
- :guilabel:`Medium`: using the drop-down menu, specify how the job listing was found. The
pre-configured options are: :guilabel:`Banner`, :guilabel:`Direct`, :guilabel:`Email`,
:guilabel:`Facebook`, :guilabel:`Google Adwords`, :guilabel:`LinkedIn`, :guilabel:`Phone`,
:guilabel:`Television`, :guilabel:`Twitter` (now known as "X"), or :guilabel:`Website`. To add a
new :guilabel:`Medium`, type in the medium, then click :guilabel:`Create "(new medium)"`.
- :guilabel:`Referred By User`: if referral points are to be earned for this job position in the
*Referrals* application, select the user who referred the applicant from the drop-down menu. The
*Referrals* application **must** be installed for this field to appear.
- :guilabel:`Availability`: select the available start date for the applicant. To select a date,
click on the field to reveal a popover calendar. Use the :icon:`fa-angle-left` :guilabel:`(left)`
and :icon:`fa-angle-right` :guilabel:`(right)` arrows on either side of the month to navigate to
the desired month, then click the desired date. Leaving this field blank indicates the applicant
can start immediately.
- :guilabel:`Tags`: select as many tags as desired from the drop-down menu. To add a tag that does
not exist, type in the tag name, then click :guilabel:`Create "new tag"` from the resulting
drop-down menu.
Job section
-----------
The following fields are pre-populated when creating a new applicant, as long as these field are
specified on the job position form. Editing the fields is possible, if desired.
- :guilabel:`Applied Job`: select the job position the applicant is applying to from the drop-down
menu.
- :guilabel:`Department`: select the department the job position falls under from the drop-down
menu.
- :guilabel:`Company`: select the company the job position is for using the drop-down menu. This
field **only** appears when in a multi-company database.
Contract section
----------------
- :guilabel:`Expected Salary`: enter the amount the applicant is requesting in this field. The
number should be in a `XX,XXX.XX` format. The currency is determined by the localization setting
for the company.
- :guilabel:`Extra advantages...`: if any extra advantages are requested by the applicant, enter
it in the :guilabel:`Extra advantages...` field to the right of the :guilabel:`Expected Salary`
field. This should be short and descriptive, such as `1 week extra vacation` or `dental plan`.
- :guilabel:`Proposed Salary`: enter the amount to be offered to the applicant for the role in this
field. The number should be in a `XX,XXX.XX` format.
- :guilabel:`Extra advantages...`: if any extra advantages are offered to the applicant, enter it
in the :guilabel:`Extra advantages...` field to the right of the :guilabel:`Proposed Salary`
field. This should be short and descriptive, such as `unlimited sick time` or `retirement plan`.
Application Summary tab
-----------------------
Any additional details or notes that should be added to the applicant's card can be typed into this
field.
Skills tab
----------
Skills can be added to the applicant's card. For details on adding skills, refer to the
:ref:`Create new employees <employees/skills>` document.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,144 @@
=================
Refuse applicants
=================
At any point in the recruitment process, an applicant can be refused for a job position.
To refuse an applicant, start by navigating to the applicant's card in the *Recruitment* app. This
is done in one of two ways:
- Navigate to :menuselection:`Recruitment app --> Applications --> All Applications`. In the
:guilabel:`Applications` list, click anywhere on the desired applicant's line to open that
specific applicant's card.
- Navigate to the main *ob Positions* dashboard by navigating to :menuselection:`Recruitment app
--> Applications --> By Job Position`. Next, click on the desired job position card, then click on
the individual applicant card from the :guilabel:`Applications` page.
At the top of the applicant's card, there are several buttons. Click the one labeled
:guilabel:`Refuse`.
.. _recruitment/refuse-reasons:
Refuse reasons
==============
*Refuse reasons* allow recruiters to document why an applicant was not a good fit, and send specific
refusal reason email templates to the applicant.
Clicking :guilabel:`Refuse` on an applicant's form makes the :guilabel:`Refuse Reason` pop-up window
appear.
The default refuse reasons in Odoo, and their corresponding email templates, are:
.. list-table::
:header-rows: 1
:stub-columns: 1
* - Email Template
- Refusal Reason
* - :guilabel:`Recruitment: Refuse`
- | :guilabel:`Doesn't fit the job requirements`
| :guilabel:`Language issues`
| :guilabel:`Role already fulfilled`
| :guilabel:`Duplicate`
| :guilabel:`Spam`
* - :guilabel:`Recruitment: Not interested anymore`
- | :guilabel:`Refused by Applicant: don't like job`
| :guilabel:`Refused by Applicant: better offer`
| :guilabel:`Refused by Applicant: salary`
Additional refusal reasons :ref:`can be created, and existing ones can be modified (or deleted)
<recruitment/new-refuse>`.
Select a refusal reason to :ref:`send a refusal email <recruitment/send-refusal-email>`.
.. _recruitment/new-refuse:
Create or modify refuse reasons
-------------------------------
To view and configure refuse reasons, navigate to :menuselection:`Recruitment app --> Configuration
--> Applications: Refuse Reasons`. Doing so reveals the :guilabel:`Refuse Reasons` page, where all
the existing refuse reasons are listed.
To create a new refuse reason from the :guilabel:`Refuse Reasons` page, click the :guilabel:`New`
button in the top-left corner. A blank line appears at the bottom of the list, with an empty field
present in the :guilabel:`Description` column.
Type in the new refuse reason in the field. It is recommended to enter a reason that is short and
concise, such as `Offer expired` or `Withdrew application`.
Then, in the :guilabel:`Email Template` field, click on the field to reveal a drop-down menu.
Select an :guilabel:`Email Template` from the list to be used when this refuse reason is selected.
If a new :guilabel:`Email Template` is desired, type in the name for the new template in the field.
Then, click :guilabel:`Create and edit...`, and a :guilabel:`Create Email Template` form pop-up
window appears.
In the :guilabel:`Create Email Template` pop-up window, enter a :guilabel:`Name` for the form, and
an email :guilabel:`Subject` in the corresponding fields.
Enter the desired email content in the :guilabel:`Content` tab. Proceed to make any other
modifications to the template in the :guilabel:`Email Configuration` and :guilabel:`Settings` tabs,
then click :guilabel:`Save & Close` to save the template. Upon clicking that, Odoo returns to the
:guilabel:`Refuse Reasons` list.
The new template appears in the new refuse reason :guilabel:`Email Template` field.
.. note::
Pre-configured recruitment refusal email templates in Odoo use dynamic placeholders, which are
personalized placeholders that populate data from the applicant's record in the email body.
For example, if the applicant's name is a used in a dynamic placeholder, the applicant's name
appears anytime that dynamic placeholder appears on the email template.
For more detailed information on email templates, refer to the
:doc:`../../general/companies/email_template` documentation.
.. _recruitment/send-refusal-email:
Send refusal email
==================
After clicking the :guilabel:`Refuse` button on an applicant form, a :ref:`Refuse Reason
<recruitment/refuse-reasons>` can be selected from the :guilabel:`refuse reason` pop-up window.
Then, two fields appear below the selected refusal reason: :guilabel:`Send Email` and
:guilabel:`Email Template`.
.. image:: refuse_applicant/refuse-pop-up.png
:align: center
:alt: The Refuse Reason pop-up window that appears when refusing an applicant.
The applicant's email address automatically populates the :guilabel:`Send Email` field; additional
email recipients **cannot** be added.
If an email should **not** be sent to the applicant, uncheck the :guilabel:`Send Email` checkbox.
The email template associated with the refusal reason populates the :guilabel:`Email Template`
field. If a different email template is desired, select a different template from the
:guilabel:`Email Template` drop-down menu.
To send the refusal email to the applicant, ensure the :guilabel:`Send Email` checkbox is ticked,
then click :guilabel:`Refuse` at the bottom of the :guilabel:`Refuse Reason` pop-up window. The
refusal email is sent to the applicant, and a red :guilabel:`Refused` banner appears on the
applicant's card in the top-right corner.
.. image:: refuse_applicant/refuse.png
:align: center
:alt: An applicant's card with the refused banner appearing in the top-right corner in red.
View refused applicants
=======================
After refusal, the applicant's card is no longer visible in the job position's Kanban view. However,
it is still possible to view applicants who have been refused.
To view only the refused applicants, go to :menuselection:`Recruitment app --> Applications --> By
Job Positions`, or :menuselection:`Recruitment app --> Applications --> All Applications`.
On the :guilabel:`Applications` page, click the :icon:`fa-caret-down` :guilabel:`(caret down)`
button in the :guilabel:`Search...` bar, then click :guilabel:`Refused`, located under the
:guilabel:`Filters` section.
All applicants that have been refused for the job position appear on the :guilabel:`Applications`
page for that position, organized by the stage they were in when they were refused.
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+16 -281
View File
@@ -1,3 +1,5 @@
:show-content:
=========
Referrals
=========
@@ -9,9 +11,9 @@ recruitment pipeline. Once enough referral points are earned, they can be exchan
*Referrals* application integrates with the *Employees*, *Recruitment*, and *Website* applications,
all of which must be installed in order for the *Referrals* application to function.
The only configurations needed for the *Referrals* application *after* installation are related to
the :ref:`rewards <referrals/rewards>`; everything else is pre-configured when Odoo *Referrals* is
installed.
The only configurations needed for the *Referrals* application *after* it has been installed, are
related to the :doc:`rewards <referrals/rewards>`; everything else is pre-configured when Odoo
*Referrals* is installed.
Users with either :guilabel:`Referral User`, :guilabel:`Officer`, or :guilabel:`Administrator`
access rights for the *Recruitment* application have access to the *Referrals* application. Only
@@ -97,169 +99,6 @@ desired position.
:align: center
:alt: The onboarding slides in a list, with the drag and drop arrows highlighted.
Share job positions
===================
In order to earn referral points, a user must first share a job position, so the applicant can apply
for the position. Job positions can be shared in several ways within the *Referrals* application,
through the :ref:`View Jobs <referrals/view-jobs>` button and the :ref:`Email A Friend
<referrals/email-jobs>` button, located at the bottom of the *Referrals* app dashboard.
.. note::
Sharing jobs can **only** occur after onboarding slides have been viewed or skipped.
.. _referrals/view-jobs:
View Jobs
---------
To see all job positions that are actively recruiting candidates, click the :guilabel:`View Jobs`
button on the main Referrals dashboard. This presents all job positions, with each individual job
presented in its own card.
.. image:: referrals/jobs.png
:align: center
:alt: The 'View Jobs' screen, displaying all current open job positions. All information is
displayed on the card.
Each job position card contains the following information:
- The title of the job position. This information is taken from the :guilabel:`Job Position` field
of the job form.
- The number of positions being recruited. This information is taken from the :guilabel:`Expected
New Employees` field of the :guilabel:`Recruitment` tab of the job form.
- The points a user will earn when an applicant applies for the position.
- The job description detailing the job position. This information is taken from the :guilabel:`Job
Position` tab of the job form.
To see all the details for a job position, click the :guilabel:`More Info` button on the specific
card. This opens the job position webpage in a new browser tab. This is what an applicant sees
before applying for a position.
.. note::
Only published job positions will be visible in the Referrals app. To check which job positions
are published or not, refer to the :doc:`recruitment/new_job` documentation.
Refer friends
-------------
To share a job position with someone, click the :guilabel:`Refer Friend` button on the specific job
position card. A pre-configured :guilabel:`Send Job Offer by Mail` email pop-up window appears.
Enter the recipient's email address in the :guilabel:`Email` field.
The subject and body are populated using a default template. The subject `Job for you` appears, and
can be modified if desired.
The specific title of the job position will populate the :guilabel:`Job Position` placeholder in the
email body. The `See Job Offer` text in the email body is an individualized tracking link to the
specific job position listed on the website. When the prospective employee receives the email, the
link will send them to the job position page, where they can apply for the position, and the person
who referred them is tracked in the *Referrals* application.
If desired, add any text or closing salutation to the email body. When all edits have been made,
click :guilabel:`Send Email` to send the email, or click :guilabel:`Cancel` to close the email
pop-up window.
.. image:: referrals/email.png
:align: center
:alt: Referral email pop-up window with the email message inside it.
Share a job
-----------
Other than sending an email, job positions can be shared, via social media platforms, and tracking
links to the job position. At the bottom of each job position card are four icons, and corresponding
tracking links, that can be used to share the job position, keeping track of applicants in the
*Referrals* application.
.. image:: referrals/share.png
:align: center
:alt: The various sharing icons that appear for each job.
Link
~~~~
To share the job position with a customized tracking link, click the :guilabel:`Share Now` button
with the :guilabel:`🔗 (chain)` icon inside it. A :guilabel:`Link to Share` pop-up window appears
with the tracking link. Click :guilabel:`Copy` to copy the link. After the link is copied, click the
:guilabel:`Close` button to close the pop-up window. Next, share the link with the prospective
employee.
Facebook
~~~~~~~~
To share the job position using Facebook, click the :guilabel:`Share Now` button with the
:guilabel:`f (Facebook)` icon inside it.
If the user is already logged into Facebook, when the :guilabel:`f (Facebook)` icon is clicked, a
:guilabel:`Share on Facebook` page loads in a new tab, with the link populated in the main body of
the new post in a pop-up window. If the user is *not* already logged in, a log-in screen loads,
instead, prompting the user to log-in to Facebook first.
Type in any additional information to add to the post, then share the job position using the
available options in Facebook.
X (formerly Twitter)
~~~~~~~~~~~~~~~~~~~~
A job position can also be shared on X (formerly Twitter). Click the :guilabel:`Share Now` button
with the :guilabel:`X` icon inside it.
If the user is already signed in to X (formerly Twitter), when the :guilabel:`Share Now` icon is
clicked, an X (formerly Twitter) page loads in a new tab with a pre-populated message ready to post,
in a draft pop-up window. If the user is *not* already signed in, a sign-in screen loads instead,
prompting the user to sign in to X (formerly Twitter).
The default message is:
:guilabel:`Amazing job offer for (Job Position)! Check it live: (link to Job Position)`
Type in any additional information, or make any edits to the message, then share using the available
options in X (formerly Twitter).
LinkedIn
~~~~~~~~
To share a job position on LinkedIn, click the :guilabel:`Share Now` button with the :guilabel:`in
(LinkedIn logo)` inside it.
If the user is already logged into LinkedIn, when the :guilabel:`Share Now` button is clicked, a new
tab loads in LinkedIn, with a link to the job position at the top. If the user is *not* already
logged in, a log-in screen loads instead, prompting the user to log-in to LinkedIn first.
The job position can be shared either in a public post, or in a private message to an individual (or
group of individuals).
Type in any additional information, or make any edits to the message or post, then share using the
available options in LinkedIn.
.. _referrals/email-jobs:
Email a friend
--------------
Another way to share job opportunities is to share the entire current list of open job positions
instead of one job position at a time. To do this, navigate to the main *Referrals* app dashboard.
Click the :guilabel:`Email a friend` button at the bottom of the screen. A :guilabel:`Send Job Offer
by Mail` pop-up window appears.
Enter the email address in the :guilabel:`Email` line. The email can be sent to multiple
recipients, simply enter a comma followed by a single space after each email address. The
:guilabel:`Subject` is pre-configured with `Job for you`, but can be edited.
The email body is also populated with pre-configured text. The text that appears is:
`Hello,`
`There are some amazing job offers in my company! Have a look, they can be interesting for you\:`
`See Job Offers`
The :guilabel:`See Job Offers` text is a tracking link to a complete list of all job positions
currently being recruited for. Add any additional text and make any edits to the message body, if
necessary. Then, click :guilabel:`Send Mail` to send the email. This sends the message, and closes
the window.
.. _referrals/hired:
Hired referrals
@@ -399,71 +238,6 @@ check mark appears next to the stage.
earned for each stage are done in the *Recruitment* application. Refer to the
:ref:`Recruitment <recruitment/modify-stages>` documentation to modify the points for each stage.
.. _referrals/rewards:
Rewards
=======
Create rewards
--------------
The rewards are the only configurations needed when setting up the *Referrals* application. Only
users with :guilabel:`Administrator` rights for the *Recruitment* application can create or modify
rewards. To add rewards, navigate to :menuselection:`Referrals app --> Configuration --> Rewards`.
Click :guilabel:`New`, and a reward form loads. Enter the following information on the form:
- :guilabel:`Product Name`: enter the name as it should appear for the reward.
- :guilabel:`Cost`: enter the amount of points required to redeem the reward.
- :guilabel:`Company`: using the drop-down menu, select the company the reward appears for. If a
reward is to be used for several companies, each company needs to have a record of the reward,
with the company listed on the form. This field only appears if in a multi-company environment.
- :guilabel:`Gift Responsible`: select the person who will be responsible for procuring and
delivering the reward to the recipient, using the drop-down menu. This person is alerted when the
reward is bought in the *Referrals* application, so they know when to deliver the reward to the
recipient.
- :guilabel:`Description`: type in the description for the reward. This will be visible on the
reward card, beneath the title.
- :guilabel:`Photo`: add a photo of the reward, which appears on the rewards page. Hover over the
image square, and two icons appear, a :guilabel:`✏️ (pencil)` and a :guilabel:`🗑️ (garbage can)`.
Click the :guilabel:`✏️ (pencil)` icon, and a file explorer appears. Navigate to the photo file,
then click :guilabel:`Open` to select it.
The only required fields are the :guilabel:`Product Name`, :guilabel:`Company` (if applicable), and
:guilabel:`Description`.
.. image:: referrals/rewards.png
:align: center
:alt: A filled out reward form with all details entered.
.. important::
It is advised to enter a :guilabel:`Cost` and add a :guilabel:`Photo`. If a cost is not entered,
the default cost will be listed as zero, which would list the reward as free in the reward shop.
If a photo is not selected, a placeholder icon will be displayed on the rewards page.
Redeem rewards
--------------
To redeem points for a reward, click the :guilabel:`Rewards` button on the main Referrals dashboard.
All the configured rewards are listed in individual reward cards. The points required to purchase
the reward is listed in the top-right corner of the card. If the user has enough points to purchase
a reward, a :guilabel:`🧺 (basket) Buy` button appears at the bottom of the reward card. If they do
not have enough points for a reward, the reward card displays :guilabel:`You need another (x) points
to buy this` instead of a buy button.
Click the :guilabel:`🧺 (basket) Buy` button on a reward to purchase it. A :guilabel:`Confirmation`
pop-up window appears, asking if the user is sure they want to purchase the reward. Click
:guilabel:`OK` to purchase the item, or :guilabel:`Cancel` to close the window and cancel the
purchase.
After :guilabel:`OK` is clicked, the pop-up window closes, and the points used to purchase the
reward are subtracted from the user's available points. The rewards presented are now updated to
reflect the user's current available points.
.. image:: referrals/redeem-rewards.png
:align: center
:alt: Buy button appears below a mug and backpack reward, while the bicycle reward states how
many more reward points are needed to redeem.
.. _referrals/levels:
Levels
@@ -549,56 +323,6 @@ points required.
can be redeemed for rewards, but they are no longer able to level up. The ring around their photo
remains solid cyan.
Alerts
======
In the *Referrals* application, it is possible to post a message, also referred to as an *alert*, at
the top of the dashboard to share important information with users. These alerts appear as a thin
semi-transparent banner, with the word :guilabel:`New!` appearing on the far left. The text for the
alert is in the center of the banner, and on the far right side is an :guilabel:`X`.
Alerts appear on the main dashboard for the specified time configured on the individual alert. If a
user does not wish to see a specific alert again, click the :guilabel:`X` in the far right side of
the alert. This removes the alert from the dashboard and will not appear again, even when opening
the *Referrals* application for the first time in a new session.
.. image:: referrals/alerts.png
:align: center
:alt: Two alert banners appear above the user's photo.
Create an alert
---------------
Only users with :guilabel:`Administrator` rights for the *Recruitment* application can create
alerts. To add a new alert, navigate to the :menuselection:`Referrals application --> Configuration
--> Alerts`.
Click :guilabel:`Create` and a blank alert form loads. Enter the following information on the form:
- :guilabel:`Date From`: the date the alert starts. On this date, the alert will be visible on the
dashboard.
- :guilabel:`Date To`: the date the alert ends. After this date, the alert will be hidden from view.
- :guilabel:`Company`: the current company populates this field by default. To modify the company
the alert should be displayed for, select the company from the drop-down menu. If this field
remains blank, the alert is visible to everyone with access to the *Referrals* application. If a
company is specified, only user's within that company (who also have access to the *Referrals*
application) will see the alert. This field only appears when in a multi-company database.
- :guilabel:`Alert`: enter the text for the alert. This message appears inside the alert banner on
the main dashboard.
- :guilabel:`On Click`: there are three options for the alert. Click the radio button next to the
desired selection. The options are:
- :guilabel:`Not Clickable`: the alert only displays text, there is no link to click.
- :guilabel:`Go to All Jobs`: the alert contains a link that when clicked, navigates to the
website with all the currently posted job positions.
- :guilabel:`Specify URL`: the alert contains a link to a specific URL, that when clicked,
navigates to that URL. When selected, a :guilabel:`URL` field appears below the :guilabel:`On
Click` section. Enter the URL in the field.
.. image:: referrals/alert-form.png
:align: center
:alt: An alert form completely filled in with all selections entered.
.. _referrals/reporting:
Reporting
@@ -629,3 +353,14 @@ spreadsheet from the drop-down menu, or select :guilabel:`New Spreadsheet`. Clic
.. note::
The spreadsheet is stored in the *Documents* application. This application needs to be installed
to use the :guilabel:`Insert in Spreadsheet` option.
.. seealso::
- :doc:`referrals/share_jobs`
- :doc:`referrals/rewards`
- :doc:`referrals/alerts`
.. toctree::
referrals/share_jobs
referrals/rewards
referrals/alerts
@@ -0,0 +1,60 @@
======
Alerts
======
In the *Referrals* application, it is possible to post a message, also referred to as an *alert*, at
the top of the dashboard to share important information with users.
Alerts remain on the main *Referrals* dashboard for the specified amount of time configured on the
individual alert.
.. image:: alerts/alerts.png
:align: center
:alt: Two alert banners appear above the user's photo.
Create an alert
===============
Only users with *Administrator* access rights for the *Recruitment* application can create alerts.
To add a new alert, navigate to the :menuselection:`Referrals app --> Configuration --> Alerts`.
Click :guilabel:`New` to open a blank alert form. Enter the following information on the form:
- :guilabel:`Date From`: the date the alert starts. On this date, the alert is visible on the
dashboard.
- :guilabel:`Date To`: the date the alert ends. After this date, the alert is hidden from view.
- :guilabel:`Company`: the current company populates this field, by default. To modify the company
the alert should be displayed for, select the desired company from the drop-down menu in this
field.
If this field remains blank, the alert is visible to everyone with access to the *Referrals*
application.
If a company is specified, only users within that company (who also have access to the *Referrals*
application) see the alert. This field **only** appears when in a multi-company database.
- :guilabel:`Alert`: enter the text for the alert. This message appears inside the alert banner on
the main *Referrals* dashboard.
- :guilabel:`On Click`: there are three options for the alert. Click the radio button next to the
desired selection. The options are:
- :guilabel:`Not Clickable`: the alert only displays text, there is no link to click.
- :guilabel:`Go to All Jobs`: the alert contains a link that, when clicked, navigates to the
website with all the job positions that are currently posted.
- :guilabel:`Specify URL`: the alert contains a link to a specific URL that, when clicked,
navigates to that URL. When selected, a :guilabel:`URL` field appears below the :guilabel:`On
Click` section. Enter the desired URL in that field.
.. image:: alerts/alert-form.png
:align: center
:alt: An alert form completely filled in with all selections entered.
Dismiss an alert
================
It is possible to dismiss an alert, if a user does not wish to see a specific alert again.
To dismiss an alert, click the :icon:`fa-times` :guilabel:`(remove)` icon on the far-right side of
the alert to remove the alert from the dashboard.
This prevents the alert from appearing again, even when opening the *Referrals* application for the
first time in a new session.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

@@ -0,0 +1,87 @@
=======
Rewards
=======
After employees have successfully earned referral points, they can exchange their points by
purchasing rewards in Odoo's *Referrals* application. Rewards **must** be :ref:`created and
configured <referrals/create>` before employees can :ref:`redeem points for rewards
<referrals/redeem>`.
.. _referrals/create:
Create rewards
==============
Rewards are the only configurations needed when setting up the *Referrals* application.
Only users with :guilabel:`Administrator` rights for the *Recruitment* application can create or
modify rewards.
To add rewards, navigate to :menuselection:`Referrals app --> Configuration --> Rewards`. Click
:guilabel:`New`, and a reward form loads. Enter the following information on the form:
- :guilabel:`Product Name`: enter the name as it should appear for the reward. This field is
required.
- :guilabel:`Cost`: enter the amount of points required to redeem the reward.
- :guilabel:`Company`: using the drop-down menu, select the company the reward is configured for. If
a reward is available for multiple companies, each company **must** configure a reward for their
specific company. This field **only** appears if in a multi-company environment; if this field
appears, it is required.
.. example::
A corporation with three different companies offers a gift card as a reward. In the database,
there are three separate rewards listed for a gift card, one for each of the three companies.
- :guilabel:`Gift Responsible`: using the drop-down menu, select the person responsible for
procuring and delivering the reward to the recipient. This person is alerted when the reward is
bought in the *Referrals* application, so they know when to deliver the reward to the recipient.
- :guilabel:`Photo`: add a photo of the reward, which appears on the rewards page. Hover over the
image box in the top-right corner (a square with a camera and plus sign inside it), and a
:icon:`fa-pencil` :guilabel:`(pencil)` icon appears. Click the :icon:`fa-pencil`
:guilabel:`(pencil)` icon to select and add a photo to the reward form. Once a photo is added,
hovering over the image reveals two icons instead of one: a :icon:`fa-pencil`
:guilabel:`(pencil)` icon and a :icon:`fa-trash-o` :guilabel:`(trash can)` icon. Click the
:icon:`fa-trash-o` :guilabel:`(trash can)` icon to delete the currently selected image.
- :guilabel:`Description` tab: type in the description for the reward. This is visible on the reward
card, beneath the title. This field is required.
.. image:: rewards/rewards.png
:align: center
:alt: A filled out reward form with all details entered.
.. important::
It is advised to enter a :guilabel:`Cost` and add a :guilabel:`Photo`. If a cost is not entered,
the default cost is listed as zero, which would list the reward as free in the reward shop. If a
photo is not selected, a placeholder icon is displayed on the rewards page.
.. _referrals/redeem:
Redeem rewards
==============
In order to redeem a reward, points must be earned. These points can then be used to purchase a
reward.
To purchase a reward, click the :guilabel:`Rewards` button on the main :guilabel:`Referrals`
dashboard. All the configured rewards are listed in individual reward cards.
The required point amount needed to purchase a reward is listed in the top-right corner of the card.
If the user has enough points to purchase a reward, a :icon:`fa-shopping-basket` :guilabel:`Buy`
button appears at the bottom of the reward card. If they do not have enough points for a reward, the
reward card displays :guilabel:`You need another (x) points to buy this`, instead of a
:icon:`fa-shopping-basket` :guilabel:`Buy` button.
Click the :icon:`fa-shopping-basket` :guilabel:`Buy` button on a reward to purchase it. A
:guilabel:`Confirmation` pop-up window appears, asking if the user is sure they want to purchase the
reward. Click :guilabel:`OK` to purchase the item, or :guilabel:`Cancel` to close the window, and
cancel the purchase.
After :guilabel:`OK` is clicked, the pop-up window closes, and the points used to purchase the
reward are subtracted from the user's available points. The rewards presented are now updated to
reflect the user's current available points.
.. image:: rewards/redeem-rewards.png
:align: center
:alt: Buy button appears below a mug and backpack reward, while the bicycle reward states how
many more reward points are needed to redeem.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

@@ -0,0 +1,165 @@
===================
Share job positions
===================
In Odoo *Referrals*, users can earn referral points by sharing job positions with potential
applicants. Job positions can be shared in several ways, through the :ref:`View Jobs
<referrals/view-jobs>` button and the :ref:`Email A Friend <referrals/email-jobs>` button, located
at the bottom of the *Referrals* app dashboard.
.. note::
Sharing jobs can **only** occur after onboarding slides have been viewed or skipped.
.. _referrals/view-jobs:
View Jobs
=========
To see all job positions that are actively recruiting candidates, click the :guilabel:`View Jobs`
button on the main *Referrals* dashboard. This presents all job positions, with each individual job
presented with its own card.
.. image:: share_jobs/jobs.png
:align: center
:alt: The 'View Jobs' screen, displaying all current open job positions. All information is
displayed on the card.
Each job position card contains the following information:
- The title of the job position. This information is taken from the *Job Position* field of the job
form.
- The number of :guilabel:`Open Positions` being recruited. This information is taken from the
*Expected New Employees* field of the *Recruitment* tab of the job form.
- The points a user earns when an applicant applies for the position.
- The job description detailing the job position. This information is taken from the *Job Position*
tab of the job form.
To see all the details for a job position, click the :guilabel:`More Info` button on the specific
card. This opens the job position webpage in a new browser tab. This is what an applicant sees
before applying for a position.
.. note::
Only published job positions are visible in the *Referrals* app. To check which job positions are
published or not, refer to the :doc:`../recruitment/new_job` documentation.
Refer friends
=============
To share a job position with someone, click the :guilabel:`Refer Friend` button on the specific job
position card. A pre-configured :guilabel:`Send Job Offer by Mail` pop-up window appears. Enter the
recipient's email address in the :guilabel:`Email` field.
The :guilabel:`Subject` and :guilabel:`Body` are populated using a default template. The
:guilabel:`Subject` `Job for you` is present, by default, but can be modified, if desired.
The specific title of the job position populates the *Job Position* placeholder in the email body.
The `See Job Offer` text in the email body is an individualized tracking link to the specific job
position listed on the website.
When the prospective employee receives the email, the link sends them to the job position page,
where they can apply for the position, and the person who referred them is tracked in the
*Referrals* application.
If desired, add any text or closing salutation to the email body. When all edits have been made,
click :guilabel:`Send Mail` to send the email, or click :guilabel:`Cancel` to close the pop-up
window.
.. image:: share_jobs/email.png
:align: center
:alt: Referral email pop-up window with the email message inside it.
Share a job
===========
Other than sending an email, job positions can be shared, via social media platforms, and by
tracking links to the job position. At the bottom of each job position card are four icons, and
corresponding tracking links, that can be used to share the job position, keeping track of
applicants in the *Referrals* application.
.. image:: share_jobs/share.png
:align: center
:alt: The various sharing icons that appear for each job.
Link
----
To share the job position with a customized tracking link, click the :guilabel:`Share Now` button
with the :icon:`fa-chain` :guilabel:`(link)` icon above it. A :guilabel:`Link to Share` pop-up
window appears with the tracking link. Click :guilabel:`Copy` to copy the link. After the link is
copied, click the :guilabel:`Close` button to close the pop-up window. Next, share the link with
the prospective employee.
Facebook
--------
To share the job position using Facebook, click the :guilabel:`Share Now` button with the
:icon:`fa-facebook` :guilabel:`(Facebook)` icon above it.
If the user is already logged into Facebook, when the the :guilabel:`Share Now` button is clicked, a
:guilabel:`Share on Facebook` page loads in a new tab, with the link populated in the main body of
the new post in a pop-up window. If the user is *not* already logged in, a log-in screen loads,
instead, prompting the user to log-in to Facebook first.
Type in any additional information to add to the post, then share the job position using the
available options in Facebook.
X (formerly Twitter)
--------------------
A job position can also be shared on X. Click the :guilabel:`Share Now` button with the
:guilabel:`(X)` icon above it.
If the user is already signed-in to X, when the :guilabel:`Share Now` button is clicked, an X page
loads in a new tab with a pre-populated message ready to post, in a draft pop-up window. If the user
is *not* already signed-in, a sign-in screen loads instead, prompting the user to first sign-in to
X.
The default message is:
`Amazing job offer for (Job Position)! Check it live: (link to Job Position)`
Type in any additional information, or make any edits to the message, then share using the available
options in X.
LinkedIn
--------
To share a job position on LinkedIn, click the :guilabel:`Share Now` button with the
:icon:`fa-linkedin` :guilabel:`(LinkedIn)` icon above it.
If the user is already logged into LinkedIn, when the :guilabel:`Share Now` button is clicked, a new
tab loads in LinkedIn, with a link to the job position at the top. If the user is *not* already
logged in, a log-in screen loads instead, prompting the user to log-in to LinkedIn first.
The job position can be shared either in a public post, or in a private message to an individual (or
group of individuals).
Type in any additional information, or make any edits to the message or post, then share using the
available options in LinkedIn.
.. _referrals/email-jobs:
Email a friend
--------------
Another way to share job opportunities is to share the entire current list of open job positions,
instead of one job position at a time. To do this, navigate to the :menuselection:`Referrals` main
dashboard. Click the :guilabel:`Email a friend` button at the bottom of the screen. A
:guilabel:`Send Job Offer by Mail` pop-up window appears.
Enter the email address in the :guilabel:`Email` field. The email can be sent to multiple
recipients by separating each email address with a comma followed by a single space. The
:guilabel:`Subject` is pre-configured with :guilabel:`Job for you`, but can be edited.
The email :guilabel:`Body` is also populated with pre-configured text. The text that appears is:
`Hello,`
`There are some amazing job offers in my company! Have a look, they can be interesting for you\:`
`See Job Offers`
The :guilabel:`See Job Offers` text is a tracking link to a complete list of all job positions
currently being recruited for. Add any additional text and make any edits to the message body, if
necessary. Then, click :guilabel:`Send Mail` to send the email. This sends the message, and closes
the window.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

+25 -80
View File
@@ -1,3 +1,5 @@
:show-content:
========
Time Off
========
@@ -5,9 +7,10 @@ Time Off
Odoo's *Time Off* application serves as a centralized hub for all time-off-related information. This
application manages requests, balances, allocations, approvals, and reports.
Users can :ref:`request time off <time_off/request-time-off>`, and see an overview of their requests
and time off balances. Managers can :ref:`allocate time off <time_off/allocate>` to individuals,
teams, or the whole company, and :ref:`approve time off requests <time_off/manage-time-off>`.
Users can :doc:`request time off <../hr/time_off/request_time_off>`, and see an overview of their
requests and time off balances. Managers can :ref:`allocate time off <time_off/allocate>` to
individuals, teams, or the whole company, and :ref:`approve time off requests
<time_off/manage-time-off>`.
Detailed :ref:`reports <time_off/reporting>` can be run to see how much time off (and what kinds of
time off) are being used, :ref:`accrual plans <time_off/accrual-plans>` can be created, and
@@ -493,75 +496,6 @@ information:
:alt: A new allocation form with all the fields filled out for the annual two week vacation
granted to all employees.
.. _time_off/request-time-off:
Request time off
================
Once an employee has been allocated time off, a request to use the time off can be submitted. Time
off can be requested in one of two ways, either from the :ref:`dashboard <time_off/dashboard>` or
from the :ref:`My Time Off <time_off/my-time-off>` view.
To create a new request for time off, click the :guilabel:`New` button on either the main *Time Off*
:guilabel:`Dashboard` or the :guilabel:`My Time Off` list view.
.. note::
Both :guilabel:`New` buttons allow the user to request time off, but when requested from the
:guilabel:`Dashboard`, a :guilabel:`New Time Off` request form appears in a modal. When requested
from the :guilabel:`My Time Off` list view, the screen navigates to a new time off request page,
instead.
Enter the following information on the :guilabel:`New Time Off` request form:
- :guilabel:`Time Off Type`: select the type of time off being requested from the drop-down menu.
- :guilabel:`Dates`: enter the dates that the time off falls under. There are two fields to
populate, the start and end dates. Click on either date field and a popover calendar appears.
Click on the start date, then click on the end date. The selected start and end dates are circled,
and the dates between them are highlighted (if applicable).
If the time off requested is for a single day, click on the start date, then click the same date
again for the end date.
When the correct dates are selected/highlighted, click the :guilabel:`Apply` button.
The selected dates now populate the two portions of the :guilabel:`Dates` field.
If the selected :guilabel:`Time Off Type` is configured to have the time off taken in hours, the
following two fields also appear:
- :guilabel:`Half Day`: if the time off request is for a half day, check this box. When this is
selected, the second date field disappears, and is replaced with a drop-down menu. From that
drop-down menu, select either :guilabel:`Morning` or :guilabel:`Afternoon` to indicate which
half of the day is being requested.
- :guilabel:`Custom Hours`: if the time off requested is not a whole or half day, check this box.
A :guilabel:`From` and :guilabel:`To` field appears beneath this option, if selected. Using the
drop-down menu, select the start and end time for the time off request.
- :guilabel:`Duration`: this field updates automatically once the :guilabel:`Date` section is
completed. If the :guilabel:`Date` section is modified, this section automatically updates to
reflect the total time off requested. This field is in either hours or days, depending on how the
selected :guilabel:`Time Off Type` is configured.
- :guilabel:`Description`: enter a description for the time off request. This should include any
details that managers and approvers may need in order to approve the request.
- :guilabel:`Supporting Document`: this field only appears if the :guilabel:`Time Off Type` selected
allows for the attachments of documents. Click the :guilabel:`Attach File` button, and a file
explorer window appears.
Navigate to the desired files to attach, select them, then click the :guilabel:`Open` button. The
files then appear on the time off request form. Multiple documents can be attached, if necessary.
If the request was created from the :guilabel:`Dashboard`, click the :guilabel:`Save & Close` button
to save the information and submit the request.
If the form was completed from the :guilabel:`My Time Off` list view, the information is
automatically saved as it is entered. However, the form can be saved manually at any time by
clicking the *save manually* button, represented by a :guilabel:`(cloud upload)` icon.
.. image:: time_off/time-off-request.png
:align: center
:alt: A time off request form filled out for an employee home sick for two days with the flu.
.. _time_off/request-allocation:
Request allocation
@@ -680,6 +614,8 @@ To modify the request, make any desired changes to the form. All changes are aut
It is also possible to approve or refuse the request from this form. Click the :guilabel:`Approve`
button to approve, or the :guilabel:`Refuse` button to refuse the request.
.. _time_off/manage-allocations:
Manage allocations
------------------
@@ -846,12 +782,13 @@ Time off that has been validated appears in a solid color (in the color specifie
to be approved appear with white stripes in the color. Refused time off requests have a colored line
through the dates.
New time off requests can be made from the dashboard. Click the :guilabel:`New` button at the top of
the dashboard, and a :ref:`New Time Off <time_off/request-time-off>` modal appears.
New time off requests can be made from the :guilabel:`Dashboard`. Click the :guilabel:`New` button
at the top of the dashboard, and a :doc:`New Time Off <../hr/time_off/request_time_off>` pop-up
window appears.
New allocation requests can also be made from the dashboard. Click the :guilabel:`New Allocation
Request` button at the top of the dashboard to request more time off, and a :ref:`New Allocation
<time_off/request-allocation>` modal appears.
New allocation requests can also be made from the :guilabel:`Dashboard`. Click the :guilabel:`New
Allocation Request` button at the top of the :guilabel:`Dashboard` to request more time off, and a
:ref:`New Allocation <time_off/request-allocation>` modal appears.
.. image:: time_off/dashboard.png
:align: center
@@ -869,8 +806,8 @@ The list includes the following information for each request: the :guilabel:`Tim
:guilabel:`Description`, :guilabel:`Start Date`, :guilabel:`End Date`, :guilabel:`Duration`, and the
:guilabel:`Status`.
A new time off request can be made from this view. Click the :guilabel:`New` button to :ref:`request
time off <time_off/request-time-off>`.
A new time off request can be made from this view. Click the :guilabel:`New` button to :doc:`request
time off <../hr/time_off/request_time_off>`.
.. _time_off/my-allocations:
@@ -958,5 +895,13 @@ top-right corner of the page to view the data in that way. The various options a
:guilabel:`Graph` (the default view), :guilabel:`List`, or :guilabel:`Pivot` table.
When a selection has been made, additional options appear for that particular selection. For more
detailed information on the reports and their various options, refer to the :doc:`reporting
detailed information on the reports, and their various options, refer to the :doc:`reporting
<../essentials/reporting>` documentation.
.. seealso::
:doc:`time_off/request_time_off`
.. toctree::
:titlesonly:
time_off/request_time_off
@@ -0,0 +1,70 @@
================
Request time off
================
Once time off has been allocated to an employee, a request to use it can be submitted.
Time off can be requested in one of two ways: either from the main *Time Off* application
:guilabel:`Dashboard` (:menuselection:`Time Off app --> My Time --> Dashboard`), or from the
:guilabel:`My Time Off` dashboard view (:menuselection:`Time Off app --> My Time --> My Time Off`).
To create a new request for time off, click the :guilabel:`New` button on either the main *Time Off*
:guilabel:`Dashboard` or the :guilabel:`My Time Off` dashboard, in the default list view.
.. note::
Both :guilabel:`New` buttons allow the user to request time off, but when requested from the
:guilabel:`Dashboard`, a :guilabel:`New Time Off` request form appears in a pop-up window. When
requested from the :guilabel:`My Time Off` list view, the screen navigates to a new time off
request page, instead.
Enter the following information on the :guilabel:`New Time Off` request form:
- :guilabel:`Time Off Type`: select the type of time off being requested from the drop-down menu.
- :guilabel:`Dates`: enter the dates that the time off falls under. There are two fields to
populate: the start and end dates. Click on either date field and a popover calendar appears.
Click on the start date, then click on the end date. The selected start and end dates are circled,
and the dates between them are highlighted (if applicable).
If only requesting time off for a single day, click on the start date, then click the same date
again for the end date.
When the correct dates are selected, click the :guilabel:`Apply` button.
The selected dates now populate the two portions of the :guilabel:`Dates` field.
If the selected :guilabel:`Time Off Type` is configured to have the time off taken in hours, the
following two fields also appear:
- :guilabel:`Half Day`: if the time off request is for a half day, tick this checkbox. When this
is selected, the second date field disappears, and is replaced with a drop-down menu. From that
drop-down menu, select either :guilabel:`Morning` or :guilabel:`Afternoon` to indicate which
half of the day is being requested.
- :guilabel:`Custom Hours`: if the time off requested is not a whole or half day, tick this
checkbox. If selected, a :guilabel:`From` and :guilabel:`To` field appears beneath this option.
Using the drop-down menu, select the start and end time for the time off request.
- :guilabel:`Duration`: this field updates automatically once the :guilabel:`Date` section is
completed. If the :guilabel:`Date` section is modified, this section automatically updates to
reflect the total time off requested. This field is in either hours or days, depending on how the
selected :guilabel:`Time Off Type` is configured.
- :guilabel:`Description`: enter a description for the time off request. This should include any
details that managers and approvers may need to approve the request.
- :guilabel:`Supporting Document`: this field only appears if the :guilabel:`Time Off Type` selected
allows for the attachment of documents. Click the :guilabel:`Attach File` button, and a file
explorer window appears.
Navigate to the desired files that should be attached, select them, then click The
:guilabel:`Open` button. The files then appear on the time off request form. Multiple documents
can be attached, if necessary.
If the request was created from the :guilabel:`Dashboard`, click the :guilabel:`Save & Close` button
to save the information, and submit the request.
If the form was completed from the :guilabel:`My Time Off` list view, the information is
automatically saved as it is entered. However, the form can be saved manually at any time by
clicking the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon.
.. image:: request_time_off/time-off-request.png
:align: center
:alt: A time off request form filled out for an employee home sick for two days with the flu.
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+3 -4
View File
@@ -1,9 +1,8 @@
:nosearch:
===============
Inventory & MRP
===============
============
Supply Chain
============
.. toctree::
Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

@@ -241,6 +241,8 @@ Doing so breaks down all perishable products, their expiration dates, and the as
:align: center
:alt: Group by expiration dates on lots and serial numbers page.
.. _inventory/product_management/expiration-alerts:
Expiration alerts
-----------------
@@ -10,7 +10,7 @@ Advanced operations
advanced_operations_shipping/scheduled_dates
advanced_operations_shipping/invoicing
advanced_operations_shipping/multipack
advanced_operations_shipping/labels
advanced_operations_shipping/label_type
advanced_operations_shipping/print_on_validation
advanced_operations_shipping/dropshipping
advanced_operations_shipping/cancel
@@ -2,8 +2,6 @@
Shipping cost invoicing
=======================
.. _inventory/shipping/invoice:
Invoicing customers for shipping after delivery ensures accurate charges based on real-time shipping
factors like distance, weight, and method.
@@ -122,4 +120,4 @@ Finally, invoice the customer the adjusted shipping cost by clicking :guilabel:`
.. seealso::
- :doc:`../setup_configuration/third_party_shipper`
- :doc:`labels`
- :doc:`../setup_configuration/labels`
@@ -0,0 +1,336 @@
=======================
Printable delivery PDFs
=======================
Automatically print delivery-related PDFs documents and labels in Odoo, containing package recipient
details, contents, or handling instructions.
The following PDFs can be configured to print upon validating an *Inventory* operation (e.g.
receipt, picking, delivery orders, quality checks):
#. :ref:`Delivery slip <inventory/shipping_receiving/delivery-slip>`
#. :ref:`Return slip <inventory/shipping_receiving/return-slip>`
#. :ref:`Product labels of items in the order <inventory/shipping_receiving/product-labels>`
#. :ref:`Lot and serial number labels <inventory/shipping_receiving/lot-sn-labels>`
#. :ref:`Carrier labels <inventory/shipping_receiving/carrier-labels>`
#. :ref:`Export documents <inventory/shipping_receiving/export-doc>`
#. :ref:`Package content <inventory/shipping_receiving/package-content>`
#. :ref:`Package label <inventory/shipping_receiving/package-label>`
.. _inventory/shipping_receiving/print_setup:
To automatically print these forms, navigate to :menuselection:`Inventory app --> Configuration -->
Operations Types`, and select the desired operation type.
In the :guilabel:`Hardware` tab, tick each of the desired options available in the :guilabel:`Print
on Validation` section to download the PDF of those selected documents automatically after
validating the :guilabel:`Operation Type`. For details on what each of the checkbox options do, jump
to the related section.
.. image:: print_on_validation/print-on-validation.png
:align: center
:alt: Show the *Print on Validation* option in the "Pick" *Operation Type*.
.. _inventory/shipping_receiving/delivery-slip:
Delivery slip
=============
A *delivery slip* contains recipient and package details, usually placed inside (or attached to) the
package.
.. seealso::
- :ref:`Picking list <inventory/warehouses_storage/barcode_picking>`
- :doc:`Tracking label <../setup_configuration/labels>`
After :ref:`enabling the Delivery Slip setting <inventory/shipping_receiving/print_setup>` in the
:guilabel:`Hardware` tab configuration options, clicking :guilabel:`Validate` on the desired
operation type downloads a PDF of the delivery slip.
The delivery slip shows products, quantities, the delivery order reference number, and the total
order weight.
.. image:: print_on_validation/delivery-slip.png
:align: center
:alt: Example delivery slip.
.. _inventory/shipping_receiving/return-slip:
Return slip
===========
Print a *return slip* to include in a delivery for customer return packages. It identifies the
return, links to the sales order, and includes item details and customer information. It can also
include specific return instructions for the customer.
After :ref:`enabling the Return Slip setting <inventory/shipping_receiving/print_setup>` in the
:guilabel:`Hardware` tab configuration options, clicking :guilabel:`Validate` on the desired
operation type downloads a PDF of the return slip.
The return slip displays the company's return address, along with barcodes for both the order and
the return operation.
.. image:: print_on_validation/return-slip.png
:align: center
:alt: Example return slip.
.. _inventory/shipping_receiving/product-labels:
Product labels
==============
Print *product labels* to affix to items in an order, providing essential information, such as
product name, barcode, and price.
After navigating to the intended operation type (:menuselection:`Inventory app --> Configuration -->
Operations Types`), in the :guilabel:`Hardware` tab, tick the :guilabel:`Product Labels` option.
Doing so makes the :guilabel:`Print label as:` drop-down menu visible, where each product label can
be printed as:
- :guilabel:`2 x 7 with price`: PDF displays product name, barcode, and price, fitting two rows and
seven columns of product labels per page.
.. spoiler:: Example 2 x 7
.. image:: print_on_validation/two-seven.png
:align: center
:alt: Example 2 x 7 with price.
- :guilabel:`4 x 7 with price`: displays product name, barcode, and price, fitting four rows and
seven columns of product labels per page.
.. spoiler:: Example 4 x 7
.. image:: print_on_validation/four-seven.png
:align: center
:alt: Example 4 x 7 with price.
- :guilabel:`4 x 12`: displays product name and barcode. Fits four rows and twelve columns of
product labels per page.
.. spoiler:: Example 4 x 12
.. image:: print_on_validation/four-twelve.png
:align: center
:alt: Example 4 x 12.
- :guilabel:`4 x 12 with price`: displays product name, barcode, and price. Fits four rows and
twelve columns of product labels per page.
- :guilabel:`ZPL Labels`: prints labels in the Zebra Programming Language (ZPL) containing the
product name and barcode. Readable for Zebra printers to automatically print labels.
- :guilabel:`ZPL Labels with price`: prints labels in the :abbr:`ZPL (Zebra Programming Language)`
containing the product name, barcode, and price.
.. note::
Product labels can be manually printed from any delivery order, by clicking the :guilabel:`Print
Labels` button.
.. _inventory/shipping_receiving/lot-sn-labels:
Lot/SN Labels
=============
Print *lot/SN labels* to affix to items in an order, providing essential information, such as
product name, lot or serial number, and the barcode.
To automatically print this PDF, navigate to the intended operation type's options page
(:menuselection:`Inventory app --> Configuration --> Operations Types`). Then, in the
:guilabel:`Hardware` tab, tick the :guilabel:`Lot/SN Labels` option.
Doing so makes the :guilabel:`Print label as:` drop-down menu visible, where each product label can
be printed as:
- :guilabel:`4 x 12 - One per lot/SN`: PDF with labels for unique lot/serial numbers in the order,
including product name, lot/serial number, and barcode. Fits four rows and twelve columns per
page.
.. spoiler:: Example 4 x 12 - One per lot/SN
.. figure:: print_on_validation/four-twelve-lots.png
:align: center
:alt: Order with only one unique set of lot/serial numbers.
Labels for an order with only one unique set of lot/serial numbers.
- :guilabel:`4 x 12 - One per unit`: PDF with labels matching the quantity of items, displaying the
product name, lot/serial number, and barcode. Fits four rows and twelve columns per page.
- :guilabel:`ZPL Labels - One per lot/SN`: prints labels in :abbr:`ZPL (Zebra Programming
Language)`, containing the product name, lot/serial number, and barcode.
- :guilabel:`ZPL Labels - One per unit`: prints labels with the quantity of items in :abbr:`ZPL
(Zebra Programming Language)`, containing the product name, lot/serial number, and barcode.
.. _inventory/shipping_receiving/carrier-labels:
Carrier labels
==============
To automatically print a *carrier label* with the recipient address, tracking number, and carrier
details for specific third-party shipping carriers, complete the following setup:
#. Tick the :guilabel:`Carrier Labels` checkbox in the :ref:`operation type settings
<inventory/shipping_receiving/print_setup>`.
#. :doc:`Connect a printer <../../../../general/iot/devices/printer>` to Odoo's *IoT* app.
#. :ref:`Assign the carrier label to the printer <inventory/shipping_receiving/assign-printer>`.
#. Configure the shipping method's :ref:`label type <inventory/shipping_receiving/label-type>`.
.. _inventory/shipping_receiving/assign-printer:
Assign printer
--------------
Refer to the :doc:`Connect a printer <../../../../general/iot/devices/printer>` documentation for
details on connecting a printer to Odoo's *IoT* app. Upon completion, assign the carrier label to
the printer, by navigating to :menuselection:`IoT app --> Devices`, and selecting the desired
printer.
.. image:: print_on_validation/select-printer.png
:align: center
:alt: Show a list of IoT devices.
In the printer configuration form, go to the :guilabel:`Printer Reports` tab to configure the types
of documents the printer automatically prints. Click :guilabel:`Add a line` to open the
:guilabel:`Add: Reports` pop-up window. In the :guilabel:`Search...` bar, type `Shipping`, and
select :guilabel:`Shipping Labels`.
.. note::
The :guilabel:`Shipping Documents` report is for :ref:`export documents
<inventory/shipping_receiving/export-doc>`.
.. image:: print_on_validation/printer-report.png
:align: center
:alt: Show carrier label report added to the *Printer Reports*.
After adding the :guilabel:`Shipping Labels` report in the :guilabel:`Printer Reports` tab, ensure
the :guilabel:`Report Type` matches the IoT-connected printer's type.
- For laser printers, set the :guilabel:`Report Type` to :guilabel:`PDF`.
- For Zebra printers, set the :guilabel:`Report Type` to :guilabel:`Text`.
.. _inventory/shipping_receiving/label-type:
Shipping carrier label type
---------------------------
Next, complete the setup for the :doc:`third-party shipping connector
<../setup_configuration/third_party_shipper>`. After that, go to :menuselection:`Inventory app -->
Configuration --> Shipping Methods`, and select the desired shipping method.
On the shipping method configuration form, in the :guilabel:`[carrier name] Configuration` tab,
ensure the :guilabel:`Label Format` matches the :ref:`report type assigned earlier
<inventory/shipping_receiving/assign-printer>`:
- For laser printers, set the :guilabel:`Label Format` to :guilabel:`PDF`.
- For Zebra printers, set the :guilabel:`Label Format` to :guilabel:`ZPL2`.
.. image:: print_on_validation/label-type.png
:align: center
:alt: Show the *Label Type* field on FedEx's shipping method configuration page.
Example carrier label
---------------------
After validating the operation, the carrier label is generated in the chatter, and printed using the
IoT-connected printer.
.. spoiler:: Example carrier label
.. figure:: print_on_validation/fedex-carrier-label.png
:align: center
:alt: Show an example carrier label for FedEx.
Carrier label for FedEx, containing the recipient address, tracking number, barcode, and
other shipping information.
.. seealso::
:doc:`Print carrier labels <../setup_configuration/labels>`
.. _inventory/shipping_receiving/export-doc:
Export document
===============
An *export document*, required by customs to ship packages from one country to another, can be
automatically printed in Odoo by following these steps:
#. Tick the :guilabel:`Export Documents` checkbox in the :ref:`operation type settings
<inventory/shipping_receiving/print_setup>`.
#. :doc:`Connect a printer <../../../../general/iot/devices/printer>` to Odoo's *IoT* app.
#. Assign the export document to the printer.
Assign printer
--------------
Similar to the :ref:`printer assignment instructions for carrier labels
<inventory/shipping_receiving/assign-printer>`, after connecting a compatible printer to the Odoo
*IoT* app, go to :menuselection:`IoT app --> Devices`, and select the desired printer.
In the printer configuration form, go to the :guilabel:`Printer Reports` tab, and click
:guilabel:`Add a line`. In the :guilabel:`Add: Reports` pop-up window that appears, add the
:guilabel:`Shipping Documents` report to assign the export document to the printer.
.. spoiler:: Example export document
.. figure:: print_on_validation/export-doc.png
:align: center
:alt: Export document for a shipment from the USA to Belgium.
Export document for a shipment from the USA to Belgium.
.. _inventory/shipping_receiving/package-content:
Package content
===============
A *package content* PDF includes the package's barcode, packed date, along with a list of contained
products and quantities.
To print this form automatically, go to :menuselection:`Inventory app --> Configuration -->
Operation Types`, and select the desired operation type. Then, go to the :guilabel:`Hardware` tab,
and tick the :guilabel:`Package Contents` checkbox.
.. important::
If the option is not available, enable the :doc:`Packages
<../../product_management/product_tracking/package>` feature, by going to
:menuselection:`Inventory app --> Configuration --> Settings`, ticking the :guilabel:`Packages`
checkbox, and clicking :guilabel:`Save`.
After enabling the feature in the :guilabel:`Hardware` tab, validating the operation prints a PDF of
the package contents.
.. spoiler:: Example package content PDF
.. figure:: print_on_validation/package-content.png
:align: center
:alt: Package contents form showing the package contents, barcode, and pack date.
Package contents showing the package contents, barcode, and pack date.
.. _inventory/shipping_receiving/package-label:
Package label
=============
A *package label* that shows the package's barcode and pack date can be configured to print upon
clicking the *Put in Pack* button.
.. important::
The :guilabel:`Put in Pack` button is available **only** when the :doc:`Packages
<../../product_management/product_tracking/package>` feature is enabled in
:menuselection:`Inventory app --> Configuration --> Settings`.
After it is enabled, the :guilabel:`Put in Pack` button is available on all inventory operations
(e.g. receipt, pickings, internal transfers, delivery orders, etc.).
To automatically print the package label when the :guilabel:`Put in Pack` button is clicked, go to
:menuselection:`Inventory app --> Configuration --> Operation Types`. Select the desired operation
type, and tick the :guilabel:`Package Label` checkbox in the :guilabel:`Hardware` tab. Labels can be
printed in :guilabel:`PDF` or :guilabel:`ZPL` file formats, as defined in the :guilabel:`Print label
as` field.
.. spoiler:: Example of package barcode
.. image:: print_on_validation/package-barcode.png
:align: center
:alt: PDF of package barcode and package date.

Some files were not shown because too many files have changed in this diff Show More