Compare commits

...

21 Commits

Author SHA1 Message Date
gmz-odoo 37bd21ba00 l10n_pe update 2523 - GrossWeightMeasure Error.rst
Typo
2024-10-14 17:36:56 -07:00
Felicious 9368181d04 [REF] inventory: resupply warehouses
closes odoo/documentation#11195

X-original-commit: ef367bd442
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-12 00:07:43 +00:00
Felicious d87271002b [IMP] inventory: fix typos in shipping table
closes odoo/documentation#11185

X-original-commit: e41e3c7ba0
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-11 18:36:35 +00:00
larm-odoo 783ab8f2c0 [ADD] Payroll: Work entry analysis report
closes odoo/documentation#11181

X-original-commit: 34814984ec
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-11 14:12:17 +00:00
Odoo's Mergebot da0360cdd5 [FW][ADD] odoo.sh: new ci token usage
closes odoo/documentation#11190

Forward-port-of: odoo/documentation#11172
Signed-off-by: Fabien Meghazi (fme) <fme@odoo.com>
Signed-off-by: Stanislas Sobieski (sts) <sts@odoo.com>
Co-authored-by: Fabien Meghazi <fme@odoo.com>
Co-authored-by: Stanislas Sobieski <sts@odoo.com>
2024-10-11 12:51:43 +00:00
Demesmaeker e17d6d7689 [ADD] payment_providers/worldline
task-3499275

New payment provider and its related configuration; remove Ogone and SIPS payments providers as they were replaced by Wordline.

closes odoo/documentation#11173

X-original-commit: da682b7f22
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-10-10 12:18:16 +00:00
Donatienne (dopi) e174fa9e3e [IMP] ecommerce: products page updated
closes odoo/documentation#11165

Taskid: 4056328
X-original-commit: 1c5bf1337e
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-10-10 06:11:28 +00:00
Ricardo Gomes Rodrigues 3d2422b3bd [IMP] accounting: split deferred settings
This has been done in https://github.com/odoo/enterprise/commit/39fffc5541eb51d7a3ae25405abe90fe6031001a

closes odoo/documentation#11163

X-original-commit: ac69e2872c
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-10-09 13:23:06 +00:00
dikd-odoo d7eb8f014b [IMP] calendar: expand parent documentation
[ADD] expand parent calendar documentation

[FIX] formatting changes

[FIX] formatting changes

[FIX] content changes

Apply suggestions from KAEK review

[FIX] KAEK review edits

[FIX] resize images

Apply suggestions from KSC review

[FIX] content from KSC review

[FIX] revisions KSC review

[FIX] formatting

newline

formatting

Apply suggestions from KSC review

[FIX] Content change

[FIX] Content changes

Apply suggestions from KSC review

Apply suggestions from SALI review

Apply suggestions from SALI review2

content changes

format

Apply suggestions from SALI review

content

content

closes odoo/documentation#11133

X-original-commit: 721c07d341
Signed-off-by: Dina Klarisse Dugar (dikd) <dikd@odoo.com>
Co-authored-by: kekiss <karaekiss@yahoo.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: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-08 16:57:49 +00:00
xpl-odoo 9a2921ba52 [IMP] administration: on-premise publisher warranty URL
task-4226945

closes odoo/documentation#11155

X-original-commit: 544e2c18d0
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-07 17:10:50 +00:00
Tiffany Chang (tic) c42963cda9 [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)

Also update the tx/config to point to v18 project

closes odoo/documentation#11149

X-original-commit: d21d77b181
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-10-07 14:42:49 +00:00
Felicious 38ce2431e5 [ADD] purchase: import vendor pricelist
closes odoo/documentation#11142

X-original-commit: 3b69030302
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: kekiss <karaekiss@yahoo.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-10-04 21:22:31 +00:00
larm-odoo 5c43477540 [IMP] Appraisals: Skills Report - highest improvement
closes odoo/documentation#11137

X-original-commit: 6c843244eb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-04 19:37:34 +00:00
Felicious e56cfe5e48 [ADD] inventory: valuation by lots
closes odoo/documentation#10858

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-10-04 19:37:33 +00:00
Antoine Vandevenne (anv) 5627bea8aa [IMP] supported_versions: release 18.0
closes odoo/documentation#11126

X-original-commit: a0472c95e5
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-10-01 12:07:13 +00:00
Pierre Pulinckx (PIPU) 3f048e7997 [FW][IMP] developer/testing: update tours documentation
The towers interface was modified during version 17. Therefore, in this commit, we update the documentation of this interface.

closes odoo/documentation#11117

Forward-port-of: odoo/documentation#11116
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-09-30 15:13:24 +00:00
afma-odoo a13bf9b24f [IMP] accounting: pdf menu to export reports
task-3605633

closes odoo/documentation#11114

X-original-commit: 380c4bc10f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Anne-Françoise Marcq (afma) <afma@odoo.com>
2024-09-29 19:51:54 +00:00
masp-odoo 615d282910 [FIX] website: recaptcha threshold number
task-4145451

closes odoo/documentation#11108

X-original-commit: 0aa1a671dd
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-09-26 22:58:38 +00:00
larm-odoo f820f189a2 [ADD] Appraisals: Skills Evolution reporting
closes odoo/documentation#11102

X-original-commit: 1e39d90420
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 20:43:42 +00:00
larm-odoo 1d17ceda3c [ADD] Employees: Certifications
closes odoo/documentation#11101

X-original-commit: 14007868bb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 20:43:41 +00:00
larm-odoo 4b5b008063 [ADD] Employees: Employee retention report
closes odoo/documentation#11094

X-original-commit: 43d99f8070
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 20:43:39 +00:00
108 changed files with 6898 additions and 5403 deletions
+15 -15
View File
@@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[o:odoo:p:odoo-17-doc:r:administration]
[o:odoo:p:odoo-18-doc:r:administration]
file_filter = locale/<lang>/LC_MESSAGES/administration.po
source_file = locale/sources/administration.pot
type = POT
@@ -11,7 +11,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:applications]
[o:odoo:p:odoo-18-doc:r:applications]
file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
type = POT
@@ -21,7 +21,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:essentials]
[o:odoo:p:odoo-18-doc:r:essentials]
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
source_file = locale/sources/essentials.pot
type = POT
@@ -31,7 +31,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:finance]
[o:odoo:p:odoo-18-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
type = POT
@@ -41,7 +41,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:general]
[o:odoo:p:odoo-18-doc:r:general]
file_filter = locale/<lang>/LC_MESSAGES/general.po
source_file = locale/sources/general.pot
type = POT
@@ -51,7 +51,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:hr]
[o:odoo:p:odoo-18-doc:r:hr]
file_filter = locale/<lang>/LC_MESSAGES/hr.po
source_file = locale/sources/hr.pot
type = POT
@@ -61,7 +61,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:index]
[o:odoo:p:odoo-18-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
type = POT
@@ -71,7 +71,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
[o:odoo:p:odoo-18-doc:r:inventory_and_mrp]
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
source_file = locale/sources/inventory_and_mrp.pot
type = POT
@@ -81,7 +81,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:marketing]
[o:odoo:p:odoo-18-doc:r:marketing]
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
source_file = locale/sources/marketing.pot
type = POT
@@ -91,7 +91,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:productivity]
[o:odoo:p:odoo-18-doc:r:productivity]
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
source_file = locale/sources/productivity.pot
type = POT
@@ -101,7 +101,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:sales]
[o:odoo:p:odoo-18-doc:r:sales]
file_filter = locale/<lang>/LC_MESSAGES/sales.po
source_file = locale/sources/sales.pot
type = POT
@@ -111,7 +111,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:services]
[o:odoo:p:odoo-18-doc:r:services]
file_filter = locale/<lang>/LC_MESSAGES/services.po
source_file = locale/sources/services.pot
type = POT
@@ -121,7 +121,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:user_settings]
[o:odoo:p:odoo-18-doc:r:user_settings]
file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
type = POT
@@ -131,7 +131,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:studio]
[o:odoo:p:odoo-18-doc:r:studio]
file_filter = locale/<lang>/LC_MESSAGES/studio.po
source_file = locale/sources/studio.pot
type = POT
@@ -141,7 +141,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:websites]
[o:odoo:p:odoo-18-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
type = POT
+1 -7
View File
@@ -231,18 +231,12 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'18.0': "Odoo 18",
'saas-17.4': "Odoo Online",
'saas-17.2': "Odoo Online",
'saas-17.1': "Odoo Online",
'17.0': "Odoo 17",
'saas-16.4': "Odoo Online",
'saas-16.3': "Odoo Online",
'saas-16.2': "Odoo Online",
'saas-16.1': "Odoo Online",
'16.0': "Odoo 16",
'saas-15.2': "Odoo Online",
'15.0': "Odoo 15",
'14.0': "Odoo 14",
}
# The language names that should be shown in the language switcher, if the config option `languages`
@@ -217,6 +217,26 @@ Production and staging builds are excluded, visitors can only see their status.
.. _odoosh-gettingstarted-settings-modules-installation:
GitHub commit statuses
======================
This option enables Odoo.sh to push commit statuses to your GitHub repository when a build is
created or updated. It requires a GitHub token with permissions to push commit statuses to the
repository. Refer to `GitHub's documentation on personal access tokens <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens>`_
for instructions to create yours.
.. note::
GitHub's **fine-grained personal tokens** have an expiration date and will be disabled if they
fail to update the commit status. You can replace the token at any time on Odoo.sh.
The commit statuses pushed to GitHub can have the following contexts:
- :guilabel:`ci/odoo.sh (dev)`: status of a development build
- :guilabel:`ci/odoo.sh (staging)`: status of a staging build
- :guilabel:`ci/odoo.sh (production)`: status of a production build
- :guilabel:`ci/odoo.sh (test_ci)`: testing the token from the Settings page will push a test
status on the last commit of your repository
Custom domains
==============
+2 -2
View File
@@ -61,8 +61,8 @@ To resolve the issue:
your **network and firewall settings** allow the Odoo server to open outgoing connections
towards:
- `services.odoo.com` on port `443` (or `80`)
- for older deployments, `services.openerp.com` on port `443` (or `80`)
- Odoo 18.0 and above: `services.odoo.com` on port `443` (or `80`)
- Odoo 17.0 and below: `services.openerp.com` on port `443` (or `80`)
These ports must be kept open even after registering a database, as the update notification runs
once a week.
+15 -21
View File
@@ -31,24 +31,24 @@ This matrix shows the support status of every version.
- On-Premise
- Release date
- End of support
* - Odoo saas~17.4
* - **Odoo 18.0**
- |green|
- |green|
- |green|
- October 2024
- October 2027 (planned)
* - Odoo SaaS 17.4
- |green|
- N/A
- N/A
- July 2024
-
* - Odoo saas~17.2
* - Odoo SaaS 17.2
- |green|
- N/A
- N/A
- April 2024
-
* - Odoo saas~17.1
- |green|
- N/A
- N/A
- January 2024
-
* - **Odoo 17.0**
- |green|
- |green|
@@ -60,31 +60,25 @@ This matrix shows the support status of every version.
- |green|
- |green|
- October 2022
- November 2025 (planned)
- October 2025 (planned)
* - **Odoo 15.0**
- |green|
- |green|
- |green|
- |red|
- |red|
- |red|
- October 2021
- November 2024 (planned)
- October 2024
* - **Odoo 14.0**
- |red|
- |red|
- |red|
- October 2020
- November 2023
* - **Odoo 13.0**
- |red|
- |red|
- |red|
- October 2019
- October 2022
* - Older versions
- |red|
- |red|
- |red|
- Before 2019
- Before 2022
- Before 2020
- Before 2023
.. admonition:: Legend
@@ -33,18 +33,16 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Deferred Revenue
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
the deferral entries when you post a customer invoice. However, you can also choose to
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
Based on
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Months`
computation accounts for $100 each month, while the :guilabel:`Days` computation
accounts for different amounts depending on the number of days in each month.
.. _customer_invoices/deferred/generate_on_validation:
@@ -24,8 +24,9 @@ the details.
.. image:: reporting/reporting-annotate.png
:alt: Annotate reports.
To export reports in PDF or XLSX format, click :guilabel:`PDF` or :guilabel:`XLSX` at the top of the
page.
To export reports in PDF or XLSX format, click :guilabel:`PDF` at the top or click the
:icon:`fa-caret-down` (:guilabel:`down arrow`) icon next to the :guilabel:`PDF` button and
select :guilabel:`XLSX`.
To compare values across periods, click the :guilabel:`Comparison` menu and select the periods you
want to compare.
@@ -33,18 +33,16 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Deferred Expense
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <vendor_bills/deferred/generate_on_validation>`
the deferral entries when you post a vendor bill. However, you can also choose to
:ref:`generate them manually <vendor_bills/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation recognizes $100 each month, while the :guilabel:`Based on days` computation recognizes
Based on
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Months`
computation recognizes $100 each month, while the :guilabel:`Days` computation recognizes
different amounts depending on the number of days in each month.
.. _vendor_bills/deferred/generate_on_validation:
@@ -835,7 +835,7 @@ Common errors
At the moment, Odoo does not support the automation of prefixes for products. This can be done
manually for each product output. This can also be done for non-storable products. However, keep
in mind that there will be no traceability.
- `2325 - GrossWeightMeasure - El dato no cumple con el formato establecido "Hace falta el campo"
- `2523 - GrossWeightMeasure - El dato no cumple con el formato establecido "Hace falta el campo"
"Peso"" en el producto`
This error occurs when the weight on the product is set as `0.00`. To fix this, you need to cancel
@@ -17,11 +17,10 @@ Online payments
payment_providers/flutterwave
payment_providers/mercado_pago
payment_providers/mollie
payment_providers/ogone
payment_providers/paypal
payment_providers/razorpay
payment_providers/sips
payment_providers/stripe
payment_providers/worldline
payment_providers/xendit
Odoo embeds several **payment providers** that allow your customers to pay online, on their
@@ -126,18 +125,18 @@ Online payment providers
- Full only
- Full and partial
-
* - :doc:`SIPS <payment_providers/sips>`
- The provider's website
-
-
-
-
* - :doc:`Stripe <payment_providers/stripe>`
- Odoo
- |V|
- Full only
- Full and partial
- |V|
* - :doc:`Worldline <payment_providers/worldline>`
- The provider's website
- |V|
-
-
-
* - :doc:`Xendit <payment_providers/xendit>`
- The provider's website
-
@@ -457,11 +456,10 @@ other payments.
- :doc:`payment_providers/demo`
- :doc:`payment_providers/mercado_pago`
- :doc:`payment_providers/mollie`
- :doc:`payment_providers/ogone`
- :doc:`payment_providers/paypal`
- :doc:`payment_providers/razorpay`
- :doc:`payment_providers/sips`
- :doc:`payment_providers/stripe`
- :doc:`payment_providers/worldline`
- :doc:`payment_providers/xendit`
- :doc:`../websites/ecommerce/checkout_payment_shipping/payments`
- :doc:`accounting/bank`
@@ -1,107 +0,0 @@
=====
Ogone
=====
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
company that provides the technology involved in secure electronic transactions.
.. seealso::
- :ref:`payment_providers/add_new`
- `Ogone's documentation <https://epayments-support.ingenico.com/get-started/>`_.
.. warning::
The provider Ogone is deprecated. It is recommended to use :doc:`stripe` instead.
Settings in Ogone
=================
Create an API user
------------------
Log into your Ogone account and head to the :guilabel:`Configuration` tab.
You need to create an **API user** to be used in the creation of transactions from Odoo. While you
can use your main account to do so, using an **API user** ensures that if the credentials used in
Odoo are leaked, no access to your Ogone configuration is possible. Additionally, passwords for
**API users** do not need to be updated regularly, unlike normal users.
To create an **API user**, go to :menuselection:`Configuration --> Users` and click on
:guilabel:`New User`. The following fields must be configured:
.. _ogone/ogone:
- :guilabel:`UserID`: you can choose anything you want.
- :guilabel:`User's Name, E-mail and Timezone`: you can enter the information you want.
- :guilabel:`Profile`: should be set to :guilabel:`Admin`.
- :guilabel:`Special user for API`: should be checked.
After the creation of the user, you are required to generate a password. Save the password and
**UserID**, as they will be required later on during the setup.
.. tip::
If you already have an user set up, make sure it is activated without any error. If not, simply
click the :guilabel:`Activate(Errors)` button to reset the user.
Set up Ogone for Odoo
---------------------
Ogone must now be configured to accept payments from Odoo. Head to :menuselection:`Configuration -->
Technical Information --> Global Security Parameters`, select :guilabel:`SHA-512` as
:guilabel:`Hash Algorithm` and :guilabel:`UTF-8` as :guilabel:`character encoding`. Then, go to the
:guilabel:`Data and Origin verification` tab of the same page and leave the URL field of the
:guilabel:`e-Commerce and Alias Gateway` section blank.
.. tip::
If you need to use another algorithm, such as `sha-1` or `sha-256`, within Odoo, activate the
:ref:`developer mode <developer-mode>` and go to the **Payment Providers** page in
:menuselection:`Accounting --> Configuration --> Payment Providers`. Click on :guilabel:`Ogone`,
and in the :guilabel:`Credentials` tab, select the algorithm you wish to use in the
:guilabel:`Hash function` field.
You are now required to generate **SHA-IN** passphrases. **SHA-IN** and **SHA-OUT** passphrases are
used to digitally sign the transaction requests and responses between Odoo and Ogone. By using these
secret passphrases and the `sha-1` algorithm, both systems can ensure that the information they
receive from the other was not altered or tampered with.
Enter the same **SHA-IN** passphrase in both :guilabel:`Checks for e-Commerce & Alias Gateway` and
:guilabel:`Checks for DirectLink and Batch (Automatic)`. You can leave the IP address field blank.
Your **SHA-IN** and **SHA-OUT** passphrases should be different, and between 16 and 32 characters
long. Make sure to use the same **SHA-IN** and **SHA-OUT** passphrases throughout the entire Ogone
configuration, as Odoo only allows a single **SHA-IN** and single **SHA-OUT** passphrase.
In order to retrieve the **SHA-OUT** key, log into your Ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All
transaction submission modes`, and get or generate your **API Key** and **Client Key**. Be careful
to copy your API key as youll not be allowed to get it later without generating a new one.
When done, head to :menuselection:`Configuration --> Technical Information --> Transaction Feedback`
and check the following options:
- The :guilabel:`URL` fields for :guilabel:`HTTP redirection in the browser` can be left empty, as
Odoo will specify these URLs for every transaction request.
- :guilabel:`I would like to receive transaction feedback parameters on the redirection URLs`:
should be checked.
- :guilabel:`Direct HTTP server-to-server request`: should to be set to `Online but switch to a
deferred request when the online request fails`.
- Both **URL** fields should contain the same following URL, with `<example>` replaced by your
database: `https://<example>/payment/ogone/return`.
- :guilabel:`Dynamic eCommerce Parameters` should contain the following values: `ALIAS`, `AMOUNT`,
`CARDNO`, `CN`, `CURRENCY`, `IP`, `NCERROR` `ORDERID`, `PAYID`, `PM`, `STATUS`, `TRXDATE`. Other
parameters can be included (if you have another integration with Ogone that requires them), but
are not advised.
- In the :guilabel:`All transaction submission modes` section, fill out **SHA-OUT** passphrase and
disable `HTTP request for status change`.
To allow your customers to save their credit card credentials for future use, head to
:menuselection:`Configuration --> Alias --> My alias information`. From this tab, you can configure
how the user can have its card details saved, for how long the information is saved, if a checkbox
to save the card information should be displayed, etc.
Settings in Odoo
================
To set up Ogone in Odoo, head to :menuselection:`Accounting --> Configuration --> Payment Providers`
and open the Ogone provider. In the :guilabel:`Credentials` tab, enter the **PSPID** of your Ogone
account, and fill out the other fields as configured in your :ref:`Ogone portal <ogone/ogone>`.
@@ -1,32 +0,0 @@
====
SIPS
====
`SIPS <https://sips.worldline.com/>`_ is an online payments solution from the multinational
Worldline.
Configuration
=============
.. seealso::
- :ref:`payment_providers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your SIPS account, which comprise:
- **Merchant ID**: The ID solely used to identify the merchant account with SIPS.
- **Secret Key**: The key to sign the merchant account with SIPS.
- **Secret Key Version**: The version of the key, pre-filled.
- **Interface Version**: Pre-filled, don't change it.
You can copy your credentials from your SIPS environment info documentation, in the section
**PROD**, and paste them in the related fields under the **Credentials** tab.
.. important::
If you are trying SIPS as a test, with the *TEST* credentials, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_providers`
@@ -0,0 +1,68 @@
=========
Worldline
=========
`Worldline <https://worldline.com/>`_ is a France-based company and the world's fourth largest
payment provider.
Settings in Worldline
=====================
.. _worldline/API-user:
Create an API user
------------------
It is recommended to set up an **API user** to create transactions from Odoo to ensure that your
Worldline configuration remains safe even if credentials are compromised. Additionally, API users do
not require frequent password updates like regular accounts.
To create an **API user**, proceed as follows:
#. Log into your `Worldline Merchant Portal <https://merchant-portal.preprod.worldline-solutions.com/dashboard>`_,
click the :icon:`fa-th` (:guilabel:`menu`) icon, and select :guilabel:`Back Office`.
#. Go to :menuselection:`Configuration --> Users` and click on :guilabel:`New User`.
#. Configure the following fields:
#. Specify a :guilabel:`UserID`, :guilabel:`User's name`, :guilabel:`E-mail address`, and
:guilabel:`Timezone` of your choice.
#. Set the :guilabel:`Profile` field to :guilabel:`Admin`.
#. Enable :guilabel:`Special user for API`.
.. tip::
If you have already set up a user, make sure it is activated without any error.
.. _worldline/set-up:
Set up Worldline for Odoo
-------------------------
Worldline must now be configured to accept payments from Odoo.
#. From your merchant portal, go to :menuselection:`Developer --> Payment API` and click on
:guilabel:`Generate API key`. Copy the :guilabel:`API key ID` and the :guilabel:`Secret API key`
and save them for :ref:`later <wordline/odoo-configuration>`.
#. Go to :menuselection:`Developer --> Webhooks` and click on :guilabel:`Generate webhook keys`.
Copy the :guilabel:`Webhook ID` and the associated :guilabel:`Secret webhook key` and
save them for :ref:`later <wordline/odoo-configuration>`.
#. | Click :guilabel:`Add webhook endpoint`, enter your Odoo database's URL followed by
`/payment/worldline/webhook` in the :guilabel:`Endpoint url` field, and :guilabel:`Confirm`.
| For example: `https://example.odoo.com/payment/worldline/webhook`.
.. _wordline/odoo-configuration:
Settings in Odoo
================
To set up Worldline in Odoo:
#. :ref:`Navigate to the payment provider Worldline <payment_providers/add_new>` and change its
state to :guilabel:`Enabled`.
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`PSPID` of your Worldline account and
fill in the :guilabel:`API Key`, :guilabel:`API Secret`, :guilabel:`Webhook Key`, and
:guilabel:`Webhook Secret` with the values you saved at the step :ref:`Set up Worldline for
Odoo <worldline/set-up>`.
#. Configure the rest of the options to your liking.
.. seealso::
:doc:`../payment_providers`
+2
View File
@@ -174,6 +174,7 @@ document.
- :doc:`appraisals/new_appraisals`
- :doc:`appraisals/goals`
- :doc:`appraisals/appraisal_analysis`
- :doc:`appraisals/skills_evolution`
.. toctree::
:titlesonly:
@@ -181,3 +182,4 @@ document.
appraisals/new_appraisals
appraisals/goals
appraisals/appraisal_analysis
appraisals/skills_evolution
@@ -24,13 +24,12 @@ Each appraisal card displays the following information:
- **Name**: the employee's name.
- **Department**: the department the employee is associated with.
- **Company**: the company the employee works for. This only appears in a multi-company
database.
- **Company**: the company the employee works for. This only appears in a multi-company database.
- **Date**: the date the appraisal was requested, or is scheduled for in the future.
- **Activities**: any :doc:`activities <../../essentials/activities>` that are scheduled for the
appraisal, such as *Meetings* or *Phone Calls*.
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right
corner of an appraisal card.
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right corner of
an appraisal card.
- **Status banner**: the status of the appraisal. A banner appears if an appraisal is marked as
either *Canceled* or *Done*. If no banner is present, that means the appraisal has not happened,
or has not been scheduled yet.
@@ -274,8 +273,9 @@ Once the appraisal is marked as *Done*, the :guilabel:`Mark as Done` button disa
button.
Then, click the :guilabel:`Confirm` button that appears, and make any modifications needed. Once
all modifications are complete, click the the :guilabel:`Mark as Done` button again.
all modifications are complete, click the :guilabel:`Mark as Done` button again.
.. seealso::
- :doc:`../appraisals/goals`
- :doc:`../appraisals/appraisal_analysis`
- :doc:`../appraisals/skills_evolution`
@@ -0,0 +1,164 @@
================
Skills evolution
================
In Odoo's **Appraisals** app, it is possible to view employee's skills as they progress over time in
the :ref:`Skills Evolution <appraisals/identify-skills-evolution>` report, also known as the
*Appraisal Skills Report*.
Managers can use this to see who is achieving their various skill goals set on their appraisals, who
is meeting their skill deadlines, who has the highest performance in terms of skill development, and
more.
The *Skills Evolution* report also provides the ability to :ref:`search for employees with specific
skills <appraisals/identify-skills>` at certain levels, which can be helpful for scenarios where
specific skills are required.
.. _appraisals/identify-skills-evolution:
Skills evolution report
=======================
To access this *Skills Evolution* report, navigate to :menuselection:`Appraisals app --> Reporting
--> Skills Evolution`.
Doing so reveals the :guilabel:`Appraisal Skills Report` page, which displays a report of all
skills, grouped by employee, in alphabetical order, by default.
.. note::
Skill levels are **only** updated after an appraisal is marked as done. Any skill level changes
from ongoing appraisals that have **not** been finalized are **not** included in this report.
All the :guilabel:`Employee` lines are expanded, with all the various skill types nested below. Each
individual skill type is collapsed, by default. To view the individual skills contained within a
skill type, click anywhere on the skill type line to expand the data.
Each skill has the following information listed:
- :guilabel:`Employee`: the 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*. Skills that have regressed appear in red, as
*Regression*.
This report can be modified to find specific information by adjusting the :ref:`filters
<search/filters>` and :ref:`groupings <search/group>` set in the search bar at the top.
.. image:: skills_evolution/skills-report.png
:align: center
:alt: A report showing all the skills grouped by employee.
.. _appraisals/identify-skills:
Use case: Identify employees with specific skills
=================================================
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.
In this example, the report is modified to show employees with an expert level of Javascript
knowledge. To view only those employees, first remove all active filters in the search bar.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
:guilabel:`Add Custom Filter` beneath the :icon:`fa-filters` :guilabel:`Filters` column to load an
:guilabel:`Add Custom Filter` pop-up window.
Using the drop-down menu in the first field, select :guilabel:`Skill`. Then, keep the second field
as-is, and select :guilabel:`Javascript` from the third drop-down menu in the third field.
Next, click :guilabel:`New Rule`, and another line appears. In this second line, select
:guilabel:`Current Skill Level` for the first drop-down field, leave the second field as-is, 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:`(down arrow)` icon after the word :guilabel:`any`, and select
:guilabel:`all`.
Finally, click the :guilabel:`Add` button.
.. image:: skills_evolution/javascript.png
:align: center
:alt: The Custom Filter pop-up with the parameters set.
Now, only employees that have an :guilabel:`Expert` level for the skill :guilabel:`Javascript`
appear. In this example, only :guilabel:`Marc Demo` meets these criteria.
.. image:: skills_evolution/results.png
:align: center
:alt: The employees with expert Javascript skills.
Use case: Assess highest improvement
====================================
Another way to modify the :guilabel:`Appraisal Skills Report` is to identify the employee who has
the highest amount of improved skills over a specific period of time.
To view this information, first remove the default filter in the search bar. Next, click the
:icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
:guilabel:`Improvement` beneath the :icon:`fa-filter` :guilabel:`Filters` column. Enabling this
filter only presents skills that have improved.
It is possible to view the skills that have improved over a period of time, such as a specific
quarter, or month. With the search bar drop-down menu still expanded, click :guilabel:`Add Custom
Filter` at the bottom of the :icon:`fa-filter` :guilabel:`Filters` column, and an :guilabel:`Add
Custom Filter` pop-up window appears.
Select :guilabel:`Create Date` for the first drop-down field, then select :guilabel:`is between` for
the second drop-down field. Once :guilabel:`is between` is selected, a second field appears after
the last field. Using the calendar selector, select the date range to apply the filter to. Once all
the fields are properly formatted, click :guilabel:`Add`.
The custom filter presents only the skills that have improved during the specified time period,
organized by employee.
.. example::
To determine the employee with the most amount of improved skills for the third quarter, remove
the default filter in the search bar of the :guilabel:`Appraisal Skills Report`. Next, activate
the :guilabel:`Improvement` filter, then click :guilabel:`Add Custom Filter` at the bottom of the
:icon:`fa-filter` :guilabel:`Filters` column.
In the resulting :guilabel:`Add Custom Filter` pop-up window, select :guilabel:`Create Date` for
the first drop-down field, then select :guilabel:`is between` for the second drop-down field. Two
date fields appear after :guilabel:`is between` is selected.
Using the calendar selector, set the first date to :guilabel:`07/01/2024` and the second date to
:guilabel:`09/30/2024`, then click :guilabel:`Add`.
These filters present only the skills that have improved during the third quarter (between July
1st and September 30th, 2024), organized by employee.
.. image:: skills_evolution/custom-filter.png
:alt: The Custom Filter pop-up with the parameters set.
To view the number of employees and skills in further detail, click the :icon:`oi-view-pivot`
:guilabel:`(Pivot)` icon in the top-right corner to view the data in a pivot table. This presents a
pivot table with the employees populating the rows, and the only visible column represents the total
number of improved skills.
To expand more rows or columns to view which skill types had the most overall improvement, click
:icon:`fa-plus-square` :guilabel:`Total` above the :guilabel:`Count` column, then click
:guilabel:`Skill Type` from the resulting drop-down menu. This organizes the total improved skills
by their respective skill type.
.. example::
In this example, it is determined that :guilabel:`Charles Reginald` had the largest improvement
in the third quarter, with six improved skills. Additionally, they also had the most skill
improvements for both :guilabel:`Languages` (three) and :guilabel:`Programming Languages` (two).
.. image:: skills_evolution/largest-improvement.png
:alt: The pivot table showing the skill improvements for the third quarter.
.. seealso::
- :doc:`Odoo essentials reporting <../../essentials/reporting>`
- :doc:`../../essentials/search`
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

+2
View File
@@ -13,4 +13,6 @@ Odoo *Employees* organizes a company's employee records, contracts, and departme
employees/new_employee
employees/departments
employees/certifications
employees/offboarding
employees/retention_report
@@ -0,0 +1,117 @@
==============
Certifications
==============
When jobs require specific knowledge, it is necessary to track employee certifications to ensure the
necessary knowledge and certifications are in place.
Certifications include classes, tests, professional seminars, and more. There are no restrictions in
terms of what type of certification records can be added in Odoo.
.. important::
To access the *Employee Certifications* report, the **Surveys** app **must** be installed.
View certifications
===================
To view a full list of all employee certifications, navigate to :menuselection:`Employees app -->
Reporting --> Certifications`.
All certifications appear in a list view, grouped by employee. Each certification entry displays the
following:
- :guilabel:`Employee`: the employee's name, along with their avatar image.
- :guilabel:`Name`: the title of the certification.
- :guilabel:`Validity Start`: when the employee received the certification.
- :guilabel:`Validity End`: when the certification expires.
- :guilabel:`Certification`: the corresponding course in the **Surveys** app that was completed by
the employee, if applicable.
The entries are also color-coded. Current certifications that are still valid appear in black,
expired certifications appear in red, and certifications that are going to expire within the next
90 days appear in orange.
.. image:: certifications/certifications.png
:align: center
:alt: The list of employee certifications.
.. important::
**Only** certification records with the *Display Type* set to *Certification* on their
:ref:`certification form <employees/certifications-form>` appear on the :guilabel:`Employee
Certifications` report. All other certifications appear in the resume section of the
:doc:`employee form <new_employee>`.
View certifications by expiration status
----------------------------------------
When managing a large number of employees with a variety of certifications, it can be difficult to
determine which employees need to keep necessary certifications current in the default list view. In
this scenario, it is beneficial to view the certifications by expiration status.
To do so, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Next, click
the :icon:`fa-caret-down` :guilabel:`(down arrow)` in the search bar, then click :guilabel:`Add
Custom Group`, revealing a drop-down menu. Click :guilabel:`Expiration Status`, then click away from
the drop-down menu to close it.
After doing so, all the certifications are organized by status, starting with :guilabel:`Expired`
certifications, then certifications that are :guilabel:`Expiring` soon (within the next 90 days),
and lastly, certifications that are still :guilabel:`Valid`.
This view provides an easy way to see which employees have certifications that are going to expire
soon, to determine which employees need to take action to keep their certifications current.
.. image:: certifications/status.png
:align: center
:alt: The list of employee certifications, grouped by status.
.. _employees/certifications-form:
Log a certification
===================
To log a certification for an employee, navigate to :menuselection:`Employees app --> Reporting -->
Certifications`. Click :guilabel:`New`, and a blank certification form loads. Enter the following
information on the form:
- :guilabel:`Title`: Enter a short description for the certification in this field.
- :guilabel:`Employee`: Using the drop-down menu, select the employee who received the
certification.
- :guilabel:`Type`: Using the drop-down menu, select the type of certification received. This field
determines where on the employee's resume the certification appears. To create a new
:guilabel:`Type`, enter the type in the field, then click :guilabel:`Create "type"`.
The default options are:
- :guilabel:`Experience`: Select this option to have the certification appear in the *Experience*
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Education`: Select this option to have the certification appear in the *Education*
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Internal Certification`: Select this option to have the certification appear in the
*Internal Certification* section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Completed Internal Training`: Select this option to have the certification appear in
*Completed Internal Training* section of the *Resume* tab on the :doc:`employee form
<new_employee>`.
- :guilabel:`Display Type`: Select the visibility of the certification in this field. The default
options are:
- :guilabel:`Classic`: Select this option to have the certification appear in the *Resume* section
of the employee form, and **not** appear on the *Employee Certifications* report.
- :guilabel:`Course`: Select this option to have the certification appear in the *Resume* section
of the employee form, and **not** appear on the *Employee Certifications* report. Once this
option is selected, a :guilabel:`Course` field appears beneath the :guilabel:`Display Type`
field. Using the drop-down menu, select the course the employee took. The course is created in
the **Surveys** app.
- :guilabel:`Certification`: Select this option to have the certification appear in the *Resume*
section of the employee form, **and** appear on the *Employee Certifications* report. Once this
is selected, a :guilabel:`Certification` field appears beneath the :guilabel:`Display
Type` field. Using the drop-down menu, select the certification the employee took.
- :guilabel:`Description`: Enter a description for the certification in this field.
- :guilabel:`Duration`: Click into the first field, and a calendar pop-over window appears. Click on
the start and end dates for the certification validity period. When the correct dates are
selected, click :icon:`fa-check` :guilabel:`Apply`, and both fields are populated.
.. image:: certifications/osha.png
:align: center
:alt: A certification form filled out for an OSHA certificate for construction.
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,103 @@
=========================
Employee retention report
=========================
It is possible to determine the retention rate for a company by modifying an existing report.
First, navigate to :menuselection:`Employees app --> Reporting --> Contracts` to open the
:guilabel:`Employee Analysis` report. This report shows the number of all employees for the
:guilabel:`Last 365 Days`, in a default :icon:`fa-line-chart` :guilabel:`Line Chart`.
.. image:: retention_report/employees-analysis.png
:align: center
:alt: The default Employees Analysis report.
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
revealing a drop-down menu. Click :guilabel:`# Departure Employee` in the list, then click away from
the drop-down menu to close it. Now, the report shows all the employees who were archived for the
:guilabel:`Last 365 Days`.
To view this information in an easier format, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)`
icon in the upper-right corner, and the data is presented in a pivot table.
The various employees, organized by department, populate the rows. The columns display the following
totals: the monthly :guilabel:`Wage`, the :guilabel:`Fuel Card` budget, total :guilabel:`Annual
Employee Budget` (also referred to as the *annual salary*), the number of :guilabel:`New Employees`,
as well as the number of :guilabel:`Departure Employees` (employees who left).
.. image:: retention_report/pivot-departures.png
:align: center
:alt: The Employees Analysis report, modified to show departed employees only.
Employee retention rate comparison report
=========================================
It is possible to compare data only for employees who left, compared to the total current employees,
between two separate time periods. This is commonly referred to as the *employee retention rate*.
To view these metrics, first open the :guilabel:`Employee Analysis` report by navigating to
:menuselection:`Employees app --> Reporting --> Contracts`. Click the :icon:`oi-view-pivot`
:guilabel:`(Pivot)` icon in the upper-right corner to view the information in a pivot table.
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
revealing a drop-down menu. Click :guilabel:`# New Employees`, :guilabel:`Annual Employee Budget`,
:guilabel:`Fuel Card`, and :guilabel:`Wage` in the list, to deselect these metrics and hide them in
the table. Then, click :guilabel:`Count` at the bottom of the list to enable that metric.
Click away from the drop-down menu to close it. Now, the report shows all the employees who left the
company (:guilabel:`# Departure Employee`), as well as the total number of employees
(:guilabel:`Count`), for the :guilabel:`Last 365 Days`.
To compare the data for the current year with the previous year, click the :icon:`fa-caret-down`
:guilabel:`(down arrow)` in the search bar, revealing multiple filter and grouping options. Click
:guilabel:`Last 365 Days` in the :icon:`fa-filter` :guilabel:`Filters` column, to turn off that
filter. Then, click :guilabel:`Date`, and click the current year (in this example, :guilabel:`2024`)
from the resulting drop-down menu.
Once a selection is made beneath :guilabel:`Date` in the :icon:`fa-filter` :guilabel:`Filters`
column, a :icon:`fa-adjust` :guilabel:`Comparison` column appears. Click :guilabel:`Date: Previous
Year` in the new column, then click off of the drop-down menu to close it.
.. note::
In Odoo, in order to access the :icon:`fa-adjust` :guilabel:`Comparison` column, a specific time
*other than* :guilabel:`Last 365 Days` **must** be selected. If not, the :icon:`fa-adjust`
:guilabel:`Comparison` column is **not** visible.
Now, the pivot table displays the total number of employees who left the company (:guilabel:`#
Departure Employee`), as well as the total number of employees (:guilabel:`Count`) in the columns.
These are further divided by the two different years, and also displays the :guilabel:`Variation`
between the two.
The rows display the departments, and lists each individual employee for each department, in the
rows.
For a more concise view of this report, click :icon:`fa-minus-square-o` :guilabel:`Total` above the
top row of the departments and employees, to collapse the rows. Now, the table presents the total
number of employees who left the company for both years, compared to the total number of employees
for both years, including the difference, in a percentage.
.. example::
In this example, :guilabel:`3` employees out of :guilabel:`83` left in 2023, and :guilabel:`8`
employees out of :guilabel:`202` left in 2024. There was a :guilabel:`166.67%` increase in the
employees who left in 2024 as compared to 2023. Additionally, there was a :guilabel:`143.37%`
increase in the total number of employees in 2024 as compared to 2023.
.. image:: retention_report/comparison-years.png
:align: center
:alt: The report modified to show the difference between two years of employees who left.
To view more detailed rates for each department, click :icon:`fa-plus-square` :guilabel:`Total` in
the single row, revealing a drop-down menu, and click :guilabel:`Department`. Click away from the
drop-down to close it, and now the pivot table displays the total number of employees who left
(:guilabel:`# Departure Employee`), the total number of employees (:guilabel:`Count`), and the
:guilabel:`Variation` (in a percentage) for both 2023 and 2024, organized by department.
.. example::
In this example, it can be determined that the :guilabel:`Management` department had the best
retention rate in 2024 as compared to 2023, with a :guilabel:`Variation` rate of
:guilabel:`-100%`. Additionally, it can be determined that the :guilabel:`Management / Research &
Development` department had the most turnover, with a :guilabel:`Variation` of :guilabel:`300%`.
.. image:: retention_report/department-totals.png
:align: center
:alt: The expanded employee retention report by department.
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 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: 29 KiB

+2
View File
@@ -963,6 +963,7 @@ form.
- :doc:`payroll/payslips`
- :doc:`payroll/work_entries`
- :doc:`payroll/reporting`
- :doc:`payroll/work_entry_analysis`
.. toctree::
:titlesonly:
@@ -971,3 +972,4 @@ form.
payroll/work_entries
payroll/payslips
payroll/reporting
payroll/work_entry_analysis
+4 -56
View File
@@ -178,63 +178,11 @@ spreadsheet view with the report added to it.
.. _payroll/doc-storage:
.. note::
If the *Documents* app is **not** installed, the :guilabel:`Insert in Spreadsheet` option places
the newly-created spreadsheet in the *Dashboards* app.
If the **Documents** app is **not** installed, the :guilabel:`Insert in Spreadsheet` option
places the newly-created spreadsheet in the **Dashboards** app.
If the *Documents* application **is** installed, the spreadsheet has the option to be stored in
either the *Dashboards* app or *Documents* app.
Work entry analysis
-------------------
The default :guilabel:`Work entry analysis` report provides an overview of the validated work
entries for the current month. To view this report, navigate to :menuselection:`Payroll app -->
Reporting --> Work Entry Analysis`.
The work entries appear in a pivot table, with the default filters of `Current month: (Month)(Year)`
and `Validated`. The various types of :doc:`work_entries` are listed on the left-hand side (x-axis),
while the :guilabel:`Total` values appear along the top (the y-axis).
To change the displayed view, click the :guilabel:` (plus)` icon next to the word
:guilabel:`Total`, then click on one of the grouping options. The available options are
:guilabel:`Work Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company
database, a :guilabel:`Company` option also appears.
To add a new group to sort the data, click :guilabel:`Add Custom Group`, then click one of the
presented options.
.. tip::
Wherever a :guilabel:` (plus)` icon appears on a pivot table, the information can be further
grouped. Click on a :guilabel:` (plus)` icon to reveal the available grouping options.
Click on a :guilabel:` (minus)` icon anywhere on the pivot table to remove that respective
grouping.
It is possible to compare the current :guilabel:`Work entry analysis` report to the previous month
or the previous year. To view these comparisons, click the :guilabel:`⬇️ (down arrow)` icon in the
search bar to reveal the various :ref:`filter <payroll/filters>` and grouping options.
In the section titled :guilabel:`Comparison`, click on either :guilabel:`Current Month: Previous
Period` or :guilabel:`Current Month: Previous Year`. The report updates and displays the previous
time period values, as well as the :guilabel:`Variation` between the two.
.. image:: reporting/work-entry-comparison.png
:align: center
:alt: A pivot table comparing the work entries of the current month and the previous month.
To export the data in an XLSX format, click the :guilabel:`Download xlsx` button, represented by a
:guilabel:`⬇️ (down arrow above a horizontal bar)` icon, located at the far-right of the available
icons. The information is then downloaded into a spreadsheet.
The data can also be inserted into a spreadsheet. Click the :guilabel:`Insert in Spreadsheet` button
and a :guilabel:`Select a spreadsheet to insert your (type of report)` pop-up window appears, asking
which spreadsheet to place the information in. Select an existing spreadsheet or dashboard, or
select a new :guilabel:`Blank spreadsheet`. Click the :guilabel:`Confirm` button to move to a
spreadsheet view with the report added to it.
.. note::
The work entry analysis spreadsheet is :ref:`stored in the same locations <payroll/doc-storage>`
as a pivot table.
If the **Documents** application *is* installed, the spreadsheet has the option to be stored in
either the **Dashboards** app or **Documents** app.
Salary attachment report
------------------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

@@ -59,8 +59,8 @@ Enter the following information on the form:
this field is left blank, it automatically populates once an employee is selected. The default
entry is `Attendance: (Employee)`.
- :guilabel:`Employee`: select the employee the work entry is for, using the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries-config>` using
the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries>` using the
drop-down menu.
- :guilabel:`From` and :guilabel:`To`: enter the start (:guilabel:`From`) and end (:guilabel:`To`)
dates and times for the work entry.
@@ -0,0 +1,80 @@
===================
Work entry analysis
===================
The default *Work Entries Analysis* report provides an overview of the validated work entries for
the current month. To view this report, navigate to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
The work entries appear in a pivot table, with the default filters of :guilabel:`Current month:
(Month)(Year)` and :guilabel:`Validated`. The various types of :doc:`work_entries` populate the
rows, while the :guilabel:`Total` values populate the only visible column.
To change the displayed information, click :icon:`fa-plus-square` :guilabel:`Total` above the main
column, revealing a drop-down menu of available metrics. Click on one of the available groupings,
and the data is further organized by that selected metric. The default options are :guilabel:`Work
Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company database, a
:guilabel:`Company` option also appears.
Work entry analysis comparison
==============================
It is possible to compare the work entries from one time period to a previous time period. To view
this comparison, first navigate to :menuselection:`Payroll app --> Reporting --> Work Entry
Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click on either
:guilabel:`Current Month: Previous Period` or :guilabel:`Current Month: Previous Year`.
The report updates and displays the data for the current time period, data for the selected previous
time period, as well as the :guilabel:`Variation` between the two, in a percentage.
.. image:: work_entry_analysis/work-entry-comparison.png
:alt: A pivot table comparing the work entries of the current month and the previous month.
.. note::
If no work entries for a specific :ref:`work entry type <payroll/work-entries>` are logged for
the time period, it does **not** appear on the report. That does **not** mean the work entry type
does not exist, or is not configured.
Additionally, if the default :guilabel:`Current month: (Month)(Year)` filter is removed from the
search bar, the :guilabel:`Comparison` column does **not** appear; there must be a time-frame
selected to view the :guilabel:`Comparison` column.
Use case: overtime report comparison
====================================
It is possible to alter the *Work Entries Analysis* report to show a comparison of only overtime
work entries, grouped by employee, for a specific time period. To view this data, first navigate to
the default *Work entry analysis* report by going to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-filter` :guilabel:`Filters` column, click :guilabel:`Add Custom
Filter`, and a :guilabel:`Add Custom Filter` pop-up window appears.
Using the drop-down menu, select :guilabel:`Work Entry Type` for the first field, leave the middle
field as-is (with :guilabel:`is in` populating the field), and select :guilabel:`Overtime Hours` for
the last field. Click :guilabel:`Add`, and all other work entry types disappear, and
:guilabel:`Overtime Hours` appear in the sole row.
To compare overtime from the current month to the previous month, to see which month had more
overtime logged, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon again in the search
bar. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click :guilabel:`Current Month:
Previous Period`. Click away from the drop-down menu to close it.
Now, the report displays the :guilabel:`Overtime Hours` for the current month and the previous
month, along with the :guilabel:`Variation`, in a percentage.
To view which employees received the most overtime, click :icon:`fa-plus-square` :guilabel:`Overtime
Hours`, revealing a drop-down menu of options. Click :guilabel:`Employee`, and all employees with
overtime work entries for either the current or previous month appears.
In this example, it can be determined that :guilabel:`Marc Demo` worked the most overtime in
:guilabel:`August 2024`, whereas :guilabel:`Beth Evans` worked the most overtime hours in
:guilabel:`September 2024`. Additionally, :guilabel:`Mitchell Admin` had the largest variation
change, with a :guilabel:`-100%` change from :guilabel:`August 2024` to :guilabel:`September 2024`.
.. image:: work_entry_analysis/variation.png
:alt: A pivot table comparing the overtime from September 2024 with August 2024.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@@ -10,3 +10,4 @@ Inventory valuation
inventory_valuation/inventory_valuation_config
inventory_valuation/using_inventory_valuation
inventory_valuation/integrating_landed_costs
inventory_valuation/valuation_by_lots
@@ -108,6 +108,8 @@ available during a prior specified date can be seen and selected.
the teal :guilabel:`➡️ (right arrow)` button to the right of the :guilabel:`Reference` column
value.
.. _inventory/product_management/update-unit-price:
Update product unit price
-------------------------
@@ -0,0 +1,209 @@
================================
Valuation by lots/serial numbers
================================
Track :doc:`inventory valuation <using_inventory_valuation>` by :doc:`lots or serial numbers
<../../product_management/product_tracking>` to:
#. :ref:`Compare and differentiate purchasing cost <inventory/product_management/view-valuation>`,
based on lot or serial numbers.
#. Track the actual cost of manufactured products, based on the real cost of each tracked component
used.
#. Depreciate specific lot or serial numbers when they :doc:`sit in stock for too long
<../../warehouses_storage/reporting/aging>`.
.. important::
Please read this :doc:`introduction to inventory valuation <inventory_valuation_config>` before
setting up valuation by lot/serial numbers.
Configuration
=============
To enable valuation by lots or serial numbers, begin by enabling the :ref:`Lots and Serial Numbers
feature <inventory/product_management/enable-lot-serial>`. After that, go to
:menuselection:`Inventory app --> Products --> Products`, and select the desired product, or create
a new product, by clicking :guilabel:`New`.
On the product form, in the :guilabel:`Category` field, choose a product category. Ensure the
product category's :ref:`Costing Method <inventory/warehouses_storage/costing_methods>` is set to
*First In First Out (FIFO)* or *Average Cost (AVCO)*.
.. tip::
To check the costing method set on the product category, hover over the :guilabel:`Category`
field, and click the :icon:`oi-arrow-right` :guilabel:`(Internal Link)` icon.
.. seealso::
:ref:`Costing methods <inventory/warehouses_storage/costing_methods>`
Next, activate the product to be tracked by lots or serial numbers by ticking the :guilabel:`Track
Inventory` checkbox. Then, click the adjacent field that appears, and choose either :guilabel:`By
Lots` or :guilabel:`By Unique Serial Number` from the resulting drop-down menu.
Doing so makes the :guilabel:`Valuation by Lot/Serial number` checkbox appear below it. Tick that
checkbox, and the configuration to track valuation by lot or serial numbers is complete.
.. figure:: valuation_by_lots/product-form.png
:alt: Product form showing the Valuation by Lot or Serial Number feature.
Product form showing the Valuation by Lot or Serial Number feature
Valuation layers
================
To understand how valuation by lots and serial numbers works, consider these scenarios:
#. :ref:`Purchase and sell products <inventory/product_management/valuation-cost-example>`: cost is
calculated based on the *product category's* costing method.
#. :ref:`Create new lot/serial numbers <inventory/product_management/valuation-cost-new>` using an
inventory adjustment: value of the new lot/serial number is assigned to the cost from the product
form.
#. Inventory adjustment to update quantities for an :ref:`existing lot/serial number
<inventory/product_management/valuation-cost-existing>`: value is assigned based on the most
recent cost for that lot/serial number.
For both :abbr:`AVCO (Average Cost)` and :abbr:`FIFO (First In First Out)` methods, the *Cost* field
on the product form is calculated using this formula:
:math:`Avg~Cost = \frac{Total~Value}{Total~Qty}`
.. _inventory/product_management/valuation-cost-example:
Purchase products
-----------------
Consider how purchasing products affect the inventory valuation, in the table below.
.. list-table::
:header-rows: 1
:stub-columns: 1
* -
- Quantity
- Lot number
- Math
- Average cost on product form
* - Empty stock
- 0.00
-
-
- $0
* - Day 1: Receive one product at $10/unit
- 1.00
- LOT 1
- :math:`\frac{10}{1}`
- $10
* - Day 2: Receive another product at $20/unit
- 1.00
- LOT 2
- :math:`\frac{10+20}{2}`
- $15
.. figure:: valuation_by_lots/lip-gloss.png
:alt: Show Cost on the product form.
As a result, the product form displays an average cost of $15 in the **Cost** field.
.. _inventory/product_management/valuation-cost-new:
Create new lot/serial number
----------------------------
Creating a new lot/serial number through an :doc:`inventory adjustment
<../../warehouses_storage/inventory_management/count_products>` assigns the same value as the cost
on the product form.
To make an inventory adjustment, and assign a lot number, go to :menuselection:`Inventory app -->
Operations --> Physical Inventory`. Then, click :guilabel:`New`.
In the new inventory adjustment line that appears, set the :guilabel:`Product`, create the
:guilabel:`Lot/Serial Number`, set the :guilabel:`Counted Quantity`, and click :icon:`fa-floppy-o`
:guilabel:`Apply`.
To view the valuation layer, go to :menuselection:`Inventory app --> Reporting --> Valuation`. The
:guilabel:`Total Value` per unit matches the *Cost* on the product form.
.. example::
Continuing the example in the table above, when the product cost is `$15`, the valuation for a
newly-created `LOT3` is also be `$15`.
.. image:: valuation_by_lots/create-new.png
:alt: Show inventory adjustment valuation.
.. _inventory/product_management/valuation-cost-existing:
Existing lot/serial number
--------------------------
When adjusting the quantity of an existing lot/serial number, the value is based on the most recent
valuation layer for that specific lot/serial number.
.. example::
Continuing the example in the table above, the value for `LOT 1` is `$10`.
So, when the quantity is updated from `1.00` to `2.00`, the additional quantity is also valued at
`$10`, reflecting the latest valuation layer for `LOT 1`.
.. figure:: valuation_by_lots/existing.png
:alt: Show valuation of LOT 1 getting updated.
The inventory adjustment (top line) is valued the same as LOT 1 (bottom line).
.. _inventory/product_management/view-valuation:
View valuation
==============
To find the average cost of a specific lot/serial number, go to :menuselection:`Inventory app -->
Products --> Lots/Serial Numbers`, and select the desired record.
Both the :guilabel:`Cost` and :guilabel:`Average Cost` fields show a unit's average cost. The
:guilabel:`Total Value` reflects the total on-hand value for that lot/serial number.
.. important::
Ensure the costing method is set to *First In First Out (FIFO)* or *Average Cost (AVCO)* to
display the cost on this page.
.. figure:: valuation_by_lots/lot.png
:alt: Show cost of the lot/serial number.
Lot form, displaying **Cost** field. The **Valuation** smart button is in the top-right.
Valuation layers of a lot/serial number can be viewed through the :ref:`valuation report
<inventory/product_management/valuation-report>`, or by clicking the lot/serial number's
:guilabel:`Valuation` smart button. These detailed, line-by-line records can help determine how each
inventory move of the specific lot/serial number affects its valuation.
.. _inventory/product_management/valuation-report:
Valuation report
----------------
Display the valuation of lots and serial numbers in the database by going to
:menuselection:`Inventory app --> Reporting --> Valuation`.
On the resulting :guilabel:`Stock Valuation` report, click the search bar, and in the
:icon:`oi-group` :guilabel:`Group By` section of the resulting drop-down menu, select
:guilabel:`Lot/Serial number`.
.. tip::
Click the :icon:`fa-plus` :guilabel:`(plus)` icon to the right of a collapsed lot number line to
:ref:`manually modify the cost <inventory/product_management/update-unit-price>`.
This is useful for adjusting individual lot prices when a purchase order or bill includes
multiple lots/serial numbers, as initial prices are identical upon reception.
.. image:: valuation_by_lots/stock-valuation.png
:alt: Show valuation report, by lots.
Valuation smart button
----------------------
To access a filtered part of the *Stock Valuation* report, specific to a lot or serial number, go to
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and select the desired item.
On the :guilabel:`Lot/Serial Numbers` page, click the :guilabel:`Valuation` smart button.
.. figure:: valuation_by_lots/lot-stock-valuation.png
:alt: All stock moves relating to `LOT 1`.
All stock moves that affect the valuation of `LOT 1`.
@@ -20,6 +20,8 @@ product, used to distinguish it from other items or products.
- :doc:`product_tracking/lots`
- :doc:`product_tracking/serial_numbers`
.. _inventory/product_management/enable-lot-serial:
Enable lots & serial numbers
============================
@@ -30,30 +30,27 @@ The following is a list of available shipping connectors in Odoo:
- Region availability
* - :doc:`FedEx <fedex>`
- All
* - :doc:`DHL Express* <dhl_credentials>`
* - :doc:`DHL Express <dhl_credentials>`
- All
* - :doc:`UPS <ups_credentials>`
- All
* - US Postal Service
- United States of America
* - :doc:`Sendcloud <sendcloud_shipping>`
- :ref:`EU** <inventory/shipping_receiving/sendcloud-eu>`
* - :doc:`Bpost <bpost>`
- Some European countries (see details below)
* - Bpost
- Belgium
* - Easypost
- North America
* - Shiprocket
- India
* - :doc:`Starshipit <starshipit_shipping>`
- Australasia
.. _inventory/shipping_receiving/sendcloud-eu:
- Australia and New Zealand
.. important::
Other services from DHL are **not** supported.
\* Other services from DHL are **not** supported.
** Sendcloud currently supports shipping **from** Austria, Belgium, France, Germany, Italy, the
Sendcloud currently supports shipping **from** Austria, Belgium, France, Germany, Italy, the
Netherlands, Spain, and the United Kingdom, and **to** any European country.
Configuration
@@ -206,4 +206,3 @@ on the product form.
replenishment/reordering_rules
replenishment/lead_times
replenishment/resupply_warehouses
replenishment/warehouse_replenishment_transfer
@@ -1,150 +0,0 @@
========================================================
Transfer products between warehouses using replenishment
========================================================
For companies that use multiple warehouses, it is often necessary to transfer items between them.
This is referred to as an *inter-warehouse transfer*. Odoo *Inventory* handles the administrative
process of inter-warehouse transfers to ensure that inventory counts remain accurate during and
after the transfer. This document will detail the method for conducting an inter-warehouse transfer
using replenishment.
Configure warehouses for inter-warehouse replenishment
======================================================
First, ensure the :guilabel:`Multi-Step Routes` setting is enabled by navigating to
:menuselection:`Inventory --> Configuration --> Settings`, and then check the box under the
:guilabel:`Warehouse` tab. This will provide additional configuration options when creating a second
warehouse that are needed for inter-warehouse replenishment.
By default, Odoo comes with a main warehouse already configured. If an additional warehouse has not
already been created, do so now from the :guilabel:`Inventory` module by selecting
:menuselection:`Configuration --> Warehouses --> Create`. Otherwise, select the warehouse that
products will be transferred to from the :guilabel:`Warehouses` page and then click :guilabel:`Edit`
to change its settings. Configure the warehouse as follows:
- :guilabel:`Warehouse`: choose a name that is not already being used for another warehouse (e.g.
`Alternative Warehouse`)
- :guilabel:`Short Name`: choose a short name by which the warehouse will be identified (e.g.
`ALT_WH`)
Click :guilabel:`Save` and the new warehouse will be created. In addition, a new :guilabel:`Resupply
From` field will appear on the warehouse's form. Click :guilabel:`Edit` and then check the box next
to the warehouse that will be used to resupply the warehouse that is currently being configured.
.. image:: warehouse_replenishment_transfer/new-warehouse-configuration.png
:align: center
:alt: A warehouse settings form configured to allow resupplying between warehouses.
.. note::
For the purposes of this demonstration, the warehouse that products are transferred from
(outgoing) will be titled "San Francisco", and the warehouse that products are transferred to
(incoming) will be titled "San Francisco 2".
Configure products for inter-warehouse replenishment
====================================================
Products must also be configured properly in order for them to be transferred between warehouses.
Navigate to :menuselection:`Inventory --> Products --> Products` and select an existing product or
:guilabel:`Create` a new one, if necessary.
Then, on the product form, go to the :guilabel:`Inventory` tab and enable the checkbox for
:guilabel:`X: Supply Product from Y`, with *X* being the warehouse receiving the transferred
products and *Y* being the warehouse that products are transferred from.
.. image:: warehouse_replenishment_transfer/product-transfer-configuration.png
:align: center
:alt: Enable the checkbox to resupply one warehouse from another.
Replenish one warehouse from another
====================================
Starting in the :menuselection:`Inventory` module, select :menuselection:`Products --> Products` and
then choose the product that will be replenished. Click the :guilabel:`Replenish` button on the top
left of the product page and fill out the pop-up form as follows:
- :guilabel:`Quantity`: the number of units that will be sent to the warehouse being replenished
- :guilabel:`Scheduled Date`: the date that the replenishment is scheduled to take place
- :guilabel:`Warehouse`: the warehouse that will be replenished
- :guilabel:`Preferred Routes`: select `X: Supply Product from Y`, with *X* being the warehouse to
be replenished and *Y* being the warehouse that the product will be transferred from
.. image:: warehouse_replenishment_transfer/product-replenishment-form.png
:align: center
:alt: The form for replenishing a product.
Click :guilabel:`Confirm` and a delivery order will be created for the outgoing warehouse along with
a receipt for the warehouse that will receive the product. Depending on the configuration settings
for the outgoing and incoming warehouses, processing delivery orders and receipts will require
between one and three steps. This document will detail how to process one-step deliveries and
receipts.
Process the delivery order
--------------------------
The first stage of a replenishment order is processing the delivery from the warehouse that the
product is being transferred from. On the :menuselection:`Inventory` dashboard, select the
:guilabel:`X to Process` button on the :guilabel:`Delivery Orders` card for the outgoing warehouse,
then the delivery order created for the replenishment. On the delivery order page, click the
:guilabel:`Check Availability` button in the top left to reserve the quantity of the product to be
transferred. Once the delivery has been dispatched, click the :guilabel:`Validate` button to
register the quantities shipped.
.. image:: warehouse_replenishment_transfer/delivery-orders-card.png
:align: center
:alt: The delivery orders card for the outgoing warehouse.
Process the receipt
-------------------
Once the goods arrive at the incoming warehouse, the receipt created for that warehouse must be
processed as well. Return to the :menuselection:`Inventory` dashboard and select the :guilabel:`X to
Process` button on the :guilabel:`Receipts` card for the incoming warehouse, then the receipt
created for the replenishment. On the receipt page, click the :guilabel:`Validate` button in the top
left of the page to register the quantities received.
.. image:: warehouse_replenishment_transfer/receipts-card.png
:align: center
:alt: The delivery orders card for the outgoing warehouse.
After processing the receipt, the products transferred will now appear in the inventory of the
incoming warehouse. The stock numbers for both warehouses can be viewed by returning to the product
page and selecting the :guilabel:`X Units On Hand` button at the top of the screen.
Automate inter-warehouse replenishment
======================================
Using reordering rules, it is possible to automate the process of replenishing one warehouse from
another.
To get started, navigate to :menuselection:`Inventory --> Products --> Products`, and then
choose the product that will be replenished. From the product page, select the :guilabel:`Reordering
Rules` smart button at the top of the form, and then on the next page, click :guilabel:`Create` to
configure the form as follows:
- :guilabel:`Location`: the location that the reordering rule will replenish when triggered, in this
case, the incoming warehouse
- :guilabel:`Min Quantity`: when the quantity on hand at the incoming warehouse falls below this
number, the reordering rule will be triggered
- :guilabel:`Max Quantity`: when the reordering rule is triggered, the product will be replenished
at the incoming warehouse up to this quantity
- :guilabel:`Multiple Quantity`: specify if the product should be replenished in batches of a
certain quantity; for example, a product could be replenished in batches of 20
- :guilabel:`UoM`: the unit of measure used for reordering the product; this value can simply be
`Units`, or a specific unit of measurement for weight, length, etc.
.. image:: warehouse_replenishment_transfer/reordering-rule-configuration.png
:align: center
:alt: A fully configured reordering rule.
Finish by clicking :guilabel:`Save` and the reordering rule will be created. Now, when the scheduler
runs automatically each day, a transfer will be created for each reordering rule that has been
triggered.
.. tip::
To manually trigger reordering rules, start from the :menuselection:`Inventory` module and select
:menuselection:`Operation --> Run Scheduler`, then click the green :guilabel:`Run Scheduler`
button in the pop-up that appears.
After the scheduler runs, a delivery order and receipt will be created for the outgoing and incoming
warehouses, respectively. Both the delivery order and receipt should be processed using the same
method as detailed above.
@@ -33,12 +33,17 @@ name. Then, go to the :guilabel:`Inventory` tab, and enable the :guilabel:`Buy`
:align: center
:alt: Required configuration for purchasable products.
.. _purchase/manage_deals/vendor-pricelist:
Vendor pricelist
----------------
In the :guilabel:`Purchase` tab of the product form, input the vendor and their price, to have this
information auto-populate on an |RFQ| each time the product is listed.
.. seealso::
:doc:`../products/pricelist`
Default columns include :guilabel:`Quantity`, :guilabel:`Price`, and :guilabel:`Delivery Lead Time`,
but other columns like, :guilabel:`Product Variant` or :guilabel:`Discounts`, can also be enabled.
@@ -7,6 +7,7 @@ Products
.. toctree::
:titlesonly:
products/pricelist
products/reordering
products/temporary_reordering
products/uom
@@ -0,0 +1,256 @@
=======================
Import vendor pricelist
=======================
Set vendor prices to auto-populate requests for quotations (RFQs) or purchase orders (POs) with the
unit price, once the product is added, which reduces errors and saves time.
In Odoo, vendor pricelists can be :ref:`added individually <purchase/products/pricelist>` on the
product form, or :ref:`imported in bulk <purchase/products/import-pricelist>`, via an XLSX or CSV
file.
.. important::
Please review this :doc:`import guide <../../../essentials/export_import_data>` before uploading
vendor pricelists.
.. _purchase/products/pricelist:
On product form
===============
To manually add the vendor price on the product form, go to the :menuselection:`Purchase app -->
Products --> Products`, and click the desired product.
.. note::
Product forms are accessible from multiple apps, such as **Sales**, **Inventory**, and
**Manufacturing**.
In the :guilabel:`Purchase` tab of the product form, input the vendor and their price, to have this
information auto-populate on a request for quotation each time the product is listed.
.. seealso::
:ref:`Vendor pricelist on product form <purchase/manage_deals/vendor-pricelist>`
.. image:: pricelist/product-form-pricelist.png
:alt: Vendor pricelist on product form.
.. _purchase/products/import-pricelist:
Import vendor pricelist
=======================
To import vendor pricelists, ensure the XLSX or CSV file is accurately completed. The best way to
obtain a correctly formatted template, including product names, references, and vendor details, is
to first :ref:`export a pricelist <purchase/products/export-price>` from the database.
Modify the exported file, as needed, then import it back into the Odoo database.
.. _purchase/products/export-price:
Export pricelist
----------------
To export a pricelist, go to :menuselection:`Purchase app --> Configuration --> Vendor Pricelists`.
On the page, tick the checkbox(es) for the desired vendor pricelists.
Then, click the :icon:`fa-cog` :guilabel:`Actions` button that appears, and choose :icon:`fa-upload`
:guilabel:`Export` from the drop-down menu.
.. image:: pricelist/export.png
:alt: Show selected exported fields, with the Export button visible.
In the resulting pop-up window, fields listed under the :guilabel:`Fields to export` section are
included in the exported file. To add more fields, find the desired field in the
:guilabel:`Available fields` section, and click the :icon:`fa-plus` :guilabel:`(plus)` icon to the
right of the field.
.. note::
To update to existing records, tick the :guilabel:`I want to update data (import-compatible
export)` checkbox, and refer to the section on the :ref:`External ID
<purchase/products/external-id>` field.
For details on commonly-used fields for importing vendor pricelists, see the :ref:`Common fields
<purchase/products/common-fields>` section.
Select the desired :guilabel:`Export Format`: :guilabel:`XLSX` or :guilabel:`CSV`.
To save the selected fields as a template, click the :guilabel:`Template` field, and select
:guilabel:`New template` from the drop-down menu. Type the name of the new template, and click the
:icon:`fa-floppy-o` :guilabel:`(save)` icon. After that, the template is a selectable option when
clicking the :guilabel:`Template` field.
Finally, click :guilabel:`Export`.
.. note::
With :ref:`developer mode <developer-mode>` turned on, the column names of the exported file
display the *field name* with the *technical name* in parenthesis.
.. example::
.. figure:: pricelist/export-data.png
:alt: Exporting vendor pricelist.
Export vendor pricelist in XLSX format. It includes :guilabel:`Product Template` and other
fields in the :guilabel:`Fields to export` section.
.. _purchase/products/external-id:
External ID
~~~~~~~~~~~
*External ID* is a unique identifier used to update existing vendor pricelists. Without it, imported
records create new entries, instead of updating existing ones. Including this field in the XLSX or
CSV, indicates the line replaces an existing vendor pricelist in the Odoo database.
.. example::
.. figure:: pricelist/duplicate-values.png
:alt: Show 'Ready Mat' appear twice.
`Ready Mat` appears twice because the external ID was omitted during the price update from
`$790` to `$780`.
To look-up the :guilabel:`External ID` for a vendor pricelist, tick the :guilabel:`I want to update
data (import-compatible export)` checkbox at the top of the :guilabel:`Export Data` pop-up window.
.. note::
Selecting :guilabel:`External ID` from the :guilabel:`Available fields` section with the
:guilabel:`I want to update data (import-compatible export)` checkbox ticked results in an export
file with two columns containing the external ID.
.. _purchase/products/common-fields:
Common fields
~~~~~~~~~~~~~
Below is a list of commonly-used fields when importing vendor pricelists:
.. list-table:: Field name definitions
:header-rows: 1
* - Field name
- Used for
- Field in Odoo database
- Technical name of field
* - Vendor
- The only required field for creating a vendor pricelist record. This field specifies the
vendor associated with the product.
- :guilabel:`Vendor` field in the :ref:`vendor pricelist of the product form
<purchase/products/pricelist>`.
- `partner_id`
* - Product Template
- The Odoo product the vendor pricelist entry is related to.
- :guilabel:`Product` field in the vendor pricelist.
- `product_tmpl_id`
* - Quantity
- The minimum quantity required to receive the product at the specified price.
- :guilabel:`Quantity` field in the vendor pricelist. (If not visible, enable it by clicking
the :icon:`oi-settings-adjust` :guilabel:`(settings)` icon, and tick the :guilabel:`Quantity`
checkbox)
- `min_qty`
* - Unit Price
- The purchase price for the product from the vendor.
- :guilabel:`Price` field in the vendor pricelist.
- `price`
* - Delivery Lead Time
- :ref:`Number of days <inventory/shipping_receiving/purchase-lt>` before receiving the
product after confirming a purchase order.
- :guilabel:`Delivery Lead Time` field on the vendor pricelist.
- `delay`
* - Sequence
- Defines the order of vendors in the pricelist when multiple vendors are available. For
example, if `Azure Interior` is listed first and Wood Corner second, their sequences would be
`1` and `2`.
- N/A
- `sequence`
* - Company
- Name of company the product belongs to.
- :guilabel:`Company` field in the vendor pricelist.
- `company_id`
* - :ref:`External ID <purchase/products/external-id>`
- Unique ID of a record used to update existing vendor pricelists.
- N/A
- `id`
Import records
--------------
With a template downloaded, fill out the XLSX or CSV file with the necessary information. After
inputting everything, import the file back into the Odoo database, by going to
:menuselection:`Purchase app --> Configuration --> Vendor Pricelists`.
On the page, click the :icon:`fa-cog` :guilabel:`(gear)` icon in the top-left corner. In the
drop-down menu that appears, click :guilabel:`Import records`.
Then, click :guilabel:`Upload File` in the upper-left corner, and after selecting the XLSX or CSV
file, confirm the correct fields, and click :guilabel:`Import`.
.. seealso::
- :doc:`../../../essentials/export_import_data`
- :ref:`Common fields <purchase/products/common-fields>`
.. image:: pricelist/supplier-pricelist-example.png
:alt: Upload file screen.
Formatting import file
~~~~~~~~~~~~~~~~~~~~~~
To understand how to format import files for vendor pricelists, consider the following example.
- `Storage Box` (:guilabel:`Reference`: `E-COM08`) is sold by `Wood Corner` for `$10`.
- `Large Desk` (:guilabel:`Reference`: `E-COM09`) has no records in the vendor pricelist.
An import file is created to do the following:
- Update the price for `Wood Corner` from `$10` to `$13`.
- Add pricelist for `Storage Box`: the vendor, `Ready Mat` intends to sell the product for `$14`.
- Add pricelist for `Large Desk`: vendor is `Wood Corner`, price is `$1299`.
- Add pricelist for `Large Desk`: vendor is `Azure Interior`, price is `$1399`.
.. list-table:: Vendor pricelist data
:header-rows: 1
* - id
- company_id
- delay
- price
- product_tmpl_id
- sequence
- partner_id
* - product.product_supplierinfo_3
- My Company (San Francisco)
- 3
- 13.00
- [E-COM08] Storage Box
- 4
- Wood Corner
* -
- My Company (San Francisco)
- 3
- 14.00
- [E-COM08] Storage Box
- 5
- Ready Mat
* -
- My Company (San Francisco)
- 2
- 1299.00
- [E-COM09] Large Desk
- 6
- Wood Corner
* -
- My Company (San Francisco)
- 4
- 1399.00
- [E-COM09] Large Desk
- 7
- Azure Interior
.. note::
The *technical field name* was used to create this information.
.. note::
Download the sample files for reference:
- :download:`Sample XLSX import file <pricelist/pricelist-example.xlsx>`
- :download:`Sample CSV import file <pricelist/pricelist-example.csv>`
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,5 @@
"id","company_id","delay","price","product_tmpl_id","sequence","partner_id"
"product.product_supplierinfo_3","My Company (San Francisco)","3","13.0","[E-COM08] Storage Box","4","Wood Corner"
"","My Company (San Francisco)","3","14.4","[E-COM08] Storage Box","5","Ready Mat"
"","My Company (San Francisco)","2","1299.0","[E-COM09] Large Desk","6","Wood Corner"
"","My Company (San Francisco)","4","1399.0","[E-COM09] Large Desk","7","Azure Interior"
1 id company_id delay price product_tmpl_id sequence partner_id
2 product.product_supplierinfo_3 My Company (San Francisco) 3 13.0 [E-COM08] Storage Box 4 Wood Corner
3 My Company (San Francisco) 3 14.4 [E-COM08] Storage Box 5 Ready Mat
4 My Company (San Francisco) 2 1299.0 [E-COM09] Large Desk 6 Wood Corner
5 My Company (San Francisco) 4 1399.0 [E-COM09] Large Desk 7 Azure Interior
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

+276 -1
View File
@@ -1,9 +1,284 @@
:nosearch:
:show-content:
========
Calendar
========
Odoo **Calendar** is a scheduling app that allows users to integrate a company's business flow into
a single management platform. By integrating with the other apps in Odoo's ecosystem, **Calendar**
allows users to schedule and organize meetings, schedule events, plan employee appraisals,
coordinate projects, and more all from the same platform.
Upon opening the :menuselection:`Calendar app`, users have an overview of their current meetings.
The selected view option appears as a :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, or
:guilabel:`Year` drop-down menu. Under the view options drop-down menu, users can also enable or
disable :guilabel:`Show weekends`.
.. image:: calendar/calendar-overview.png
:alt: Overview of Calendar app.
.. tip::
Depending on the selected view option, users can click the :icon:`oi-arrow-left`
:icon:`oi-arrow-right` :guilabel:`(left or right arrow)` buttons to switch between days, weeks,
etc., and switch back to the current day with the :guilabel:`Today` button.
Sync third-party calendars
--------------------------
Users can sync Odoo with existing :doc:`Outlook <calendar/outlook>` and/or
:doc:`Google <calendar/google>` calendars, by heading to
:menuselection:`Calendar app --> Configuration --> Settings`. From here, enter
:guilabel:`Client ID` and :guilabel:`Client Secret`. There is also an option to pause
synchronization by ticking the checkbox, or automating synchronization by keeping it blank.
Once the desired configurations are complete, be sure to click :guilabel:`Save` before moving on.
Events created in synced calendars automatically appear across the integrated platforms.
.. seealso::
- :doc:`Synchronize Outlook calendar with Odoo <calendar/outlook>`
- :doc:`Synchronize Google calendar with Odoo <calendar/google>`
Create activities from chatter
------------------------------
Instantly create new meetings anywhere in Odoo through an individual record's chatter, like
in a **CRM** opportunity card or task in the **Projects** app.
From the chatter, click on the :guilabel:`Activities` button. In the :guilabel:`Schedule Activity`
pop-up window, select the desired :guilabel:`Activity Type`, which populates a set of buttons,
depending on the activity.
Activities that involve other schedules, like :guilabel:`Meeting` or :guilabel:`Call for Demo`, link
to the **Calendar** app. Select one of these activities to link to the **Calendar** app, then hit
:guilabel:`Open Calendar` to navigate back to the app. Alternatively, it is also possible to
:guilabel:`Schedule & Mark as Done` to close out the activity, or select :guilabel:`Done & Schedule
Next` to keep the :guilabel:`Schedule Activity` window open to create another.
.. seealso::
:doc:`Schedule activities in Odoo <../essentials/activities>`
Plan an event
-------------
To put an event on the calendar, open the :menuselection:`Calendar app`, and click into the target
date. On the :guilabel:`New Event` pop-up window that appears, start by adding the event title.
.. image:: calendar/calendar-schedule-event.png
:alt: Schedule an event window on Calendar app.
The target date auto-populates in the :guilabel:`Start` field. This can be changed by clicking
into the date section, and selecting a date from the calendar. For multi-day events, select the end
date in the second field, then click :guilabel:`Apply`.
Tick the :guilabel:`All Day` checkbox if there is no specific start or end time.
For events with specific start and stop times, ensure the :guilabel:`All Day` checkbox is unticked
to enable time selection. With the :guilabel:`All Day` checkbox unticked, time selections appear in
the :guilabel:`Start` field.
The signed-in user auto-populates as the first attendee. Additional :guilabel:`Attendees` can be
added or created from here, as well.
For virtual meetings, copy and paste the URL into the space provided in the
:guilabel:`Videocall URL` field. Or, click :icon:`fa-plus` :guilabel:`Odoo meeting` to create a
link.
Next, either create the event by clicking :guilabel:`Save & Close`, or select :guilabel:`More
Options` to further configure the event.
.. tip::
Once the event is created, users can click into the virtual meeting directly from the calendar
event to access more configuration options.
.. image:: calendar/calendar-new-meeting.png
:alt: The full event form for a new calendar event.
The :guilabel:`Description` field allows users to add additional information and details about the
meeting.
Click :guilabel:`More Options` to navigate to the meeting form, which provides additional
configurations for the event:
- :guilabel:`Duration`: Define the length of the meeting in :guilabel:`hours`, or toggle the
:guilabel:`All Day` switch.
- :guilabel:`Recurrent`: Tick the checkbox to create a recurring meeting. Once selected, this
opens new fields:
- :guilabel:`Timezone`: Select the timezone for which this meeting time is specified.
- :guilabel:`Repeat`: Select the recurring period of this meeting. Depending on what type of
recurrence has been selected, a subsequent field appears, in which users can indicate when the
meeting should recur. For example, if :guilabel:`Monthly` is selected as the :guilabel:`Repeat`
option, a new field appears, in which the user decides on what :guilabel:`Day of Month` the
meeting should recur.
- :guilabel:`Until`: Select the limited :guilabel:`Number of repetitions` this meeting should
recur, the :guilabel:`End date` of when the recurrences should stop, or if the meetings should
recur :guilabel:`Forever`.
- :guilabel:`Tags`: Add tags to the event, like `Customer Meeting` or `Internal Meeting`. These can
be searched and filtered in the **Calendar** app when organizing multiple events.
- :guilabel:`Appointment`: Link existing or new appointments. These can be configured through the
:ref:`Share Availabilities <calendar/share-availabilities>` button from the main **Calendar**
dashboard.
- :guilabel:`Privacy`: Toggle between visibility options to control who can view the event.
- :guilabel:`Organizer`: This is defaulted to the current Odoo user. Select a new one from
existing users, or create and edit a new user.
- :guilabel:`Description`: Add additional information or details about the meeting.
- :guilabel:`Reminders`: Select notification options to send to attendees. Choose a default
notification, or configure new reminders.
Coordinate with teams' availability
-----------------------------------
When scheduling an event for multiple users, on the **Calendar** app dashboard, tick the checkbox
next to :guilabel:`Attendees` to view team members' availability. Tick (or untick) the checkbox next
to listed users to show (or hide) individual calendars.
.. image:: calendar/calendar-attendees.png
:alt: View of Attendees section on Calendar app.
.. _calendar/share-availabilities:
Share Availabilities
--------------------
On the **Calendar** app main dashboard, click the :guilabel:`Share Availabilities` button at the top
of the page. Next, click and drag to select the available times and dates on the calendar to add
them as options in the invitation.
.. tip::
To remove a selected time range, hover over the availability to click the :icon:`fa-trash`
:guilabel:`(trash)` icon.
.. note::
Within the :guilabel:`Share Availabilities` feature, selecting times is only possible on the
*Day* calendar views.
Once availability has been selected, click the :icon:`fa-external-link` :guilabel:`Open` button to
navigate to the associated appointment.
.. image:: calendar/calendar-meeting-share-availability.png
:alt: Share availability window on Calendar app.
Several configuration options are available on the appointment form:
In the :guilabel:`Scheduling` field, set a minimum hour window to ensure appointments are confirmed
a specified amount of time in advance. For example, set `01:00` to require attendees to confirm at
least one hour before their appointment time.
In the :guilabel:`Allow Cancelling` field, set a maximum hour window before the appointment that
attendees are able to cancel.
The :guilabel:`Availability on` field enables attendees to book :guilabel:`Users` or
:guilabel:`Resources`, such as meeting rooms or tables. After selecting :guilabel:`Users` or
:guilabel:`Resources`, type in the desired user or resource in the space below.
The :guilabel:`Front-End Display` field is used to choose :guilabel:`No Picture` or
:guilabel:`Show Pictures` related to the selected user or resource on the appointment page.
If :guilabel:`Resources` has been selected in the :guilabel:`Availability on` field, users have an
option to :guilabel:`Manage Capacities`.
Tick the checkbox to limit the maximum amount of people that can use the resource at the same time.
The :guilabel:`Assignment Method` field enables the order in which attendees book their time and
user/resource:
- :guilabel:`Pick User/Resource then Time`
- :guilabel:`Select Time then User/Resource`
If :guilabel:`Resources` has been selected in the :guilabel:`Availability On` field, a third option
is available, :guilabel:`Select Time then auto-assign`.
Optionally, configure the following tabs:
- :ref:`calendar/appointment-schedule`
- :ref:`calendar/appointment-options`
- :ref:`calendar/appointment-questions`
- :ref:`calendar/appointment-messages`
Click the :guilabel:`Preview` button to see how the appointment link looks for attendees.
Once the configurations are finished, click the :guilabel:`Share` button to generate a link to send
directly, or click :guilabel:`Publish` to publish the appointment selection on the connected Odoo
website.
.. _calendar/appointment-schedule:
Schedule tab
~~~~~~~~~~~~
In the :guilabel:`Schedule` tab of the appointment form, time slots can be managed. The target date
and time populate as the first time slots.
To add a new time slot, hit :guilabel:`Add a line`. Click into the new blank space under the
:guilabel:`From` field, then select and enter the new target start date and time, respectively.
Repeat under the new blank space under :guilabel:`To` to select and enter the new target end date
and time.
.. _calendar/appointment-options:
Options tab
~~~~~~~~~~~
The :guilabel:`Options` tab provides additional configurations:
- :guilabel:`Website`: Specify which website this meeting invitation will be published on.
- :guilabel:`Timezone`: This defaults to the company's timezone selected in the **Settings** app.
To change the timezone, select the desired option from the drop-down menu.
- :guilabel:`Location`: Select or create new locations from the drop-down menu. If this field is
left empty, the meeting is considered to be taking place online.
- :guilabel:`Videoconference Link`: Select from :guilabel:`Odoo Discuss` or :guilabel:`Google Meet`
to include a video conference link in the meeting invitation, or leave it blank to prevent
generating a meeting URL.
- :guilabel:`Manual Confirmation`: Only shown if :guilabel:`Resources` has been selected in the
:guilabel:`Availability On` field. Tick the checkbox and enter a maximum percentage of the
selected resource(s)' total capacity to create a manual confirmation requirement to finalize the
meeting.
- :guilabel:`Up-front Payment`: Tick the checkbox to require users to pay before confirming their
booking. Once this is ticked, a link appears to :icon:`oi-arrow-right` :guilabel:`Configure
Payment Providers`, which enables online payments.
- :guilabel:`Limit to Work Hours`: If :guilabel:`Users` has been selected in the
:guilabel:`Availability On` field, tick the checkbox to limit meeting time slots to the selected
:doc:`users' working hours <../hr/employees/new_employee>`.
- :guilabel:`Create Opportunities`: When this is selected, each scheduled appointment creates
a new **CRM** opportunity.
- :guilabel:`Reminders`: Add or delete notification reminders in this field. Select the blank space
for additional options.
- :guilabel:`Confirmation Email`: Tick the checkbox to automatically send a confirmation email to
attendees once the meeting is confirmed. Select from the email templates or click
:guilabel:`Search More...`, then :guilabel:`New` to create a custom template.
- :guilabel:`Cancelation Email`: Tick the checkbox to automatically send a cancelation email to
attendees if the meeting is canceled. Select from the email templates or click
:guilabel:`Search More...`, then :guilabel:`New` to create a custom template.
- :guilabel:`CC to`: Add contacts to be notified of meeting updates in this field, regardless if
they attend the meeting.
- :guilabel:`Allow Guests`: Tick the checkbox to allow attendees to invite guests.
.. _calendar/appointment-questions:
Questions tab
~~~~~~~~~~~~~
In the :guilabel:`Questions` tab, add questions for the attendee to answer when confirming their
meeting. Click :guilabel:`Add a line` to configure a :guilabel:`Question`. Then select a
:guilabel:`Question Type`, optionally add a :guilabel:`Placeholder` answer, and choose whether it is
a :guilabel:`Required Answer`.
To learn how to create more comprehensive questionnaires, head to the **Survey** app
documentation on :doc:`creating and configuring data-capturing questions
<../marketing/surveys/questions>`.
.. _calendar/appointment-messages:
Messages tab
~~~~~~~~~~~~
In the :guilabel:`Introduction Message` field of the :guilabel:`Messages` tab, add additional
meeting information that appears on the invitation.
Information added to the :guilabel:`Extra Message on Confirmation` field appears once the meeting is
confirmed.
.. toctree::
:titlesonly:
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@@ -28,7 +28,7 @@ within the Odoo *Sales* application.
other similar records in Odoo.
.. seealso::
:doc:`/applications/websites/ecommerce/products/variants`
:ref:`ecommerce/products/product-variants`
Configuration
=============
@@ -89,9 +89,6 @@ The button can be found next to the :guilabel:`Add to Cart` button on the produc
:align: center
:alt: Buy now (express checkout) button
.. seealso::
:ref:`Product page design: additional functions <ecommerce-functions>`
.. _checkout-sign:
Guest and signed-in checkout
@@ -4,275 +4,404 @@
Products
========
Odoo allows you to create, import, and manage your products' pages all within the **Website** app.
**Odoo eCommerce** allows you to :ref:`add products <ecommerce/products/add-products>` and manage
your :ref:`product pages <ecommerce/products/product-page>` directly from the Website app. It also
allows you to add :ref:`product variants <ecommerce/products/product-variants>` and
:ref:`digital files <ecommerce/products/digital-files>`,
:ref:`translating <ecommerce/products/translation>` the product page content,
:ref:`managing stock <ecommerce/products/stock-management>`, and enabling
:ref:`product comparisons <ecommerce/products/product-comparison>`.
Add products to the catalog
===========================
.. _ecommerce/products/add-products:
To add a product to your catalog, you can either do it in:
Add products
============
- From anywhere on your website, click :menuselection:`+ New --> Product`. Enter the name of your
product, and :guilabel:`Save`;
- :menuselection:`Website --> eCommerce --> Products --> Create`;
- or by :ref:`importing data <import-data>` using XLSX or CSV files. To do so, go to
:menuselection:`Website --> eCommerce --> Products`. Click on :guilabel:`Favorites` and
:ref:`Import records <import-data>`.
.. _ecommerce/products/create-products:
.. seealso::
- :doc:`products/catalog`
- :doc:`../../sales/sales/products_prices/products/import`
- :doc:`Product-related documentation <../../sales/sales>`
Create products
---------------
Publish
-------
Upon creation, products are defaulted as :guilabel:`Unpublished` in your eCommerce catalog. To make
a product visible to visitors, go to :menuselection:`Website --> Site --> Homepage`, click on your
**main shop** page, select the product, and enable it as :guilabel:`Published` in the top-right
corner.
To create a product from the frontend, click :guilabel:`+ New` in the top-right corner, then
:guilabel:`Product`. Enter the :guilabel:`Product Name`, :guilabel:`Sales Price`, the default
:guilabel:`Customer Taxes` for local transactions, and :guilabel:`Save`. You can then update the
product's details, add an image, and :ref:`customize <ecommerce/products/customization>` the product
page. When you :guilabel:`Save`, the product page is automatically published.
.. tip::
To publish **large batches** of products, the most convenient fashion is to go to
:menuselection:`Website --> eCommerce --> Products`. Here, remove the :guilabel:`Published`
filter by clicking on the :guilabel:`x` right to it, and then select the :guilabel:`List` view.
Next, click the :guilabel:`dropdown toggle` button (located right below the :guilabel:`List`
button) and enable :guilabel:`Is published`. Click the :guilabel:`Is Published` column to
re-order it either by **published** or **unpublished** products. Finally, select the products to
publish by ticking their box on the extreme-right, and tick any box of the selected products in
the :guilabel:`Is Published` column to publish them all.
- You can also create a product from the backend by going to
:menuselection:`Website --> eCommerce --> Products` and clicking :guilabel:`New`.
- Products created from the frontend are automatically :ref:`published <website/un-publish-page>`,
while products created from the backend are not. To publish a product, click the
:guilabel:`Go to Website` smart button to access the product page, then toggle the switch from
:guilabel:`Unpublished` to :guilabel:`Published`.
.. image:: products/products-buttons.png
:align: center
:alt: List and dropdown toggle buttons
.. _ecommerce/products/import-products:
Product page design
===================
Import products
---------------
Once a product is created, you can access its **product page** through the :guilabel:`Shop` page by
clicking on the product, and then clicking :guilabel:`Edit`. Here, you can change the page's
**additional functions**, **layout**, **add content**, etc. Note that **enabled functions** apply to
*all* product pages.
To :ref:`import product data <import-data>` using XLSX or CSV files, go to
:menuselection:`Website --> eCommerce --> Products`, click the :icon:`fa-cog` (:guilabel:`gear`)
icon, then :ref:`Import records <import-data>`.
.. _ecommerce-functions:
.. tip::
To publish **large batches** of products, follow these steps:
Additional functions
--------------------
#. Go to :menuselection:`Website --> eCommerce --> Products`.
#. Remove the :guilabel:`Published` filter and switch to the :guilabel:`List` view.
#. Click the :icon:`fa-sliders` (:guilabel:`dropdown toggle`) icon and enable
:guilabel:`Is published`.
#. Click the :guilabel:`Is Published` column to re-order it by **published** or **unpublished**
products.
#. Select the products to publish by ticking their box.
#. In the :guilabel:`Is Published` column, tick the box for any of the selected products, then
:guilabel:`Confirm` to publish them.
In the **website builder** window, click :guilabel:`Customize` to enable additional functions:
.. _ecommerce/products/shop-page:
- :guilabel:`Customers: Rating` allows customers to submit :ref:`product reviews <product-reviews>`;
:guilabel:`Share` adds social media and email icon buttons to share the product via those
channels;
- :guilabel:`Select Quantity`: if enabled, allows to choose the quantity added to cart;
- :guilabel:`Tax Indication`: notifies if the price is **VAT included** or **excluded**;
- :guilabel:`Variants`: shows all possible
:doc:`variants </applications/sales/sales/products_prices/products/variants>` of the product as a
:guilabel:`Products List`; :guilabel:`Options` as selectable options to compose the variant
yourself;
- :guilabel:`Cart`: :guilabel:`Buy Now` adds a :ref:`checkout button <cart/buy-now>` taking the
customer directly to the checkout page; :guilabel:`Wishlist` allows to add the product to a
wishlist;
- :guilabel:`Specification`: allows you to select where the :guilabel:`Specifications` section is
displayed. This option displays a list of all variant attributes and values of a product, but only
works for products *with* variants.
Shop page
=========
.. note::
- To allow **wishlists**, the option must be enabled in :menuselection:`Website --> Configuration
--> Settings --> Shop - Products`;
- To access the :guilabel:`Variants` options, the :doc:`Product Variants
<../../sales/sales/products_prices/products/variants>` option must first be enabled under
:menuselection:`Website --> Configuration --> Settings --> Shop - Products`.
To customize the layout of the main :guilabel:`Shop` page or modify its content, click
:guilabel:`Edit`. Go to the :guilabel:`Blocks` tab to add
:doc:`building blocks <../../websites/website/web_design/building_blocks>` or to the
:guilabel:`Customize` tab to change the page layout or add features:
Layout
------
- :guilabel:`Layout`: Select :guilabel:`Grid` or :guilabel:`List`.
Within the same :guilabel:`Customize` tab as the :ref:`functions <ecommerce-functions>`, the layout
configuration can be changed according to your needs.
- :guilabel:`Size`: Set the number of products displayed per page and line.
- :guilabel:`Style`: Select :guilabel:`Default`, :guilabel:`Cards`, :guilabel:`Thumbnails`, or
:guilabel:`Grid`.
- :guilabel:`Image Size`: Choose the aspect ratio for the product images:
:guilabel:`Landscape (4/3)`, :guilabel:`Default (1/1)`, :guilabel:`Portrait (4/5)`, or
:guilabel:`Vertical (2/3)`. You can also adjust the display by changing the :guilabel:`Fill`
options to best fit your design preferences.
- :guilabel:`Images Width`: changes the width of the product images displayed on the page;
- :guilabel:`Layout`: the :guilabel:`Carousel` layout displays a large, main image with smaller ones
underneath; whereas the :guilabel:`Grid` displays four images in a square layout (see pictures
below);
- :guilabel:`Image Zoom`: choose which image zooms are available, either
:guilabel:`Pop-up on Click`, when hovering over the image (:guilabel:`Magnifier on hover`), on
:guilabel:`Both`, or :guilabel:`None`;
- :guilabel:`Thumbnails`: decide how the thumbnails should be aligned, either **vertically**
(:guilabel:`Left`), or **horizontally** (:guilabel:`Right`);
- :guilabel:`Main Image`: click :guilabel:`Replace` to change the product's main image;
- :guilabel:`Extra Images`: click :guilabel:`Add` or :guilabel:`Remove all` to add or remove extra
product images. You can also add images and videos via **URL**.
- :guilabel:`Search Bar`: Toggle the switch to display a search bar at the top of the products
page.
.. note::
Images must either be in PNG or JPG format. To trigger the zoom, the image has to be bigger than
1024x1024.
- :guilabel:`Prod. Desc.`: Toggle the switch to display the product description below the product's
name.
.. image:: products/products-layout.png
:align: center
:alt: Product images layout
- :guilabel:`Categories`: display product categories on the :guilabel:`Left`, on the
:guilabel:`Top`, or both. If :guilabel:`Left` is selected, you can enable
:guilabel:`Collapse Categories` to make the category menu collapsible.
Add content
-----------
- :guilabel:`Datepicker`: Toggle the switch to display a date range calendar to check the
availability of rental products over a specific period. The
:doc:`Rental app <../../sales/rental>` must be installed to use this feature.
You can use **building blocks** (:menuselection:`Edit --> Blocks`) to add content to your product
page. These blocks can be used to add extra text and picture galleries, features such as
:guilabel:`Call to Actions`, :guilabel:`Comparisons`, etc.
- :guilabel:`Attributes`: Show product attributes on the :guilabel:`Left` and/or display a
:icon:`fa-sliders` (:guilabel:`dropdown toggle`) icon at the :guilabel:`Top` allowing customers to
filter products based on their attributes.
Depending on *where* you drop the **building block**, it may be available either on the product page
*only*, or on the *whole* website. **Building blocks** dropped at the very top or very bottom of the
page are available on the *whole* website, where **building blocks** put underneath the product
description are only displayed on the *product* page *(see image below)*.
- :guilabel:`Price Filter`: Toggle the switch to display a :guilabel:`Price Range` bar, which
allows customers to filter products according to a specific price range by dragging adjustable
handles.
- :guilabel:`Product Tags`: Toggle the switch to display the :guilabel:`Product Template Tags` on
the product page and allow customers to filter products using those tags by going to the
:guilabel:`Tags` section in the left column.
.. image:: products/products-blocks.png
:align: center
:alt: Building blocks on product page
- :guilabel:`Top Bar`: Select :guilabel:`Sort By` to display a dropdown list in the top bar for
sorting products and/or :guilabel:`Layout` to allow customers to switch to the grid or list view
using the related icons.
Download link
- :guilabel:`Default Sort`: Choose how products are sorted by default: :guilabel:`Featured`,
:guilabel:`Newest Arrivals`, :guilabel:`Name (A-Z)`, :guilabel:`Price - Low to High`, or
:guilabel:`Price - High to Low`.
- :guilabel:`Buttons`:
- Select the :icon:`fa-shopping-cart` (:guilabel:`Shopping cart`) option to display an
:icon:`fa-shopping-cart` (:guilabel:`Add to cart`) icon on each product's image, which takes the
customer to the checkout page.
- Select the :icon:`fa-heart-o` (:guilabel:`Wishlist`) option to display an
:icon:`fa-shopping-cart` (:guilabel:`Add to wishlist`) icon on each product's image allowing
logged-in customers to save products to a wishlist.
- Select the :icon:`fa-exchange` (:guilabel:`Compare`) option to display the :icon:`fa-exchange`
(:guilabel:`Compare`) icon on each product's image allowing customers to :ref:`compare products
<ecommerce/products/product-comparison>` based on their attributes.
.. tip::
To feature a product, go to the :ref:`product form <ecommerce/products/product-form>` and click
the :icon:`fa-star-o` (:guilabel:`Favorite`) icon next to the product's name.
.. _ecommerce/products/product-page:
Product page
============
To access a product's page, go to the :guilabel:`Shop` and click on the product. Click
:guilabel:`Edit` to :ref:`customize <ecommerce/products/customization>` the page or
:ref:`edit its images <ecommerce/products/image-customization>`.
.. _ecommerce/products/product-form:
To access the backend **product form**, click the :icon:`fa-cog` :guilabel:`Product` button in the
top-right corner of the product page. Alternatively, navigate to :menuselection:`Website -->
eCommerce --> Products` and select the product. You can configure the product page from the form
by adding :ref:`variants <ecommerce/products/product-variants>`, :ref:`digital documents
<ecommerce/products/digital-files>`, or :ref:`translating <ecommerce/products/translation>` content.
.. tip::
Click the :guilabel:`Go to Website` smart button to return to the frontend product's page.
.. _ecommerce/products/customization:
Customization
-------------
To add a downloadable file (ex.: user's manual, notice of use, etc.) on the product page, drag and
drop a :guilabel:`Text` block from :menuselection:`Edit --> Blocks` on the page. Once placed, click
within the :guilabel:`Text` block, and under the :guilabel:`Inline Text` section, select either
:menuselection:`Insert Media --> Documents` or :guilabel:`Insert or edit link` and enter the URL in
the :guilabel:`Your URL` field.
To customize a product page, click :guilabel:`Edit`. Go to the :guilabel:`Blocks` tab to add
:doc:`building blocks <../../websites/website/web_design/building_blocks>`.
.. tip::
- When dragging and dropping a building block on the product page, placing it above or below the
top or bottom blue lines makes it visible on all product pages.
- You can edit any text on your website simply by clicking on it while in :guilabel:`Edit` mode.
Go to the :guilabel:`Customize` tab to modify the page layout or add features:
- :guilabel:`Terms and Conditions`: Toggle the switch to display a link to your
:doc:`terms and conditions <../../finance/accounting/customer_invoices/terms_conditions>` on the
product page.
- :guilabel:`Customers`:
- :guilabel:`Rating`: Allow logged-in portal users to submit product reviews by clicking the
stars below the product's name and sharing their experience in the :guilabel:`Customer Reviews`
section at the bottom. Reviews are visible from the product page using the :icon:`fa-plus`
(:guilabel:`plus`) icon next to the :guilabel:`Customer Reviews` heading or from the product
form's chatter. To restrict visibility to internal employees, toggle the :guilabel:`Public`
switch next to the review comment.
- :guilabel:`Share`: Add social media and email icon buttons allowing customers to share the
product through those channels.
- :guilabel:`Select Quantity`: Toggle the switch to allow customers to select the product quantity
they want to purchase.
- :guilabel:`Tax indication`: Toggle the switch to indicate if the price is
:ref:`VAT included or excluded <ecommerce-price-management-tax-display>`.
- :guilabel:`Variants`: Show all possible product :ref:`variants <ecommerce/products/product-variants>`
vertically as a :guilabel:`Products List` or horizontally as selectable :guilabel:`Options` to
compose the variant yourself.
- :guilabel:`Product Tags`: Toggle the switch to display the :guilabel:`Product Template Tags` on
the product page and allow customers to filter products using those tags.
- :guilabel:`Cart`:
- :guilabel:`Buy Now`: Add a :icon:`fa-bolt` :guilabel:`Buy Now` option to take the customer to
the checkout page.
- :guilabel:`Wishlist`: Add an :icon:`fa-heart-o` :guilabel:`Add to wishlist` option allowing
logged-in customers to save products in a wishlist.
- :guilabel:`Compare`: Add a :icon:`fa-exchange` :guilabel:`Compare` option, allowing customers
to :ref:`compare products <ecommerce/products/product-comparison>` based on their attributes.
- :guilabel:`Specification`: Select :guilabel:`Bottom of Page` to display a detailed list of the
attributes and their values available for the product. This option only works for products with
:ref:`variants <ecommerce/products/product-variants>` if the
:ref:`Product comparison tool <ecommerce/products/product-comparison>` is enabled in the Website
:guilabel:`Settings`.
.. note::
The difference with :ref:`digital files <ecommerce-digital-file>` is that digital files can only
be downloaded *after* checkout.
- :guilabel:`Variants`, :icon:`fa-heart-o` :guilabel:`Wishlist`, and :icon:`fa-exchange`
:guilabel:`Compare` options must be enabled by going to
:menuselection:`Website --> Configuration --> Settings`, in the :guilabel:`Shop - Products`
section.
- Enabled functions apply to all product pages.
- Products with single values for their attributes do not generate variants but are still
displayed in the :guilabel:`Product Specifications`.
.. image:: products/products-media.png
:align: center
:alt: Media and link buttons
.. _ecommerce/products/image-customization:
.. _ecommerce-digital-file:
Image customization
-------------------
Digital files
-------------
To customize the images available on the product page, go to the :guilabel:`Customize` tab:
Should your product be sold with a certificate, manual user, or any other relevant document, it is
possible to add a download link for customers at the end of the checkout. To do that, first enable
:guilabel:`Digital Content` under :menuselection:`Website --> Configuration --> Settings --> Shop -
Checkout Process`. Then, on the **product's template**, click on :menuselection:`More --> Digital
Files` and :guilabel:`Create` a new file.
.. image:: products/products-digital-files.png
:align: center
:alt: Digital Files menu
For the configuration:
- :guilabel:`Name`: the name of your file;
- :guilabel:`Type:` select if it is either a **file** or a **URL**. Accordingly, you either have a
:guilabel:`File Content (base64)` field to upload your file, or a :guilabel:`URL` field to enter
your URL.
- :guilabel:`Website`: the website on which that file is *available*. If you want it available for
*all* websites, leave it empty.
The file is then available after checkout in the :guilabel:`Sales Orders` section, found on the
customer's portal.
Product configuration
=====================
Multiple languages
------------------
If multiple languages are available on your website and you wish to have the product's information
translated, it is necessary to encode this translated information in the **product's template**.
Fields with multiple languages available are identifiable by their abbreviation language (ex.
:abbr:`EN (English)`) next to their field.
.. image:: products/products-field-translation.png
:align: center
:alt: Field translation
The **eCommerce-related** fields to translate are:
- :guilabel:`Product name`;
- :guilabel:`Out-of-Stock Message` (under the :guilabel:`Sales` tab);
- :guilabel:`Sales Description` (under the :guilabel:`Sales` tab);
- :guilabel:`Images Width`: Changes the width of the product images displayed on the page.
- :guilabel:`Layout`: The :guilabel:`Carousel` layout allows customers to navigate from one image to
the next using the :icon:`fa-angle-left` (:guilabel:`left arrow`) or :icon:`fa-angle-right`
(:guilabel:`right arrow`); whereas the :guilabel:`Grid` displays four images in a square layout.
- :guilabel:`Image Zoom`: Select the zoom effect for product images: :guilabel:`Magnifier on hover`
:guilabel:`Pop-up on Click`, :guilabel:`Both`, or :guilabel:`None`.
- :guilabel:`Thumbnails`: Align thumbnails on the :icon:`fa-long-arrow-left` (:guilabel:`Left`) or
at the :icon:`fa-long-arrow-down` (:guilabel:`Bottom`).
- :guilabel:`Main Image`: Click :guilabel:`Replace` to change the product's main image.
- :guilabel:`Extra Images`: :guilabel:`Add` extra images or videos (including via URL) or
:guilabel:`Remove all` product images.
.. note::
Having untranslated content on a web page may be detrimental to the user experience and
:doc:`SEO <../../websites/website/pages/seo>`.
Images must be in PNG or JPG format and with a minimum size of 1024x1024 to trigger the zoom.
.. _ecommerce/products/product-variants:
Product variants
================
:doc:`Product variants <../../sales/sales/products_prices/products/variants>` are different versions
of the same product, such as various colors or materials, with potential differences in price and
availability.
To configure product variants for a product:
#. Go to :menuselection:`Website --> Configuration --> Settings`.
#. Scroll down to the :guilabel:`Shop - Products` section and enable the
:guilabel:`Product Variants` feature.
#. Access the :ref:`product forms <ecommerce/products/product-form>` and go to the
:guilabel:`Attributes & Variants` tab, where you can add attributes and values, allowing customers
to configure and select product variants on the product page. For multiple attributes,
you can combine them to create specific variants.
To display or hide an attribute on the :guilabel:`Shop` page and allow visitors to filter them,
go to :menuselection:`Website --> eCommerce --> Attributes`, click on the attribute, and select
:guilabel:`Visible` or :guilabel:`Hidden` in the :guilabel:`eCommerce Filter Visibility` field.
.. tip::
- To display the product attributes on :ref:`the main Shop page <ecommerce/products/shop-page>`,
set the :guilabel:`Attributes` feature to :guilabel:`Left` using the website editor.
- To group attributes under the same section when
:ref:`comparing products <ecommerce/products/product-comparison>`, go to the
:guilabel:`eCommerce Category` field and either select an :doc:`existing category or create a
new one <../../websites/ecommerce/products>`.
.. note::
To check the language(s) of your website, go to :menuselection:`Website --> Configuration -->
Settings --> Website Info section`.
Two attribute values are needed to make the filter visible.
.. seealso::
- :doc:`../../websites/website/pages/seo`
:doc:`Product variants <../../sales/sales/products_prices/products/variants>`
.. _ecommerce/products/digital-files:
Digital files
=============
You can link digital files like certificates, eBooks, or user manuals to the products. These
documents are available :ref:`before payment <ecommerce-products-digital-files-before-payment>` on
the product page or in the customer portal :ref:`after checkout <ecommerce-products-digital-files-after-payment>`.
To link a digital file to a product, go to the :ref:`product form <ecommerce/products/product-form>`
and click the :guilabel:`Documents` smart button. Then, click :guilabel:`Upload` to upload a file
directly, or for additional options, click :guilabel:`New`, then :guilabel:`Upload your file`.
.. tip::
- You can link a URL instead of a digital file. To do so, click :guilabel:`New`, go to the
:guilabel:`Type` field, and select :guilabel:`URL`.
- To edit an existing file, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`) in the
top-right corner of the document card and click :guilabel:`Edit`.
.. _ecommerce-products-digital-files-before-payment:
Digital files available before payment
--------------------------------------
To make the file available on the product page (before payment), leave the :guilabel:`Visibility`
field blank and toggle the :guilabel:`Show on product page` switch.
.. image:: products/digital-files.png
:alt: digital file available before payment on the product page
.. _ecommerce-products-digital-files-after-payment:
Digital files available after payment
-------------------------------------
To make the file available (after payment), set the :guilabel:`Visibility` field to
:guilabel:`Confirmed order` and turn off the :guilabel:`Show on product page` switch.
.. _ecommerce/products/translation:
Translation
===========
If multiple languages are available on your website, you can translate a product's information
directly on the :ref:`product form <ecommerce/products/product-form>`. Fields that support multiple
languages are identifiable by their abbreviation language (e.g., EN) next to their field.
The eCommerce-related fields to translate are:
- :guilabel:`Product name`.
- :guilabel:`Out-of-Stock Message` (under the :guilabel:`Sales` tab).
- :guilabel:`Sales Description` (under the :guilabel:`Sales` tab).
.. note::
- Having untranslated content on a web page may be detrimental to the user experience and
:doc:`SEO <../../websites/website/pages/seo>`. You can use the
:doc:`Translate <../website/configuration/translate>` feature to translate the page's content.
- To check the language(s) of your website, go to :menuselection:`Website --> Configuration -->
Settings` and go to the :guilabel:`Website Info` section.
.. _ecommerce/products/website-availability:
Website availability
--------------------
A product can be set available on either *one* or *all* websites, but it is not possible to select
*some* websites and not others. To define a product's availability, go to :menuselection:`Website
--> eCommerce --> Products`, select your product, and in the :guilabel:`Sales` tab, click the
:guilabel:`Website` you wish the product to be available on. Leave the field empty for the products
to be available on *all* websites.
To set the product's website availability, navigate to the :ref:`product form
<ecommerce/products/product-form>`, go to the :guilabel:`Sales` tab, and in the
:guilabel:`eCommerce shop` section, select the :guilabel:`Website` you wish the product to be
available on. Leave the field blank to make the product available on *all* websites.
.. note::
You can make a product available on either *one* website or *all* websites, but selecting only
*some* websites is not possible.
.. _ecommerce/products/stock-management:
Stock management
================
Under the :menuselection:`Website --> Configuration --> Settings --> Shop - Products`, you can
enable and configure inventory management options.
To enable and configure inventory management options, go to :menuselection:`Website -->
Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products` section and the
:guilabel:`Inventory Defaults` sub-section.
.. important::
To display the stock level on the product page, the :guilabel:`Product Type` on the **product's
form** must be set to :guilabel:`Storable` (only available when the **Inventory** app is
installed).
- The **Inventory** app must be installed to see the inventory management options.
- To display the stock level on the product page, the :guilabel:`Product Type` field must be set
to :guilabel:`Storable` in the :ref:`product form <ecommerce/products/product-form>`.
Inventory
---------
In the :guilabel:`Inventory Defaults` sub-section, you can select the eCommerce selling strategy of
products:
In the :guilabel:`Inventory Defaults` sub-section, fill in those fields:
- :guilabel:`Warehouse`: if you have multiple warehouses, you can define the warehouse associated to
your website. If you have multiple websites, you can select a different one per website;
- :guilabel:`Out-of-Stock (Continue Selling)`: enabling it allows customers to continue placing
orders even when the product is **out-of-stock**.
Leave it unchecked to **prevent orders**;
- :guilabel:`Show Available Qty`: enabling it displays the available quantity left under a specified
threshold on the product page. The available quantity is calculated based on the 'On hand'
- :doc:`Warehouse <../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses>`.
- :guilabel:`Out-of-Stock`: Enable :guilabel:`Continue Selling` to allow customers to place orders
even when the product is **out of stock**. Leave the box unchecked to **prevent orders**.
- :guilabel:`Show Available Qty`: Displays the available quantity left under a specified threshold
on the product page. The available quantity is calculated based on the :guilabel:`On hand`
quantity minus the quantity already reserved for outgoing transfers.
.. seealso::
:ref:`Allow only selected customers to buy <cart/prevent-sale>`
Selling as kit
--------------
If you are selling non-prepackaged kits (i.e., the kits are made of individual products), we
recommend you read the related documentation to keep track of your stock.
.. seealso::
:doc:`../../inventory_and_mrp/manufacturing/advanced_configuration/kit_shipping`
.. _ecommerce/products/product-comparison:
Product comparison
==================
You can enable a **product comparison tool** for your eCommerce by going to
:menuselection:`Website --> Configuration --> Settings --> Shop - Products`, and ticking
:guilabel:`Product Comparison Tool`. This tool allows to save products' **specifications** and
compare them against each other on a single page.
To allow website visitors to compare products based on their attributes, go to
:menuselection:`Website --> Configuration --> Settings`, scroll down to the
:guilabel:`Shop - Products` section, and enable :guilabel:`Product Comparison Tool`.
On the product page, scroll down to the :guilabel:`Specifications` section and click
:guilabel:`Compare`. Repeat the same process for all products you wish to compare. Then, click the
:guilabel:`Compare` button of the pop-up window at the bottom of the page to reach the comparison
summary.
.. note::
The :guilabel:`Product Comparison Tool` can only be used if :doc:`attributes <products/variants>`
are set on the **product's template**.
The :icon:`fa-exchange` (:guilabel:`Compare`) icon is now available on each product card on the main
shop page when customers hover their mouse over it. To compare products, customers can click the
:icon:`fa-exchange` (:guilabel:`Compare`) option on the products they want to compare, then click
:icon:`fa-exchange` :guilabel:`Compare` in the pop-up window at the bottom of the page to reach the
comparison summary.
.. image:: products/products-compare.png
:align: center
:alt: Product comparison window
.. note::
- The :guilabel:`Product Comparison Tool` is only available for products with
:ref:`attributes <ecommerce/products/product-variants>`.
- Selecting the :icon:`fa-exchange` (:guilabel:`Compare`) option from a product page is also
possible.
.. toctree::
:titlesonly:
products/catalog
products/variants
products/price_management
products/cross_upselling
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -20,6 +20,8 @@ To add a tax on a product, you can either set a tax in the :guilabel:`Customer T
- :doc:`/applications/finance/accounting/taxes/avatax`
- :doc:`/applications/finance/accounting/taxes/fiscal_positions`
.. _ecommerce-price-management-tax-display:
Tax display
-----------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 938 B

@@ -1,86 +0,0 @@
================
Product variants
================
Product variants are variations, such as different colors, materials, etc., of the same product.
These variations can differ in price and availability from the product. Product variants can either
be :doc:`created <../../../sales/sales/products_prices/products/variants>` or
:doc:`imported <../../../sales/sales/products_prices/products/import>`.
To use product variants, enable them under :menuselection:`Website --> Configuration --> Settings`,
in the :guilabel:`Shop - Products` section.
.. seealso::
- :doc:`../products`
- :doc:`../../../sales/sales/products_prices/products/variants`
- :doc:`../../../sales/sales/products_prices/products/import`
Product configurator
====================
Adding attributes and values to a product template allows the enabling of the **product
configurator** on the product page. Customers use it to configure and select the product variant of
their choice; or in the case of multiple attributes, combine those to create a specific variant.
.. image:: variants/variants-configurator.png
:align: center
:alt: Variants configurator
The **display type** of each attribute used in the product configurator can be edited through the
**website builder** by clicking :menuselection:`Edit --> Customize` on the product page, and then
clicking on one of the attributes. You can then select between four options:
- :guilabel:`Radio`
- :guilabel:`Pills`
- :guilabel:`Select`
- :guilabel:`Color`
.. image:: variants/variants-display-type.png
:align: center
:alt: Display type options for attributes
.. _variants-configurator-backend:
Alternatively, the **display type** can be edited through :menuselection:`Website --> eCommerce -->
Attributes`, selecting an **attribute**, and then choosing a :guilabel:`Display Type`; or through
the **product template** by going to :menuselection:`eCommerce --> Products`, selecting a product,
and then clicking :guilabel:`Attributes and Variants`.
.. tip::
Specific combinations of values can be excluded from the product configurator. This way,
customers are unable to select the excluded combination of values. To do so, go to
:menuselection:`Website --> eCommerce --> Products`, select a product, and go to
:guilabel:`Attributes and Variants`. Then, click on an **attribute**, select a **value**, and in
the :guilabel:`Exclude for` section, select a :guilabel:`Product Template` and the
:guilabel:`Attribute Values` to exclude.
Product specifications
======================
Values used for each attribute are displayed as a **specification list** at the bottom of the
product page. To be visible, the **specification list** must first be enabled on the product page by
going to :menuselection:`Edit --> Customize` and selecting a placement for the field
:guilabel:`Specification`.
.. image:: variants/variants-specifications.png
:align: center
:alt: Specifications list on the product page
.. tip::
The product **specification list** can also be used on products without variants. For that, make
sure to have no values combination. Products with single values for their attributes do not
generate variants.
Filter catalog by attributes
============================
Customers **can** filter the **catalog** based on product attributes and values, allowing them to
:ref:`filter <ecommerce-browsing>` the catalog based only on the attribute(s) of their choice.
To enable **attributes filtering**, go to :menuselection:`Edit --> Customize` from your **main shop
page** and click on one of the :guilabel:`Categories` in the left column. Here, enable either
:guilabel:`Left`, :guilabel:`Top`, or **both**, in the :guilabel:`Attributes` field.
.. image:: variants/variants-categories.png
:align: center
:alt: Categories buttons
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -121,11 +121,15 @@ On Odoo
:guilabel:`Site Key` field in Odoo.
- Open the Google reCAPTCHA page, copy the :guilabel:`Secret key`, and paste it into the
:guilabel:`Secret Key` field in Odoo.
- Change the default :guilabel:`Minimum score` (`0.50`) if necessary, using a value between `1.00`
- Change the default :guilabel:`Minimum score` (`0.70`) if necessary, using a value between `1.00`
and `0.00`. The higher the threshold is, the more difficult it is to pass the reCAPTCHA, and vice
versa.
versa. Out of the 11 levels, only the following four score levels are available by default:
`0.1`, `0.3`, `0.7` and `0.9`.
- Click :guilabel:`Save`.
.. seealso::
`Interpret reCAPTCHA scores - Google documentation <https://cloud.google.com/recaptcha/docs/interpret-assessment-website#interpret_scores>`_
You can notify visitors that reCAPTCHA protects a form. To do so, open the website editor and
navigate to the form. Then, click somewhere on the form, and on the right sidebar's
:guilabel:`Customize` tab, toggle :guilabel:`Show reCAPTCHA Policy` found under the :guilabel:`Form`
+58 -48
View File
@@ -609,8 +609,9 @@ Here are some example of steps:
tour.stepUtils.showAppsMenuItem(),
// Second step
{
trigger: '.o_app[data-menu-xmlid="your_module.maybe_your_module_menu_root"]',
edition: 'community' // Optional
trigger: '.o_app[data-menu-xmlid="your_module.maybe_your_module_menu_root"]',
isActive: ['community'], // Optional
run: "click",
}, {
// Third step
},
@@ -621,7 +622,7 @@ Here are some example of steps:
{
trigger: '.js_product:has(strong:contains(Chair floor protection)) .js_add',
extra_trigger: '.oe_advanced_configurator_modal', // This ensure we are in the wizard
run: "click",
},
.. example::
@@ -629,74 +630,83 @@ Here are some example of steps:
.. code-block:: javascript
{
isActive: ["mobile", "enterprise"],
content: "Click on Add a product link",
trigger: 'a:contains("Add a product")',
// Extra-trigger to make sure a line is added before trying to add another one
extra_trigger: '.o_field_many2one[name="product_template_id"] .o_external_button',
tooltipPosition: "bottom",
async run(helpers) { //Exactly the same as run: "click"
helpers.click();
}
},
Here are some possible arguments for your personalized steps:
- **trigger**: Selector/element to ``run`` an action on. The tour will
- **trigger**: Required, Selector/element to ``run`` an action on. The tour will
wait until the element exists and is visible before ``run``-ing the
action *on it*.
- **extra_trigger**: Optional secondary condition for the step to
``run``. Will be waited for like the **trigger** element but the
action will not run on the extra trigger.
- **run**: Optional, Action to perform on the *trigger* element. If no ``run``,
no action.
Useful to have a precondition, or two different and unrelated
conditions.
- **run**: Action to perform on the *trigger* element.
The action can be:
By default, tries to set the **trigger**'s content to ``Text`` if
it's an ``input``, otherwise ``click`` it.
The action can also be:
- A function, synchronous, executed with the trigger's ``Tip`` as
- A function, asynchronous, executed with the trigger's ``Tip`` as
context (``this``) and the action helpers as parameter.
- The name of one of the action helpers, which will be run on the
trigger element:
.. rst-class:: o-definition-list
``check``
Ensures that the **trigger** element is checked. This helper is intended
for `<input[type=checkbox]>` elements only.
``clear``
Clears the value of the **trigger** element. This helper is
intended for `<input>` or `<textarea>` elements only.
``click``
Clicks the element, performing all the relevant intermediate
Clicks the **trigger** element, performing all the relevant intermediate
events.
:samp:`text {content}`
Clicks (focuses) the element then sets ``content`` as the
element's value (if an input), option (if a select), or
content.
``dblclick``, ``tripleclick``
Same as ``click`` with multiple repetitions.
``clicknoleave``
By default, ``click`` (and variants) will trigger "exit"
events on the trigger element (mouseout, mouseleave). This
helper suppresses those (note: further clicks on other
elements will not trigger those events implicitly).
``text_blur``
Similar to ``text`` but follows the edition with ``focusout``
and ``blur`` events.
``dblclick``,
Same as ``click`` with two repetitions.
:samp:`drag_and_drop {target}`
Simulates the dragging of the **trigger** element over to the
``target``.
- **edition**: Optional,
Simulates the dragging of the **trigger** element over to the ``target``.
:samp:`edit {content}`
``clear`` the element and then ``fill`` the ``content``.
:samp:`editor {content}`
Focus the **trigger** element (wysiwyg) and then ``press`` the ``content``.
:samp:`fill {content}`
Focus the **trigger** element and then ``press`` the ``content``. This helper is
intended for `<input>` or `<textarea>` elements only.
``hover``
Performs a hover sequence on the **trigger** element.
:samp:`press {content}`
Performs a keyboard event sequence.
:samp:`range {content}`
Focus the **trigger** element and set ``content`` as value. This helper is intended
for `<input[type=range]>` elements only.
:samp:`select {value}`
Performs a selection event sequence on **trigger** element. Select the option by its
``value``. This helper is intended for `<select>` elements only.
:samp:`selectByIndex {index}`
Same as ``select`` but select the option by its ``index``. Note that first option has
index 0.
:samp:`selectByLabel {label}`
Same as ``select`` but select the option by its ``label``.
``uncheck``
Ensures that the **trigger** element is unchecked. This helper is intended
for `<input[type=checkbox]>` elements only.
- If you don't specify an edition, the step will be active in both community and enterprise.
- Sometimes, a step will be different in enterprise or in community. You can then write two
steps, one for the enterprise edition and one for the community one.
- Generally, you want to specify an edition for steps that use the main menu as the main
menus are different in community and enterprise.
- **position**: Optional, ``"top"``, ``"right"``, ``"bottom"``, or
- **isActive**: Optional,
Activates the step only if all conditions of isActive array are met.
- Browser is in either **desktop** or **mobile** mode.
- The tour concerns either **community** or **enterprise** edition.
- The tour is run in either **auto** (runbot) or **manual** (onboarding) mode.
- **tooltipPosition**: Optional, ``"top"``, ``"right"``, ``"bottom"``, or
``"left"``. Where to position the tooltip relative to the **target**
when running interactive tours.
- **content**: Optional but recommended, the content of the tooltip in
interactive tours, also logged to the console so very useful to
trace and debug automated tours.
- **auto**: Whether the tour manager should wait for the user to
perform the action if the tour is interactive, defaults to
``false``.
- **in_modal**: If set the **trigger** element will be searched only
in the top modal window, defaults to ``false``.
- **timeout**: How long to wait until the step can ``run``, in
milliseconds, 10000 (10 seconds).
@@ -850,7 +860,7 @@ case there are two main tricks:
- the tour continues as soon as you resume execution
**Drawbacks**
- page interaction is limited as all javascript is blocked
- A step property ``pause: true,`` in debug mode (debug=True).
The tour will stop at the end of the step. This allows inspecting
+46 -57
View File
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 17.0\n"
"Project-Id-Version: Odoo 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-24 10:43+0000\n"
"POT-Creation-Date: 2024-10-07 14:21+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -758,7 +758,7 @@ msgid "The base is an Ubuntu system, where all of Odoo's required dependencies,
msgstr ""
#: ../../content/administration/odoo_sh/advanced/containers.rst:14
msgid "If your project requires additional Python dependencies, or more recent releases, you can define a :file:`requirements.txt` file in the root of your branches listing them. The platform will take care to install these dependencies in your containers. `The pip requirements specifiers <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ documentation can help you write a :file:`requirements.txt` file. To have a concrete example, check out the `requirements.txt file of Odoo <https://github.com/odoo/odoo/blob/17.0/requirements.txt>`_."
msgid "If your project requires additional Python dependencies, or more recent releases, you can define a :file:`requirements.txt` file in the root of your branches listing them. The platform will take care to install these dependencies in your containers. `The pip requirements specifiers <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ documentation can help you write a :file:`requirements.txt` file. To have a concrete example, check out the `requirements.txt file of Odoo <https://github.com/odoo/odoo/blob/18.0/requirements.txt>`_."
msgstr ""
#: ../../content/administration/odoo_sh/advanced/containers.rst:22
@@ -2885,6 +2885,8 @@ msgstr ""
#: ../../content/administration/odoo_sh/getting_started/settings.rst:181
#: ../../content/administration/odoo_sh/getting_started/settings.rst:186
#: ../../content/administration/supported_versions.rst:35
#: ../../content/administration/supported_versions.rst:36
#: ../../content/administration/supported_versions.rst:37
#: ../../content/administration/supported_versions.rst:41
#: ../../content/administration/supported_versions.rst:47
#: ../../content/administration/supported_versions.rst:53
@@ -2893,9 +2895,6 @@ msgstr ""
#: ../../content/administration/supported_versions.rst:59
#: ../../content/administration/supported_versions.rst:60
#: ../../content/administration/supported_versions.rst:61
#: ../../content/administration/supported_versions.rst:65
#: ../../content/administration/supported_versions.rst:66
#: ../../content/administration/supported_versions.rst:67
msgid "|green|"
msgstr ""
@@ -4350,7 +4349,7 @@ msgid "Instead of using the repository, packages for both the **Community** and
msgstr ""
#: ../../content/administration/on_premise/packages.rst:103
msgid "Odoo 17 'deb' package currently supports `Debian Buster <https://www.debian.org/releases/buster/>`_ and `Ubuntu 18.04 <https://releases.ubuntu.com/18.04>`_ or above."
msgid "Odoo 18 'deb' package currently supports `Debian Buster <https://www.debian.org/releases/buster/>`_ and `Ubuntu 18.04 <https://releases.ubuntu.com/18.04>`_ or above."
msgstr ""
#: ../../content/administration/on_premise/packages.rst:107
@@ -4366,7 +4365,7 @@ msgid "The `num2words` Python package - needed to render textual amounts - does
msgstr ""
#: ../../content/administration/on_premise/packages.rst:135
msgid "Odoo 17 'rpm' package supports Fedora 36."
msgid "Odoo 18 'rpm' package supports Fedora 36."
msgstr ""
#: ../../content/administration/on_premise/packages.rst:137
@@ -4608,7 +4607,7 @@ msgid "On Debian/Ubuntu, the following commands should install the required pack
msgstr ""
#: ../../content/administration/on_premise/source.rst:287
msgid "The `setup/debinstall.sh` script will parse the `debian/control <https://github.com/odoo/odoo/blob/17.0/debian/control>`_ file and install the found packages."
msgid "The `setup/debinstall.sh` script will parse the `debian/control <https://github.com/odoo/odoo/blob/18.0/debian/control>`_ file and install the found packages."
msgstr ""
#: ../../content/administration/on_premise/source.rst:290
@@ -4950,11 +4949,22 @@ msgid "End of support"
msgstr ""
#: ../../content/administration/supported_versions.rst:34
msgid "Odoo saas~17.4"
msgid "**Odoo 18.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:38
#: ../../content/administration/supported_versions.rst:69
msgid "October 2024"
msgstr ""
#: ../../content/administration/supported_versions.rst:39
msgid "October 2027 (planned)"
msgstr ""
#: ../../content/administration/supported_versions.rst:40
msgid "Odoo SaaS 17.4"
msgstr ""
#: ../../content/administration/supported_versions.rst:36
#: ../../content/administration/supported_versions.rst:37
#: ../../content/administration/supported_versions.rst:42
#: ../../content/administration/supported_versions.rst:43
#: ../../content/administration/supported_versions.rst:48
@@ -4962,24 +4972,16 @@ msgstr ""
msgid "N/A"
msgstr ""
#: ../../content/administration/supported_versions.rst:38
#: ../../content/administration/supported_versions.rst:44
msgid "July 2024"
msgstr ""
#: ../../content/administration/supported_versions.rst:40
msgid "Odoo saas~17.2"
msgstr ""
#: ../../content/administration/supported_versions.rst:44
msgid "April 2024"
msgstr ""
#: ../../content/administration/supported_versions.rst:46
msgid "Odoo saas~17.1"
msgid "Odoo SaaS 17.2"
msgstr ""
#: ../../content/administration/supported_versions.rst:50
msgid "January 2024"
msgid "April 2024"
msgstr ""
#: ../../content/administration/supported_versions.rst:52
@@ -5000,83 +5002,70 @@ msgid "**Odoo 16.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:62
#: ../../content/administration/supported_versions.rst:81
msgid "October 2022"
msgstr ""
#: ../../content/administration/supported_versions.rst:63
msgid "November 2025 (planned)"
msgid "October 2025 (planned)"
msgstr ""
#: ../../content/administration/supported_versions.rst:64
msgid "**Odoo 15.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:68
msgid "October 2021"
msgstr ""
#: ../../content/administration/supported_versions.rst:69
msgid "November 2024 (planned)"
msgstr ""
#: ../../content/administration/supported_versions.rst:70
msgid "**Odoo 14.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:65
#: ../../content/administration/supported_versions.rst:66
#: ../../content/administration/supported_versions.rst:67
#: ../../content/administration/supported_versions.rst:71
#: ../../content/administration/supported_versions.rst:72
#: ../../content/administration/supported_versions.rst:73
#: ../../content/administration/supported_versions.rst:77
#: ../../content/administration/supported_versions.rst:78
#: ../../content/administration/supported_versions.rst:79
#: ../../content/administration/supported_versions.rst:83
#: ../../content/administration/supported_versions.rst:84
#: ../../content/administration/supported_versions.rst:85
msgid "|red|"
msgstr ""
#: ../../content/administration/supported_versions.rst:68
msgid "October 2021"
msgstr ""
#: ../../content/administration/supported_versions.rst:70
msgid "**Odoo 14.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:74
msgid "October 2020"
msgstr ""
#: ../../content/administration/supported_versions.rst:76
msgid "**Odoo 13.0**"
msgstr ""
#: ../../content/administration/supported_versions.rst:80
msgid "October 2019"
msgstr ""
#: ../../content/administration/supported_versions.rst:82
msgid "Older versions"
msgstr ""
#: ../../content/administration/supported_versions.rst:86
msgid "Before 2019"
#: ../../content/administration/supported_versions.rst:80
msgid "Before 2020"
msgstr ""
#: ../../content/administration/supported_versions.rst:87
msgid "Before 2022"
#: ../../content/administration/supported_versions.rst:81
msgid "Before 2023"
msgstr ""
#: ../../content/administration/supported_versions.rst:89
#: ../../content/administration/supported_versions.rst:83
msgid "Legend"
msgstr ""
#: ../../content/administration/supported_versions.rst:91
#: ../../content/administration/supported_versions.rst:85
msgid "|green| Supported version"
msgstr ""
#: ../../content/administration/supported_versions.rst:93
#: ../../content/administration/supported_versions.rst:87
msgid "|red| End-of-support"
msgstr ""
#: ../../content/administration/supported_versions.rst:95
#: ../../content/administration/supported_versions.rst:89
msgid "N/A Never released for this platform"
msgstr ""
#: ../../content/administration/supported_versions.rst:98
#: ../../content/administration/supported_versions.rst:92
msgid "Even though we don't support older versions, you can always `upgrade from any version <https://upgrade.odoo.com/>`_."
msgstr ""
+2 -226
View File
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 17.0\n"
"Project-Id-Version: Odoo 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-24 10:43+0000\n"
"POT-Creation-Date: 2024-10-07 14:21+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1723,230 +1723,6 @@ msgstr ""
msgid "Odoo sends a low-credit alert to the :guilabel:`Warning Email` when the balance of credits falls below the amount listed as the :guilabel:`Threshold`."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:3
msgid "Keyboard shortcuts"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:5
msgid "Users in Odoo can utilize several keyboard shortcuts to navigate through modules, execute actions, and manage data."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:9
msgid "Hold :kbd:`Ctrl` to view the keyboard shortcuts assigned to each element on the interface."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:0
msgid "A selection of keyboard shortcuts in Odoo."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:16
msgid "Some keyboard shortcuts may not be available on different versions of Odoo or effective depending on browsers, extensions, or other individual settings."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:20
msgid "Keyboard shortcuts by operating system"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:22
msgid "Below is a list of some of the most commonly used keyboard shortcuts within Odoo, listed by operating system."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:29
msgid "Description"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:30
msgid "Windows / Linux"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:31
msgid "macOS"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:32
msgid "Previous breadcrumb"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:33
msgid ":kbd:`Alt` + :kbd:`B`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:34
msgid ":kbd:`Ctrl` + :kbd:`B`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:35
msgid "Create new record"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:36
msgid ":kbd:`Alt` + :kbd:`C`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:37
msgid ":kbd:`Ctrl` + :kbd:`C`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:38
msgid "Odoo Home Page"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:39
msgid ":kbd:`Alt` + :kbd:`H`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:40
msgid ":kbd:`Ctrl` + :kbd:`H`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:41
msgid "Discard changes"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:42
msgid ":kbd:`Alt` + :kbd:`J`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:43
msgid ":kbd:`Ctrl` + :kbd:`J`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:44
msgid "Save changes"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:45
msgid ":kbd:`Alt` + :kbd:`S`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:46
msgid ":kbd:`Ctrl` + :kbd:`S`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:47
msgid "Next page"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:48
msgid ":kbd:`Alt` + :kbd:`N`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:49
msgid ":kbd:`Ctrl` + :kbd:`N`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:50
msgid "Previous page"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:51
msgid ":kbd:`Alt` + :kbd:`P`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:52
msgid ":kbd:`Ctrl` + :kbd:`P`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:53
msgid "Search"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:54
msgid ":kbd:`Alt` + :kbd:`Q`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:55
msgid ":kbd:`Ctrl` + :kbd:`Q`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:56
msgid "Select menus"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:57
msgid ":kbd:`Alt` + :kbd:`1-9`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:58
msgid ":kbd:`Ctrl` + :kbd:`1-9`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:59
msgid "Create a new To-Do"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:60
msgid ":kbd:`Alt` + :kbd:`Shift` + :kbd:`T`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:61
msgid ":kbd:`Ctrl` + :kbd:`Shift` + :kbd:`T`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:62
msgid "Search a Knowledge article"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:63
msgid ":kbd:`Alt` + :kbd:`F`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:64
msgid ":kbd:`Ctrl` + :kbd:`F`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:65
msgid "Share a Knowledge article"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:66
msgid ":kbd:`Alt` + :kbd:`Shift` + :kbd:`S`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:67
msgid ":kbd:`Ctrl` + :kbd:`Shift` + :kbd:`S`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:68
msgid "Open command palette"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:69
msgid ":kbd:`Ctrl` + :kbd:`K`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:70
msgid ":kbd:`Command` + :kbd:`K`"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:73
msgid "After opening the command palette, search using the following keyboard shortcuts:"
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:75
msgid ":kbd:`/`: search for menus, applications, and modules."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:76
msgid ":kbd:`@`: search for users."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:77
msgid ":kbd:`#`: search for **Discuss** channels."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:78
msgid ":kbd:`?`: search for **Knowledge** articles."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:80
msgid "Enter a name (or term) in the search bar, or use the arrow keys to scroll through the available options. Then, click :kbd:`Ctrl` + :kbd:`Enter` to open the selected app, module, or menu in a new tab."
msgstr ""
#: ../../content/applications/essentials/keyboard_shortcuts.rst:0
msgid "The command palette in Odoo, with the menu search option selected."
msgstr ""
#: ../../content/applications/essentials/reporting.rst:3
msgid "Reporting"
msgstr ""
+1646 -1385
View File
File diff suppressed because it is too large Load Diff
+158 -146
View File
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 17.0\n"
"Project-Id-Version: Odoo 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-24 10:43+0000\n"
"POT-Creation-Date: 2024-10-07 14:21+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1277,30 +1277,30 @@ msgid "Activating the developer mode in the Settings app"
msgstr ""
#: ../../content/applications/general/developer_mode.rst:33
msgid "To activate the developer mode **from anywhere in the database**, add `?debug=1` to the URL after `/web` (e.g., `https://example.odoo.com/web?debug=1#action=menu&cids=1`). To deactivate it, use `?debug=0` instead."
msgid "To activate the developer mode **from anywhere in the database**, add `?debug=1` at the end of the URL (e.g., `https://example.odoo.com/odoo?debug=1`). To deactivate it, use `?debug=0` instead."
msgstr ""
#: ../../content/applications/general/developer_mode.rst:37
#: ../../content/applications/general/developer_mode.rst:36
msgid "Use `?debug=assets` to activate the developer mode with assets and `?debug=tests` to activate it with tests assets."
msgstr ""
#: ../../content/applications/general/developer_mode.rst:41
#: ../../content/applications/general/developer_mode.rst:40
msgid "Open the **command palette** by pressing `Ctrl + K` or `Cmd ⌘ + K`, then type `debug` to activate the developer mode with assets or deactivate it."
msgstr ""
#: ../../content/applications/general/developer_mode.rst:44
#: ../../content/applications/general/developer_mode.rst:43
msgid "Browser extension"
msgstr ""
#: ../../content/applications/general/developer_mode.rst:46
#: ../../content/applications/general/developer_mode.rst:45
msgid "The `Odoo Debug <https://github.com/Droggol/OdooDebug>`_ browser extension adds an icon to toggle developer mode on or off from the browser's toolbar. It is available on the `Chrome Web Store <https://chromewebstore.google.com/detail/odoo-debug/hmdmhilocobgohohpdpolmibjklfgkbi>`_ and `Firefox Add-ons <https://addons.mozilla.org/firefox/addon/odoo-debug/>`_."
msgstr ""
#: ../../content/applications/general/developer_mode.rst:54
#: ../../content/applications/general/developer_mode.rst:53
msgid "Developer tools and technical menu"
msgstr ""
#: ../../content/applications/general/developer_mode.rst:56
#: ../../content/applications/general/developer_mode.rst:55
msgid "Once the developer mode is activated, the developer tools can be accessed by clicking the :icon:`fa-bug` :guilabel:`(bug)` icon. The menu contains tools useful for understanding or editing technical data, such as a view's field, filters, or actions. The options available depend on where the menu is accessed from."
msgstr ""
@@ -1308,7 +1308,7 @@ msgstr ""
msgid "Accessing the developer tools"
msgstr ""
#: ../../content/applications/general/developer_mode.rst:64
#: ../../content/applications/general/developer_mode.rst:63
msgid "Database administrators can access the technical menu from the :guilabel:`Settings` app. It contains advanced database settings, such as ones related to the database structure, security, actions, etc."
msgstr ""
@@ -1739,7 +1739,7 @@ msgstr ""
#: ../../content/applications/general/email_communication/azure_oauth.rst:241
#: ../../content/applications/general/iot/config/pos.rst:21
#: ../../content/applications/general/iot/config/troubleshooting.rst:604
#: ../../content/applications/general/iot/config/troubleshooting.rst:616
msgid "Setup"
msgstr ""
@@ -4761,7 +4761,7 @@ msgid "Connect a supported receipt printer to a :abbr:`USB (Universal Serial Bus
msgstr ""
#: ../../content/applications/general/iot/config/pos.rst:43
#: ../../content/applications/general/iot/config/troubleshooting.rst:560
#: ../../content/applications/general/iot/config/troubleshooting.rst:572
msgid "Cash drawer"
msgstr ""
@@ -4770,7 +4770,7 @@ msgid "The cash drawer should be connected to the printer with an RJ25 cable."
msgstr ""
#: ../../content/applications/general/iot/config/pos.rst:45
#: ../../content/applications/general/iot/config/troubleshooting.rst:508
#: ../../content/applications/general/iot/config/troubleshooting.rst:520
msgid "Barcode scanner"
msgstr ""
@@ -4779,7 +4779,7 @@ msgid "In order for the barcode scanner to be compatible it must end barcodes wi
msgstr ""
#: ../../content/applications/general/iot/config/pos.rst:48
#: ../../content/applications/general/iot/config/troubleshooting.rst:571
#: ../../content/applications/general/iot/config/troubleshooting.rst:583
msgid "Scale"
msgstr ""
@@ -4989,230 +4989,242 @@ msgid "Epson and Star receipt printers and Zebra label printers do not need a dr
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:104
msgid "Epson configuration special case"
msgid "The printer is detected but is not recognized correctly"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:106
msgid "If the printer is not recognized correctly by Odoo and the :abbr:`IoT (Internet of Things)` box, go to the form view of the device (:menuselection:`IoT App --> Devices -->Printer Device`) and change the subtype. The three options available are: :guilabel:`Receipt Printer`, :guilabel:`Label Printer`, and :guilabel:`Office Printer`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:-1
msgid "Sub-type selection in a printer IoT device."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:116
msgid "Epson configuration special case"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:118
msgid "Most Epson printers support printing receipts in Odoo :abbr:`POS (Point of Sale)` using the `GS v 0` command. However, the following Epson printer models do not support this command:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:109
#: ../../content/applications/general/iot/config/troubleshooting.rst:121
msgid "TM-U220"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:110
#: ../../content/applications/general/iot/config/troubleshooting.rst:122
msgid "TM-U230"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:111
#: ../../content/applications/general/iot/config/troubleshooting.rst:123
msgid "TM-P60"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:112
#: ../../content/applications/general/iot/config/troubleshooting.rst:124
msgid "TMP-P60II"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:114
#: ../../content/applications/general/iot/config/troubleshooting.rst:126
msgid "Bypass this issue by configuring the printer to use the `ESC *` command instead."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:117
#: ../../content/applications/general/iot/config/troubleshooting.rst:129
msgid "Process to force ESC * command"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:120
#: ../../content/applications/general/iot/config/troubleshooting.rst:132
msgid "Epson printer compatibility"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:122
#: ../../content/applications/general/iot/config/troubleshooting.rst:134
msgid "The first step is to check whether the printer is incompatible with `GS v 0` command."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:126
#: ../../content/applications/general/iot/config/troubleshooting.rst:138
msgid "`Epson GS v 0 documentation <https://reference.epson-biz.com/modules/ref_escpos/index.php? content_id=94>`_ for `GS v 0` compatible printers."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:128
#: ../../content/applications/general/iot/config/troubleshooting.rst:140
msgid "`Epson ESC * documentation <https://reference.epson-biz.com/modules/ref_escpos/index.php ?content_id=88>`_ for `ESC *` compatible printers."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:131
#: ../../content/applications/general/iot/config/troubleshooting.rst:143
msgid "If the printer is not compatible with the `ESC *` command then the following process is not possible. Should the printer be compatible to use the `ESC *` command to print, follow this process to configure the printer with the :abbr:`IoT (Internet of Things)` box."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:136
#: ../../content/applications/general/iot/config/troubleshooting.rst:148
msgid "IoT box configuration for ESC *"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:138
#: ../../content/applications/general/iot/config/troubleshooting.rst:150
msgid "To configure the :abbr:`IoT (Internet of Things)` box to use the `ESC *` command to print, go to the :abbr:`IoT (Internet of Things)` box homepage by navigating to :menuselection:`IoT app --> IoT Boxes`. Then click on the :guilabel:`IP address` and this will direct to the :abbr:`IoT (Internet of Things)` box homepage."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:143
#: ../../content/applications/general/iot/config/troubleshooting.rst:155
msgid "**Choosing the printer**"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:145
#: ../../content/applications/general/iot/config/troubleshooting.rst:157
msgid "Now click on the :guilabel:`Printers server` button. This will redirect the browser to the *CUPS* page. Next, go to :menuselection:`Administration --> Printers --> Add Printer`, choose the printer that should be modified, and then click :guilabel:`Continue`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:150
#: ../../content/applications/general/iot/config/troubleshooting.rst:162
msgid "If the name of the printer is still uncertain, take the following steps:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:152
#: ../../content/applications/general/iot/config/troubleshooting.rst:164
msgid "Take note of the listed printers on the *CUPS* page."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:153
#: ../../content/applications/general/iot/config/troubleshooting.rst:165
msgid "Turn the printer off and refresh the page."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:154
#: ../../content/applications/general/iot/config/troubleshooting.rst:166
msgid "Now compare the difference with the first list to see which printer disappeared."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:155
#: ../../content/applications/general/iot/config/troubleshooting.rst:167
msgid "Turn the printer back on and refresh the page again."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:156
#: ../../content/applications/general/iot/config/troubleshooting.rst:168
msgid "Double-check the list again to see if the printer re-appears."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:157
#: ../../content/applications/general/iot/config/troubleshooting.rst:169
msgid "The printer that disappeared and reappears again on the listed printers is the name of the printer in question."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:161
#: ../../content/applications/general/iot/config/troubleshooting.rst:173
msgid "This can be :guilabel:`Unknown` under :guilabel:`Local printers`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:163
#: ../../content/applications/general/iot/config/troubleshooting.rst:175
msgid "**CUPS naming convention**"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:165
#: ../../content/applications/general/iot/config/troubleshooting.rst:177
msgid "`CUPS` will prompt the administrator for three pieces of information: the :guilabel:`Name`, :guilabel:`Description` and the :guilabel:`Location`. The last two pieces of information do not need to be specific, however, the :guilabel:`Name` should follow a particular convention to work with the `ESC *` command."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:170
#: ../../content/applications/general/iot/config/troubleshooting.rst:182
msgid "The :guilabel:`Name` should match this convention: `<printer_name>__IMC_<param_1>_<param_2>_..._<param_n>__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:173
#: ../../content/applications/general/iot/config/troubleshooting.rst:185
msgid "A breakdown of the naming convention:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:175
#: ../../content/applications/general/iot/config/troubleshooting.rst:187
msgid "`printer_name`: This is the printer name. It can be any character as long as it does not contain `_`, `/`, `#`, or ` ` (space character)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:177
#: ../../content/applications/general/iot/config/troubleshooting.rst:189
msgid "`IMC`: This stands for *Image Mode Column* (the simplified name for `ESC *`)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:178
#: ../../content/applications/general/iot/config/troubleshooting.rst:190
msgid "`param_1`: This stands for the specific parameter:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:180
#: ../../content/applications/general/iot/config/troubleshooting.rst:192
msgid "`SCALE<X>`: Scale of the picture (with the same aspect ratio). `X` should be an integer describing the scale percentage that should be used."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:184
#: ../../content/applications/general/iot/config/troubleshooting.rst:196
msgid "`100` is the original size, `50` is half the size, `200` is twice the size."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:186
#: ../../content/applications/general/iot/config/troubleshooting.rst:198
msgid "`LDV`: *Low Density Vertical* (will be set to *High Density Vertical* if not specified)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:187
#: ../../content/applications/general/iot/config/troubleshooting.rst:199
msgid "`LDH`: *Low Density Horizontal* (will be set to *High Density Horizontal* if not specified)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:190
#: ../../content/applications/general/iot/config/troubleshooting.rst:202
msgid "*Density* parameters might need to be configured in a particular way depending on the printer model."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:194
#: ../../content/applications/general/iot/config/troubleshooting.rst:206
msgid "Visit `Epson's ESC * documentation <https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_ and click on the printer model printer in the table above to see if the printer should set these parameters."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:199
#: ../../content/applications/general/iot/config/troubleshooting.rst:211
msgid "The following are examples of proper and improper name formatting:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:201
#: ../../content/applications/general/iot/config/troubleshooting.rst:213
msgid "Proper name formatting:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:203
#: ../../content/applications/general/iot/config/troubleshooting.rst:215
msgid "`EPSONTMm30II__IMC__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:204
#: ../../content/applications/general/iot/config/troubleshooting.rst:216
msgid "`EPSON_TM_U220__IMC_LDV_LDH_SCALE80__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:206
#: ../../content/applications/general/iot/config/troubleshooting.rst:218
msgid "Improper name formatting (this will not prevent printing, but the result might not have the expected printed output):"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:209
#: ../../content/applications/general/iot/config/troubleshooting.rst:221
msgid "`EPSON TMm 30II` -> The name cannot have spaces."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:210
#: ../../content/applications/general/iot/config/troubleshooting.rst:222
msgid "`EPSONTMm30II` -> The name itself is correct, but it will not use `ESC *`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:211
#: ../../content/applications/general/iot/config/troubleshooting.rst:223
msgid "`EPSONTMm30II__IMC` -> This name is missing the end `__`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:212
#: ../../content/applications/general/iot/config/troubleshooting.rst:224
msgid "`EPSONTMm30II__IMC_XDV__` -> The parameter `XDV` does not match any existing parameters."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:213
#: ../../content/applications/general/iot/config/troubleshooting.rst:225
msgid "`EPSONTMm30II__IMC_SCALE__` -> The parameter `SCALE` is missing the scale value."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:215
#: ../../content/applications/general/iot/config/troubleshooting.rst:227
msgid "**Finish adding a printer**"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:217
#: ../../content/applications/general/iot/config/troubleshooting.rst:229
msgid "After setting the name of the printer with the appropriate naming convention, click :guilabel:`Continue`. Next, set the :guilabel:`Make` value to :guilabel:`Raw` and for the :guilabel:`Model` value, set this to :guilabel:`Raw Queue (en)`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:221
#: ../../content/applications/general/iot/config/troubleshooting.rst:233
msgid "After completing these steps, click :guilabel:`Add Printer`. If everything was done correctly, the page should redirect to the *Banners* page."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:224
#: ../../content/applications/general/iot/config/troubleshooting.rst:236
msgid "At this point the printer should have been created, now the :abbr:`IoT (Internet of Things)` box just needs to detect it and then sync to Odoo's server (this could take a few minutes)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:227
#: ../../content/applications/general/iot/config/troubleshooting.rst:239
msgid "**Adding the printer to Odoo PoS**"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:229
#: ../../content/applications/general/iot/config/troubleshooting.rst:241
msgid "Once the printer is visible on the Odoo database, do not forget to choose it in the :abbr:`PoS (Point of Sale)`configuration as the :abbr:`IoT (Internet of Things)` printer. Navigate to :menuselection:`Pos App --> Settings --> Connected Devices --> IoT Box --> Receipt Printer --> Save`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:235
#: ../../content/applications/general/iot/config/troubleshooting.rst:247
msgid "If the printer was set up incorrectly (it is still printing random text or the printed receipt is too big or small), then it cannot be modified via the printer name with *CUPS*. Instead, the above process can be repeated to set up another printer from scratch to create one with modified parameters."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:240
#: ../../content/applications/general/iot/config/troubleshooting.rst:252
msgid "**Example setup of the Epson TM-U220B printer using ESC**"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:245
#: ../../content/applications/general/iot/config/troubleshooting.rst:257
msgid "The following is an example of the troubleshooting process for a TM-U220B printer model using the `ESC *` command. The receipt pictured below is an example of a receipt that is printing correctly due to proper formatting (in theory):"
msgstr ""
@@ -5220,7 +5232,7 @@ msgstr ""
msgid "Properly formatted receipt picture from a demo database."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:253
#: ../../content/applications/general/iot/config/troubleshooting.rst:265
msgid "Trying to print this receipt right-away prior to the proper formatting will not work as the TM-U220B printer model does not support `GS v 0`. Instead random characters will print:"
msgstr ""
@@ -5228,11 +5240,11 @@ msgstr ""
msgid "Printer paper with seemingly random characters."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:260
#: ../../content/applications/general/iot/config/troubleshooting.rst:272
msgid "To properly configure formatting for the Epson TM-U220B printer model take the following steps."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:262
#: ../../content/applications/general/iot/config/troubleshooting.rst:274
msgid "After consulting Epson's website for compatibility for both of the commands: `GS v 0 <https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=94>`_ and `ESC * <https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_, it can be seen that indeed the TM-U220B is not compatible with `GS v 0`, but is compatible with `ESC *`."
msgstr ""
@@ -5240,7 +5252,7 @@ msgstr ""
msgid "Epson compatibility evaluation from Epson website."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:271
#: ../../content/applications/general/iot/config/troubleshooting.rst:283
msgid "When adding the printer, *CUPS* will ask which printer should be added:"
msgstr ""
@@ -5248,11 +5260,11 @@ msgstr ""
msgid "Administration menu, add printer selection."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:277
#: ../../content/applications/general/iot/config/troubleshooting.rst:289
msgid "In this case, the printer is connected via :abbr:`USB (Universal Serial Bus)` so it won' be part of the :guilabel:`Discovered Network Printers`. Instead it is likely part of the :guilabel:`Unknown` selection under :guilabel:`Local Printers`. By unplugging the printer's :abbr:`USB (Universal Serial Bus)` cable from the :abbr:`IoT (Internet of Things)` box and refreshing the page, the :guilabel:`Unknown` printer disappears. By plugging it back in, the printer reappears, so it can be said that this is the printer in question."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:284
#: ../../content/applications/general/iot/config/troubleshooting.rst:296
msgid "For the naming convention, since it needs to print using the `ESC *` command, it is imperative to add `__IMC`. Reference the printer model on `Epson's ESC * site <https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_ to find out more about the *density* parameters."
msgstr ""
@@ -5260,15 +5272,15 @@ msgstr ""
msgid "Epson TM-U220 specifications on manufacturer's website."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:293
#: ../../content/applications/general/iot/config/troubleshooting.rst:305
msgid "For this particular model, TM-U220, `m` should be equal to 0 or 1. While referencing the :guilabel:`Description` below the pink box in the above picture, the `m` values could be 0, 1, 32 or 33. So in this printers case, the `m` value can NOT be 32 or 33 (otherwise there will be random characters printed)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:298
#: ../../content/applications/general/iot/config/troubleshooting.rst:310
msgid "The table includes the numeric values: 32 and 33, they both occur if the :guilabel:`Number of bits for vertical data` is set to 24. This means that is a *High Vertical Density*. In the case of configuring the Epson TM-U220, the *Low Vertical Density* will need to be forced, as this printer model does not support *High Vertical Density* for this command `ESC *`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:303
#: ../../content/applications/general/iot/config/troubleshooting.rst:315
msgid "To add a *Low Vertical Density*, add the `LDV` parameter to the naming convention."
msgstr ""
@@ -5276,7 +5288,7 @@ msgstr ""
msgid "Add a *Low Vertical Density* (the `LDV` parameter) to the naming convention."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:309
#: ../../content/applications/general/iot/config/troubleshooting.rst:321
msgid "Click :guilabel:`Continue` to proceed. Next, set the :guilabel:`Make` value to :guilabel:`Raw` and for the :guilabel:`Model` value, set this to :guilabel:`Raw Queue (en)`."
msgstr ""
@@ -5284,31 +5296,31 @@ msgstr ""
msgid "Epson TM-U220 specifications on manufacturers website."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:316
#: ../../content/applications/general/iot/config/troubleshooting.rst:328
msgid "However, when trying to print with the naming convention: `EpsonTMU220B__IMC_LDV__`, it prints the receipt, but it is too big and outside the margin. To resolve this, add a new printer (and naming convention) with the `SCALE<X>` parameter to adapt to our receipt size."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:320
#: ../../content/applications/general/iot/config/troubleshooting.rst:332
msgid "Here are some examples:"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:325
#: ../../content/applications/general/iot/config/troubleshooting.rst:337
msgid "Printer Naming Convention"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:326
#: ../../content/applications/general/iot/config/troubleshooting.rst:338
msgid "`EpsonTMU220B__IMC_LDV__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:327
#: ../../content/applications/general/iot/config/troubleshooting.rst:339
msgid "`EpsonTMU220B__IMC_LDV_SCALE75__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:328
#: ../../content/applications/general/iot/config/troubleshooting.rst:340
msgid "`EpsonTMU220B__IMC_LDV_LDH__`"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:329
#: ../../content/applications/general/iot/config/troubleshooting.rst:341
msgid "`EpsonTMU220B__IMC_LDV_LDH_SCALE35__`"
msgstr ""
@@ -5332,39 +5344,39 @@ msgstr ""
msgid "Receipt format using naming convention: EpsonTMU220B__IMC_LDV_LDH_SCALE35__."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:347
#: ../../content/applications/general/iot/config/troubleshooting.rst:359
msgid "DYMO LabelWriter print issue"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:349
#: ../../content/applications/general/iot/config/troubleshooting.rst:361
msgid "The DYMO LabelWriter has a known issue in printing with the :abbr:`IoT (Internet of Things)` box. The OpenPrinting CUPS server installs the printer using :guilabel:`Local RAW Printer` drivers. In order to print anything, the correct :guilabel:`Make and Model` needs to be set, so the correct driver is referenced when using the device."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:354
#: ../../content/applications/general/iot/config/troubleshooting.rst:366
msgid "Additionally, a new printer needs to be added to reduce a print delay that occurs after updating the driver."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:358
#: ../../content/applications/general/iot/config/troubleshooting.rst:370
msgid "The DYMO LabelWriter 450 DUO printer is the recommended DYMO printer for use with Odoo and the :abbr:`IoT (Internet of Things)` box. It **must** already be connected to, and recognized on, the :abbr:`IoT (Internet of Things)` box."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:362
#: ../../content/applications/general/iot/config/troubleshooting.rst:374
msgid "The DYMO LabelWriter 450 DUO printer contains two printers in one: a label printer and a tape printer. Choosing the correct model (either DYMO LabelWriter 450 DUO Label (en) or DYMO LabelWriter 450 DUO Tape (en)) is crucial when configuring the following processes."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:366
#: ../../content/applications/general/iot/config/troubleshooting.rst:378
msgid "To keep things consistent, both of the following processes detail the configuration for the DYMO LabelWriter 450 DUO Label (en) model. Change the model when needed."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:372
#: ../../content/applications/general/iot/config/troubleshooting.rst:384
msgid "DYMO LabelWriter not printing"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:374
#: ../../content/applications/general/iot/config/troubleshooting.rst:386
msgid "In the case where the DYMO LabelWriter is not printing anything, a new driver needs to be installed."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:376
#: ../../content/applications/general/iot/config/troubleshooting.rst:388
msgid "First, open the OpenPrinting CUPS console by clicking :menuselection:`Printers server` at the bottom of the :abbr:`IoT (Internet of Things)` box homepage. Next, click on :menuselection:`Printers` in the top menu. Click into the printer in question, and select :guilabel:`Maintenance` in the first drop-down menu. Then, select :guilabel:`Modify Printer` in the second drop-down menu."
msgstr ""
@@ -5373,7 +5385,7 @@ msgid "Modify the make and model of the DYMO LabelWriter. Maintenance and Modify
"highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:386
#: ../../content/applications/general/iot/config/troubleshooting.rst:398
msgid "Next, select the specific network connection/printer that the modification should be made on. Click :guilabel:`Continue`."
msgstr ""
@@ -5381,7 +5393,7 @@ msgstr ""
msgid "Printer selection screen with Continue highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:393
#: ../../content/applications/general/iot/config/troubleshooting.rst:405
msgid "On the next page, click :guilabel:`Continue` to proceed to set the :guilabel:`Make` of the printer."
msgstr ""
@@ -5389,7 +5401,7 @@ msgstr ""
msgid "Printer modification screen with Continue highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:399
#: ../../content/applications/general/iot/config/troubleshooting.rst:411
msgid "Under :guilabel:`Make` select :guilabel:`DYMO` from the menu. Click on :guilabel:`Continue` to set the :guilabel:`Model`."
msgstr ""
@@ -5397,7 +5409,7 @@ msgstr ""
msgid "Setting the make page, with DYMO and continue highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:406
#: ../../content/applications/general/iot/config/troubleshooting.rst:418
msgid "On the following page, set the :guilabel:`Model` to :guilabel:`DYMO LabelWriter 450 DUO Label (en)` (or whichever DYMO printer model is being used). Click on :guilabel:`Modify Printer` to complete setting the new driver, a confirmation page will appear."
msgstr ""
@@ -5405,15 +5417,15 @@ msgstr ""
msgid "Setting the printer model page with DYMO LabelWriter 450 DUO Label (en) highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:414
#: ../../content/applications/general/iot/config/troubleshooting.rst:426
msgid "After being redirected to a confirmation page, acknowledging a successful update, click on the :menuselection:`Printers` button in the top menu."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:417
#: ../../content/applications/general/iot/config/troubleshooting.rst:429
msgid "All the printers installed on the OpenPrinting CUPS server appear, including the newly updated: :guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click into the printer that was just updated."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:421
#: ../../content/applications/general/iot/config/troubleshooting.rst:433
msgid "To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the :guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label will print out with a ten-second delay if the driver update was successful."
msgstr ""
@@ -5423,19 +5435,19 @@ msgid "Printing a test page from the administration drop-down menu in the OpenPr
"server."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:430
#: ../../content/applications/general/iot/config/troubleshooting.rst:442
msgid "To reduce this delay a new printer will need to be added, follow the process below."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:433
#: ../../content/applications/general/iot/config/troubleshooting.rst:445
msgid "DYMO LabelWriter print delay"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:435
#: ../../content/applications/general/iot/config/troubleshooting.rst:447
msgid "To resolve the delay issue after modifying the driver, the printer **must** be reinstalled. To reinstall the printer, open the OpenPrinting CUPS administration page by clicking :menuselection:`Printers server`, at the bottom of the :abbr:`IoT (Internet of Things)` box homepage. Then, click on :menuselection:`Administration` in the top menu, then click :guilabel:`Add a Printer`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:442
#: ../../content/applications/general/iot/config/troubleshooting.rst:454
msgid "If the DYMO LabelWriter 450 DUO printer is not printing at all, or is not recognizable (has a RAW driver type), then update the drivers on the device. See :ref:`troubleshooting/dymo/update_drivers`."
msgstr ""
@@ -5443,7 +5455,7 @@ msgstr ""
msgid "Add a printer button highlighted on the Printer CUPS management page."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:450
#: ../../content/applications/general/iot/config/troubleshooting.rst:462
msgid "On the next screen, in the :guilabel:`Local Printers` section, select the :guilabel:`DYMO LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label)` (or whichever DYMO printer model is being used) pre-installed printer. Click :guilabel:`Continue`."
msgstr ""
@@ -5451,7 +5463,7 @@ msgstr ""
msgid "Add a printer screen on OpenPrinting CUPS with DYMO LabelWriter 450 DUO Label highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:458
#: ../../content/applications/general/iot/config/troubleshooting.rst:470
msgid "On the following screen, modify the :guilabel:`Name` to something recognizable, as the original printer will still be present. Click :guilabel:`Continue` to be taken to the next screen."
msgstr ""
@@ -5459,7 +5471,7 @@ msgstr ""
msgid "Rename printer page in the 'Add a Printer' flow, with the name field highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:465
#: ../../content/applications/general/iot/config/troubleshooting.rst:477
msgid "Next, choose the :guilabel:`Model`. Select :guilabel:`DYMO LabelWriter 450 DUO Label (en)` (or whichever DYMO printer model is being used), and finally, click :guilabel:`Add Printer` to complete the installation."
msgstr ""
@@ -5468,11 +5480,11 @@ msgid "Choose model screen on the OpenPrinting CUPS console with model and add a
"highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:474
#: ../../content/applications/general/iot/config/troubleshooting.rst:486
msgid "After being redirected to a confirmation page, acknowledging a successful installation, click on the :menuselection:`Printers` button in the top menu."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:477
#: ../../content/applications/general/iot/config/troubleshooting.rst:489
msgid "All the printers installed on the OpenPrinting CUPS server appear, including the newly installed: :guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click into the printer that was just installed."
msgstr ""
@@ -5480,47 +5492,47 @@ msgstr ""
msgid "Printer page with newly installed printer highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:485
#: ../../content/applications/general/iot/config/troubleshooting.rst:497
msgid "To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the :guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label should print out immediately (one-to-two seconds delay)."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:495
#: ../../content/applications/general/iot/config/troubleshooting.rst:507
msgid "The Zebra printer does not print anything"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:497
#: ../../content/applications/general/iot/config/troubleshooting.rst:509
msgid "Zebra printers are quite sensitive to the format of the Zebra Programming Language (ZPL) code that is printed. If nothing comes out of the printer or blank labels are printed, try changing the format of the report that is sent to the printer by accessing :menuselection:`Settings --> Technical --> User Interface --> Views` in :ref:`developer mode <developer-mode>` and look for the corresponding template."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:504
#: ../../content/applications/general/iot/config/troubleshooting.rst:516
msgid "Check out Zebra's instructions on printing :abbr:`ZPL (Zebra Programming Language)` files `here <https://supportcommunity.zebra.com/s/article/Print-a-zpl-file-using-the-Generic-Text-Printer>`_."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:511
#: ../../content/applications/general/iot/config/troubleshooting.rst:523
msgid "The characters read by the barcode scanner do not match the barcode"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:513
#: ../../content/applications/general/iot/config/troubleshooting.rst:525
msgid "By default, most barcode scanners are configured in the US QWERTY format. If the barcode scanner uses a different layout, go to the form view of the device (:menuselection:`IoT App --> Devices --> Barcode Device`) and select the correct format."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:518
#: ../../content/applications/general/iot/config/troubleshooting.rst:530
msgid "Nothing happens when a barcode is scanned"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:520
#: ../../content/applications/general/iot/config/troubleshooting.rst:532
msgid "Make sure that the correct device is selected in the :menuselection:`Point of Sale` configuration and that the barcode is configured to send an `ENTER` character (keycode 28) at the end of every barcode. To do so, navigate to :menuselection:`PoS app --> 3-Dot Menu on the PoS --> IoT Box section --> Edit`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:526
#: ../../content/applications/general/iot/config/troubleshooting.rst:538
msgid "The barcode scanner is detected as a keyboard"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:529
#: ../../content/applications/general/iot/config/troubleshooting.rst:541
msgid "Some barcode scanners do not advertise themselves as barcode scanners but as a USB keyboard instead, and will not be recognized by the :abbr:`IoT (Internet of Things)` box."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:532
#: ../../content/applications/general/iot/config/troubleshooting.rst:544
msgid "The device type can be manually changed by going to its form view (:menuselection:`IoT App --> Devices --> Barcode Device`) and activating the :guilabel:`Is scanner` option."
msgstr ""
@@ -5528,15 +5540,15 @@ msgstr ""
msgid "Modifying the form view of the barcode scanner."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:540
#: ../../content/applications/general/iot/config/troubleshooting.rst:552
msgid "Barcode scanner processes barcode characters individually"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:542
#: ../../content/applications/general/iot/config/troubleshooting.rst:554
msgid "When accessing the mobile version of Odoo from a mobile device, or tablet, paired with a barcode scanner, via the :abbr:`IoT (Internet of Things)` box, the scanner may process each barcode character as an individual scan. In this case, the *Keyboard Layout* option **must** be filled out with the appropriate language of the barcode scanner on the *Barcode Scanner* form page."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:548
#: ../../content/applications/general/iot/config/troubleshooting.rst:560
msgid "Access the barcode scanner form page by navigating to :menuselection:`IoT App --> Devices --> Barcode Scanner`."
msgstr ""
@@ -5544,43 +5556,43 @@ msgstr ""
msgid "Barcode scanner form page, with keyboard layout option highlighted."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:555
#: ../../content/applications/general/iot/config/troubleshooting.rst:567
msgid "The :guilabel:`Keyboard Layout` is language based, and the options available vary, depending on the device and the language of the database. For example: :guilabel:`English (UK)`, :guilabel:`English (US)`, etc."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:563
#: ../../content/applications/general/iot/config/troubleshooting.rst:575
msgid "The cash drawer does not open"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:565
#: ../../content/applications/general/iot/config/troubleshooting.rst:577
msgid "The cash drawer should be connected to the printer and the :guilabel:`Cash drawer` checkbox should be ticked in the :abbr:`PoS (Point of Sale)` configuration. To do so, navigate to :menuselection:`POS app --> 3-Dot Menu on the POS --> IoT Box section --> Edit --> Receipt Printer --> Cashdrawer checkbox`."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:573
#: ../../content/applications/general/iot/config/troubleshooting.rst:585
msgid "Scales play a crucial role in the checkout process, especially for products sold by weight, rather than fixed pricing."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:577
#: ../../content/applications/general/iot/config/troubleshooting.rst:589
msgid "Set up Ariva S scales"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:579
#: ../../content/applications/general/iot/config/troubleshooting.rst:591
msgid "Odoo has determined that a specific setting in Ariva S series scales (manufactured by Mettler-Toledo, LLC.) needs modification, and a dedicated Mettler :abbr:`USB (Universal Serial Bus)`-to-proprietary RJ45 cable is required for the scale to function with Odoo's :abbr:`IoT (Internet of Things)` box."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:584
#: ../../content/applications/general/iot/config/troubleshooting.rst:596
msgid "To correctly configure the scale for recognition by the :abbr:`IoT (Internet of Things)` box, follow this setup process for the Ariva S series scales."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:588
#: ../../content/applications/general/iot/config/troubleshooting.rst:600
msgid "It is crucial to use the official Mettler :abbr:`USB (Universal Serial Bus)`-to-RJ45 cable during this process."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:592
#: ../../content/applications/general/iot/config/troubleshooting.rst:604
msgid "Cable"
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:594
#: ../../content/applications/general/iot/config/troubleshooting.rst:606
msgid "The Mettler part number is 72256236 - :abbr:`USB (Universal Serial Bus)`-to-:abbr:`POS (Point of Sale)` cable. Contact Mettler, or a partner, to purchase an authentic cable. Note that **no other** cable outside of this Mettler cable works for this configuration. Using a serial-only cable attached to a serial-to-:abbr:`USB (Universal Serial Bus)` adapter is **not** effective."
msgstr ""
@@ -5588,43 +5600,43 @@ msgstr ""
msgid "Authentic Mettler USB to POS cable, part number 72256236."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:606
#: ../../content/applications/general/iot/config/troubleshooting.rst:618
msgid "Refer to Mettler's Setup Guide for Ariva S series scales during the following configuration: `Ariva Checkout Scale User's Guide <https://www.mt.com/dam/RET_DOCS/Ariv.pdf>`_."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:609
#: ../../content/applications/general/iot/config/troubleshooting.rst:621
msgid "To begin, go to page 17 in the above manual for *Setup*. This guide lists potential settings for the Ariva S series scales."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:612
#: ../../content/applications/general/iot/config/troubleshooting.rst:624
msgid "Follow the instructions, along with the following process, to set the scale to setup mode. First, hold the **>T<** button for eight seconds, or until :guilabel:`CONF` appears."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:615
#: ../../content/applications/general/iot/config/troubleshooting.rst:627
msgid "Next, press **>T<** until :guilabel:`GRP 3` appears, then press **>0<** to confirm."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:617
#: ../../content/applications/general/iot/config/troubleshooting.rst:629
msgid "Under :guilabel:`3.1`, ensure the setting is set to :guilabel:`1` (USB Virtual COM ports). Press **>T<** to cycle through the options under group 3.1."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:620
#: ../../content/applications/general/iot/config/troubleshooting.rst:632
msgid "Once :guilabel:`3.1` is set to :guilabel:`1`, press **>0<** to confirm the selection. Continue to press **>0<** until :guilabel:`GRP 4` appears."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:623
#: ../../content/applications/general/iot/config/troubleshooting.rst:635
msgid "Now, press **>T<** until :guilabel:`EXIT` appears."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:626
#: ../../content/applications/general/iot/config/troubleshooting.rst:638
msgid "Do **not** make any other changes unless otherwise needed."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:628
#: ../../content/applications/general/iot/config/troubleshooting.rst:640
msgid "Once :guilabel:`EXIT` appears, press **>0<**. Following this, press **>0<** again to :guilabel:`SAVE`. Now the scale restarts."
msgstr ""
#: ../../content/applications/general/iot/config/troubleshooting.rst:631
#: ../../content/applications/general/iot/config/troubleshooting.rst:643
msgid "Finally, restart the :abbr:`IoT (Internet of Things)` box to recognize the changes made on the scale's configuration. After restarting, the scale appears as `Toledo 8217`, as opposed to the previous display, where it appeared as `Adam Equipment Serial`."
msgstr ""
+531 -95
View File
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 17.0\n"
"Project-Id-Version: Odoo 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-24 10:43+0000\n"
"POT-Creation-Date: 2024-10-07 14:21+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -246,6 +246,10 @@ msgstr ""
msgid ":doc:`appraisals/appraisal_analysis`"
msgstr ""
#: ../../content/applications/hr/appraisals.rst:177
msgid ":doc:`appraisals/skills_evolution`"
msgstr ""
#: ../../content/applications/hr/appraisals/appraisal_analysis.rst:3
msgid "Appraisal analysis"
msgstr ""
@@ -415,10 +419,12 @@ msgid "A report showing only the appraisals the user is responsible for, by stat
msgstr ""
#: ../../content/applications/hr/appraisals/appraisal_analysis.rst:114
#: ../../content/applications/hr/appraisals/skills_evolution.rst:163
msgid ":doc:`Odoo essentials reporting <../../essentials/reporting>`"
msgstr ""
#: ../../content/applications/hr/appraisals/appraisal_analysis.rst:115
#: ../../content/applications/hr/appraisals/skills_evolution.rst:164
msgid ":doc:`../../essentials/search`"
msgstr ""
@@ -574,23 +580,23 @@ msgstr ""
msgid "**Company**: the company the employee works for. This only appears in a multi-company database."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:29
#: ../../content/applications/hr/appraisals/new_appraisals.rst:28
msgid "**Date**: the date the appraisal was requested, or is scheduled for in the future."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:30
#: ../../content/applications/hr/appraisals/new_appraisals.rst:29
msgid "**Activities**: any :doc:`activities <../../essentials/activities>` that are scheduled for the appraisal, such as *Meetings* or *Phone Calls*."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:32
#: ../../content/applications/hr/appraisals/new_appraisals.rst:31
msgid "**Manager**: the employee's manager, indicated by the profile icon in the bottom-right corner of an appraisal card."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:34
#: ../../content/applications/hr/appraisals/new_appraisals.rst:33
msgid "**Status banner**: the status of the appraisal. A banner appears if an appraisal is marked as either *Canceled* or *Done*. If no banner is present, that means the appraisal has not happened, or has not been scheduled yet."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:38
#: ../../content/applications/hr/appraisals/new_appraisals.rst:37
msgid "To view the details of any appraisal, click on the card to open the appraisal form."
msgstr ""
@@ -598,83 +604,83 @@ msgstr ""
msgid "The Appraisals dashboard with each appraisal in its own box."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:45
#: ../../content/applications/hr/appraisals/new_appraisals.rst:44
msgid "Create an appraisal"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:47
#: ../../content/applications/hr/appraisals/new_appraisals.rst:46
msgid "To create a new appraisal, click the :guilabel:`New` button in the upper-left corner of the :guilabel:`Appraisals` dashboard. Doing so reveals a blank appraisal form. After entering a name in the first blank field, proceed to enter the following information on the form:"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:51
#: ../../content/applications/hr/appraisals/new_appraisals.rst:50
msgid ":guilabel:`Manager`: select the employee's manager from the drop-down menu. The manager is responsible for completing the *Manager's Feedback* section of the appraisal. This field auto-populates after the employee is selected, if they have a manager set on their employee profile."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:55
#: ../../content/applications/hr/appraisals/new_appraisals.rst:54
msgid ":guilabel:`Appraisal Date`: the current date is automatically entered in this field. This field is automatically updated once the appraisal is completed or cancelled, with the corresponding date of completion or cancellation."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:58
#: ../../content/applications/hr/appraisals/new_appraisals.rst:57
msgid ":guilabel:`Department`: select the employee's department from the drop-down menu. This field auto-populates after the employee is selected, if they have a department set on their employee profile."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:61
#: ../../content/applications/hr/appraisals/new_appraisals.rst:60
msgid ":guilabel:`Company`: select the employee's company from the drop-down menu. This field auto-populates after the employee is selected, if they have a company set on their employee profile."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:66
#: ../../content/applications/hr/appraisals/new_appraisals.rst:65
msgid "The only required fields for the appraisal form are the employee's name, the :guilabel:`Manager`, and the :guilabel:`Company`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:69
#: ../../content/applications/hr/appraisals/new_appraisals.rst:68
msgid "Once the form is complete, click the :guilabel:`Confirm` button to confirm the appraisal request."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:71
#: ../../content/applications/hr/appraisals/new_appraisals.rst:70
msgid "Once confirmed, the employee receives an email stating that an appraisal was requested, and is then prompted to schedule an appraisal date."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:74
#: ../../content/applications/hr/appraisals/new_appraisals.rst:73
msgid "The status changes to :guilabel:`Confirmed`, and the :guilabel:`Employee's Feedback` section of the :guilabel:`Appraisal` tab is grayed out. The information in that section only appears after the self-assessment is published by the employee. The :guilabel:`Final Rating` field also appears once the appraisal request is confirmed."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:79
#: ../../content/applications/hr/appraisals/new_appraisals.rst:78
msgid "If there are any existing appraisals for the employee, an :guilabel:`Appraisal` smart button appears at the top of the page, listing the total number of appraisals there are for the employee."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:83
#: ../../content/applications/hr/appraisals/new_appraisals.rst:82
msgid "Ask for feedback"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:85
#: ../../content/applications/hr/appraisals/new_appraisals.rst:84
msgid "As part of the appraisal process, the manager can request feedback on an employee from anyone in the company. Feedback is usually requested from co-workers and other people who interact with, or work with, the employee. This is to get a more well-rounded view of the employee, and aid in the manager's overall assessment."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:90
#: ../../content/applications/hr/appraisals/new_appraisals.rst:89
msgid "To request feedback, the appraisal **must** be confirmed. Once confirmed, an :guilabel:`Ask Feedback` button appears at the top of the form."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:93
#: ../../content/applications/hr/appraisals/new_appraisals.rst:92
msgid "When the :guilabel:`Ask Feedback` button is clicked, an :guilabel:`Ask Feedback` email pop-up form appears, using the :guilabel:`Appraisal: Ask Feedback` email template, which sends the :guilabel:`360 Feedback` survey."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:97
#: ../../content/applications/hr/appraisals/new_appraisals.rst:96
msgid "Enter the employees being asked to complete the survey in the :guilabel:`Recipients` field. Multiple employees may be selected."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:100
#: ../../content/applications/hr/appraisals/new_appraisals.rst:99
msgid "The email template has dynamic placeholders to personalize the message. Add any additional text to the email, if desired."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:103
#: ../../content/applications/hr/appraisals/new_appraisals.rst:102
msgid "If required, an :guilabel:`Answer Deadline` can be added, as well."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:105
#: ../../content/applications/hr/appraisals/new_appraisals.rst:104
msgid "If any attachments are needed, click the :icon:`fa-paperclip` :guilabel:`Attachments` button, and a file explorer window appears. Navigate to the file(s), select them, then click :guilabel:`Open`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:108
#: ../../content/applications/hr/appraisals/new_appraisals.rst:107
msgid "When the email is ready to send, click :guilabel:`Send.`"
msgstr ""
@@ -682,27 +688,27 @@ msgstr ""
msgid "The email pop-up when requesting feedback from other employees."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:115
#: ../../content/applications/hr/appraisals/new_appraisals.rst:114
msgid "Appraisal form"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:117
#: ../../content/applications/hr/appraisals/new_appraisals.rst:116
msgid "Once an appraisal is confirmed, the next steps require the employee to fill out the self-assessment, after which the manager completes their assessment."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:123
#: ../../content/applications/hr/appraisals/new_appraisals.rst:122
msgid "Employee's feedback"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:125
#: ../../content/applications/hr/appraisals/new_appraisals.rst:124
msgid "To complete their portion of feedback, employees should navigate to the main :menuselection:`Appraisals application` dashboard, where the only entries visible are appraisals for the employee, themselves, and/or anyone they manage and have to provide manager feedback for."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:129
#: ../../content/applications/hr/appraisals/new_appraisals.rst:128
msgid "Click on the appraisal to open the appraisal form. Enter responses in the :guilabel:`Employee's Feedback` section, under the :guilabel:`Appraisal` tab."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:132
#: ../../content/applications/hr/appraisals/new_appraisals.rst:131
msgid "When completed, click the :guilabel:`Not Visible to Manager` toggle (the default setting once an appraisal is confirmed). When clicked, the toggle changes to :guilabel:`Visible to Manager`."
msgstr ""
@@ -710,19 +716,19 @@ msgstr ""
msgid "The feedback section for the employee with the toggle button highlighted."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:142
#: ../../content/applications/hr/appraisals/new_appraisals.rst:141
msgid "Manager's feedback"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:144
#: ../../content/applications/hr/appraisals/new_appraisals.rst:143
msgid "After the employee has completed the :guilabel:`Employee's Feedback` section, under the :guilabel:`Appraisal` tab, it is time for the manager to fill out the :guilabel:`Manager's Feedback` section."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:148
#: ../../content/applications/hr/appraisals/new_appraisals.rst:147
msgid "The manager enters their responses in the fields in the :ref:`same manner as the employee <appraisals/employee-feedback>`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:151
#: ../../content/applications/hr/appraisals/new_appraisals.rst:150
msgid "When the feedback section is completed, click the :guilabel:`Not Visible to Employee` toggle (the default setting once an appraisal is confirmed). When clicked, the toggle changes to :guilabel:`Visible to Employee`."
msgstr ""
@@ -730,32 +736,32 @@ msgstr ""
msgid "The feedback section for both employees and managers. The toggle buttons are highlighted."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:160
#: ../../content/applications/hr/appraisals/new_appraisals.rst:159
#: ../../content/applications/hr/recruitment/add-new-applicants.rst:167
msgid "Skills tab"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:162
#: ../../content/applications/hr/appraisals/new_appraisals.rst:161
msgid "Part of an appraisal is evaluating an employee's skills, and tracking their progress over time. The :guilabel:`Skills` tab of the appraisal form auto-populates with the skills from the :ref:`employee form <employees/skills>`, once an appraisal is confirmed."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:166
#: ../../content/applications/hr/appraisals/new_appraisals.rst:165
msgid "Each skill is grouped with like skills, and the :guilabel:`Skill Level`, :guilabel:`Progress`, and :guilabel:`Justification` are displayed for each skill."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:169
#: ../../content/applications/hr/appraisals/new_appraisals.rst:168
msgid "Update any skills, or add any new skills to the :guilabel:`Skills` tab."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:171
#: ../../content/applications/hr/appraisals/new_appraisals.rst:170
msgid "If a skill level has increased, a reason for the improved rating can be entered into the :guilabel:`Justification` field, such as `took a fluency language test` or `received Javascript certification`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:176
#: ../../content/applications/hr/appraisals/new_appraisals.rst:175
msgid "Refer to the :ref:`Create a new employee <employees/skills>` document for detailed instructions on adding or updating a skill."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:179
#: ../../content/applications/hr/appraisals/new_appraisals.rst:178
msgid "After an appraisal is completed, and the skills have been updated, the next time an appraisal is confirmed, the updated skills populate the :guilabel:`Skills` tab."
msgstr ""
@@ -763,75 +769,75 @@ msgstr ""
msgid "The skills tab of an appraisal form, all filled out."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:187
#: ../../content/applications/hr/appraisals/new_appraisals.rst:186
msgid "The :guilabel:`Skills` tab can be modified **after** the employee and their manager have met and discussed the employee's appraisal."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:190
#: ../../content/applications/hr/appraisals/new_appraisals.rst:189
msgid "This is a common situation as the manager may not have all the necessary information to properly assess and update the employee's skills before meeting."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:194
#: ../../content/applications/hr/appraisals/new_appraisals.rst:193
msgid "Private Note tab"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:196
#: ../../content/applications/hr/appraisals/new_appraisals.rst:195
msgid "If managers want to leave notes that are only visible to other managers, they can be entered in the :guilabel:`Private Note` tab. This can be done before or after meeting with the employee to discuss the appraisal."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:200
#: ../../content/applications/hr/appraisals/new_appraisals.rst:199
msgid "The employee being evaluated does **not** have access to this tab, and the tab does **not** appear on their appraisal."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:204
#: ../../content/applications/hr/appraisals/new_appraisals.rst:203
msgid "Schedule a meeting"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:206
#: ../../content/applications/hr/appraisals/new_appraisals.rst:205
msgid "Once both portions of an appraisal are completed (the :ref:`employee <appraisals/employee-feedback>` and :ref:`manager <appraisals/manager-feedback>` feedback sections), it is time for the employee and manager to meet and discuss the appraisal."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:210
#: ../../content/applications/hr/appraisals/new_appraisals.rst:209
msgid "A meeting can be scheduled in one of two ways: either from the *Appraisals* application dashboard, or from an individual appraisal card."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:213
#: ../../content/applications/hr/appraisals/new_appraisals.rst:212
msgid "To schedule an appraisal from the dashboard of the *Appraisals* application, first navigate to :menuselection:`Appraisals app --> Appraisals`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:216
#: ../../content/applications/hr/appraisals/new_appraisals.rst:215
msgid "Click the :icon:`fa-clock-o` :guilabel:`(clock)` icon, beneath the appraisal date on the desired appraisal card, and a pop-up window appears. Then, click :icon:`fa-plus` :guilabel:`Schedule an activity` to create an activity from a :guilabel:`Schedule Activity` pop-up form that appears."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:220
#: ../../content/applications/hr/appraisals/new_appraisals.rst:219
msgid "Select :guilabel:`Meeting` for the :guilabel:`Activity Type` from the drop-down menu. Doing so causes the form to change, so only the :guilabel:`Activity Type` and :guilabel:`Summary` fields appear."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:224
#: ../../content/applications/hr/appraisals/new_appraisals.rst:223
msgid "Enter a brief description in the :guilabel:`Summary` field of the :guilabel:`Schedule Activity` pop-up form, such as `Annual Appraisal for (Employee)`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:227
#: ../../content/applications/hr/appraisals/new_appraisals.rst:226
msgid "Next, click the :guilabel:`Open Calendar` button. From the calendar page that appears, navigate to, and double-click on, the desired date and time for the meeting."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:230
#: ../../content/applications/hr/appraisals/new_appraisals.rst:229
msgid "Doing so opens a :guilabel:`New Event` pop-up form. From this pop-up form, make any desired modifications, such as designating a :guilabel:`Start` time, or modifying the default :guilabel:`Title` to the meeting."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:234
#: ../../content/applications/hr/appraisals/new_appraisals.rst:233
msgid "Add the appraisee in the :guilabel:`Attendees` section, and include anyone else who should also be in the meeting, if necessary."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:237
#: ../../content/applications/hr/appraisals/new_appraisals.rst:236
msgid "To make the meeting a video call, instead of an in-person meeting, click :icon:`fa-plus` :guilabel:`Odoo meeting`, and a :guilabel:`Videocall URL` link appears in the field."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:240
#: ../../content/applications/hr/appraisals/new_appraisals.rst:239
msgid "Once all the desired changes are complete, click :guilabel:`Save & Close`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:242
#: ../../content/applications/hr/appraisals/new_appraisals.rst:241
msgid "The meeting now appears on the calendar, and the invited parties are informed, via email."
msgstr ""
@@ -839,54 +845,244 @@ msgstr ""
msgid "The meeting form with all information entered for Ronnie Hart's annual appraisal."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:248
#: ../../content/applications/hr/appraisals/new_appraisals.rst:247
msgid "The other way to schedule a meeting is from the individual appraisal form. To do this, navigate to the :menuselection:`Appraisal app` dashboard, then click on an appraisal card."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:251
#: ../../content/applications/hr/appraisals/new_appraisals.rst:250
msgid "Next, click on the :icon:`fa-calendar` :guilabel:`Meeting` smart button, and the calendar loads. Follow the same directions above to create the meeting."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:254
#: ../../content/applications/hr/appraisals/new_appraisals.rst:253
msgid "For more detailed information on how to schedule activities, refer to the :doc:`activities <../../essentials/activities>` documentation."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:258
#: ../../content/applications/hr/appraisals/new_appraisals.rst:257
msgid "If no meetings are scheduled, the :guilabel:`Meeting` smart button reads :guilabel:`No Meeting`."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:261
#: ../../content/applications/hr/appraisals/new_appraisals.rst:260
msgid "Complete an appraisal"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:263
#: ../../content/applications/hr/appraisals/new_appraisals.rst:262
msgid "After the appraisal is complete, and both the manager and employee have met to discuss the appraisal, the appraisal can be marked as *Done*. When completed, click the :guilabel:`Mark as Done` button on the appraisal form, located in the top-left corner."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:267
#: ../../content/applications/hr/appraisals/new_appraisals.rst:266
msgid "Once the appraisal is marked as *Done*, the :guilabel:`Mark as Done` button disappears, and a :guilabel:`Reopen` button appears."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:271
#: ../../content/applications/hr/appraisals/new_appraisals.rst:270
msgid "Modifications are **not** possible once the appraisal is marked as done."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:273
#: ../../content/applications/hr/appraisals/new_appraisals.rst:272
msgid "To make any changes to an appraisal that is marked as *Done*, click the :guilabel:`Reopen` button."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:276
msgid "Then, click the :guilabel:`Confirm` button that appears, and make any modifications needed. Once all modifications are complete, click the the :guilabel:`Mark as Done` button again."
#: ../../content/applications/hr/appraisals/new_appraisals.rst:275
msgid "Then, click the :guilabel:`Confirm` button that appears, and make any modifications needed. Once all modifications are complete, click the :guilabel:`Mark as Done` button again."
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:280
#: ../../content/applications/hr/appraisals/new_appraisals.rst:279
msgid ":doc:`../appraisals/goals`"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:281
#: ../../content/applications/hr/appraisals/new_appraisals.rst:280
msgid ":doc:`../appraisals/appraisal_analysis`"
msgstr ""
#: ../../content/applications/hr/appraisals/new_appraisals.rst:281
msgid ":doc:`../appraisals/skills_evolution`"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:3
msgid "Skills evolution"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:5
msgid "In Odoo's **Appraisals** app, it is possible to view employee's skills as they progress over time in the :ref:`Skills Evolution <appraisals/identify-skills-evolution>` report, also known as the *Appraisal Skills Report*."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:9
msgid "Managers can use this to see who is achieving their various skill goals set on their appraisals, who is meeting their skill deadlines, who has the highest performance in terms of skill development, and more."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:13
msgid "The *Skills Evolution* report also provides the ability to :ref:`search for employees with specific skills <appraisals/identify-skills>` at certain levels, which can be helpful for scenarios where specific skills are required."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:20
msgid "Skills evolution report"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:22
msgid "To access this *Skills Evolution* report, navigate to :menuselection:`Appraisals app --> Reporting --> Skills Evolution`."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:25
msgid "Doing so reveals the :guilabel:`Appraisal Skills Report` page, which displays a report of all skills, grouped by employee, in alphabetical order, by default."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:29
msgid "Skill levels are **only** updated after an appraisal is marked as done. Any skill level changes from ongoing appraisals that have **not** been finalized are **not** included in this report."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:32
msgid "All the :guilabel:`Employee` lines are expanded, with all the various skill types nested below. Each individual skill type is collapsed, by default. To view the individual skills contained within a skill type, click anywhere on the skill type line to expand the data."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:36
msgid "Each skill has the following information listed:"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:38
#: ../../content/applications/hr/attendances.rst:218
msgid ":guilabel:`Employee`: the name of the employee."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:39
msgid ":guilabel:`Skill Type`: the category the skill falls under."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:40
msgid ":guilabel:`Skill`: the specific, individual skill."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:41
msgid ":guilabel:`Previous Skill Level`: the level the employee had previously achieved for the skill."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:42
msgid ":guilabel:`Previous Skill Progress`: the previous percentage of competency achieved for the skill (based on the :guilabel:`Skill Level`)."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:44
msgid ":guilabel:`Current Skill Level`: the current level the employee has achieved for the skill."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:45
msgid ":guilabel:`Current Skill Progress`: the current percentage of competency achieved for the skill."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:46
msgid ":guilabel:`Justification`: any notes entered on the skill, explaining the progress."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:48
msgid "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*. Skills that have regressed appear in red, as *Regression*."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:53
msgid "This report can be modified to find specific information by adjusting the :ref:`filters <search/filters>` and :ref:`groupings <search/group>` set in the search bar at the top."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:-1
msgid "A report showing all the skills grouped by employee."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:63
msgid "Use case: Identify employees with specific skills"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:65
msgid "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."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:69
msgid "In this example, the report is modified to show employees with an expert level of Javascript knowledge. To view only those employees, first remove all active filters in the search bar."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:72
msgid "Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click :guilabel:`Add Custom Filter` beneath the :icon:`fa-filters` :guilabel:`Filters` column to load an :guilabel:`Add Custom Filter` pop-up window."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:76
msgid "Using the drop-down menu in the first field, select :guilabel:`Skill`. Then, keep the second field as-is, and select :guilabel:`Javascript` from the third drop-down menu in the third field."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:79
msgid "Next, click :guilabel:`New Rule`, and another line appears. In this second line, select :guilabel:`Current Skill Level` for the first drop-down field, leave the second field as-is, then select :guilabel:`Expert` for the third drop-down field."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:83
msgid "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:`(down arrow)` icon after the word :guilabel:`any`, and select :guilabel:`all`."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:88
msgid "Finally, click the :guilabel:`Add` button."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:-1
#: ../../content/applications/hr/appraisals/skills_evolution.rst:0
msgid "The Custom Filter pop-up with the parameters set."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:94
msgid "Now, only employees that have an :guilabel:`Expert` level for the skill :guilabel:`Javascript` appear. In this example, only :guilabel:`Marc Demo` meets these criteria."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:-1
msgid "The employees with expert Javascript skills."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:102
msgid "Use case: Assess highest improvement"
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:104
msgid "Another way to modify the :guilabel:`Appraisal Skills Report` is to identify the employee who has the highest amount of improved skills over a specific period of time."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:107
msgid "To view this information, first remove the default filter in the search bar. Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click :guilabel:`Improvement` beneath the :icon:`fa-filter` :guilabel:`Filters` column. Enabling this filter only presents skills that have improved."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:112
msgid "It is possible to view the skills that have improved over a period of time, such as a specific quarter, or month. With the search bar drop-down menu still expanded, click :guilabel:`Add Custom Filter` at the bottom of the :icon:`fa-filter` :guilabel:`Filters` column, and an :guilabel:`Add Custom Filter` pop-up window appears."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:117
msgid "Select :guilabel:`Create Date` for the first drop-down field, then select :guilabel:`is between` for the second drop-down field. Once :guilabel:`is between` is selected, a second field appears after the last field. Using the calendar selector, select the date range to apply the filter to. Once all the fields are properly formatted, click :guilabel:`Add`."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:122
msgid "The custom filter presents only the skills that have improved during the specified time period, organized by employee."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:126
msgid "To determine the employee with the most amount of improved skills for the third quarter, remove the default filter in the search bar of the :guilabel:`Appraisal Skills Report`. Next, activate the :guilabel:`Improvement` filter, then click :guilabel:`Add Custom Filter` at the bottom of the :icon:`fa-filter` :guilabel:`Filters` column."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:131
msgid "In the resulting :guilabel:`Add Custom Filter` pop-up window, select :guilabel:`Create Date` for the first drop-down field, then select :guilabel:`is between` for the second drop-down field. Two date fields appear after :guilabel:`is between` is selected."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:135
msgid "Using the calendar selector, set the first date to :guilabel:`07/01/2024` and the second date to :guilabel:`09/30/2024`, then click :guilabel:`Add`."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:138
msgid "These filters present only the skills that have improved during the third quarter (between July 1st and September 30th, 2024), organized by employee."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:144
msgid "To view the number of employees and skills in further detail, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the top-right corner to view the data in a pivot table. This presents a pivot table with the employees populating the rows, and the only visible column represents the total number of improved skills."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:149
msgid "To expand more rows or columns to view which skill types had the most overall improvement, click :icon:`fa-plus-square` :guilabel:`Total` above the :guilabel:`Count` column, then click :guilabel:`Skill Type` from the resulting drop-down menu. This organizes the total improved skills by their respective skill type."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:155
msgid "In this example, it is determined that :guilabel:`Charles Reginald` had the largest improvement in the third quarter, with six improved skills. Additionally, they also had the most skill improvements for both :guilabel:`Languages` (three) and :guilabel:`Programming Languages` (two)."
msgstr ""
#: ../../content/applications/hr/appraisals/skills_evolution.rst:0
msgid "The pivot table showing the skill improvements for the third quarter."
msgstr ""
#: ../../content/applications/hr/attendances.rst:5
msgid "Attendances"
msgstr ""
@@ -1114,10 +1310,6 @@ msgstr ""
msgid "Main details"
msgstr ""
#: ../../content/applications/hr/attendances.rst:218
msgid ":guilabel:`Employee`: the name of the employee."
msgstr ""
#: ../../content/applications/hr/attendances.rst:219
msgid ":guilabel:`Check In`: the date and time the employee checked in."
msgstr ""
@@ -1682,6 +1874,158 @@ msgstr ""
msgid "Odoo *Employees* organizes a company's employee records, contracts, and departments."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:3
msgid "Certifications"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:5
msgid "When jobs require specific knowledge, it is necessary to track employee certifications to ensure the necessary knowledge and certifications are in place."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:8
msgid "Certifications include classes, tests, professional seminars, and more. There are no restrictions in terms of what type of certification records can be added in Odoo."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:12
msgid "To access the *Employee Certifications* report, the **Surveys** app **must** be installed."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:15
msgid "View certifications"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:17
msgid "To view a full list of all employee certifications, navigate to :menuselection:`Employees app --> Reporting --> Certifications`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:20
msgid "All certifications appear in a list view, grouped by employee. Each certification entry displays the following:"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:23
msgid ":guilabel:`Employee`: the employee's name, along with their avatar image."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:24
msgid ":guilabel:`Name`: the title of the certification."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:25
msgid ":guilabel:`Validity Start`: when the employee received the certification."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:26
msgid ":guilabel:`Validity End`: when the certification expires."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:27
msgid ":guilabel:`Certification`: the corresponding course in the **Surveys** app that was completed by the employee, if applicable."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:30
msgid "The entries are also color-coded. Current certifications that are still valid appear in black, expired certifications appear in red, and certifications that are going to expire within the next 90 days appear in orange."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:-1
msgid "The list of employee certifications."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:39
msgid "**Only** certification records with the *Display Type* set to *Certification* on their :ref:`certification form <employees/certifications-form>` appear on the :guilabel:`Employee Certifications` report. All other certifications appear in the resume section of the :doc:`employee form <new_employee>`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:45
msgid "View certifications by expiration status"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:47
msgid "When managing a large number of employees with a variety of certifications, it can be difficult to determine which employees need to keep necessary certifications current in the default list view. In this scenario, it is beneficial to view the certifications by expiration status."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:51
msgid "To do so, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` in the search bar, then click :guilabel:`Add Custom Group`, revealing a drop-down menu. Click :guilabel:`Expiration Status`, then click away from the drop-down menu to close it."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:56
msgid "After doing so, all the certifications are organized by status, starting with :guilabel:`Expired` certifications, then certifications that are :guilabel:`Expiring` soon (within the next 90 days), and lastly, certifications that are still :guilabel:`Valid`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:60
msgid "This view provides an easy way to see which employees have certifications that are going to expire soon, to determine which employees need to take action to keep their certifications current."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:-1
msgid "The list of employee certifications, grouped by status."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:70
msgid "Log a certification"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:72
msgid "To log a certification for an employee, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Click :guilabel:`New`, and a blank certification form loads. Enter the following information on the form:"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:76
msgid ":guilabel:`Title`: Enter a short description for the certification in this field."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:77
msgid ":guilabel:`Employee`: Using the drop-down menu, select the employee who received the certification."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:79
msgid ":guilabel:`Type`: Using the drop-down menu, select the type of certification received. This field determines where on the employee's resume the certification appears. To create a new :guilabel:`Type`, enter the type in the field, then click :guilabel:`Create \"type\"`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:83
msgid "The default options are:"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:85
msgid ":guilabel:`Experience`: Select this option to have the certification appear in the *Experience* section of the *Resume* tab on the :doc:`employee form <new_employee>`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:87
msgid ":guilabel:`Education`: Select this option to have the certification appear in the *Education* section of the *Resume* tab on the :doc:`employee form <new_employee>`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:89
msgid ":guilabel:`Internal Certification`: Select this option to have the certification appear in the *Internal Certification* section of the *Resume* tab on the :doc:`employee form <new_employee>`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:91
msgid ":guilabel:`Completed Internal Training`: Select this option to have the certification appear in *Completed Internal Training* section of the *Resume* tab on the :doc:`employee form <new_employee>`."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:95
msgid ":guilabel:`Display Type`: Select the visibility of the certification in this field. The default options are:"
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:98
msgid ":guilabel:`Classic`: Select this option to have the certification appear in the *Resume* section of the employee form, and **not** appear on the *Employee Certifications* report."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:100
msgid ":guilabel:`Course`: Select this option to have the certification appear in the *Resume* section of the employee form, and **not** appear on the *Employee Certifications* report. Once this option is selected, a :guilabel:`Course` field appears beneath the :guilabel:`Display Type` field. Using the drop-down menu, select the course the employee took. The course is created in the **Surveys** app."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:105
msgid ":guilabel:`Certification`: Select this option to have the certification appear in the *Resume* section of the employee form, **and** appear on the *Employee Certifications* report. Once this is selected, a :guilabel:`Certification` field appears beneath the :guilabel:`Display Type` field. Using the drop-down menu, select the certification the employee took."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:110
msgid ":guilabel:`Description`: Enter a description for the certification in this field."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:111
msgid ":guilabel:`Duration`: Click into the first field, and a calendar pop-over window appears. Click on the start and end dates for the certification validity period. When the correct dates are selected, click :icon:`fa-check` :guilabel:`Apply`, and both fields are populated."
msgstr ""
#: ../../content/applications/hr/employees/certifications.rst:-1
msgid "A certification form filled out for an OSHA certificate for construction."
msgstr ""
#: ../../content/applications/hr/employees/departments.rst:3
msgid "Departments"
msgstr ""
@@ -2608,6 +2952,102 @@ msgstr ""
msgid "Now, only archived employees appear on the dashboard. Click on the desired employee to open their employee form. On this form, click the :icon:`fa-gear` :guilabel:`(gear)` icon in the top-left corner, then click :guilabel:`Send HR Documents Access Link` from the resulting drop-down menu. The chatter logs that the link was sent."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:3
msgid "Employee retention report"
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:5
msgid "It is possible to determine the retention rate for a company by modifying an existing report."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:7
msgid "First, navigate to :menuselection:`Employees app --> Reporting --> Contracts` to open the :guilabel:`Employee Analysis` report. This report shows the number of all employees for the :guilabel:`Last 365 Days`, in a default :icon:`fa-line-chart` :guilabel:`Line Chart`."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:-1
msgid "The default Employees Analysis report."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:15
msgid "Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner, revealing a drop-down menu. Click :guilabel:`# Departure Employee` in the list, then click away from the drop-down menu to close it. Now, the report shows all the employees who were archived for the :guilabel:`Last 365 Days`."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:20
msgid "To view this information in an easier format, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the upper-right corner, and the data is presented in a pivot table."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:23
msgid "The various employees, organized by department, populate the rows. The columns display the following totals: the monthly :guilabel:`Wage`, the :guilabel:`Fuel Card` budget, total :guilabel:`Annual Employee Budget` (also referred to as the *annual salary*), the number of :guilabel:`New Employees`, as well as the number of :guilabel:`Departure Employees` (employees who left)."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:-1
msgid "The Employees Analysis report, modified to show departed employees only."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:33
msgid "Employee retention rate comparison report"
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:35
msgid "It is possible to compare data only for employees who left, compared to the total current employees, between two separate time periods. This is commonly referred to as the *employee retention rate*."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:38
msgid "To view these metrics, first open the :guilabel:`Employee Analysis` report by navigating to :menuselection:`Employees app --> Reporting --> Contracts`. Click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the upper-right corner to view the information in a pivot table."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:42
msgid "Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner, revealing a drop-down menu. Click :guilabel:`# New Employees`, :guilabel:`Annual Employee Budget`, :guilabel:`Fuel Card`, and :guilabel:`Wage` in the list, to deselect these metrics and hide them in the table. Then, click :guilabel:`Count` at the bottom of the list to enable that metric."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:47
msgid "Click away from the drop-down menu to close it. Now, the report shows all the employees who left the company (:guilabel:`# Departure Employee`), as well as the total number of employees (:guilabel:`Count`), for the :guilabel:`Last 365 Days`."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:51
msgid "To compare the data for the current year with the previous year, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` in the search bar, revealing multiple filter and grouping options. Click :guilabel:`Last 365 Days` in the :icon:`fa-filter` :guilabel:`Filters` column, to turn off that filter. Then, click :guilabel:`Date`, and click the current year (in this example, :guilabel:`2024`) from the resulting drop-down menu."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:57
msgid "Once a selection is made beneath :guilabel:`Date` in the :icon:`fa-filter` :guilabel:`Filters` column, a :icon:`fa-adjust` :guilabel:`Comparison` column appears. Click :guilabel:`Date: Previous Year` in the new column, then click off of the drop-down menu to close it."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:62
msgid "In Odoo, in order to access the :icon:`fa-adjust` :guilabel:`Comparison` column, a specific time *other than* :guilabel:`Last 365 Days` **must** be selected. If not, the :icon:`fa-adjust` :guilabel:`Comparison` column is **not** visible."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:66
msgid "Now, the pivot table displays the total number of employees who left the company (:guilabel:`# Departure Employee`), as well as the total number of employees (:guilabel:`Count`) in the columns. These are further divided by the two different years, and also displays the :guilabel:`Variation` between the two."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:71
msgid "The rows display the departments, and lists each individual employee for each department, in the rows."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:74
msgid "For a more concise view of this report, click :icon:`fa-minus-square-o` :guilabel:`Total` above the top row of the departments and employees, to collapse the rows. Now, the table presents the total number of employees who left the company for both years, compared to the total number of employees for both years, including the difference, in a percentage."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:80
msgid "In this example, :guilabel:`3` employees out of :guilabel:`83` left in 2023, and :guilabel:`8` employees out of :guilabel:`202` left in 2024. There was a :guilabel:`166.67%` increase in the employees who left in 2024 as compared to 2023. Additionally, there was a :guilabel:`143.37%` increase in the total number of employees in 2024 as compared to 2023."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:0
msgid "The report modified to show the difference between two years of employees who left."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:89
msgid "To view more detailed rates for each department, click :icon:`fa-plus-square` :guilabel:`Total` in the single row, revealing a drop-down menu, and click :guilabel:`Department`. Click away from the drop-down to close it, and now the pivot table displays the total number of employees who left (:guilabel:`# Departure Employee`), the total number of employees (:guilabel:`Count`), and the :guilabel:`Variation` (in a percentage) for both 2023 and 2024, organized by department."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:96
msgid "In this example, it can be determined that the :guilabel:`Management` department had the best retention rate in 2024 as compared to 2023, with a :guilabel:`Variation` rate of :guilabel:`-100%`. Additionally, it can be determined that the :guilabel:`Management / Research & Development` department had the most turnover, with a :guilabel:`Variation` of :guilabel:`300%`."
msgstr ""
#: ../../content/applications/hr/employees/retention_report.rst:0
msgid "The expanded employee retention report by department."
msgstr ""
#: ../../content/applications/hr/fleet.rst:5
msgid "Fleet"
msgstr ""
@@ -4181,7 +4621,7 @@ msgid ":guilabel:`Cost`: the total cost of the service, or repair."
msgstr ""
#: ../../content/applications/hr/fleet/service.rst:280
msgid ":guilabel:`Stage`: the status of the service, or repair. Options are :guilabel:`New`, :guilabel:`Running`, :guilabel:`Done`, or :guilabel:`Canceled`."
msgid ":guilabel:`Stage`: the status of the service, or repair. Options are :guilabel:`New`, :guilabel:`Running`, :guilabel:`Done`, or :guilabel:`Cancelled`."
msgstr ""
#: ../../content/applications/hr/fleet/service.rst:283
@@ -4760,7 +5200,7 @@ msgid ":guilabel:`Station`: the location of where the guest checked in."
msgstr ""
#: ../../content/applications/hr/frontdesk/visitors.rst:35
msgid ":guilabel:`Status`: the status of the guest. The options are :guilabel:`Checked-In`, :guilabel:`Planned`, :guilabel:`Checked-Out`, or :guilabel:`Canceled`."
msgid ":guilabel:`Status`: the status of the guest. The options are :guilabel:`Checked-In`, :guilabel:`Planned`, :guilabel:`Checked-Out`, or :guilabel:`Cancelled`."
msgstr ""
#: ../../content/applications/hr/frontdesk/visitors.rst:37
@@ -5071,7 +5511,7 @@ msgid "In Odoo's *Lunch* application, it is required to have someone manage the
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:9
msgid "Orders can be :ref:`canceled <lunch/cancel>`, :ref:`sent to the vendor <lunch/send-orders>`, :ref:`confirmed <lunch/confirm-orders>` upon arrival, and :ref:`employees can be notified <lunch/notify>`, either from the :ref:`Today's Orders <lunch/todays-orders>` dashboard, or the :ref:`Control Vendors <lunch/control_vendors>` dashboard."
msgid "Orders can be :ref:`cancelled <lunch/cancel>`, :ref:`sent to the vendor <lunch/send-orders>`, :ref:`confirmed <lunch/confirm-orders>` upon arrival, and :ref:`employees can be notified <lunch/notify>`, either from the :ref:`Today's Orders <lunch/todays-orders>` dashboard, or the :ref:`Control Vendors <lunch/control_vendors>` dashboard."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:14
@@ -5163,15 +5603,15 @@ msgid "All users can cancel an order, not just managers of the *Lunch* app."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:61
msgid "To cancel an order from a vendor, individual products **must** be canceled one at a time."
msgid "To cancel an order from a vendor, individual products **must** be cancelled one at a time."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:63
msgid "On the :guilabel:`Today's Orders` dashboard, a :guilabel:`✖️ Cancel` button is shown at the far-right of each product line that can be canceled. Click the :guilabel:`✖️ Cancel` button to cancel the order for that individual product."
msgid "On the :guilabel:`Today's Orders` dashboard, a :guilabel:`✖️ Cancel` button is shown at the far-right of each product line that can be cancelled. Click the :guilabel:`✖️ Cancel` button to cancel the order for that individual product."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:68
msgid "Only products with a red :guilabel:`Status` tag of :guilabel:`Ordered` can be canceled."
msgid "Only products with a red :guilabel:`Status` tag of :guilabel:`Ordered` can be cancelled."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:-1
@@ -5271,7 +5711,7 @@ msgid "All orders appear in a list view, grouped alphabetically by :guilabel:`Ve
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:174
msgid "Orders can be :ref:`canceled <lunch/cancel>`, :ref:`sent to the vendor <lunch/send-orders>`, :ref:`confirmed <lunch/confirm-orders>` upon arrival, and :ref:`employees can be notified <lunch/notify>` using the same method as on the :ref:`Today's Orders <lunch/todays-orders>` dashboard."
msgid "Orders can be :ref:`cancelled <lunch/cancel>`, :ref:`sent to the vendor <lunch/send-orders>`, :ref:`confirmed <lunch/confirm-orders>` upon arrival, and :ref:`employees can be notified <lunch/notify>` using the same method as on the :ref:`Today's Orders <lunch/todays-orders>` dashboard."
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:-1
@@ -5287,10 +5727,6 @@ msgid ":doc:`../lunch`"
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:191
msgid ":doc:`orders`"
msgstr ""
#: ../../content/applications/hr/lunch/management.rst:192
msgid ":doc:`user-accounts`"
msgstr ""
@@ -5509,7 +5945,7 @@ msgid "The total cost for each order is displayed on the line containing the ord
msgstr ""
#: ../../content/applications/hr/lunch/orders.rst:194
msgid "At the end of each product line with a status of :guilabel:`Ordered` or :guilabel:`Sent`, an :guilabel:`X Cancel` button appears. Click :guilabel:`X Cancel` to cancel that product order. Once a product order has been canceled, the money paid for that product is refunded, and appears in the user's account."
msgid "At the end of each product line with a status of :guilabel:`Ordered` or :guilabel:`Sent`, an :guilabel:`X Cancel` button appears. Click :guilabel:`X Cancel` to cancel that product order. Once a product order has been cancelled, the money paid for that product is refunded, and appears in the user's account."
msgstr ""
#: ../../content/applications/hr/lunch/orders.rst:199
@@ -5537,7 +5973,7 @@ msgid "Entries with a negative figure listed in the :guilabel:`Amount` column re
msgstr ""
#: ../../content/applications/hr/lunch/orders.rst:221
msgid "Entries with a positive balance either represent funds added to the user's lunch account, or canceled orders that were eventually refunded to the user. These appear in a `$XX.XX` format."
msgid "Entries with a positive balance either represent funds added to the user's lunch account, or cancelled orders that were eventually refunded to the user. These appear in a `$XX.XX` format."
msgstr ""
#: ../../content/applications/hr/lunch/orders.rst:-1
@@ -7834,7 +8270,7 @@ msgid "Odoo automatically checks bank account information. If there is an error
msgstr ""
#: ../../content/applications/hr/payroll/payslips.rst:217
msgid "If a payment needs to be canceled or refunded, click the corresponding :guilabel:`Cancel` or :guilabel:`Refund` button, located at the top-left of the screen."
msgid "If a payment needs to be cancelled or refunded, click the corresponding :guilabel:`Cancel` or :guilabel:`Refund` button, located at the top-left of the screen."
msgstr ""
#: ../../content/applications/hr/payroll/payslips.rst:221
@@ -8784,7 +9220,7 @@ msgid "In order to keep the employee's time off balances correct, the time off r
msgstr ""
#: ../../content/applications/hr/payroll/work_entries.rst:278
msgid "The most common scenario when this situation occurs, is when payslips are processed a day or two before the pay period ends, and an employee is unexpectedly sick on one of the last days of the pay period. The employee puts in a time off request for a day that was already processed on a payslip as a regular work day. Instead of canceling the payslip, modifying the work entries, and reissuing the paycheck, Odoo allows for those time off requests to be applied to the following pay period, instead."
msgid "The most common scenario when this situation occurs, is when payslips are processed a day or two before the pay period ends, and an employee is unexpectedly sick on one of the last days of the pay period. The employee puts in a time off request for a day that was already processed on a payslip as a regular work day. Instead of cancelling the payslip, modifying the work entries, and reissuing the paycheck, Odoo allows for those time off requests to be applied to the following pay period, instead."
msgstr ""
#: ../../content/applications/hr/payroll/work_entries.rst:285
@@ -9190,7 +9626,7 @@ msgid ":guilabel:`Recruitment: Interest`: this template is used to let the appli
msgstr ""
#: ../../content/applications/hr/recruitment.rst:322
msgid ":guilabel:`Recruitment: Schedule Interview`: this template is used to let the applicant know that they have passed the :guilabel:`Initial Qualification` stage and they will be contacted to set up an interview with the recruiter. This email is automatically sent out once the applicant is in the :guilabel:`Initial Qualification` stage."
msgid ":guilabel:`Recruitment: Schedule Interview`: this template is used to let the applicant know that they have passed the :guilabel:`Initial Qualification` stage, and they will be contacted to set up an interview with the recruiter. This email is automatically sent out once the applicant is in the :guilabel:`Initial Qualification` stage."
msgstr ""
#: ../../content/applications/hr/recruitment.rst:326
File diff suppressed because it is too large Load Diff

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