Compare commits

...

55 Commits

Author SHA1 Message Date
bve-odoo 5f3e8ec996 [FIX] microsoft_outlook: redirect URL error if not matching
_compute_outlook_uri is using get_base_url, providing the
web.base.url of the database that is subject to changed as
stated on the website documentation: if the user logging-in
is using another URL to connect to the db, and has the
Administration/Settings access right (res.groups: base.group_system)

opw-4056377
2024-07-26 10:12:10 +02:00
Odoo Translation Bot 7439ec721f [I18N] *: export 15.0 source terms 2024-07-20 02:37:02 +00:00
Odoo Translation Bot 71a3dac1e4 [I18N] Update translation terms from Transifex 2024-07-14 02:40:22 +02:00
Odoo Translation Bot 60eb05fecf [I18N] Update translation terms from Transifex 2024-07-07 02:40:27 +02:00
Felicious 4a527db915 [IMP] inventory: bpost customer accounts
closes odoo/documentation#10067

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-05 18:51:45 +00:00
“Dallas” 0e783b0dfa [FIX] german localization: Fixed broken GoBD link
If merged, this commit will replace the broken GoBD link with the correct link.

task ID: 4034487

closes odoo/documentation#10074

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-04 09:05:57 +00:00
Odoo Translation Bot d13a635d67 [I18N] Update translation terms from Transifex 2024-06-30 02:40:28 +02:00
Odoo Translation Bot 499ead0b98 [I18N] Update translation terms from Transifex 2024-06-23 02:40:34 +02:00
Adrien Widart (awt) 37ca3f1917 [IMP] supported_versions: end of saas-16.4
closes odoo/documentation#9884

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-21 15:36:42 +00:00
XPL 51323fba44 [IMP] upgrade: remove ticket go-live mention
The phrase is confusing and leads customers to contact support to carry out
the upgrade for them.

closes odoo/documentation#9880

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-06-21 09:57:56 +00:00
Tiffany Chang (tic) 89c308cad4 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#9879

Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-06-21 09:57:56 +00:00
guillaume gallant (guga) 3d5ff64bab [IMP] point_of_sale: improve text and replace pictures for Vantiv
task-3005157

closes odoo/documentation#9704

Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-06-20 09:18:45 +00:00
sovi-odoo 8b45c6692f [IMP] accounting/l10n: tell users to install l10n_fr_invoice_addr
In Odoo 15.0, an extra module is necessary to conform to the french
legislation. This will tell users to install it.

task-3856826

closes odoo/documentation#9820

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-17 09:13:59 +00:00
Odoo Translation Bot ba0319e9df [I18N] Update translation terms from Transifex 2024-06-16 02:40:29 +02:00
Audrey (auva) f9ab7b716b [FIX] voip: broken contact link
Changed https://www.axivox.com/contact into https://www.axivox.com/en/contact
as it didn't exist (anymore).

closes odoo/documentation#9757

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 08:10:07 +00:00
Odoo Translation Bot 4d51a12b1c [I18N] Update translation terms from Transifex 2024-06-09 02:40:34 +02:00
Felicious 91a2973306 [ADD] inventory: bpost
closes odoo/documentation#9637

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-07 17:43:24 +00:00
Loredana Perazzo 2e47b6a600 [IMP] pos: remove Epson TM-20 from list of compatible
task-3925551

closes odoo/documentation#9651

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-05 10:27:15 +00:00
Felicious 2cebcb0cda [IMP] inventory: reserve full vs partial packaging
closes odoo/documentation#9520

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-05 00:36:40 +00:00
Odoo Translation Bot b0f8a58eaf [I18N] Update translation terms from Transifex 2024-06-02 02:41:13 +02:00
Odoo's Mergebot 5584ea5266 [FIX] fix typo in warning message
Fix small typo introduced in #9116

closes odoo/documentation#9539

Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-30 11:30:21 +00:00
Xavier-Do e2241f76fc [FIX] fix typo in warning message 2024-05-30 12:50:51 +02:00
Tiffany Chang (tic) fcb1cbeeb7 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#9499

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2024-05-28 15:55:43 +00:00
Xavier-Do af73b44168 [IMP] adapt documentation for new install script
closes odoo/documentation#9116

Related: odoo/odoo#163788
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-28 14:36:49 +00:00
Yaroslav Soroko (yaso) 23a1c496bf [IMP] point_of_sale: Setup all Ingenico terminals
Currently we only tell how to setup Ingenico Lane/5000 terminal.
Actually, Lane/5000 and Move/5000 can be set up in almost the same way,
only the button to enter settings is different.

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

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

task-3879038

closes odoo/documentation#9344

Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
2024-05-27 13:13:42 +00:00
Odoo Translation Bot 25187b2e3a [I18N] Update translation terms from Transifex 2024-05-26 02:40:54 +02:00
Lara Martini (larm) 27eaaf860b [IMP] Payroll: add necessary contract modules
closes odoo/documentation#9314

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-24 19:15:02 +00:00
tiku-odoo e307186358 [ADD] essentials: contacts
closes odoo/documentation#9378

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-24 16:09:35 +00:00
Jonathan 9f279170a5 [IMP] inventory-mrp: rename the category into Supply Chain
closes odoo/documentation#9460

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-05-24 14:13:06 +00:00
Odoo Translation Bot d2c046768b [I18N] Update translation terms from Transifex 2024-05-19 02:40:49 +02:00
Lara Martini (larm) 7ec544281b [ADD] referrals: moving share jobs section to new doc
closes odoo/documentation#9319

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-17 21:14:19 +00:00
Sam Lieber (sali) 89f61f900e [FIX] extensions: icon_role fa icons
closes odoo/documentation#9243

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-16 16:27:16 +00:00
Loan (LSE) 258636564e [IMP] general: iot add payment terminals link
closes odoo/documentation#9305

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-13 23:38:07 +00:00
Odoo Translation Bot 861bf246ef [I18N] Update translation terms from Transifex 2024-05-12 02:40:52 +02:00
tiku-odoo 38fa0d3a4e [ADD] finance: avalara portal
closes odoo/documentation#9167

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-10 15:54:14 +00:00
tiku-odoo fe3cbf7231 [IMP]accounting: avatax api integration rewrite
closes odoo/documentation#8997

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-09 19:19:41 +00:00
tiku-odoo 314ddb2de3 [IMP] finance: avatax use add logging
closes odoo/documentation#9242

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-09 17:55:58 +00:00
tiku-odoo 97fabc9f37 [IMP] sales: amazon connector add fba warning block
closes odoo/documentation#9055

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-06 19:50:56 +00:00
tiku-odoo 41b6e2f227 [ADD] finance: avatax tax calculation
closes odoo/documentation#9114

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-06 18:52:09 +00:00
XPL df888df654 [IMP] settings: simplify the developer mode page
task-3849915

closes odoo/documentation#9121

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-06 17:49:33 +00:00
Odoo Translation Bot 22df52548b [I18N] Update translation terms from Transifex 2024-05-05 02:40:44 +02:00
Felicious eba257a7fa [IMP] inventory: stock input + output account fix
closes odoo/documentation#9104

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-03 18:27:57 +00:00
XPL 5c84c9fc7f [IMP] accounting: change the lock date warning to an optional tip
task-3787113

closes odoo/documentation#9149

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-03 17:22:30 +00:00
XPL 76b6dd384c [IMP] website: warn about privacy regulations for recaptcha and gtm
task-3896553
task-3896425

closes odoo/documentation#9145

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-03 14:25:06 +00:00
tiku-odoo ad3343d158 [IMP] admin: onprem password reset
closes odoo/documentation#8990

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-01 14:27:38 +00:00
Antoine Vandevenne (anv) 73ee687aca [IMP] Makefile: print the full traceback for unhandled exceptions
This should help reading the traceback on Runbot, where the log files
are not always kept.

closes odoo/documentation#9068

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-30 09:48:42 +00:00
Sam Lieber (sali) 1039a0b195 [ADD] extensions: icon_role font awesome
closes odoo/documentation#8469

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-29 13:47:51 +00:00
Victor Feyens 3e62a8c4cd [FIX] dev/tutorials: typo
courtesy of @/ChloeLiang

closes odoo/documentation#9043

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-29 09:14:44 +00:00
Tiffany Chang (tic) c90f683947 [I18N] *: export latest terms
closes odoo/documentation#9042

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2024-04-29 09:14:43 +00:00
Odoo Translation Bot eb6b4e67a4 [I18N] Update translation terms from Transifex 2024-04-28 02:40:27 +02:00
Loredana Perazzo 96fd984293 [ADD] pos: list of compatible epos printers
no-task related

closes odoo/documentation#8955

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
Co-authored-by: Timothy Kukulka <tiku@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
2024-04-25 19:58:15 +00:00
tiku-odoo ecd7d62a01 [IMP] database mgt: odoocom account add dup limit
closes odoo/documentation#8989

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-25 18:50:51 +00:00
tiku-odoo 376588000e [IMP] sales: partner autocomplete rewrite
closes odoo/documentation#8882

Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-25 18:50:50 +00:00
Loredana Perazzo 4a12c56fc4 [IMP] iot: admonition about the required certification to use a scale in POS
task-3876833

closes odoo/documentation#8833

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-25 11:09:47 +00:00
tiku-odoo 7878980c1c [IMP] marketing: sms essentials add automated action block
closes odoo/documentation#8820

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-24 14:37:22 +00:00
219 changed files with 125708 additions and 49317 deletions
+1
View File
@@ -18,6 +18,7 @@ CONFIG_DIR = .
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
-D is_remote_build=$(IS_REMOTE_BUILD) \
-T \
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
+2
View File
@@ -30,6 +30,8 @@ confirmation for the account deletion.
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
.. _odoocom/change_password:
Odoo.com account password change
================================
+2
View File
@@ -60,6 +60,8 @@ daily operations.
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
orders, etc.) are disabled by default on the duplicated database.
- Duplicated databases expire automatically after 15 days.
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
contact `support <https://www.odoo.com/help>`_ to raise the limit.
.. _odoo_online/rename:
+137 -1
View File
@@ -598,7 +598,143 @@ It should be stored securely, and should be generated randomly e.g.
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
which will generate a 32 characters pseudorandom printable string.
which generates a 32-character pseudorandom printable string.
Reset the master password
-------------------------
There may be instances where the master password is misplaced, or compromised, and needs to be
reset. The following process is for system administrators of an Odoo on-premise database detailing
how to manually reset and re-encrypt the master password.
.. seealso::
For more information about changing an Odoo.com account password, see this documentation:
:ref:`odoocom/change_password`.
When creating a new on-premise database, a random master password is generated. Odoo recommends
using this password to secure the database. This password is implemented by default, so there is a
secure master password for any Odoo on-premise deployment.
.. warning::
When creating an Odoo on-premise database the installation is accessible to anyone on the
internet, until this password is set to secure the database.
The master password is specified in the Odoo configuration file (`odoo.conf` or `odoorc` (hidden
file)). The Odoo master password is needed to modify, create, or delete a database through the
graphical user interface (GUI).
Locate configuration file
~~~~~~~~~~~~~~~~~~~~~~~~~
First, open the Odoo configuration file (`odoo.conf` or `odoorc` (hidden file)).
.. tabs::
.. tab:: Windows
The configuration file is located at: `c:\\ProgramFiles\\Odoo{VERSION}\\server\\odoo.conf`
.. tab:: Linux
Depending on how Odoo is installed on the Linux machine, the configuration file is located in
one of two different places:
- Package installation: `/etc/odoo.conf`
- Source installation: `~/.odoorc`
Change old password
~~~~~~~~~~~~~~~~~~~
Once the appropriate file has been opened, proceed to modify the old password in the configuration
file to a temporary password.
.. tabs::
.. group-tab:: Graphical user interface
After locating the configuration file, open it using a (:abbr:`GUI (graphical user
interface)`). This can be achieved by simply double clicking on the file. Then, the device
should have a default :abbr:`GUI (graphical user interface)` to open the file with.
Next, modify the master password line `admin_passwd = $pbkdf2-sha…` to `admin_passwd =
newpassword1234`, for example. This password can be anything, as long as it is saved
temporarily. Make sure to modify all characters after the `=`.
.. example::
The line appears like this:
`admin_passwd =
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
The modified line appears like this: `admin_passwd = newpassword1234`
.. group-tab:: Command-line interface
Modify the master password line using the following Unix command detailed below.
Connect to the Odoo server's terminal via Secure Shell (SSH) protocol, and edit the
configuration file. To modify the configuration file, enter the following command:
:command:`sudo nano /etc/odoo.conf`
After opening the configuration file, modify the master password line `admin_passwd =
$pbkdf2-sha…` to `admin_passwd = newpassword1234`. This password can be anything, as long as
it is saved temporarily. Make sure to modify all characters after the `=`.
.. example::
The line appears like this:
`admin_passwd =
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
The modified line appears like this: `admin_passwd = newpassword1234`
.. important::
It is essential that the password is changed to something else, rather than triggering a new
password reset by adding a semicolon `;` at the beginning of the line. This ensures the database
is secure throughout the entire password reset process.
Restart Odoo server
~~~~~~~~~~~~~~~~~~~
After setting the temporary password, a restart of the Odoo server is **required**.
.. tabs::
.. group-tab:: Graphical user interface
To restart the Odoo server, first, type `services` into the Windows :guilabel:`Search` bar.
Then, select the :guilabel:`Services` application, and scroll down to the :guilabel:`Odoo`
service.
Next, right click on :guilabel:`Odoo`, and select :guilabel:`Start` or :guilabel:`Restart`.
This action manually restarts the Odoo server.
.. group-tab:: Command-line interface
Restart the Odoo server by typing the command: :command:`sudo service odoo15 restart`
.. note::
Change the number after `odoo` to fit the specific version the server is running on.
Use web interface to re-encrypt password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, navigate to `/web/database/manager` or `http://server_ip:port/web/database/manager` in a
browser.
.. note::
Replace `server_ip` with the IP address of the database. Replace `port` with the numbered port
the database is accessible from.
Next, click :guilabel:`Set Master Password`, and type in the previously-selected temporary password
into the :guilabel:`Master Password` field. Following this step, type in a :guilabel:`New Master
Password`. The :guilabel:`New Master Password` is hashed (or encrypted), once the
:guilabel:`Continue` button is clicked.
At this point, the password has been successfully reset, and a hashed version of the new password
now appears in the configuration file.
.. seealso::
For more information on Odoo database security, see this documentation:
:ref:`db_manager_security`.
Supported Browsers
==================
+9 -5
View File
@@ -273,18 +273,22 @@ Dependencies
.. tab:: Debian/Ubuntu
For Debian-based systems, the packages are listed in the `debian/control
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
On Debian/Ubuntu, the following commands should install the required packages:
.. code-block:: console
$ cd /CommunityPath
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
$ cd odoo #CommunityPath
$ sudo ./setup/debinstall.sh
The `setup/debinstall.sh` script will parse the `debian/control
<{GITHUB_PATH}/debian/control>` file and install the found packages.
.. tab:: Install with pip
.. warning::
Using pip may lead to security issues and broken dependencies; only do this if you
know what you are doing.
As some of the Python packages need a compilation step, they require system libraries to
be installed.
@@ -50,7 +50,7 @@ This matrix shows the support status of every version.
- November 2023
- October 2026 (planned)
* - Odoo saas~16.4
- |green|
- |red|
- N/A
- N/A
- August 2023
+5 -7
View File
@@ -280,9 +280,7 @@ Upgrading the production database
---------------------------------
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
database can be used as your main database without any issues, it is time to plan the go-live day. It
can be planned in coordination with Odoo's upgrade support analysts, reachable via the `support page
<https://odoo.com/help>`__.
database can be used as your main database without any issues, it is time to plan the go-live day.
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
the upgrade at a time when the use of the database is minimal.
@@ -293,11 +291,11 @@ still successful, especially if it takes a long time to finish. Fully rehearsing
process the day before upgrading the production database is also recommended.
.. important::
- Going into production without first testing may lead to:
Going into production without first testing may lead to:
- Users failing to adjust to the changes and new features
- Business interruptions (e.g., no longer having the possibility to validate an action)
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
- Users failing to adjust to the changes and new features
- Business interruptions (e.g., no longer having the possibility to validate an action)
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
The process of upgrading a production database is similar to upgrading a test database with a few
exceptions.
+1
View File
@@ -5,5 +5,6 @@ Odoo essentials
.. toctree::
essentials/activities
essentials/contacts
essentials/export_import_data
essentials/in_app_purchase
@@ -0,0 +1,238 @@
========
Contacts
========
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
the company does business with through Odoo. A contact is a repository of vital business
information, facilitating communication and business transactions.
Contact form
============
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
:guilabel:`Create`. A new form appears where various contact information can be added.
Contact type
------------
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
Name
----
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
appears throughout the database. This field is **mandatory**.
.. tip::
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
first name field.
Address
-------
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
.. tip::
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
Address`.
Additional fields
-----------------
Additional details are included on the initial form. The following fields are available:
- :guilabel:`VAT`: Value Added Tax number.
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
on :guilabel:`Individual`).
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
:guilabel:`Individual`).
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
message by hovering over the field on the saved form, and clicking the desired option.
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
- :guilabel:`Email`: enter the email address with the domain.
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
menu, and selecting one. To create a new one, type the new tag in the field, and click
:guilabel:`Create` from the resulting drop-down menu.
Contacts & Addresses tab
------------------------
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
example, a specific contact person for the company can be listed here.
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
.. image:: contacts/contact-form-add-address.png
:align: center
:alt: Add a contact/address to the contact form.
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
Address` field at the top to reveal a drop-down menu of address-related options.
Select any of the following options:
- :guilabel:`Contact`: adds another contact to the existing contact form.
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
- :guilabel:`Private Address`: adds a private address to the existing contact form.
.. image:: contacts/create-contact-window.png
:align: center
:alt: Create a new contact/address on a contact form.
Once an option is selected, enter the corresponding contact information that should be used for the
specified address type.
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
selected. This is similar to the :guilabel:`Individual` contact.
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
applicable to the customer or contact.
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
Sales & Purchase tab
--------------------
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
**or** *Point of Sale* applications are installed.
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
:guilabel:`Fiscal Position` from the drop-down menu.
Sales section
~~~~~~~~~~~~~
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
Point Of Sale section
~~~~~~~~~~~~~~~~~~~~~
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
of a *Loyalty Program*.
Purchase section
~~~~~~~~~~~~~~~~
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
Misc section
~~~~~~~~~~~~
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
information for this contact. If this contact should only be accessible for one company in a
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
*Helpdesk* SLA policy to this contact.
Accounting tab
--------------
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
Identifier, if necessary.
Internal Notes tab
------------------
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
left on this contact form, just like on the contact form noted above.
Partner Assignment tab
----------------------
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
Review` configurations. These are **only** present when the *Enterprise Resellers* module is
installed.
Membership tab
--------------
Finally, there is the :guilabel:`Membership` tab, which can help users manage any memberships that
are being offered to this specific contact. It should be noted that this tab only appears when the
*Members* applications is installed.
Smart buttons
=============
At the top of the contact form, there are some additional options available, known as *smart
buttons*.
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
Odoo integrates information from every single app, so there are many smart buttons.
.. example::
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
related to this customer from the *CRM* app are accessible.
.. tip::
If the corresponding applications are installed, their related smart buttons appear
automatically on a contact form.
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
this, should there be any outstanding/on-file for this contact.
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
clicking the :guilabel:`Go to Website` smart button.
Archive contacts
----------------
If a user decides they no longer want to have this contact active, the record can be archived. To do
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
:guilabel:`Archive`.
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
With this contact successfully archived, as indicated by a banner at the top, they do not show up
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
.. tip::
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
the contact is restored.
.. seealso::
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
- `Odoo's eLearning Contacts tutorial
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -25,11 +25,14 @@ to reflect the change in inventory valuation. However, Odoo does **not** automat
valuation <inventory/avg_price/leaving_inventory>`.
.. note::
This document addresses a specific use case for theoretical purposes. Navigate :ref:`here
<inventory/inventory_valuation_config>` for instructions on how to set up and use |AVCO| in Odoo.
This document addresses a specific use case for theoretical purposes. For instructions on how to
set up and use |AVCO|, refer to the :doc:`inventory valuation configuration
<../../../inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
doc.
.. seealso::
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
- :doc:`Using inventory valuation
<../../../inventory_and_mrp/inventory/management/reporting/using_inventory_valuation>`
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
Configuration
@@ -41,7 +44,8 @@ product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` a
:guilabel:`Inventory Valuation` to `Automated`.
.. seealso::
:ref:`Inventory valuation configuration <inventory/inventory_valuation_config>`
:doc:`Inventory valuation configuration
<../../../inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
Using average cost valuation
============================
@@ -101,8 +101,9 @@ correctly reporting a balance of zero. If that is the case, set an :guilabel:`Al
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
Dates`.
.. warning::
Setting an :guilabel:`All Users Lock Date` is **irreversible** and cannot be removed.
.. tip::
Install the :guilabel:`Irreversible Lock Date` (`account_lock`) module to make the :guilabel:`All
Users Lock Date` *irreversible* once set.
.. note::
A specific year-end closing entry is **optional** in order to close out the **profit and loss
@@ -1,74 +1,408 @@
:show-content:
==================
Avatax integration
AvaTax integration
==================
Avatax is a tax calculation provider that can be integrated in Odoo.
Avalara's *AvaTax* is a cloud-based tax software. Integrating *AvaTax* with Odoo provides real-time
and region-specific tax calculations when users sell, purchase, and invoice items in Odoo. *AvaTax*
tax calculation is supported with every United Nations charted country, including inter-border
transactions.
.. important::
*AvaTax* is only available for integration with databases/companies that have locations in the
United States and Canada. This means the fiscal position/country of a database can only be set to
the United States or Canada. For more information, reference this documentation:
:ref:`avatax/fiscal_country`.
*AvaTax* accounts for location-based tax rates for each state, county, and city. It improves
remittance accuracy by paying close attention to laws, rules, jurisdiction boundaries, and special
circumstances (like, tax holidays, and product exemptions). Companies who integrate with *AvaTax*
can maintain control of tax-calculations in-house with this simple :abbr:`API (application
programming interface)` integration.
.. important::
Some limitations exist in Odoo while using *AvaTax* for tax calculation:
- *AvaTax* is **not** supported in Odoo's *Point of Sale* app, because a dynamic tax calculation
model is excessive for transactions within a single delivery address, such as stores or
restaurants.
- *AvaTax* and Odoo use the company address and **not** the warehouse address.
- Exercise tax is **not** supported. This includes tobacco/vape taxes, fuel taxes, and other
specific industries.
.. seealso::
Avalara's support documents: `About AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
Set up on AvaTax
================
To use *AvaTax*, an account with Avalara is required for the setup. If one has not been set up yet,
connect with Avalara to purchase a license: `Avalara: Let's Talk
<https://www.avalara.com/us/en/get-started.html>`_.
.. tip::
Upon account setup, take note of the *AvaTax* :guilabel:`Account ID`. This will be needed in the
:ref:`Odoo setup <avatax/credentials>`. In Odoo, this number is the :guilabel:`API ID`.
Then, `create a basic company profile
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Create_a_Basic_company_profile.html&_LANG=enus>`_.
Create basic company profile
----------------------------
Collect essential business details for the next step: locations where tax is collected,
products/services sold (and their sales locations), and customer tax exemptions, if applicable.
Follow the Avalara documentation for creating a basic company profile:
#. `Add company information
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_your_company_information.html&_LANG=enus>`_.
#. `Tell us where the company collects and pays tax
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Tell_us_where_you_collect_and_pay_tax.html&_LANG=enus>`_.
#. `Verify jurisdictions and activate the company
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Verify_your_jurisdictions_and_activate_your_company.html&_LANG=enus>`_.
#. `Add other company locations for location-based filing
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_other_company_locations_for_location-based_filing.html&_LANG=enus>`_.
#. `Add a marketplace to the company profile
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_marketplace_transactions_to_your_company_profile.html&_LANG=enus>`_.
.. _avatax/create_avalara_credentials:
Connect to AvaTax
-----------------
After creating the basic company profile in Avalara, connect to *AvaTax*. This step links Odoo and
*AvaTax* bidirectionally.
Navigate to either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_ environment. This will depend on which type of Avalara account the
company would like to integrate.
.. seealso::
`Sandbox vs production environments in Avalara
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
Log in to create the :guilabel:`License Key`. Go to :menuselection:`Settings --> License and API
Keys`. Click :guilabel:`Generate License Key`.
.. note::
A warning appears stating: `If your business app is connected to Avalara solutions, the
connection will be broken until you update the app with the new license key. This action cannot
be undone.`
Generating a new license key breaks the connection with existing business apps using the *AvaTax*
integration. Make sure to update these apps with the new license key.
If this will be the first :abbr:`API (application programming interface)` integration being made
with *AvaTax* and Odoo, then click :guilabel:`Generate license key`.
If this is an additional license key, ensure the previous connection can be broken. There is
**only** one license key associated with each of the Avalara sandbox and production accounts.
.. important::
Copy this key to a safe place. It is **strongly encouraged** to backup the license key for future
reference. This key cannot be retrieved after leaving this screen.
Odoo configuration
==================
Before using *AvaTax*, there are some additional configurations in Odoo to ensure tax calculations
are made accurately.
Verify that the Odoo database contains necessary data. The country initially set up in the database
determines the fiscal position, and aids *AvaTax* in calculating accurate tax rates.
.. _avatax/fiscal_country:
Fiscal country
--------------
To set the :guilabel:`Fiscal Country`, navigate to :menuselection:`Accounting app --> Configuration
--> Settings`.
.. seealso::
:doc:`../../fiscal_localizations`
Under the :guilabel:`Taxes` section, set the :guilabel:`Fiscal Country` feature to :guilabel:`United
States` or :guilabel:`Canada`. Then, click :guilabel:`Save`.
Company settings
----------------
All companies operating under the Odoo database should have a full and complete address listed in
the settings. Navigate to the :menuselection:`Settings app`, and under the :guilabel:`Companies`
section, ensure there is only one company operating the Odoo database. Click :guilabel:`Update Info`
to open a separate page to update company details.
If there are multiple companies operating in the database, click :guilabel:`Manage Companies` to
load a list of companies to select from. Update company information by clicking into the specific
company.
Database administrators should ensure that the :guilabel:`Street...`, :guilabel:`Street2...`,
:guilabel:`City`, :guilabel:`State`, :guilabel:`ZIP`, and :guilabel:`Country` are all updated for
the companies.
This ensures accurate tax calculations and smooth end-of-year accounting operations.
.. seealso::
- :doc:`../../../general/companies`
- :doc:`../get_started`
Module installation
-------------------
Next, ensure that the Odoo *AvaTax* module is installed. To do so, navigate to the
:menuselection:`Apps application`. In the :guilabel:`Search...` bar, type in `avatax`, and press
:kbd:`Enter`. The following results populate:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`Avatax`
- `account_avatax`
- Default *AvaTax* module. This module adds the base *AvaTax* features for tax calculation.
* - :guilabel:`Avatax for SO`
- `account_avatax_sale`
- Includes the information needed for tax calculation on sales orders in Odoo.
* - :guilabel:`Avatax for Subscriptions`
- `account_avatax_sale_subscription`
- This module includes the features required for tax calculation on subscriptions in Odoo.
* - :guilabel:`Account Avatax - Ecommerce`
- `website_sale_account_avatax`
- Includes tax calculation features for the checkout process on Odoo eCommerce.
* - :guilabel:`Account AvaTax - Ecommerce - Delivery`
- `website_sale_delivery_avatax`
- Includes tax calculation features for the delivery process on Odoo eCommerce.
Click the :guilabel:`Install` button on the module labeled :guilabel:`Avatax`: `account_avatax`.
Doing so installs the following modules:
- :guilabel:`Avatax`: `account_avatax`
- :guilabel:`Avatax for SO`: `account_avatax_sale`
- :guilabel:`Account Avatax - Ecommerce`: `website_sale_account_avatax`
Should *AvaTax* be needed for Odoo *Subscriptions*, or for delivery tax in Odoo *eCommerce*, then
install those modules individually by clicking on :guilabel:`Install`.
.. _avatax/credentials:
Credential configuration
========================
Odoo AvaTax settings
--------------------
To integrate Avatax with Odoo, go to :menuselection:`Accounting --> Configuration --> Settings -->
Taxes` and add your Avatax credentials in the :guilabel:`Avatax` section.
.. tip::
If you do not yet have credentials, click on :guilabel:`How to Get Credentials`.
To integrate the *AvaTax* :abbr:`API (application programming interface)` with Odoo, go to
:menuselection:`Accounting app --> Configuration --> Settings` section. The :guilabel:`AvaTax`
fields in the :guilabel:`Taxes` section is where the *AvaTax* configurations are made and the
credentials are entered in.
.. image:: avatax/avatax-configuration-settings.png
:align: center
:alt: Configure Avatax settings
:alt: Configure AvaTax settings
.. _avatax/tax-mapping:
Prerequisites
~~~~~~~~~~~~~
First, select the :guilabel:`Environment` in which the company wishes to use *AvaTax* in. It can
either be :guilabel:`Sandbox` or :guilabel:`Production`.
.. seealso::
For help determining which *AvaTax* environment to use (either :guilabel:`Production` or
:guilabel:`Sandbox`), visit: `Sandbox vs Production environments
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
Credentials
~~~~~~~~~~~
Now, the credentials can be entered in. The *AvaTax* :guilabel:`Account ID` should be entered in the
:guilabel:`API ID` field, and the :guilabel:`License Key` should be entered in the :guilabel:`API
Key` field.
.. important::
The :guilabel:`Account ID` can be found by logging into the *AvaTax* portal (`sandbox
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_). In the
upper-right corner, click on the initials of the user and :guilabel:`Account`. The
:guilabel:`Account ID` is listed first.
To access the :guilabel:`License Key` see this documentation:
:ref:`avatax/create_avalara_credentials`.
For the :guilabel:`Company Code` field, enter the Avalara company code for the company being
configured. Avalara interprets this as `DEFAULT`, if it is not set. The :guilabel:`Company Code` can
be accessed in the Avalara management portal.
First, log into the *AvaTax* portal (`sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_). Then, navigate to :menuselection:`Settings --> Manage Companies`.
The :guilabel:`Company Code` value is located in the row of the :guilabel:`Company` in the
:guilabel:`Company Code` column.
.. image:: avatax/company-code.png
:align: center
:alt: AvaTax company code highlighted on the company details page.
Transaction options
~~~~~~~~~~~~~~~~~~~
There are two transactional settings in the Odoo *AvaTax* settings that can be configured:
:guilabel:`Use UPC` and :guilabel:`Commit Transactions`.
If the checkbox next to :guilabel:`Use UPC` is ticked, the transactions will use Universal Product
Codes (UPC), instead of custom defined codes in Avalara. Consult a certified public accountant (CPA)
for specific guidance.
Should the :guilabel:`Commit Transactions` checkbox be ticked, then, the transactions in the Odoo
database will be committed for reporting in *AvaTax*.
Address validation
~~~~~~~~~~~~~~~~~~
The *Address Validation* feature ensures that the most up-to-date address by postal standards is set
on a contact in Odoo. This is important to provide accurate tax calculations for customers.
.. important::
The :guilabel:`Address Validation` feature only works with partners/customers in North America.
Additionally, tick the checkbox next to the :guilabel:`Address validation` field.
.. important::
For accurate tax calculations, it is best practice to enter a complete address for the contacts
saved in the database. However, *AvaTax* can still function by implementing a best effort attempt
using only the :guilabel:`Country`, :guilabel:`State`, and :guilabel:`Zip code`. These are the
three minimum required fields.
:guilabel:`Save` the settings to implement the configuration.
.. tip::
Manually :guilabel:`Validate` the address by navigating to the :menuselection:`Contacts app`, and
selecting a contact. Now that the *AvaTax* module has been configured on the database, a
:guilabel:`Validate` button appears directly below the :guilabel:`Address`.
Click :guilabel:`Validate`, and a pop-up window appears with a :guilabel:`Validated Address` and
:guilabel:`Original Address` listed. If the :guilabel:`Validated Address` is the correct mailing
address for tax purposes, click :guilabel:`Save Validated`.
.. image:: avatax/validate-address.png
:align: center
:alt: Validate address pop-up window in Odoo with "Save Validated" button and "Validated
Address" highlighted.
.. warning::
All previously-entered addresses for contacts in the Odoo database will need to be validated
using the manually validate process outlined above. Addresses are not automatically validated if
they were entered previously. This only occurs upon tax calculation.
Test connection
~~~~~~~~~~~~~~~
After entering all the above information into the *AvaTax* setup on Odoo, click :guilabel:`Test
connection`. This ensures the :guilabel:`API ID` and :guilabel:`API KEY` are correct, and a
connection is made between Odoo and the *AvaTax* application programming interface (API).
Sync parameters
~~~~~~~~~~~~~~~
Upon finishing the configuration and settings of the *AvaTax* section, click the :guilabel:`Sync
Parameters` button. This action synchronizes the exemption codes from *AvaTax*.
.. _avatax/fiscal_positions:
Fiscal position
---------------
Next, navigate to :menuselection:`Accounting app --> Configuration --> Accounting: Fiscal
Positions`. A :guilabel:`Fiscal Position` is listed named, :guilabel:`Automatic Tax Mapping
(AvaTax)`. Click it to open *AvaTax's* fiscal position configuration page.
Here, ensure that the :guilabel:`Use AvaTax API` checkbox is ticked.
Optionally, tick the checkbox next to the field labeled: :guilabel:`Detect Automatically`. Should
this option be ticked, then, Odoo will automatically apply this :guilabel:`Fiscal Position` for
transactions in Odoo.
Enabling :guilabel:`Detect Automatically` also makes specific parameters, such as :guilabel:`VAT
required`, :guilabel:`Foreign Tax ID`, :guilabel:`Country Group`, :guilabel:`Country`,
:guilabel:`Federal States`, or :guilabel:`Zip Range` appear. Filling these parameters filters the
:guilabel:`Fiscal Position` usage. Leaving them blank ensures all calculations are made using this
:guilabel:`Fiscal Position`.
.. warning::
Should the :guilabel:`Detect Automatically` checkbox not be ticked, each customer will need to
have the :guilabel:`Fiscal Position` set on their :guilabel:`Sales and Purchase` tab of the
contact record. To do so, navigate to :menuselection:`Sales app --> Order --> Customers`, or
:menuselection:`Contacts app --> Contacts`. Then, select a customer or contact to set the fiscal
position on.
Navigate to the :guilabel:`Sales and Purchase` tab, and down to the section labeled,
:guilabel:`Fiscal Position`. Set the :guilabel:`Fiscal Position` field to the fiscal position
for the customer.
.. seealso::
:doc:`fiscal_positions`
AvaTax accounts
~~~~~~~~~~~~~~~
Upon selecting the checkbox option for :guilabel:`Use AvaTax API` a new :guilabel:`AvaTax` tab
appears. Click into this tab to reveal two different settings.
The first setting is the :guilabel:`AvaTax Invoice Account`, while the second is, :guilabel:`AvaTax
Refund Account`. Ensure both accounts are set for smooth end-of-year record keeping. Consult a
certified public accountant (CPA) for specific guidance on setting both accounts.
Click :guilabel:`Save` to implement the changes.
Tax mapping
===========
-----------
The Avatax integration is available on Sale Orders and Invoices with the included Avatax fiscal
The *AvaTax* integration is available on sale orders and invoices with the included *AvaTax* fiscal
position.
Product category mapping
~~~~~~~~~~~~~~~~~~~~~~~~
Before using the integration, specify an :guilabel:`Avatax Category` on the product categories.
Navigate to :menuselection:`Inventory app --> Configuration --> Product Categories`. Select the
product category to add the :guilabel:`AvaTax Category` to. In the :guilabel:`AvaTax Category`
field, select a category from the drop-down menu, or :guilabel:`Search More...` to open the complete
list of options.
.. image:: avatax/avatax-category.png
:align: center
:alt: Specify Avatax Category on products
:alt: Specify AvaTax Category on products.
Avatax Categories may be overridden or set on individual products as well.
Product mapping
~~~~~~~~~~~~~~~
*AvaTax* Categories may be set on individual products, as well. To set the :guilabel:`Avatax
Category` navigate to :menuselection:`Inventory app --> Products --> Products`. Select the product
to add the :guilabel:`Avatax Category` to. Under the :guilabel:`General Information` tab, on the
far-right, is a selector field labeled: :guilabel:`Avatax Category`. Finally, click the drop-down
menu, and select a category, or :guilabel:`Search More...` to find one that is not listed.
.. note::
If both the product, and its category, have an :guilabel:`AvaTax Category` set, the product's
:guilabel:`AvaTax Category` takes precedence.
.. image:: avatax/override-avatax-product-category.png
:align: center
:alt: Override product categories as needed
:alt: Override product categories as needed.
.. _avatax/address-mapping:
Address validation
==================
Manually validate customer addresses by clicking the :guilabel:`Validate address` link in the
customer form view.
.. image:: avatax/validate-customer-address.png
:align: center
:alt: Validate customer addresses
If preferred, choose to keep the newly validated address or the original address in the wizard that
pops up.
.. image:: avatax/choose-customer-address.png
:align: center
:alt: Address validation wizard
.. _avatax/tax-calculation:
Tax calculation
===============
Automatically calculate taxes on Odoo quotations and invoices with Avatax by confirming the
documents. Alternatively, calculate the taxes manually by clicking the :guilabel:`Compute taxes
using Avatax` button while these documents are in draft mode.
Use the :guilabel:`Avalara Code` field that's available on customers, quotations, and invoices to
cross-reference data in Odoo and Avatax.
.. important::
Mapping an :guilabel:`AvaTax Category` on either the *Product* or *Product Category* should be
completed for every *Product* or *Product Category*, depending the route that is chosen.
.. seealso::
- :doc:`fiscal_positions`
- :doc:`avatax/avatax_use`
- :doc:`avatax/avalara_portal`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
.. toctree::
:titlesonly:
avatax/avatax_use
avatax/avalara_portal
@@ -0,0 +1,259 @@
.. _avatax/portal:
=======================
Avalara (Avatax) portal
=======================
Avalara's (*AvaTax*) management console offers account management options including: viewing/editing
the transactions sent from Odoo to *AvaTax*, details on how the taxes are calculated, tax reporting,
tax exemption management, and tax return resources.
.. tip::
Avalara is the software developer of the tax software, *AvaTax*.
To access the console, first, navigate to either Avalara's `sandbox
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_ environment.
This will depend on which type of account was set in the :doc:`integration <../avatax>`. Log in to
the management console.
.. image:: avalara_portal/avalara-portal.png
:align: center
:alt: Avalara dashboard after logging into management portal.
.. seealso::
For more information see Avalara's documentation: `Activate your Communications Customer Portal
account
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=Activate_your_Communications_Customer_Portal_account.html&_LANG=enus>`_.
.. _avalara/portal-transactions:
Transactions
============
To access transactions, click in the :guilabel:`Transactions` link on the main dashboard upon
logging into the :ref:`avatax/portal`. To manually access the *Transactions* page, while logged into
the Avalara console, navigate to :menuselection:`Transactions --> Transactions`.
.. image:: avalara_portal/avalara-transactions.png
:align: center
:alt: Avalara portal with the transactions shortcut highlighted.
Edit transaction
----------------
Click into a transaction to reveal more details about the transaction. These details include
sections on :guilabel:`Invoice detail`, :guilabel:`Additional info`, and :guilabel:`Customer info`.
Click :icon:`fa-pencil` :guilabel:`Edit document details` to make changes to the transaction.
A :guilabel:`Discount` can be added to adjust the invoice. This is especially useful in cases where
the transaction has already synced with Avalara / *AvaTax*, and changes need to be made afterward.
.. _avalara/portal-filter:
Filter
------
Filter transactions on the :guilabel:`Transactions` page, by setting the :guilabel:`From` and
:guilabel:`To` fields, and configuring other fields to filter by, including:
- :guilabel:`Document Status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Document Code`: any of the following options, :guilabel:`Exactly match`,
:guilabel:`Starts with`, or :guilabel:`Contains`.
- :guilabel:`Customer/Vendor Code`: the customer/vendor code in Odoo (e.g. `Contact18`).
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
- :guilabel:`Region`: the region of the country, which varies based on the :guilabel:`Country`
selection.
Click :icon:`fa-plus` :guilabel:`Filters` to access the following filter conditions:
- :guilabel:`Document Type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
Invoice`.
- :guilabel:`Import ID`: represents the import ID of the document.
Sort by
-------
On the :guilabel:`Transactions` page, transactions will be listed below, according to the set
:ref:`avalara/portal-filter`, located in the top half of the page. The following columns are
available by default, to sort by ascending or descending order:
- :guilabel:`Doc Code`: either of the following options, :guilabel:`Exactly match`,
:guilabel:`Starts with`, or :guilabel:`Contains`.
- :guilabel:`Doc Status`: either of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Cust/Vendor Code` : this is the customer/vendor code in Odoo (e.g. Contact18).
- :guilabel:`Region`: this is the region of the country, this will vary based on the
:guilabel:`Country` selection.
- :guilabel:`Amount`: the numeric amount of the total amount on the Odoo document.
- :guilabel:`Tax`: the numeric amount of the tax applied to the total.
.. image:: avalara_portal/transactions.png
:align: center
:alt: Transactions page on the Avalara portal with the filter and sort-by options highlighted.
Customize columns
~~~~~~~~~~~~~~~~~
Additional columns can be added by clicking the :icon:`fa-cog` :guilabel:`Customize columns`. On the
resulting popover window, click the drop-down menu for the :guilabel:`column` that should be
changed.
The following columns can be added for additional transactional information:
- :guilabel:`AvaTax calculated`: the amount of tax calculated by *AvaTax*.
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
- :guilabel:`Cust/vendor code`: the customer/vendor code in Odoo (e.g. `Contact18`).
- :guilabel:`Currency`: the standardized abbreviation for the currency the amount total is in.
- :guilabel:`Doc date`: the document's date of creation.
- :guilabel:`Doc status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Doc type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
Invoice`.
- :guilabel:`Import ID`: represents the import ID of the document.
- :guilabel:`Last modified`: timestamp of the last time the document was modified.
- :guilabel:`Location code`: the location code used to calculate the tax, based on the delivery
address.
- :guilabel:`PO number`: the purchase order number.
- :guilabel:`Reference code`: the Odoo reference code (e.g. NV/2024/00003)
- :guilabel:`Region`: the region of the country,which varies based on the :guilabel:`Country`
selection.
- :guilabel:`Salesperson code`: the numeric ID of the user assigned to the sales order in Odoo.
- :guilabel:`Tax date`: the month/day/year of the tax calculation.
- :guilabel:`Tax override type`: where an exemption would appear, should there be none, the field
populates with :guilabel:`None`.
To add a new column click the :icon:`fa-plus` :guilabel:`Column`.
.. seealso::
For more information on *AvaTax* transactions, refer to this Avalara documentation: `Transactions
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=transactions.html&_LANG=enus>`_.
Import-export
-------------
While on the :ref:`avalara/portal-transactions`, click :icon:`fa-download` :guilabel:`Import
transactions` or :icon:`fa-upload` :guilabel:`Export transactions` to import or export transactions.
Reports
-------
To access reporting, navigate to the :menuselection:`Reports` link in the top menu of the Avalara
management console. Next, select from one of the available reporting tabs: :guilabel:`Transactions
reports`, :guilabel:`Liability & tax return reports`, or :guilabel:`Exemption reports`.
.. tip::
Additionally, there is a :guilabel:`Favorites` tab and :guilabel:`Downloads` tab. The
:guilabel:`Favorites` tab contains any favorited report configurations for the Avalara user. The
:guilabel:`Downloads` tab contains a list view where the user can download the high-volume
transaction reports created in the last 30 days.
Make a selection for the :guilabel:`Report Category`, and the :guilabel:`Report Name`, under the
:guilabel:`Select a report` section.
Next, fill out the :guilabel:`Select report details` section. These options will vary based on the
tab selected above.
Depending on the report size, the following two options are available in the section labeled,
:guilabel:`Select the approximate number of transactions for your report`: :guilabel:`Create and
download the report instantly` (for small reports) and :guilabel:`Create and download the report in
the background` (for larger reports). Select one or the other depending on the volume of
transactions in this report.
Finally, under the section labeled, :guilabel:`Report preview and export` make a selection of the
file type to download. Either a :guilabel:`.PDF` or :guilabel:`.XLS` can be chosen. Alternatively,
the file can be previewed by selecting the :guilabel:`Preview` option.
After making all the configurations, click :guilabel:`Create report` to download the report. Click
:icon:`fa-star-o` :guilabel:`Make this report a favorite` to save the report configuration to the
user's favorites.
After the report is created, click :icon:`fa-download` :guilabel:`Download` to download the file to
the device.
.. tip::
Select a pre-configured report from the :guilabel:`Frequently used reports` section of the
reporting dashboard.
Access this list by clicking on the :guilabel:`Reports` option in the top menu of the Avalara
management console, and scroll to the bottom of the page.
.. seealso::
`See Avalara's documentation: Reports in AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=rjq1671176624730&topicId=Reports_in_AvaTax.html&_LANG=enus>`_.
Add more jurisdictions
======================
Additional jurisdictions (tax locations) can be added in the Avalara management console. Navigate to
either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_ environment. This will depend on which type of account was set in the
:doc:`integration <../avatax>`.
Next, navigate to :menuselection:`Settings --> Where you collect tax`. Choose between the three
different tabs, depending on the business need. The first tab is :guilabel:`Sales and use tax`,
where tax can be collected for the United States. Click the :icon:`fa-plus` :guilabel:`Add to where
you collect sales and use tax` to add another location where the company collects sales and use tax.
The second option, is the :guilabel:`VAT/GST` tab where the :icon:`fa-plus` :guilabel:`Add a country
or territory where you collect VAT/GST` can be selected to add another country or territory where
the company collects VAT/GST.
Finally, on the far-right, is the :guilabel:`Customs duty` tab, where a country can be added where
the company collects customs duty. Simply click on the :icon:`fa-plus` :guilabel:`Add a country
where you calculate customs duty` icon below the tab.
.. image:: avalara_portal/where-you-collect-tax.png
:align: center
:alt: AvaTax management console, on the Where you collect tax page, with the add button and
sales and use tax tab highlighted.
.. seealso::
`See Avalara's documentation: Add local jurisdiction taxes
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=bla1700809896571_bla1700809896571&topicId=nbw1698727575499.html&_LANG=enus>`_.
Tax exemption certificate
=========================
Tax exemption certificates for customers can be added into the Avalara management console, so that
*AvaTax* is aware of which customers may be exempt from paying certain taxes. To add an *exception
certificate* navigate to :menuselection:`Exemptions --> Customer certificates`. From there, click on
the :icon:`fa-plus` :guilabel:`Add a certificate` to configure an exemption.
.. warning::
An Avalara subscription to Exemption Certificate Management (ECM) is required in order to attach
certificate images, and to be ready for an audit. For more on subscribing to this add-on, visit
`Avalara
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hff1682048150115_hff1682048150115&topicId=fol1682356576230.html&_LANG=enus>`_.
End-of-year operations
======================
Avalara's services include tax return services, for when it is time to file taxes at the end of the
year. To access Avalara's tax services log, into the `management portal
<https://admin.avalara.com/>`_. Then, from the main dashboard, click :guilabel:`Returns`. Avalara
will prompt the Avalara user to log in for security purposes, and redirect the user to the *Returns*
portal.
.. image:: avalara_portal/avalara-returns.png
:align: center
:alt: Avalara portal with the returns shortcut highlighted.
Click :guilabel:`Get started` to begin the tax return process. For more information, refer to this
Avalara documentation: `About Managed Returns
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hps1656397152776_hps1656397152776&topicId=Learn_about_Managed_Returns.html&_LANG=enus>`_.
.. tip::
Alternatively, click on the :menuselection:`Returns` button in the top menu of the Avalara
management console.
.. seealso::
- :doc:`../avatax`
- :doc:`avatax_use`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,164 @@
==========
AvaTax use
==========
AvaTax is a tax calculation software that can be integrated with Odoo in the United States and
Canada. Once the :doc:`integration setup <../avatax>` is complete, the calculated tax is simple and
automatic.
Tax calculation
===============
Automatically calculate taxes on Odoo quotations and invoices with AvaTax by confirming the
documents during the sales flow. Alternatively, calculate the taxes manually by clicking the
:guilabel:`Compute taxes using Avatax` button while these documents are in draft mode.
.. tip::
Clicking the :guilabel:`Compute taxes using Avatax` button recalculates taxes if any product
lines are edited on the invoice.
.. image:: avatax_use/calculate-avatax.png
:align: center
:alt: Sales quotation with the confirm and compute taxes using AvaTax buttons highlighted.
The tax calculation is triggered during the following :ref:`automatic trigger
<avatax/automatic-triggers>` and :ref:`manual trigger <avatax/manual-triggers>` circumstances.
.. _avatax/automatic-triggers:
Automatic triggers
------------------
- When the sales rep sends the quote by email with :guilabel:`Send by email` button (pop-up).
- When the customer views the online quote on the portal.
- When a quote is confirmed and becomes a sales order.
- When the customer views the invoice on the portal.
- When a draft invoice is validated.
- When the customer views the subscription in the portal.
- When a subscription generates an invoice.
- When the customer gets to the last screen of the eCommerce checkout.
.. _avatax/manual-triggers:
Manual triggers
---------------
- :guilabel:`Compute taxes using Avatax` button at the bottom of the quote.
- :guilabel:`Compute taxes using Avatax` button at the top of the invoice.
.. tip::
Use the :guilabel:`Avalara Partner Code` field that is available on customer records, quotations,
and invoices to cross-reference data in Odoo and AvaTax. This field is located under the
:menuselection:`Other info` tab of the sales order or quotation in the :guilabel:`Sales` section.
On the customer record, navigate to *Contacts app* and select a contact. Then open the
:guilabel:`Sales & Purchase` tab and the :guilabel:`Avalara Partner Code` under the
:guilabel:`Sales` section.
.. important::
The :guilabel:`Automatic Tax Mapping (AvaTax)` fiscal position is also applied on those Odoo
documents, like subscriptions.
.. seealso::
- :doc:`../fiscal_positions`
AvaTax synchronization
======================
Synchronization occurs with AvaTax, when the *invoice* is created in Odoo. This means the sales tax
is recorded with Avalara (AvaTax software developer).
To do so, navigate to :menuselection:`Sales app --> Orders --> Quotations`. Select a quotation from
the list.
After confirming a quotation and validating the delivery, click :guilabel:`Create Invoice`. Indicate
whether it is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or
:guilabel:`Down payment (fixed amount)`.
Then click :guilabel:`Create and view invoice`. The recorded taxes can be seen in the
:guilabel:`Journal Items` tab of the invoice. There will be different taxes depending on the
location of the :guilabel:`Delivery Address`.
.. image:: avatax_use/journal-items.png
:align: center
:alt: Journal items highlighted on a invoice in Odoo.
Finally, press the :guilabel:`Confirm` button to complete the invoice and synchronize with the
AvaTax portal.
.. warning::
An invoice cannot be :guilabel:`Reset to draft` because this causes de-synchronization with the
AvaTax Portal. Instead, click :guilabel:`Add credit note` and state: `Sync with AvaTax Portal`.
See this documentation: :doc:`../../../accounting/customer_invoices/credit_notes`.
Fixed price discounts
=====================
Add a fixed price discount to a valuable customer by click :guilabel:`Add a line` on the customer's
invoice. Add the product discount and set the :guilabel:`Price` to either a positive or negative
value. To recalculate the taxes, click :guilabel:`Compute taxes using Avatax`.
.. tip::
Tax calculation can even be done on negative subtotals and credit notes.
Logging
=======
It is possible to log Avalara/*AvaTax* actions in Odoo for further analysis, or verification of
functionality. Logging is accessible through the *AvaTax* settings.
To start logging *AvaTax* actions, first, navigate to the :menuselection:`Accounting app -->
Configuration --> Settings`.
Then, in the :guilabel:`Taxes` section, under the :guilabel:`AvaTax` settings, click
:guilabel:`Start logging for 30 minutes`.
Upon starting the log process, Odoo will log all Avalara/*AvaTax* actions performed in the database.
To view the logs, click on :guilabel:`Show logs` to the right of the :guilabel:`Start logging for 30
minutes`. This reveals a detailed list of Avalara/*AvaTax* actions. This list is sortable by the
following columns:
- :guilabel:`Created on`: timestamp of the *AvaTax* calculation.
- :guilabel:`Created by`: numeric value of the user in the database.
- :guilabel:`Database name`: name of the database.
- :guilabel:`Type`: two values can be chosen for this field, :guilabel:`Server` or
:guilabel:`Client`.
- :guilabel:`Name`: Avalara service name. In this case, it will be *AvaTax*.
- :guilabel:`Level`: by default, this will be `INFO`.
- :guilabel:`Path`: indicates the path taken to make the calculation.
- :guilabel:`Line`: indicates the line the calculation is made on.
- :guilabel:`Function`: indicates the calculation taken on the line.
.. image:: avatax_use/logging.png
:align: center
:alt: Avalara logging page with top row of list highlighted.
Click into the log line to reveal another field, called :guilabel:`Message`.
This field populates a raw transcription of the transaction, which involves the creation (or
adjustment) of a sales invoice using the Avalara *AvaTax* API.
The transaction includes details, such as addresses for shipping from and to, line items describing
the products or services, tax codes, tax amounts, and other relevant information.
The :guilabel:`Message` contains the calculated taxes for different jurisdictions and confirms the
creation (or adjustment) of the transaction.
.. tip::
Custom fields can be made using Odoo *Studio*. Click the :icon:`fa-ellipsis-v`
:guilabel:`(ellipsis)` menu to the far-right of the header row. Then click :icon:`fa-plus`
:guilabel:`Add custom field`. This action opens Odoo *Studio*.
.. important::
Odoo *Studio* requires a *custom* pricing plan. Consult the database's customer success manager
for more information on switching plans. Or to see if Odoo *Studio* is included in the database's
current pricing plan. See this documentation: :doc:`../../../../studio`.
.. seealso::
- :doc:`../avatax`
- :doc:`avalara_portal`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
- :doc:`../fiscal_positions`
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@@ -2,6 +2,11 @@
France
======
.. important::
You must :doc:`install <../../general/apps_modules>` the **France - Adding Mandatory Invoice
Mentions (Decree no. 2022-1299)** (`l10n_fr_invoice_addr`) module to comply with the `local
legislation <https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000046383394>`_.
.. _france/fec:
FEC - Fichier des Écritures Comptables
@@ -172,7 +172,7 @@ German Tax Accounting Standards: Odoo's guide to GoBD Compliance
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
+45 -79
View File
@@ -1,100 +1,66 @@
.. _developer-mode:
===========================
Developer Mode (debug mode)
Developer mode (debug mode)
===========================
The developer mode (or debug mode) unlocks access to extra and advanced tools in Odoo. There are
several ways to activate the developer mode: through the
:ref:`settings <general/developer_mode/settings>`, the
:ref:`browser extension <general/developer_mode/browser-extension>`, through
the :ref:`command palette <general/developer_mode/command-palette>` or the
:ref:`URL <general/developer_mode/url>`.
The developer mode, also known as debug mode, unlocks access to advanced :ref:`tools and settings
<developer-mode/tools>` in Odoo.
.. _general/developer_mode/settings:
Activate through the Settings
=============================
The debug mode can be activated in the Odoo database settings. Go to :menuselection:`Settings -->
General Settings --> Developer Tools` and click on :guilabel:`Activate the developer mode`. At
least one application needs to be installed for the :guilabel:`Developer Tools` section to appear
in the :guilabel:`Settings` module.
.. image:: developer_mode/settings.png
:align: center
:alt: Overview of the debug options under settings in Odoo.
.. warning::
Proceed with caution, as some developer tools and technical settings are considered advanced and
may have associated risks. Only use them if you understand the implications and are confident in
your actions.
.. note::
:guilabel:`Activate the developer mode (with assets)` is used by developers; :guilabel:`Activate
the developer mode (with tests assets)` is used by developers and testers.
The developer mode is also available with :ref:`assets <frontend/framework/assets_debug_mode>`,
which are used to debug JavaScript code, and with :ref:`tests assets
<frontend/framework/tests_debug_mode>`, which are used to run test tours.
Activation
==========
To activate it, open the :guilabel:`Settings` app, scroll down to the :guilabel:`Developer Tools`
section, and click :guilabel:`Activate the developer mode`.
Once activated, the :guilabel:`Deactivate the developer mode` option becomes available.
.. _general/developer_mode/browser-extension:
.. image:: developer_mode/settings.png
:alt: Activating the developer mode in the Settings app
Activate through the browser extension
======================================
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.
Within a web browser, navigate to the browser settings and extensions and search for the `Odoo
Debug` extension. Once the extension is installed, a new icon will be shown on the browser's
toolbar.
For the *Odoo Debug* extension, a single click enables a normal version of the mode, while a
double click enables it with assets. To deactivate it, use a single click.
.. image:: developer_mode/developer-mode-monkey.png
:align: center
:alt: View of Odoo's debug icon in a Google Chrome toolbar.
.. _general/developer_mode/command-palette:
Activate through the command palette
====================================
In Odoo, the command palette tool has a command to activate the debug mode. First, open the command
palette tool with the keyboard shortcut `ctrl+k` and then type `debug`. A command will show up to
activate the debug mode.
.. image:: developer_mode/command-palette.png
:align: center
:alt: Command palette with debug command.
.. _general/developer_mode/url:
Activate through the URL
========================
The debug mode can also be activated by adding an extra query string to the database's URL. In the
URL, add `?debug=1` or `?debug=true` after `/web`. To deactivate the debug mode, change the
value to `?debug=0` instead.
.. image:: developer_mode/url.png
:align: center
:alt: Overview of a URL with the debug mode command added.
Use `?debug=assets` to activate the developer mode with assets and `?debug=tests` to activate it
with tests assets.
.. tip::
Additional modes are available for developers: `?debug=assets` enables the
:ref:`assets mode <frontend/framework/assets_debug_mode>`, and `?debug=tests` enables
the :ref:`tests mode <frontend/framework/tests_debug_mode>`.
Open the **command palette** by pressing `Ctrl + K` or `Cmd ⌘ + K`, then type `debug` to
activate the developer mode with assets or deactivate it.
.. _developer-mode/mode-tools:
.. admonition:: Browser extension
Locate the developer mode tools
===============================
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/>`_.
Once developer mode is activated, the developer mode tools can be accessed from the :guilabel:`Open
Developer Tools` button, the bug icon located in the header of the Odoo database.
.. _developer-mode/tools:
.. image:: developer_mode/button-location.png
:align: center
:alt: Overview of a console page and the debug icon being shown in Odoo.
Developer tools and technical menu
==================================
This menu contains additional tools that are useful to understand or edit technical data, such as
the views or actions of a page. On a page that has filters, actions, and view options, the
developer mode tools contain some useful menu items such as:
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.
- :guilabel:`Edit Action`
- :guilabel:`Manage Filters`
- Edit the current view (e.g. Kanban, List, Graph, etc.)
- See the :guilabel:`Fields View Get`
.. image:: developer_mode/tools.png
:alt: Accessing the developer tools
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.
.. image:: developer_mode/technical.png
:alt: Accessing the technical menu
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

@@ -34,14 +34,14 @@ registration`. On the :guilabel:`Register an application` screen, rename the :gu
and personal Microsoft accounts (e.g. Skype, Xbox)`.
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
is the canonical domain at which your Odoo instance can be reached in the URL field.
`https://<web base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The `web.base.url`
is subject to change depending on the URL used to log in to the database.
.. example::
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
assuming it's hosted on Odoo.com
.. note::
The documentation about the :ref:`web.base.url <domain-name/web-base-url>` explains how to freeze
a unique URL. It is also possible to add different redirect URLs on the Microsoft app.
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
After the URL has been added to the field, :guilabel:`Register` the application, so it is created.
API permissions
---------------
@@ -1,4 +1,6 @@
:nosearch:
:show-content:
:show-toc:
=======
Devices
@@ -14,3 +16,8 @@ Devices
devices/footswitch
devices/printer
devices/scale
.. seealso::
- :doc:`Worldline payment terminal
<../../sales/point_of_sale/payment_methods/terminals/worldline>`
- :doc:`Ingenico payment terminal <../../sales/point_of_sale/payment_methods/terminals/ingenico>`
@@ -6,6 +6,18 @@ A scale can be connected to the :abbr:`IoT (Internet of Things)` box on an Odoo
easy steps. After setup, the *Point of Sale* app can be used to weigh products, which is helpful if
their prices are calculated based on weight.
.. important::
- In EU member states, `certification is legally required <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
to use a scale as an integrated device.
- Odoo is not certified in several countries, including France, Germany, and Switzerland. If you
reside in one of these countries, you can still use a scale but without integration to your
Odoo database.
- Alternatively, you have the option to acquire a *non-integrated* certified scale that prints
certified labels, which can then be scanned into your Odoo database.
.. seealso::
`Directive 2014/31/EU of the European Parliament <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
Connection
==========
+147 -114
View File
@@ -3,8 +3,8 @@ Contracts
=========
Every employee in Odoo is required to have a contract in order to be paid. A contract outlines the
terms of an employee's position, their compensation, their working hours, and any other details
about their position.
terms of an employee's position, their compensation, working hours, and any other details about
their position.
.. important::
Contract documents (PDFs) are uploaded and organized using the *Documents* application, and are
@@ -12,10 +12,10 @@ about their position.
sign contracts. Please refer to the :doc:`/applications/productivity/documents` and
:doc:`/applications/productivity/sign` documentation.
To view the employee contracts, go to the :menuselection:`Payroll app --> Employees --> Contracts`
To view the employee contracts, go to the :menuselection:`Payroll app --> Contracts --> Contracts`
from the top menu. All employee contracts, and their current contract status, are displayed in a
default kanban view. The default view displays both running contracts and contracts that need
action. Expired and canceled contracts are hidden in the default view.
Kanban view, by default. The Kanban view displays running contracts, contracts that require action,
expired contracts, and cancelled contracts.
.. image:: contracts/contracts-overview.png
:align: center
@@ -23,90 +23,96 @@ action. Expired and canceled contracts are hidden in the default view.
.. note::
The list of contracts in the *Payroll* application matches the list of contracts in the
*Employees* application. The default contracts view in the *Payroll* application displays running
contracts and contracts needing attention, while the default contracts view in the *Employees*
application displays all contracts in a kanban view, organized by their stage, regardless of
status. All contracts can be viewed by changing the filters.
*Employees* application.
Create a new contract
=====================
In order for an employee to be paid, an active contract is required. If a new contract is needed,
click the :guilabel:`Create` button on the contracts dashboard. A contract form appears where the
information can be entered. Required fields are underlined in bold.
click the :guilabel:`Create` button on the :guilabel:`Contracts` dashboard. A contract form appears
where the information can be entered. Required fields are underlined in bold.
Required fields
---------------
New contract form
-----------------
.. image:: contracts/required-fields.png
:align: center
:alt: New contract form to be filled in when creating a new contract.
- :guilabel:`Contact Reference`: Type in the name or title for the contract, such as `John Smith
Contract`.
- :guilabel:`Company`: Select the company the contract applies to by clicking on the drop-down menu.
A new company can be created by typing the name in the field, then clicking either
:guilabel:`Create` to create the new company, or :guilabel:`Create and Edit` to create the new
company and edit the company details.
- :guilabel:`Salary Structure Type`: Select one of the salary structure types from the drop-down
- :guilabel:`Contact Reference`: type in the name or title for the contract, such as `John Smith
Contract`. This field is **required**.
- :guilabel:`Employee`: name of the employee the contract applies to.
- :guilabel:`Contract Start Date`: the date the contract starts. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Contract End Date`: the date the contract ends. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Salary Structure Type`: select one of the salary structure types from the drop-down
menu. The default salary structure types are :guilabel:`Employee` or :guilabel:`Worker`. A new
salary structure type can be created by typing the name in the field.
- :guilabel:`Start Date`: The date the contract starts. Choose a date by clicking on the drop-down
menu, navigating to the correct month and year by using the :guilabel:`< > (arrow)` icons, then
clicking on the :guilabel:`date`.
- :guilabel:`Working Schedule`: Select one of the working schedules from the drop-down menu.
.. tip::
The :guilabel:`Working Schedule` drop-down menu displays all the working times for the selected
:guilabel:`Company`. To modify or add to this list, go to :menuselection:`Payroll -->
Configuration --> Working Times` and either :guilabel:`Create` a new working time or click on an
existing working time and edit it by clicking :guilabel:`Edit`.
Optional fields
---------------
- :guilabel:`Employee`: Name of the employee that the contract applies to.
- :guilabel:`Department`: The department the contract applies to.
- :guilabel:`Job Position`: The specific job position the contract applies to.
- :guilabel:`Contract Type`: Choose from :guilabel:`CDI`, :guilabel:`CDD`, or :guilabel:`PFI` from
salary structure type can be created by typing the name in the field. This field is **required**.
- :guilabel:`Working Schedule`: select one of the working schedules from the drop-down menu. This
field is **required**.
- :guilabel:`Department`: the department the contract applies to.
- :guilabel:`Job Position`: the specific job position the contract applies to.
- :guilabel:`Wage on Payroll`: the amount to be paid to the employee each month.
- :guilabel:`Contract Type`: choose from :guilabel:`CDI`, :guilabel:`CDD`, or :guilabel:`PFI` from
the drop-down menu.
- :guilabel:`CDI` is an open-ended contract with only a start date but no end date.
- :guilabel:`CDI` is an open-ended contract with only a start date, but no end date.
- :guilabel:`CDD` is a contract with both a start date and an end date.
- :guilabel:`PFI` is a Belgian-specific contract used when hiring employees that need training,
and covers the training period specifically.
- :guilabel:`End Date`: If the contract has a specific end date, click the drop-down menu, navigate
to the correct month and year using the arrow icons, then click on the date.
- :guilabel:`HR Responsible`: If there is a specific person in HR that is responsible for the
contract, select the person from the drop-down menu.
- :guilabel:`Analytic Account`: This field allows a link between the contract and a specific
analytic account for accounting purposes.
- :guilabel:`HR Responsible`: if there is a specific person in HR that is responsible for the
contract, select the person from the drop-down menu. This field is required.
.. tip::
The :guilabel:`Working Schedule` drop-down menu displays all the working times for the selected
:guilabel:`Company`. To modify or add to this list, go to :menuselection:`Payroll app -->
Configuration --> Working Times`, and either :guilabel:`Create` a new working time, or click on
an existing working time, then edit it by clicking :guilabel:`Edit`.
Contract details
----------------
The contract details section allows for the addition and editing of a contract, and the ability to
send the contract to the employee for approval and signatures.
The :guilabel:`Contract Details` tab allows for the addition and editing of a contract, along with
specifying which template to use when a new contract is created. These fields **must** be populated
in order to create a new contract.
.. important::
To access the various contract template fields in the :guilabel:`Contract Details` tab, the
*Salary Configurator* (`hr_contract_salary`) module **must** be :ref:`installed
<general/install>`.
When the *Salary Configurator* module is installed, the *Salary Configurator - Holidays* and
*Salary Configurator - Payroll* modules install, as well.
Once the modules are installed, the database reverts to the main dashboard.
.. image:: contracts/contract-details.png
:align: center
:alt: Contract details in optional tabs for a new contract.
- :guilabel:`Contract Template`: Select a pre-existing contract template from the drop-down menu.
- :guilabel:`Analytic Account`: this field allows a link between the contract and a specific
analytic account for accounting purposes.
- :guilabel:`Contract Template`: select a pre-existing contract template from the drop-down menu.
Contract templates are typically created through the *Recruitment* application.
- :guilabel:`New Contract Document Template`: Select a contract from the drop-down menu to be
- :guilabel:`New Contract Document Template`: select a contract from the drop-down menu to be
modified for this new employee contract.
- :guilabel:`Contract Update Document Template`: Select a contract from the drop-down menu if the
- :guilabel:`Contract Update Document Template`: select a contract from the drop-down menu, if the
employee has an existing contract that requires updating.
- :guilabel:`Notes`: The notes field is a text field where any notes for the employee contract can
- :guilabel:`Notes`: the notes field is a text field where any notes for the employee contract can
be entered for future reference.
Modifying a contract
~~~~~~~~~~~~~~~~~~~~
Modify a contract template
~~~~~~~~~~~~~~~~~~~~~~~~~~
Click the :guilabel:`External Link` button at the end of each line to open the corresponding
contract template and make any changes.
Click the :icon:`fa-external-link` :guilabel:`(external Link)` icon at the end of either the
:guilabel:`New Contract Document Template` or :guilabel:`Contract Update Document Template` to open
the corresponding contract template, and proceed to make any desired changes.
.. image:: contracts/external-link.png
:align: center
@@ -118,23 +124,26 @@ A pop-up window appears with all the contract details. Modify the fields for the
:align: center
:alt: Edit the details for the contract.
- :guilabel:`Tags`: Select any tags associated with the contract.
- :guilabel:`Signed Document Workspace`: This is where the signatures are stored. Choose a
pre-configured workspace or create a new one.
- :guilabel:`Signed Document Tags`: Select or create any tags associated only with the signed
contract as opposed to the original unsigned contract.
- :guilabel:`Redirect Link`: Enter a redirect link for the employee to access the contract. A
redirect link takes the user from one URL to another, in this case, to the newly updated contract
specifically written for them.
- :guilabel:`Who can Sign`: Select either :guilabel:`All Users` or :guilabel:`On Invitation`.
- :guilabel:`Tags`: select any tags associated with the contract.
- :guilabel:`Signed Document Workspace`: this is where the signatures are stored. Choose a
pre-configured workspace, or create a new one. To create a new :guilabel:`Signed Document
Workspace`, type in the name of the workspace, then click either :guilabel:`Create` to add the new
workspace, or :guilabel:`Create and Edit` to add the workspace and modify the workspace details.
- :guilabel:`Signed Document Tags`: select or create any tags that are only associated with the
signed contract, as opposed to the original unsigned contract.
- :guilabel:`Redirect Link`: enter a redirect link for the employee to access the contract. A
redirect link takes the user from one URL to another. In this case, it takes them to the
newly-updated contract specifically written for them.
- :guilabel:`Who can Sign`: select either :guilabel:`All Users` or :guilabel:`On Invitation`.
- :guilabel:`All Users`: Any user in the organization can sign the contract.
- :guilabel:`On Invitation`: Only users selected in this field can sign the contract.
- :guilabel:`All Users`: any user in the organization can sign the contract.
- :guilabel:`On Invitation`: only users selected in this field can sign the contract.
- :guilabel:`Invited Users`: Select the person(s) that can sign the document.
- :guilabel:`Document`: The attached document can be replaced by clicking the :guilabel:`✏️
(pencil)` icon. A pop-up window appears so another document can be selected for upload. The file
must be a PDF. To remove the document, click the :guilabel:`🗑️ (trash can)` icon.
- :guilabel:`Invited Users`: select the person (or people) that can sign the document.
- :guilabel:`Document`: the attached document can be replaced by clicking the :icon:`fa-pencil`
:guilabel:`(pencil)` icon. A pop-up window appears, so another document can be selected for
upload. The file **must** be a PDF. To remove the document, click the :icon:`fa-trash-o`
:guilabel:`(trash can)` icon.
Once the edits are complete, click the :guilabel:`Save` button. All the information for the selected
contract template populates the fields in the :guilabel:`Salary Information` tab. Any additional
@@ -148,44 +157,25 @@ Salary information
:alt: Optional tabs for a new contract.
This section is where the specific salary details are defined. This section is country-specific, so
depending on where the company is located, these fields may vary.
these fields vary, depending on where the company is located.
Enter the amount in the various fields, or check a box to apply a benefit. Some options that can be
entered here include :guilabel:`Meal Vouchers`, :guilabel:`Fuel Card`, :guilabel:`Internet`,
:guilabel:`Paid Time Off`, etc.
Enter the amount in the various fields, or tick a checkbox to apply a benefit. Some options that can
be entered here include :guilabel:`Group Insurance Sacrifice Rate` and :guilabel:`Canteen Cost`, for
example.
Some fields may be automatically filled in based off of the contracts selected in the
:guilabel:`Contract Details` tab.
Some fields may be automatically filled in as other fields are entered. For example, the
:guilabel:`Yearly Cost (Real)` and :guilabel:`Monthly Cost (Real)` updates once the :guilabel:`Wage`
is populated.
Attachment of salary
--------------------
Personal documents
------------------
Any automatic deductions or allocations for an employee, such as child support payments and wage
garnishments, are referred to as a *salary attachment*. This section is where all of these
deductions or allocations are set.
This tab **only** appears after an :guilabel:`Employee` is selected, and houses any documents that
are linked to the employee on their employee record. Documents cannot be added to this tab, this tab
**only** shows documents that are already uploaded and associated with the employee.
To add a new deduction, click :guilabel:`Add a line`. Type in a description for the allocation under
:guilabel:`Description`.
.. image:: contracts/garnishment.png
:align: center
:alt: Enter a new line for each type of garnishment.
Select the :guilabel:`Garnished Type` from the drop-down menu. Choose from:
- :guilabel:`Attachment of Salary`: Any payments taken out towards something that is *not* child
support. Typically any garnishments such as lawsuit payments, payments toward taxes owed, etc.
- :guilabel:`Assignment of Salary`: Any deduction that is not required but voluntary, such as a
pre-tax allocation to a college savings account.
- :guilabel:`Child Support`: Any payments taken out specifically for child support.
Enter the start and end dates the entry applies to. Click on the drop-down menu under
:guilabel:`From` and :guilabel:`To`, navigate to the correct month and year by using the
:guilabel:`< > (arrow)` icons, then click on the :guilabel:`date`.
Last, enter the :guilabel:`Amount` that each payslip pays towards the entry.
To delete a line, click the :guilabel:`🗑️ (trash can)` icon at the end of the line.
The available documents in this tab can be downloaded. Click the :icon:`fa-download`
:guilabel:`(download)` icon next to the document to download it.
Save and send the contract
--------------------------
@@ -199,21 +189,21 @@ Click on one of the following buttons to send the contract to the employee:
:align: center
:alt: Send the contract to the employee via one of the buttons.
- :guilabel:`Generate Simulation Link`: This option is for Belgian companies only. Clicking this
opens a pop-up window that contains the basic information from the contract as well as a link for
the contract when using the salary configurator. Click :guilabel:`Send Offer` to send an email to
the employee so they can sign the contract.
- :guilabel:`Generate Simulation Link`: this option is **only** for Belgian companies. Clicking this
opens a pop-up window that contains the basic information from the contract, as well as a link for
the contract when using the salary configurator. Click :guilabel:`Send` to send an email to the
employee, so they can sign the contract.
.. image:: contracts/simulation.png
:align: center
:alt: Sends a link to the employee for the contract.
.. note::
In order to send a contract using the :guilabel:`Generate Simulation Link`, there must be a
signature field in the contract PDF being sent to the employee so they can sign it.
In order to send a contract using the :guilabel:`Generate Simulation Link`, there **must** be a
signature field in the contract PDF being sent to the employee, so they can sign it.
- :guilabel:`Signature Request`: Click this and a pop-up window appears where an email can be typed
to the employee. Select the document, such as a contract, NDA, or Homeworking Policy, from the
- :guilabel:`Signature Request`: clicking this reveals a pop-up window, where an email can be typed
to the employee. Select the document (such as a contract, NDA, or Homeworking Policy) from the
drop-down menu, and fill out the email section. Click :guilabel:`Send` when the email is ready to
be sent.
@@ -221,5 +211,48 @@ Click on one of the following buttons to send the contract to the employee:
:align: center
:alt: Request a signature for the contract via email.
- :guilabel:`Credit Time`: This option is for Belgian companies only. When clicked, a pop-up window
appears that allows for the changing of working times, and can compute time off.
Salary attachments
------------------
Any automatic deductions or allocations for an employee, such as child support payments and wage
garnishments, are referred to as a *salary attachment*. This section is where all of these
deductions or allocations are set.
To add a new deduction, first navigate to :menuselection:`Payroll app --> Contracts --> Salary
Attachments`. Next, click :guilabel:`Create`, and a new salary attachment form loads.
.. image:: contracts/garnishment.png
:align: center
:alt: The salary attachment form with everything filled in for Ronnie Hart's child support.
Fill out the following fields on the form:
- :guilabel:`Employee`: using the drop-down menu, select the employee the salary attachment applies
to.
- :guilabel:`Description`: enter a short description for the salary attachment, such as `Child
Support` or `529 Contribution`.
- :guilabel:`Type`: using the drop-down menu, select the type of salary attachment being created.
Choose from:
- :guilabel:`Attachment of Salary`: any payments taken out towards something that is *not* child
support. Typically any garnishments, such as lawsuit payments, payments toward taxes owed, etc.
- :guilabel:`Assignment of Salary`: any deduction that is not required, but voluntary, such as a
pre-tax allocation to a college savings account.
- :guilabel:`Child Support`: any payments taken out specifically for child support.
- :guilabel:`Start Date`: the date the salary attachment starts. Choose a date by clicking on the
drop-down menu, navigating to the correct month and year by using the :icon:`fa-chevron-left`
:icon:`fa-chevron-right` :guilabel:`(arrow)` icons, then clicking on the desired date. This field
is **required**.
- :guilabel:`Estimated End Date`: this field automatically populates after both the
:guilabel:`Monthly Amount` and :guilabel:`Total Amount` fields are populated. This field is
**not** modifiable.
- :guilabel:`Document`: attach any documents relevant to the salary attachment. Click the
:guilabel:`Upload Your File` button, navigate to the desired document in the file explorer, then
click :guilabel:`Open` to select the document, and attach it to the form. To change the attached
document, click the :icon:`fa-pencil` :guilabel:`(pencil)` icon, and select a different document.
To remove a document, click the :icon:`fa-trash-o` :guilabel:`(trash can)` icon.
- :guilabel:`Monthly Amount`: enter the amount to be taken out of the employee's paycheck every
month for this specific salary attachment.
- :guilabel:`Total Amount`: enter the total amount that the employee pays for the salary attachment
to be completed.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

+9 -321
View File
@@ -1,3 +1,5 @@
:show-content:
=========
Referrals
=========
@@ -99,327 +101,6 @@ sequence.
:align: center
:alt: The onboarding slides in a list, with the drag and drop arrows highlighted.
Share job positions
===================
In order to earn referral points, a user must first share a job position so the applicant can apply
for the position. There are several ways to share job positions within the Referrals application,
through the :ref:`View Jobs <referrals/view-jobs>` button and the :ref:`Email A Friend
<referrals/email-jobs>` button.
.. _referrals/view-jobs:
View Jobs
---------
To see all job positions that are actively recruiting candidates, click the :guilabel:`View Jobs`
button on the main Referrals dashboard. This presents all job positions, with each individual job
presented in its own card.
.. image:: referrals/jobs.png
:align: center
:alt: The 'View Jobs' screen, displaying all current open job positions. All information is
displayed on the card.
Each job position card contains the following information:
- The title of the job position. This information is taken from the :guilabel:`Job Position` field
of the job form.
- The number of positions being recruited. This information is taken from the :guilabel:`Expected
New Employees` field of the :guilabel:`Recruitment` tab of the job form.
- The points a user will earn when an applicant applies for the position.
- The job description detailing the job position. This information is taken from the :guilabel:`Job
Position` tab of the job form.
To see all the details for a job position, click the :guilabel:`More Info` button on the specific
card. This opens the job position webpage in a new browser tab. This is what an applicant sees
before applying for a position.
.. note::
Only published job positions will be visible in the Referrals app. To check which job positions
are published or not, refer to the :doc:`recruitment/new_job` documentation.
Refer friends
-------------
To share a job position with someone, click the :guilabel:`Refer Friend` button on the specific job
position card. A pre-configured :guilabel:`Send Job Offer by Mail` email pop-up window appears.
Enter the recipient's email address in the :guilabel:`Email` field.
The subject and body are populated using a default template. The subject `Job for you` appears, and
can be modified if desired.
The specific title of the job position will populate the :guilabel:`Job Position` placeholder in the
email body. The `See Job Offer` text in the email body is an individualized tracking link to the
specific job position listed on the website. When the prospective employee receives the email, the
link will send them to the job position page, where they can apply for the position, and the person
who referred them is tracked in the Referrals application.
If desired, add any text or closing salutation to the email body. When all edits have been made,
click :guilabel:`Send Email` to send the email, or click :guilabel:`Cancel` to close the email
pop-up window.
.. image:: referrals/email.png
:align: center
:alt: Referral email pop-up window with the email message inside it.
Share a job
-----------
There are several other ways to share a job position aside from sending an email, via social media
platforms and tracking links to the job position. At the bottom of each job position card are four
icons and corresponding tracking links that can be used to share the job position, keeping track of
applicants in the Referrals application.
.. image:: referrals/share.png
:align: center
:alt: The various sharing icons that appear for each job.
Link
~~~~
To share the job position with a customized tracking link, click the :guilabel:`Share Now` button
with the :guilabel:`🔗 (chain)` icon inside it. A :guilabel:`Link to Share` pop-up window appears
with the tracking link. Click :guilabel:`Copy` to copy the link. After the link is copied, click the
:guilabel:`Close` button to close the pop-up. Next, share the link with the prospective employee
however desired.
Facebook
~~~~~~~~
To share the job position using Facebook, click the :guilabel:`Share Now` button with the
:guilabel:`f (Facebook icon)` inside it. If the user is already logged into Facebook, when the
:guilabel:`f (Facebook icon)` is clicked, a :guilabel:`Share on Facebook` page loads in a new tab,
with the link populated in the main body of the new post. If the user is *not* already logged in, a
log-in screen loads instead, prompting the user to log-in to Facebook first.
Type in any additional information to add to the post, in the space directly below your name. If
desired, :guilabel:`tag` users, :guilabel:`check-in` at a location, or add a :guilabel:`status` to
the post. To tag a user, click the :guilabel:`Tag Friends` icon and select the people to tag to the
post. To add a check-in location, click the :guilabel:`Check in` icon, and select the location from
the pop-up of predetermined locations based on your current location. To add a :guilabel:`status`,
click the :guilabel:`Feeling/Activity` icon, then select either the feeling or the activity type,
and lastly, if an activity type was selected, select the specific activity.
There are five methods to share the job position, :guilabel:`Your Story`, :guilabel:`Share on a
Friend's Timeline`, :guilabel:`Share in a Group`, :guilabel:`Share in an Event`, and
:guilabel:`Share in a Private Message`. To select the sharing method, click the drop-down menu
located at the top of the page, directly beneath the :guilabel:`Share on Facebook` banner.
.. image:: referrals/facebook.png
:align: center
:alt: The view on Facebook when sharing a job description. All the various ways to share are
highlighted, as are all the required settings.
.. tabs::
.. tab:: Share to news feed or story
The default sharing method is through the :guilabel:`News Feed`, :guilabel:`Story`, or both.
At the lower portion of the form are radio buttons next to the two options, :guilabel:`Feed`
(for the News Feed) and :guilabel:`Your Story` for stories. When :guilabel:`Share to News Feed
or Story` is selected, these buttons are active, if another option is selected, these radio
buttons are greyed out. Activate the radio button(s) to indicate how the job position should
be shared, either in the news feed, the story, or both.
The :guilabel:`Share to news feed or story` option allows for specific privacy settings to be
selected. In the lower right corner of the screen, there are two drop-down menu options, one
for the :guilabel:`Feed` option, the other for the :guilabel:`Your story` option. Select the
posting parameters from the drop-down menus. The :guilabel:`Feed` ad :guilabel:`Your story`
options appear different from user to user, depending on what privacy settings have been
created in Facebook. :guilabel:`Public` and :guilabel:`Friends` are default options, but other
options that the user may have configured will appear as well, such as custom groups.
When the post and/or story is ready to be shared, click the blue :guilabel:`Post to Facebook`
button at the bottom of the screen.
.. tab:: Share on a friend's timeline
Instead of making a public post on the user's on Facebook page, the job position can be shared
directly on a friend's timeline. Click the :guilabel:`Share to News Feed or Story` drop-down
menu near the top of the page, and select :guilabel:`Share on a Fried's Timeline`.
When selected, a :guilabel:`Friend` field appears below the selection. Begin to type in the
friend's name. As the name is typed, a list appears, populated with names that match what is
entered. Select the friend from the list. **Only** one friend can be selected.
When the post is ready to be shared, click the blue :guilabel:`Post to Facebook` button at the
bottom of the screen.
.. tab:: Share in a group
To reach a specific audience and not share the job position publicly with everyone, a job can
be shared in a group. Click the :guilabel:`Share to News Feed or Story` drop-down menu near
the top of the page, and select :guilabel:`Share in a Group`.
When selected, a :guilabel:`Group` field appears below the selection. The available groups
that can be posted to are groups the user is currently a member of. Job positions cannot be
shared with groups the user has not joined. Begin to type in the name of the group. As the
group name is typed, a list appears, populated with the group names that match what is
entered. Select the group from the list. Only one group can be selected.
When the post is ready to be shared, click the blue :guilabel:`Post to Facebook` button at the
bottom of the screen.
.. tab:: Share in an event
A job position can also be shared on an event page. Click the :guilabel:`Share to News Feed or
Story` drop-down menu near the top of the page, and select :guilabel:`Share in an Event`.
When selected, an :guilabel:`Event` field appears below the selection. The available events
that can be posted to are events the user is invited to. This includes events that the user
has not responded to yet, and events that have occurred in the past. Begin to type in the name
of the event. As the event name is typed, a list appears, populated with the events that match
what is entered. Select the event from the list. Only one event can be selected.
When the post is ready to be shared, click the blue :guilabel:`Post to Facebook` button at the
bottom of the screen.
.. tab:: Share in a private message
The last option is to share a job position privately instead of publicly, in a Facebook
message. Click the :guilabel:`Share to News Feed or Story` drop-down menu near the top of the
page, and select :guilabel:`Share in an Private Message`.
When selected, a :guilabel:`To` field appears below the selection. Begin to type in the
friend's name. As the name is typed, a list appears, populated with names that match what is
entered. Select the friend from the list. Multiple friends can be selected and added to a
single message. Repeat this process for each friend to be added.
When the message is ready to be sent, click the blue :guilabel:`Send message` button at the
bottom of the screen.
X/Twitter
~~~~~~~~~
A job position can also be shared on X/Twitter. Click the :guilabel:`Share Now` button with the bird
icon inside it. If the user is already signed in to X/Twitter, when the :guilabel:`Share Now` icon
is clicked, an X/Twitter page loads in a new tab with a pre-populated message ready to post, in a
draft pop-up. If the user is *not* already signed in, a sign-in screen loads instead, prompting the
user to sign in to X/Twitter.
The default message is:
:guilabel:`Amazing job offer for (Job Position)! Check it live: (link to Job Position)`
Type in any additional information or make any edits to the message. If desired, click the
:guilabel:`X` in the top left corner of the thumbnail preview of the webpage to remove it. To adjust
the audience for the message, click the drop-down button labeled :guilabel:`Everyone`. Select the
preferred audience from the drop-down menu. The default option is :guilabel:`Everyone`, and the
other options is :guilabel:`Circle`. The :guilabel:`Circle` is a group of people that the user has
selected in X/Twitter.
The default setting is :guilabel:`🌎 (globe) Everyone can reply`, an allows everyone on X/Twitter to
reply to the message. To change this, click the :guilabel:`🌎 (globe) Everyone can reply` button in
the lower left section of the message. There are four options presented: :guilabel:`Everyone`,
:guilabel:`Accounts you follow`, :guilabel:`Verified accounts`, and :guilabel:`Only accounts you
mention`. Selecting one of the other options restricts who can reply to the message.
There are various other items that can be added to the message. Media (photos, videos, etc), GIF's,
polls, emojis, and a location may all be added. Click the corresponding icon in the bottom left of
the message and follow the prompts to add the desired additional elements.
To have the message posted at a future date and time, click the :guilabel:`Schedule` icon in the
lower left of the message window. It is the fifth icon from the left. Enter the date and time that
the message should be posted using the date and time selector presented. Click :guilabel:`Confirm`
to add the scheduled time to the message.
To post the message, click :guilabel:`Post`. The message will be immediately posted, or, if it was
scheduled, will be posted at the scheduled date and time.
.. image:: referrals/twitter.png
:align: center
:alt: The X/Twitter pop-up when sharing a job description. All the other items than can be added
to the message are highlighted, as is the visibility setting and the post button.
LinkedIn
~~~~~~~~
To share a job position on LinkedIn, click the :guilabel:`Share Now` button with the :guilabel:`in
(LinkedIn logo)` inside it. If the user is already logged into LinkedIn, when the :guilabel:`Share
Now` button is clicked, a new tab loads in LinkedIn, with a link to the job position at the top. If
the user is *not* already logged in, a log-in screen loads instead, prompting the user to log-in to
LinkedIn first.
The job position can be shared either in a public post, or in a private message to an individual or
group of individuals.
Share in a post
***************
To share the job position in a public post, click the :guilabel:`✏️ (pencil) Share in a post` button
in the lower-left corner of the screen. A :guilabel:`Create a post` window loads, with the job
position link populated. Enter any other information to the post in the field.
To change the audience that will see the post, click the :guilabel:`🌎 (globe) Anyone` drop-down,
located directly beneath the account name. Click on the desired selection, then click the
:guilabel:`Save` button on the far right side of the screen, beneath the last listed option.
:guilabel:`Anyone` allows anyone on LinkedIn to see the post. :guilabel:`Connections only` will
only share the post with people who are connected with the user, and will be hidden from everyone
else. :guilabel:`Group` shares the post with a specific group the user is a member of. The post can
only be shared with one group; posting to multiple groups at once is not available. If
:guilabel:`Group` is selected, a page loads with a list of all the groups the user is currently a
member of. Click on a group to select it, then click the :guilabel:`Save` button in the lower right
corner.
Next, select who can comment on the post. To change this setting, click on the :guilabel:`💬 (speech
bubble) Anyone` button located beneath the body of the post. A page loads with the various options.
Click on one of the three options to select it. The three options are :guilabel:`Anyone`,
:guilabel:`Connections only`, and :guilabel:`No one`. The default option is :guilabel:`Anyone`,
which allows anyone with a LinkedIn account to comment on the post. :guilabel:`Connections only`
will only allow people who are connected with the user to comment on the post. :guilabel:`No one`
turns off commenting. After making a selection, click the :guilabel:`Save` button in the far lower
right corner.
Finally, once the post is edited and the settings have been selected, click :guilabel:`Post` to
share the job position.
.. image:: referrals/linkedin.png
:align: center
:alt: A linkedIn post to share a job. The job position is highlighted as is the post button.
Send as private message
***********************
Instead of making a public post, the post can be sent to a connection in a private message. To do
so, click the :guilabel:`Send as private message` button in the lower left corner. A message window
loads with the link to the job description in the bottom of the window. First, select the
recipient(s) for the message. Type the name in the :guilabel:`Search for message recipients` field.
As the name is typed in, any matching connections appear. Click on a connection to add them. Repeat
this for all the recipients to send the message to. There is no limit on the number of connections
that can be messaged. Next, enter any additional text in the message body. Click :guilabel:`Send` in
the lower right corner to send the message. A :guilabel:`Message successfully sent!` screen loads.
Two options are presented, :guilabel:`View Message` and :guilabel:`Continue to LinkedIn`. Click on
the desired selection to navigate to that choice, or close the browser tab to exit.
.. _referrals/email-jobs:
Email a friend
--------------
Another way to share job opportunities is to share the entire current list of open job positions
instead of one job position at a time. To do this, navigate to the main *Referrals* app dashboard.
Click the :guilabel:`Email a friend` button at the bottom of the screen. A :guilabel:`Send Job Offer
by Mail` pop-up window appears.
Enter the email address(es) in the :guilabel:`Email` line. The email can be sent to multiple
recipients, simply enter a comma followed by a single space after each email address. The
:guilabel:`Subject` is pre-configured with `Job for you`, but can be edited.
The email body is also populated with pre-configured text. The text that appears is:
`Hello,`
`There are some amazing job offers in my company! Have a look, they can be interesting for you`
`See Job Offers`
The `See Job Offers` text is a tracking link to a complete list of all job positions currently being
recruited for, that are live on the company's website (published). Add any additional text and/or
make any edits to the message body, then click :guilabel:`Send Mail` to send the email. The message
will be sent and the window will close.
.. _referrals/hired:
Hired referrals
@@ -776,3 +457,10 @@ spreadsheet from the drop-down menu, or select :guilabel:`New Spreadsheet`. Clic
.. note::
The spreadsheet is stored in the *Documents* application. This application needs to be installed
in order to use the :guilabel:`Insert in Spreadsheet` option.
.. seealso::
:doc:`referrals/share_jobs`
.. toctree::
referrals/share_jobs
Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

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

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

+3 -4
View File
@@ -1,9 +1,8 @@
:nosearch:
===============
Inventory & MRP
===============
============
Supply Chain
============
.. toctree::
@@ -164,6 +164,13 @@ For example, different packages for cans of soda can be configured as a 6-pack,
of 36. Each flavor of soda would need a `6`, `12`, and `36` can packaging configured on the
individual product since packagings are product specific, not generic.
.. tip::
Packaging can be used in conjunction with Odoo :ref:`Barcode <inventory/barcode/software>`. When
receiving products from suppliers, scanning the packaging barcode automatically adds the number
of units in the packaging to the internal count of the product.
.. _inventory/management/packaging-setup:
Set up packagings
-----------------
@@ -210,6 +217,43 @@ and create another one in a fresh pop-up window.
:alt: Show packaging and contained quantities, specified on the product page form in the
Inventory tab.
Partial reservation
-------------------
After :ref:`completing the packaging setup <inventory/management/packaging-setup>`, packagings can
be reserved in full or partial quantities for outgoing shipments. Partial packaging flexibility
expedites order fulfillment by allowing the immediate shipment of available items, while awaiting
the rest.
To configure packaging reservation methods, go to :menuselection:`Inventory app --> Configuration
--> Product Categories`. Then, click :guilabel:`Create`, or select the desired product category.
On the product category's form, in the :guilabel:`Logistics` section, :guilabel:`Reserve Packagings`
can be set to :guilabel:`Reserve Only Full Packagings` or :guilabel:`Reserve Partial Packagings`.
.. important::
To see the :guilabel:`Reserve Packaging` field, the :guilabel:`Product Packaging` feature
**must** be enabled. To enable this feature, go to :menuselection:`Inventory app -->
Configuration --> Settings`, scroll to the :guilabel:`Products` section, tick the
:guilabel:`Product Packagings` checkbox, and click :guilabel:`Save`.
.. image:: usage/reserve-packaging.png
:align: center
:alt: Show Reserve Packagings field on the product categories page.
.. example::
To better evaluate the options based on business needs, consider the following example:
- a product is sold in twelve units per packaging.
- an order demands two packagings.
- there are only twenty-two units in stock.
When :guilabel:`Reserve Only Full Packagings` is selected, only twelve units are reserved for the
order.
Conversely, when :guilabel:`Reserve Partial Packagings` is selected, twenty-two units are
reserved for the order.
View all packagings
-------------------
@@ -241,7 +285,3 @@ used for the product(s). The chosen packaging is displayed on the :abbr:`SO (Sal
:align: center
:alt: Assign packagings on the Sales Order Line.
.. tip::
Packaging can be used in conjunction with Odoo :ref:`Barcode <inventory/barcode/software>`. When
receiving products from suppliers, scanning the packaging barcode automatically adds the number
of units in the packaging to the internal count of the product.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

@@ -2,7 +2,7 @@
Inventory valuation configuration
=================================
.. _inventory/inventory_valuation_config:
.. |external link| replace:: :icon:`fa-external-link` :guilabel:`(external link)`
All of a company's stock on-hand contributes to the valuation of its inventory. That value should
be reflected in the company's accounting records to accurately show the value of the company and
@@ -11,9 +11,8 @@ all of its assets.
By default, Odoo uses a periodic inventory valuation (also known as manual inventory valuation).
This method implies that the accounting team posts journal entries based on the physical inventory
of the company, and that warehouse employees take the time to count the stock. In Odoo, this method
is reflected inside each product category, where the :guilabel:`Costing Method` field will be set
to `Standard Price` by default, and the :guilabel:`Inventory Valuation` field will be set to
`Manual`.
is reflected inside each product category, where the :guilabel:`Costing Method` field will be set to
`Standard Price` by default, and the :guilabel:`Inventory Valuation` field will be set to `Manual`.
.. image:: inventory_valuation_config/inventory-valuation-fields.png
:align: center
@@ -32,72 +31,85 @@ between locations in a company's inventory.
.. _inventory/inventory_valuation_config/accounting:
Types of accounting
-------------------
===================
Accounting entries will depend on the accounting mode: *Continental* or *Anglo-Saxon*.
.. tip::
Verify the accounting mode by activating the :ref:`developer-mode` and navigating to
:menuselection:`Accounting --> Configuration --> Settings`.
:menuselection:`Accounting app --> Configuration --> Settings`.
Then, in the search bar, look for :guilabel:`Anglo-Saxon Accounting`, to see if the feature is
enabled. If it is **not** enabled, Continental accounting mode is in use.
.. image:: inventory_valuation_config/anglo-saxon.png
:align: center
:alt: Show the Anglo-Saxon accounting mode feature.
In *Anglo-Saxon* accounting, the costs of goods sold (COGS) are reported when products are sold or
delivered. This means that the cost of a good is only recorded as an expense when a customer is
invoiced for a product. *Interim Stock Accounts* are used for the input and output accounts, and are
both *Asset Accounts* in the balance sheet.
invoiced for a product. So for **manual** valuation method, set the :guilabel:`Expense Account` to
`Stock Valuation` for the current asset type; for **automatic** valuation method, set the the
:guilabel:`Expense Account` to an *Expenses* or a *Cost of Revenue* type (e.g. `Cost of Production`,
`Cost of Goods Sold`, etc.).
In *Continental* accounting, the cost of a good is reported as soon as a product is received into
stock. Additionally, a single *Expense* account is used for both input and output accounts in
the balance sheet.
stock. Because of this, the :guilabel:`Expense Account` can be set to **either** *Expenses* or a
*Cost of Revenue* type, however, it is more commonly set to an *Expenses* account.
.. _inventory/inventory_valuation_config/costing_methods:
.. seealso::
:ref:`Details about configuring Expense and Stock accounts
<inventory/management/config-inventory-valuation>`
Costing methods
---------------
Configuration
=============
Below are the three costing methods that can be used in Odoo for inventory valuation.
- **Standard Price**: is the default costing method in Odoo. The cost of the product is manually
defined on the product form, and this cost is used to compute the valuation. Even if the purchase
price on a purchase order differs, the valuation will still use the cost defined on the product
form.
- **Average Cost (AVCO)**: calculates the valuation of a product based on the average cost of that
product, divided by the total number of available stock on-hand. With this costing method,
inventory valuation is *dynamic*, and constantly adjusts based on the purchase price of products.
- **First In First Out (FIFO)**: tracks the costs of incoming and outgoing items in real-time and
uses the real price of the products to change the valuation. The oldest purchase price is used as
the cost for the next good sold until an entire lot of that product is sold. When the next
inventory lot moves up in the queue, an updated product cost is used based on the valuation of
that specific lot. This method is arguably the most accurate inventory valuation method for a
variety of reasons, however, it's highly sensitive to input data and human error.
.. warning::
Changing the costing method greatly impacts inventory valuation. It's highly recommended to
consult an accountant first before making any adjustments here.
Configure automated inventory valuation in Odoo
-----------------------------------------------
Make changes to inventory valuation options by navigating to :menuselection:`Inventory -->
Configuration --> Product Categories`, and choose the category/categories where the automated
valuation method should apply.
Make changes to inventory valuation options by navigating to :menuselection:`Inventory app -->
Configuration --> Product Categories`. In the :guilabel:`Inventory Valuation` section, select the
desired :guilabel:`Costing Method` and :guilabel:`Inventory Valuation` options.
.. note::
It is possible to use different valuation settings for different product categories.
Under the :guilabel:`Inventory Valuation` heading are two labels: :guilabel:`Costing Method` and
:guilabel:`Inventory Valuation`. Pick the desired :guilabel:`Costing Method` using the drop-down
menu (e.g. :guilabel:`Standard`, :guilabel:`Average Cost (AVCO)`, or :guilabel:`First In First Out
(FIFO)`) and switch the :guilabel:`Inventory Valuation` to :guilabel:`Automated`.
.. image:: inventory_valuation_config/config-inventory-valuation.png
:align: center
:alt: Show inventory valuation configuration options.
.. _inventory/inventory_valuation_config/costing_methods:
Costing method
--------------
From the product category's configuration page, choose the desired :guilabel:`Costing Method`:
- :guilabel:`Standard Price`: the default costing method in Odoo. The cost of the product is
manually defined on the product form, and this cost is used to compute the valuation. Even if the
purchase price on a purchase order differs, the valuation will still use the cost defined on the
product form.
- :guilabel:`Average Cost (AVCO)`: calculates the valuation of a product based on the average cost
of that product, divided by the total number of available stock on-hand. With this costing method,
inventory valuation is *dynamic*, and constantly adjusts based on the purchase price of products.
.. note::
When choosing :guilabel:`Average Cost (AVCO)` as the :guilabel:`Costing Method`, changing the
numerical value in the :guilabel:`Cost` field for products in the respective product category
creates a new record in the *Inventory Valuation* report to adjust the value of the product.
The :guilabel:`Cost` amount will then automatically update based on the average purchase price
both of inventory on hand and the costs accumulated from validated purchase orders.
- :guilabel:`First In First Out (FIFO)`: tracks the costs of incoming and outgoing items in
real-time and uses the real price of the products to change the valuation. The oldest purchase
price is used as the cost for the next good sold until an entire lot of that product is sold. When
the next inventory lot moves up in the queue, an updated product cost is used based on the
valuation of that specific lot. This method is arguably the most accurate inventory valuation
method for a variety of reasons, however, it is highly sensitive to input data and human error.
.. warning::
Changing the costing method greatly impacts inventory valuation. It is highly recommended to
consult an accountant first before making any adjustments here.
.. seealso::
:ref:`Using the inventory valuation<inventory/reporting/using_inventory_val>`
.. note::
When choosing :guilabel:`Average Cost (AVCO)` as the :guilabel:`Costing Method`, changing the
numerical value in the :guilabel:`Cost` field for products in the respective product category
creates a new record in the *Inventory Valuation* report to adjust the value of the product. The
:guilabel:`Cost` amount will then automatically update based on the average purchase price both
of inventory on hand and the costs accumulated from validated purchase orders.
:doc:`using_inventory_valuation`
When the :guilabel:`Costing Method` is changed, products already in stock that were using the
:guilabel:`Standard` costing method **do not** change value; rather, the existing units keep their
@@ -105,12 +117,89 @@ value, and any product moves from then on affect the average cost, and the cost
change. If the value in the :guilabel:`Cost` field on a product form is changed manually, Odoo will
generate a corresponding record in the *Inventory Valuation* report.
On the same screen, the :guilabel:`Account Stock Properties` fields will appear, as they are now
required fields given the change to automated inventory valuation. These accounts are defined as
follows:
.. _inventory/management/config-inventory-valuation:
Inventory valuation
-------------------
Inventory valuation in Odoo can be set to be updated manually or automatically. While *Expense*
accounts apply to both, the *Stock Input* and *Stock Output* accounts are only used for automated
valuation.
Refer to the :ref:`Expense <inventory/management/expense-account>` and :ref:`Stock input/output
<inventory/management/stock-account>` sections for details on configuring each account type.
.. _inventory/management/expense-account:
Expense account
~~~~~~~~~~~~~~~
To configure the *expense account*, go to the :guilabel:`Account Properties` section of the intended
product category (:menuselection:`Inventory app --> Configuration --> Product Categories`). Then,
choose an existing account from the :guilabel:`Expense Account` drop-down menu.
To ensure the chosen account is the correct :guilabel:`Type,` click the |external link| icon to the
right of the account. Then, set the account type based on the information below.
.. tabs::
.. group-tab:: Anglo-Saxon
.. tabs::
.. group-tab:: Automated
In Anglo-Saxon accounting for automated inventory valuation, set the :guilabel:`Expense
Account` to the `Expenses` account. Then, click the |external link| icon to the right of
the account.
In the pop-up window, choose :guilabel:`Expenses` or :guilabel:`Cost of Revenue` from
the :guilabel:`Type` drop-down menu.
.. image:: inventory_valuation_config/external-link.png
:align: center
:alt: Show **Expense Account** field, and external link icon.
.. group-tab:: Manual
To configure the :guilabel:`Expense Account`, choose :guilabel:`Stock Valuation` from
the field's drop-down menu. Verify the account's type by clicking the |external link|
icon, and then ensure the :guilabel:`Type` is :guilabel:`Current Assets`.
.. image:: inventory_valuation_config/manual-anglo-saxon-expense.png
:align: center
:alt: Show the **Expense Account** field.
.. group-tab:: Continental
.. tabs::
.. group-tab:: Automated
Set the :guilabel:`Expense Account` to the :guilabel:`Expenses` or :guilabel:`Cost of
Revenue` account type.
.. group-tab:: Manual
Set the :guilabel:`Expense Account` to the :guilabel:`Expenses` or :guilabel:`Cost of
Revenue` account type.
.. _inventory/management/stock-account:
Stock input/output (automated only)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To configure the :guilabel:`Stock Input Account` and :guilabel:`Stock Output Account`, go to
:menuselection:`Inventory app --> Configuration --> Product Categories` and select the desired
product category.
In the :guilabel:`Inventory Valuation` field, select :guilabel:`Automated`. Doing so makes the
:guilabel:`Account Stock Properties` section appear. These accounts are defined as follows:
- :guilabel:`Stock Valuation Account`: when automated inventory valuation is enabled on a product,
this account will hold the current value of the products.
- :guilabel:`Stock Journal`: accounting journal where entries are automatically posted when a
product's inventory valuation changes.
- :guilabel:`Stock Input Account`: counterpart journal items for all incoming stock moves will be
posted in this account, unless there is a specific valuation account set on the source location.
This is the default value for all products in a given category, and can also be set directly on
@@ -120,13 +209,52 @@ follows:
location. This is the default value for all products in a given category, and can also be set
directly on each product.
Access reporting data generated by inventory valuation
------------------------------------------------------
.. tabs::
.. group-tab:: Anglo-Saxon
In Anglo-Saxon accounting, the :guilabel:`Stock Input Account` and :guilabel:`Stock Output
Account` are set to *different* :guilabel:`Current Assets` accounts. This way, delivering
products and invoicing the customer balance the *Stock Output* account, while receiving
products and billing vendors balance the *Stock Input* account.
To modify the account type, go to the click the |external link| icon to the right of the stock
input/output account. In the pop-up window, choose :guilabel:`Current Assets` from the
:guilabel:`Type` drop-down menu.
.. figure:: inventory_valuation_config/account-type.png
:align: center
:alt: Display account setup page, highlighting the **Type** field.
The *Stock Input* account is set to `Stock Interim (Received)`, a *Current Asset* account
type.
.. group-tab:: Continental
In Continental accounting, the :guilabel:`Stock Input Account` and :guilabel:`Stock Output
Account` are set to **the same** :guilabel:`Current Assets` account. That way, one account can
be balanced when items are bought and sold.
.. example::
The stock input and output accounts are both set to `Stock Interim (Received)`, a
:guilabel:`Current Assets` account type. They can also be set to the `Stock Interim
(Delivered)`, as long as the input and output accounts are assigned to the **same**
account.
.. image:: inventory_valuation_config/continental-stock-account.png
:align: center
:alt: Show the Stock Input and Output accounts.
Inventory valuation reporting
=============================
To start, go to :menuselection:`Accounting --> Reporting --> Balance Sheet`. At the top of the
dashboard, change the :guilabel:`As of` field value to :guilabel:`Today`, and adjust the filtering
:guilabel:`Options` to :guilabel:`Unfold All` in order to see all of the latest data displayed,
all at once.
:guilabel:`Options` to :guilabel:`Unfold All` in order to see all of the latest data displayed, all
at once.
.. seealso::
:doc:`../../../../finance/accounting/get_started/cheat_sheet`
Under the parent :guilabel:`Current Assets` line item, look for the nested :guilabel:`Stock
Valuation Account` line item, where the total valuation of all of the inventory on hand is
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

@@ -2,8 +2,6 @@
Using inventory valuation
=========================
.. _inventory/reporting/using_inventory_val:
*Inventory valuation* is a quintessential accounting procedure that calculates the value of on-hand
stock. Once determined, the inventory valuation amount is then incorporated into a company's overall
value.
@@ -12,7 +10,7 @@ In Odoo, this process can be conducted manually— by warehouse employees physic
products— or automatically through the database.
.. seealso::
:ref:`Inventory valuation configuration<inventory/inventory_valuation_config>`
:doc:`inventory_valuation_config`
Understand the basics of inventory valuation
============================================
@@ -10,5 +10,6 @@ Shipping Setup
setup/delivery_method
setup/third_party_shipper
setup/bpost
setup/ups_credentials
setup/dhl_credentials
@@ -0,0 +1,110 @@
=================
Bpost integration
=================
Set up the *Bpost* shipping connector in Odoo to manage Bpost shipments to clients directly within
Odoo. To configure it, complete these steps:
#. Create a Bpost account.
#. Get the :ref:`Account ID and passphrase <inventory/shipping/Bpost-account>`.
#. Set up the shipping method in Odoo.
Upon completion, it is possible to calculate the cost of shipping, based on package size and weight,
have the charges applied directly to a Bpost business account, and automatically print Bpost
tracking labels through Odoo.
.. seealso::
- :doc:`third_party_shipper`
- :doc:`delivery_method`
- :doc:`dhl_credentials`
- :doc:`ups_credentials`
Bpost account setup
===================
To begin, go to the `Bpost website <https://parcel.bpost.be/en/home/business>`_ to create, or log
into, the company's Bpost business account. When creating the Bpost account, have the company's VAT
number and mobile phone number ready.
Follow the website's steps to complete registration, and sign up for shipping services. Doing so
submits a request to enter a contractual business relationship between the company and Bpost.
.. important::
Odoo **cannot** be integrated with `non-business Bpost
<https://bpost.freshdesk.com/support/solutions/articles/174847-account-id-and-passphrase>`_
accounts.
After completing the setup, get the Bpost account ID and passphrase, by navigating to the
:guilabel:`Shipping Manager` menu item.
.. _inventory/shipping/bpost-account:
On the :guilabel:`Shipping Manager` page, go to the :guilabel:`Admin` tab, then the
:guilabel:`General Settings` tab, to find the :guilabel:`Account ID` and :guilabel:`Passphrase`
needed to configure Odoo's shipping method.
.. image:: bpost/credentials.png
:align: center
:alt: In the *Admin* tab, show the Account ID and Passphrase.
Configure Bpost shipping method
===============================
With those necessary credentials, configure the Bpost shipping method in Odoo by going to
:menuselection:`Inventory app --> Configuration --> Shipping Methods`.
On the :guilabel:`Shipping Methods` page, click :guilabel:`Create`.
In the :guilabel:`Provider` field, select :guilabel:`Bpost` from the drop-down menu. Doing so
reveals the :guilabel:`Bpost Configuration` tab at the bottom of the form, where the Bpost
credentials can be entered.
For details on configuring the other fields on the shipping method, such as :guilabel:`Delivery
Product`, refer to the :doc:`Configure third-party carrier <third_party_shipper>` documentation.
.. note::
To generate Bpost :doc:`shipping labels <../operation/labels>` through Odoo, ensure the
:guilabel:`Integration Level` option is set to :guilabel:`Get Rate and Create Shipment`.
In the :guilabel:`Bpost Configuration` tab, complete the following fields:
- :guilabel:`Bpost Account Number` (required field): enter the company's unique :ref:`account ID
<inventory/shipping/bpost-account>` from the Bpost website.
- :guilabel:`Passphrase` (required field): enter the :ref:`passphrase
<inventory/shipping/bpost-account>` from the Bpost website.
- :guilabel:`Bpost Delivery Nature`: select either :guilabel:`Domestic` or :guilabel:`International`
shipping services. Choosing :guilabel:`Domestic` shows the :guilabel:`Options` section, while
:guilabel:`International` enables the :guilabel:`Bpost Shipment Type` and :guilabel:`Bpost Parcel
Return Instructions` fields.
- :guilabel:`Bpost Package Type`: select the type of shipping service from the drop-down menu.
For `domestic delivery
<https://help.shipmondo.com/en/articles/6092265-bpost-belgium-parcel-types-and-requirements>`_,
the options are: :guilabel:`bpack 24h Pro`, :guilabel:`bpack 24h business`, or :guilabel:`bpack
Bus`.
For `international delivery <https://www.bpost.be/en/business-parcels-send/international>`_, the
options are: :guilabel:`bpack World Express Pro`, :guilabel:`bpack World Business`, or
:guilabel:`bpack Europe Business`.
- :guilabel:`Bpost Shipment Type` (required field): for international deliveries, declare the type
of goods in the package as :guilabel:`SAMPLE`, :guilabel:`GIFT`, :guilabel:`GOODS`,
:guilabel:`DOCUMENTS`, or :guilabel:`OTHER`.
- :guilabel:`Bpost Parcel Return Address`: return address when an international shipment fails to
deliver. Select from the drop-down menu: :guilabel:`Destroy`, :guilabel:`Return to sender by air`,
or :guilabel:`Return to sender by road`.
- :guilabel:`Label Type`: choose :guilabel:`A6` or :guilabel:`A4` label sizes from the drop-down
menu.
- :guilabel:`Label Format`: choose :guilabel:`PDF` or :guilabel:`PNG` from the drop-down menu.
For domestic deliveries, these features are available in the :guilabel:`Options` section:
- Enable the :guilabel:`Delivery on Saturday` feature to include Saturdays as possible delivery
dates. Depending on the :guilabel:`Bpost Package Type` selected, this option might incur
additional costs to the company.
- Enable the :guilabel:`Generate Return Label` feature to automatically print a return label upon
validating the delivery order.
.. image:: bpost/bpost.png
:align: center
:alt: Show Bpost shipping method.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -3,8 +3,8 @@ SMS essentials
==============
Utilizing :abbr:`SMS (Short Message Service)` outreach in communication strategies can help
companies expand their market reach, especially in some countries, where emails might not be very
common, or even used at all.
companies expand their market reach, especially in countries where emails might not be common, or
even used at all.
Odoo's *SMS Marketing* application can also help boost conversion rates around valuable actions,
such as event registrations, free trials, purchases, etc., since text and mobile-based marketing
@@ -58,26 +58,25 @@ will be sent. By default, Odoo has :guilabel:`Mailing List` selected. If this is
.. note::
To create (or edit) a mailing list, go to :menuselection:`Mailing Lists --> Mailing List`. There,
Odoo displays all previously created mailing lists, along with various types of data related to
Odoo displays all previously-created mailing lists, along with various types of data related to
that specific list (e.g. number of contacts, mailings, recipients, etc.).
To learn more about mailing lists and contacts, check out
:doc:`mailing_lists_blacklists`
To learn more about mailing lists and contacts, check out :doc:`mailing_lists_blacklists`.
.. image:: sms_essentials/sms-mailing-list.png
:align: center
:alt: View of the mailing list page in the SMS marketing application.
To reveal all the possible options in the :guilabel:`Recipients` field, click the field to see all
the choices Odoo makes avaialble.
the choices Odoo makes available.
When another field (other than :guilabel:`Mailing List`) is selected, the option to specify that
chosen field even further becomes available — either with a default recipient filter equation that
appears automatically (which can be customized to fit any business need), or, if no default
recipient filter equation is present, an :guilabel:`Add Filter` button will appear.
recipient filter equation is present, an :guilabel:`Add Filter` button appears.
Clicking the :guilabel:`Add Filter` button, reveals fully customizable domain rule fields, which can
be configured similar to an equation. You can create multiple recipient rules, if necessary.
Clicking the :guilabel:`Add Filter` button reveals fully customizable domain rule fields, which can
be configured similar to an equation. Multiple recipient rules can be created, if necessary.
Then, Odoo will only send the :abbr:`SMS (Short Message Service)` to recipients who fit into
whatever criteria is configured in those fields. Multiple rules can be added.
@@ -176,6 +175,34 @@ is visualized as different graphs and charts, which can be sorted and grouped in
:align: center
:alt: Reporting page in SMS Marketing.
.. tip::
SMS messages can be sent using server actions in Odoo. To do so, in :ref:`developer mode
<developer-mode>`, navigate to :menuselection:`Settings app --> Technical menu --> Automation
section --> Automated Actions`. Then, click :guilabel:`Create` to create a new action.
Enter an :guilabel:`Action Name` and select a :guilabel:`Model` to implement this action on. Set
the :guilabel:`Trigger` to either :guilabel:`On Creation`, :guilabel:`On Update`, :guilabel:`On
Creation & Update`, :guilabel:`On Deletion`, :guilabel:`Based on Form Modification`, or
:guilabel:`Based on Timed Condition`.
Based on the selection for the :guilabel:`Trigger`, additional fields may populate.
Under the :guilabel:`Apply on` field a record filter using a domain can be created. Ensure a
model has been selected before setting any domains on the :guilabel:`Apply on` field. Click
:guilabel:`Edit Domain` to set record parameters.
Under :guilabel:`Action To Do` drop-down field, select :guilabel:`Send SMS Text Message`. Next,
set the :guilabel:`SMS Template`, and choose whether the SMS message should be logged as a note,
by ticking the box next to :guilabel:`Log as Note`.
.. image:: sms_essentials/automated-action-sms.png
:align: center
:alt: Automated action template with action to do, SMS template and log as note highlighted.
Ensure the :guilabel:`Active` toggle is set to *on* for the automated action to run.
:guilabel:`Save` the completed automated action to implement the change.
.. seealso::
- :doc:`sms_campaign_settings`
- :doc:`mailing_lists_blacklists`
- :doc:`../../../essentials/in_app_purchase`
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -9,9 +9,9 @@ Odoo VoIP (Voice over Internet Protocol) can be set up to work together with `Ax
<https://www.axivox.com/>`_. In that case, an Asterisk server is **not** necessary, as the
infrastructure is hosted and managed by Axivox.
To use this service, `contact Axivox <https://www.axivox.com/contact/>`_ to open an account. Before
doing so, verify that Axivox covers the company's area, along with the areas the company's users
wish to call.
To use this service, `contact Axivox <https://www.axivox.com/en/contact/>`_ to open an account.
Before doing so, verify that Axivox covers the company's area, along with the areas the company's
users wish to call.
Configuration
=============
@@ -1,48 +1,83 @@
===================================================
Enrich your contacts base with Partner Autocomplete
===================================================
=========================================
Enrich contacts with partner autocomplete
=========================================
Parter Autocomplete helps you to enrich your contacts database with corporate data. Select one of
the companies suggested in the dropdown, and quickly get all the information you need.
*Partner autocomplete* enriches the contacts database with corporate data. In any module, enter the
new company name into the :guilabel:`Customer` field (`partner_id` technical field), and select one
of the companies suggested in the drop-down menu. Instantly get valuable company information full of
hard-to-find data for a desired company.
.. important::
A company **cannot** already be manually entered in the *Contacts* application prior to enriching
it with data.
The information provided by partner autocomplete can include general information about the business
(including full business name and logo), social media accounts, :guilabel:`Company type`,
:guilabel:`Founded` information, :guilabel:`Sectors` information, the number of
:guilabel:`Employees`, :guilabel:`Estimated revenue`, :guilabel:`Phone` number,
:guilabel:`Timezone`, and :guilabel:`Technologies Used`.
.. important::
When getting a company's contact information make sure to be aware of the latest EU regulations.
For more information about General Data Protection Regulation refer to: `Odoo GDPR
<http://odoo.com/gdpr>`_. In Odoo, individual contact information cannot be searched for with
the partner autocomplete feature.
Configuration
=============
Go to :menuselection:`Settings --> Contacts` and activate the *Partner Autocomplete* feature.
Go to :menuselection:`Settings app --> Contacts section`. Then, activate the :guilabel:`Partner
Autocomplete` feature, by ticking the checkbox beside it, and clicking :guilabel:`Save`.
.. image:: partner_autocomplete/settings_partner_autocomplete.png
.. image:: partner_autocomplete/settings-partner-autocomplete.png
:align: center
:alt: View of settings page and the activations of the feature in Odoo
:alt: View of settings page and the activations of the feature in Odoo.
Enrich your contacts with corporate data
========================================
Enrich contacts with corporate data
===================================
| From any module, once you start to create a new contact typing the name of it, the system
will suggest a potential match. If you select it, the contact will be populated with corporate
data.
| For example, after typing *Odoo*, you will get the following information:
From any module, as the user is typing in the name of a new company contact, Odoo reveals a large
drop-down menu of potential match suggestions. If any are selected, the contact is then populated
with corporate data related to that specific selection.
.. image:: partner_autocomplete/odoo_autocomplete.png
For example, after typing `Odoo`, the following information populates:
.. image:: partner_autocomplete/odoo-autocomplete.png
:align: center
:alt: Creating a new contact in Odoo
.. image:: partner_autocomplete/odoo_info_autocomplete.png
In the chatter, the following information populates about the company, after clicking on the desired
pre-populated contact:
.. image:: partner_autocomplete/odoo-info-autocomplete.png
:align: center
:alt: View of the information being shown about odoo with the autocomplete option in Odoo
.. tip:: Partner Autocomplete also works if you enter a VAT number instead of a company name.
.. tip::
Partner Autocomplete also works if a :abbr:`VAT (value-added tax)` number is entered instead of
company name.
Pricing
=======
| *Partner Autocomplete* is an *In-App Purchase (IAP)* service, which requires prepaid credits to be
used. Each request will consume one credit.
| To buy credits, go to :menuselection:`Settings --> Contacts --> Partner Autocomplete or Odoo IAP -->
View My Services` and select a package.
*Partner Autocomplete* is an *In-App Purchase (IAP)* service, which requires prepaid credits to be
used. Each request consumes one credit.
To buy credits, go to :menuselection:`Settings app --> Contacts section`. Then, locate either the
:guilabel:`Partner Autocomplete` feature and click :guilabel:`Buy credits`, or locate the
:guilabel:`Odoo IAP` feature and click :guilabel:`View My Services`. From the resulting page, select
a desired package.
.. note::
- If you run out of credits, the only information that will be populated when clicking on
the suggested company will be the website link and the logo.
- If you are on Odoo Online and you have the Enterprise version, you benefit from free trial
credits to test the feature.
- Learn about our *Privacy Policy* `here <https://iap.odoo.com/privacy#header_2>`_.
If the database runs out of credits, the only information populated when clicking on the
suggested company will be the website link and the logo.
Learn about our `Privacy Policy <https://iap.odoo.com/privacy>`_.
.. note::
Enterprise Odoo users with a valid subscription get free credits to test :abbr:`IAP (In-App
Purchase)` features before deciding to purchase more credits for the database. This includes
demo/training databases, educational databases, and one-app-free databases.
.. seealso::
:doc:`../../../essentials/in_app_purchase`
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

@@ -30,5 +30,6 @@ and select a product to open the product form. In the :guilabel:`Sales` tab, ena
.. toctree::
:titlesonly:
configuration/epos_printers
configuration/https
configuration/epos_ssc
@@ -0,0 +1,53 @@
=============
ePOS printers
=============
ePOS printers are designed to work seamlessly with Point of Sale systems. Once connected, these
devices automatically share information, allowing for direct printing of tickets from the POS system
to the ePOS printer.
.. important::
- Epson printers using Wi-Fi/Ethernet connections and following the `EPOS SDK Javascript protocol
<https://download4.epson.biz/sec_pubs/pos/reference_en/technology/epson_epos_sdk.html>`_ are
compatible with Odoo **without** needing an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Thermal printers using ESC/POS or StarPRNT protocol are compatible **with** an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Epson printers using only USB connections are compatible **with** an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Epson printers that connect via Bluetooth are **not compatible**.
.. seealso::
- :doc:`https`
- :doc:`epos_ssc`
Directly supported ePOS printers
================================
The following ePOS printers are directly compatible with Odoo without needing an :doc:`IoT Box
</applications/general/iot/devices/printer>`.
- Epson TM-m30 i/ii/iii (Wi-Fi/Ethernet models only; Recommended)
- Epson TM-H6000IV-DT (Receipt printer only)
- Epson TM-T70II-DT
- Epson TM-T88V-DT
- Epson TM-L90-i
- Epson TM-T70-i
- Epson TM-T82II-i
- Epson TM-T83II-i
- Epson TM-U220-i
- Epson TM-m10
- Epson TM-P20 (Wi-Fi® model)
- Epson TM-P60II (Receipt: Wi-Fi® model)
- Epson TM-P60II (Peeler: Wi-Fi® model)
- Epson TM-P80 (Wi-Fi® model)
ePOS printers with IoT Box integration
======================================
The following printers require an :doc:`IoT Box </applications/general/iot/devices/printer>` to be
compatible with Odoo:
- Epson TM-T20 family (incompatible ePOS software)
- Epson TM-T88 family (incompatible ePOS software)
- Epson TM-U220 family (incompatible ePOS software)
@@ -4,32 +4,7 @@
Self-signed certificate for ePOS printers
=========================================
ePOS printers are designed to work seamlessly with Point of Sale systems. Once connected, the two
devices automatically share information, enabling the direct printing of tickets from the POS system
to the ePOS printer.
.. note::
These `Epson ePOS printers
<https://c4b.epson-biz.com/modules/community/index.php?content_id=91>`_ are compatible with Odoo:
- TM-H6000IV-DT (Receipt printer only)
- TM-T70II-DT
- TM-T88V-DT
- TM-L90-i
- TM-T20II-i
- TM-T70-i
- TM-T82II-i
- TM-T83II-i
- TM-T88V-i
- TM-U220-i
- TM-m10
- TM-m30
- TM-P20 (Wi-Fi® model)
- TM-P60II (Receipt: Wi-Fi® model)
- TM-P60II (Peeler: Wi-Fi® model)
- TM-P80 (Wi-Fi® model)
To work with Odoo, some models that can be used without an
To work with Odoo, some printer models that can be used without an
:doc:`IoT box </applications/general/iot/config/connect>` may require :doc:`the HTTPS protocol
<https>` to establish a secure connection between the browser and the printer. However, trying to
reach the printer's IP address using HTTPS leads to a warning page on most web browsers. In that
@@ -2,8 +2,8 @@
Secure connection (HTTPS)
=========================
If **Direct Devices** is enabled in a Point of Sale settings (for example, if you use an ePos
printer), HTTP becomes the default protocol.
If **Direct Devices** is enabled in a Point of Sale settings (for example, if you use an :doc:`ePos
printer <epos_printers>`), HTTP becomes the default protocol.
Force your Point of Sale to use a secure connection (HTTPS)
===========================================================
@@ -6,8 +6,8 @@ Connecting a payment terminal allows you to offer a fluid payment flow to your c
the work of your cashiers.
.. important::
- Worldline payment terminals require an :doc:`IoT Box </applications/general/iot>`.
- Worldline is currently only available in Belgium, the Netherlands and Luxembourg.
- Ingenico payment terminals require an :doc:`IoT Box </applications/general/iot>`.
- Ingenico is currently only available in Belgium, the Netherlands and Luxembourg.
- Odoo works with the Ingenico Lane/, Desk/, and Move/ payment terminals as they support the TLV
communication protocol through TCP/IP.
@@ -17,21 +17,22 @@ Configuration
Connect an IoT Box
------------------
Connecting an Ingenico Payment Terminal to Odoo is a feature that
requires an IoT Box. For more information on how to connect an IoT Box
to your database, please refer to the :doc:`IoT documentation
</applications/general/iot/config/connect>`.
Connecting an Ingenico payment terminal to Odoo is a feature that requires an IoT Box. For more
information on how to connect an IoT Box to your database, please refer to the :doc:`IoT
documentation </applications/general/iot/config/connect>`.
Configure the Lane/5000 for Ingenico BENELUX
--------------------------------------------
Configure the Lane/Desk/Move 5000 terminals for Ingenico BENELUX
----------------------------------------------------------------
Click on the F button of the terminal, then go in the
:menuselection:`PoS Menu --> Settings` and enter the settings password.
#. Press the function button (:guilabel:`F` on Lane/5000, :guilabel:`⦿` on Desk/5000 and
Move/5000).
#. Go to :menuselection:`Kassa menu --> Settings Menu` and enter the settings password.
#. Select :guilabel:`Change Connection` and press :guilabel:`OK` on the next screen.
#. Select :guilabel:`TCP/IP` and :guilabel:`IP-address`.
#. On the next screen, enter the IP address of your IoT Box.
#. Enter `9000` as port number and press :guilabel:`OK` on the next screen.
Now, click on connection change and TCP/IP. Type the IP of your *IoT
Box* (you can find it on the form view of your IoT Box). Then, enter
9000 as port. The terminal will restart. Once it is done, go on your
*IoT Box* form in Odoo and verify that the terminal has been found.
At this point, the terminal restarts and should be displayed in your IoT Box form in Odoo.
.. image:: ingenico/payment_terminal_02.png
:align: center
@@ -6,8 +6,8 @@ Connecting a Vantiv payment terminal allows you to offer a fluid payment flow to
ease the work of your cashiers.
.. note::
Please note MercuryPay only operates with US and Canadian banks, making
this procedure only suitable for North American businesses.
Please note MercuryPay only operates with US and Canadian banks, making this procedure only
suitable for North American businesses.
.. warning::
Vantiv card readers should be purchased exclusively from Vantiv, as certain Vantiv terminals
@@ -16,35 +16,30 @@ ease the work of your cashiers.
Configuration
=============
Configure the Payment Method
Configure the payment method
----------------------------
First, go in the general settings of the POS app, and activate the
Vantiv setting.
Enable the payment terminal in the :guilabel:`Payment Terminals` section :ref:`of the application
settings <configuration/settings>`.
.. image:: vantiv/vantiv_01.png
:align: center
Then, go to :menuselection:`Point of Sale --> Configuration --> Payment Methods`, and :doc:`create
the related payment method <../../payment_methods>`. Set the journal type as :guilabel:`Bank` and
select :guilabel:`Vantiv` in the :guilabel:`Use a Payment Terminal` field.
Back in :menuselection:`Point of Sale --> Configuration --> Point of Sale`, go in the
payments section and access your payment methods. Create a new payment
method for Vantiv, select the payment terminal option Vantiv, and create
new Vantiv credentials.
Type the name you want to give to your :guilabel:`Vantiv Credentials` and click :guilabel:`Create
and edit`. Enter your :guilabel:`Merchant ID` and :guilabel:`Merchant Password`, then click
:guilabel:`Save & Close`.
.. image:: vantiv/vantiv_02.png
:align: center
.. image:: vantiv/vantiv-method.png
:alt: Vantiv payment method
To create new Vantiv credentials, fill in your merchant ID and password,
then save. Make sure the credentials you just created are selected, then
save the payment method.
Once the payment method is created, you can select it in your POS settings. To do so, go to the
:ref:`POS' settings <configuration/settings>`, click :guilabel:`Edit`, and add the payment method
under the :guilabel:`Payments` section.
.. image:: vantiv/vantiv_03.png
:align: center
Pay with a Payment Terminal
Pay with a payment terminal
===========================
In your PoS interface, at the moment of the payment, select your Vantiv
payment method and… thats all.
.. image:: vantiv/vantiv_04.png
:align: center
When processing a payment, select the related payment method. Check the amount and click on
:guilabel:`Send`. Once the payment is successful, the status changes to :guilabel:`Payment
Successful`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -19,6 +19,7 @@ Receipt Printing` setting.
.. seealso::
- :doc:`restaurant/bill_printing`
- :doc:`configuration/epos_printers`
Reprint a receipt
-----------------
@@ -49,14 +49,21 @@ The connector is able to:
downloading monthly fees reports, handling disputes, or issuing refunds must be managed from
Amazon Seller Central, as usual.
.. warning::
As of February 19, 2024, in North American marketplaces, :abbr:`FBA (Fulfilled by Amazon)` orders
created with the *Amazon Connector*, do not get the customer's name passed onto the
sales/delivery order in Odoo. This is due to the fact that Amazon now calculates, and remits,
sales tax on behalf of sellers. In other words, personally identifiable customer information is
not transmitted to the seller any longer, after a :abbr:`FBA (Fulfilled by Amazon)` order.
.. _amazon/supported-marketplaces:
Supported Marketplaces
======================
The Amazon Connector currently supports 9 marketplaces.
If a marketplace is not listed below, it may be possible for you to :ref:`add it as an unsupported
marketplace <amazon/add-unsupported-marketplace>`.
The *Amazon Connector* currently supports 9 marketplaces. If a marketplace is not listed below, it
may be possible for you to :ref:`add it as an unsupported marketplace
<amazon/add-unsupported-marketplace>`.
+-------------------------------+
| **North America region** |
@@ -5,6 +5,9 @@ reCAPTCHA v3 on forms
Google's reCAPTCHA protects website forms against spam and abuse. It attempts to distinguish between
human and bot submissions.
.. warning::
reCAPTCHA v3 may not be compliant with local data protection regulations.
.. note::
reCAPTCHA v3 works in the background and does not interrupt visitors. However, if the check
fails, visitors cannot submit the form.

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