Compare commits
354 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 14aed6215f | |||
| 7e3309b922 | |||
| 6f74248de1 | |||
| be0b5e65d5 | |||
| 83b6895deb | |||
| 16537bb9c5 | |||
| 71e2a50d40 | |||
| 514c175824 | |||
| 65e7f1b3c5 | |||
| d362d4ebdb | |||
| 1aee294219 | |||
| d8cd13b659 | |||
| 2f5e130179 | |||
| d5fd2f1c66 | |||
| 92c5c3db31 | |||
| bed068f95a | |||
| 7212fc98cd | |||
| 3b40e6c1ec | |||
| d2497d2b14 | |||
| 5965bad8ea | |||
| ee8aed02c8 | |||
| 17787e62c3 | |||
| 7ecaf74124 | |||
| afbc491940 | |||
| b3e2b51a6a | |||
| acf8d5e4a7 | |||
| 916b185065 | |||
| 93a0f41756 | |||
| bf9bbff058 | |||
| 32976cdd84 | |||
| 00e96e5635 | |||
| c4fd10f94e | |||
| 10a92e66cf | |||
| 634a5af824 | |||
| 53f8dcd991 | |||
| a535d2fe9d | |||
| cb51299cf1 | |||
| a42a88bf7c | |||
| 8cea31c24d | |||
| d03b45c6f9 | |||
| e238e63240 | |||
| e14c53b60c | |||
| d1398e5889 | |||
| c226214530 | |||
| c6e7dba0bd | |||
| 79745b702f | |||
| baf1e9b464 | |||
| 26e296e1a7 | |||
| 11a2af286d | |||
| 7c10386675 | |||
| a00fa1c997 | |||
| 1f88f9dd67 | |||
| 7598c57f48 | |||
| da17cb4fef | |||
| bb1322131d | |||
| 3b573b0e60 | |||
| d4f2a2768c | |||
| d4fe1eb4d1 | |||
| 9af6b453fe | |||
| 11ef368a58 | |||
| 60d6f7ee59 | |||
| ba86ed096a | |||
| 6e18b6f7de | |||
| 2de0593eb7 | |||
| 6b17ed5052 | |||
| 9d228fc301 | |||
| f56dce3a15 | |||
| 6263eea056 | |||
| 5738af24c6 | |||
| 5a151eafd5 | |||
| 18ca6d9f80 | |||
| c8555a7e1a | |||
| 9c5cee3f96 | |||
| 4072bf6ece | |||
| 0e82e60673 | |||
| 18c7aa4c47 | |||
| 5938ac0931 | |||
| c44d4dfcab | |||
| dd5f46d011 | |||
| 0752255be8 | |||
| 35500f8035 | |||
| fc144a96fd | |||
| 9ae3ffc925 | |||
| 8ca247d9dd | |||
| 9ed575b01e | |||
| 4e5ae3ea87 | |||
| 6d74ff585b | |||
| d383da505d | |||
| 8f5909a0cb | |||
| 9584fed709 | |||
| e79a2e674d | |||
| 217ca237bf | |||
| 6495e78998 | |||
| cac8d8a558 | |||
| 0d28e54c4a | |||
| 3acda8ef04 | |||
| 06b380921b | |||
| 15b741e785 | |||
| 1bad5cebaf | |||
| 4537468fc1 | |||
| 957adbea2c | |||
| 54de7881a2 | |||
| 2ed1db8304 | |||
| d31b997900 | |||
| 701b8437aa | |||
| 2ae0e15982 | |||
| da4186c1c2 | |||
| 7dfcac709d | |||
| e612b445b9 | |||
| d25d62d1c0 | |||
| 55f2d86800 | |||
| 14a91520df | |||
| 3b92fc672a | |||
| 4975afda0d | |||
| 62bc2eda35 | |||
| d506554ed0 | |||
| 594f3573d9 | |||
| d21e9d8c12 | |||
| 68ecabb435 | |||
| 886e1dc19c | |||
| 8beae0b9e5 | |||
| 636441b94c | |||
| 9aa160f042 | |||
| 118e31d96a | |||
| 5d87049d92 | |||
| d39beb75ae | |||
| 6fe36eacc4 | |||
| 3320f52cdd | |||
| d9e7d86532 | |||
| 9feca1b4e4 | |||
| d42810f05d | |||
| d77c24d556 | |||
| 6366c20ffa | |||
| 43426fa893 | |||
| 3c9ea881a9 | |||
| 928e3bb43e | |||
| 57212a6798 | |||
| cd32574f88 | |||
| f6994a1047 | |||
| 55d3d59a64 | |||
| 6c74ac42f9 | |||
| 96f3a3e846 | |||
| 148549b3d0 | |||
| 3b1f9f6df2 | |||
| 83db1bdd8d | |||
| 2341f42d4a | |||
| fe3281523c | |||
| 011ef11978 | |||
| 184dd5f93f | |||
| 5f566009c7 | |||
| 4983adb63f | |||
| a99c1cd7e1 | |||
| 90fe2b31b1 | |||
| 69b145716c | |||
| 4d21807379 | |||
| 15c6bb8b0e | |||
| 9a0e87e861 | |||
| 0745c3f180 | |||
| f1d8cb8f16 | |||
| aef490c600 | |||
| ab659db849 | |||
| f46dda5e61 | |||
| f1bd4ec134 | |||
| 05cd6af1ed | |||
| cb644b0834 | |||
| 6bfa0802c7 | |||
| e59188d85b | |||
| fb2f1d5f8b | |||
| ed15f46531 | |||
| da6d3e6740 | |||
| fade821930 | |||
| b94d534bae | |||
| 714b75ce3b | |||
| 59ba096ee2 | |||
| 4e929b4ebc | |||
| 905914c939 | |||
| 801a165df4 | |||
| 693a48f150 | |||
| 5c781afe88 | |||
| eca1b7ffd3 | |||
| de7fd89137 | |||
| 9fb69e4eaf | |||
| 6920015971 | |||
| 1a405b889a | |||
| 6738b2cbea | |||
| 430f7e2307 | |||
| 62b02031fa | |||
| 1929185270 | |||
| 20282cdb4c | |||
| 4d211ed914 | |||
| a7ef06c1e5 | |||
| 50d983d48d | |||
| f80a74f460 | |||
| 7e37903b8f | |||
| 50b3852bab | |||
| ba97b13527 | |||
| e8a260f20a | |||
| e25de2b5b5 | |||
| 34598f13bf | |||
| 6ebd27144b | |||
| a08fc7db34 | |||
| 1f5a41a209 | |||
| a3ec00b836 | |||
| a5cb329f3f | |||
| 9543b25714 | |||
| d00c04e259 | |||
| 489fe7d3ea | |||
| 2d0f640223 | |||
| 1b85a45840 | |||
| d2aa8149df | |||
| 71577350e9 | |||
| 57de351036 | |||
| b7dd96b5b8 | |||
| 3303571492 | |||
| 61901c5020 | |||
| 23a330ea6e | |||
| 2a9bd10799 | |||
| f036553f5a | |||
| 788fc51ca6 | |||
| 5f5deac264 | |||
| 50cf2f3063 | |||
| 25f44f7ac2 | |||
| e6d312f18d | |||
| 045cdbdbeb | |||
| fd37b9af1c | |||
| 860befac4a | |||
| 7cf04c1dba | |||
| 2354f0946e | |||
| 4a066cb017 | |||
| 66fc5639b6 | |||
| 3140917a53 | |||
| 298a222d00 | |||
| 8a6152f165 | |||
| e78be27fbf | |||
| 888018e9e5 | |||
| c19f71fd4c | |||
| 753d561fe8 | |||
| 9e6572ad08 | |||
| de9e726858 | |||
| acb0a1cc5f | |||
| fd17dcef90 | |||
| f73bf36e6d | |||
| 7d627adb35 | |||
| eff413bfb7 | |||
| 12c82cabbe | |||
| 5d735775b6 | |||
| d2ba715df8 | |||
| 6840b5df3f | |||
| d38eb79411 | |||
| d01ae4742f | |||
| 05bc055641 | |||
| 601f134c1a | |||
| 697f78e513 | |||
| 5bf5db129f | |||
| b8e0e40722 | |||
| d28d16e081 | |||
| 06d9c48501 | |||
| 3179286430 | |||
| 7fad040a46 | |||
| a63462d880 | |||
| 71a0af67aa | |||
| b639c86dd3 | |||
| a761e8e487 | |||
| bb15ecaeb9 | |||
| 97fa8b0863 | |||
| 2ecb63825b | |||
| a443e6b9d1 | |||
| 644f383656 | |||
| 3973c40516 | |||
| 16b0137ae5 | |||
| a76e5782cd | |||
| b646bafcfe | |||
| ba2a95a3d5 | |||
| f029c18683 | |||
| cd49934d95 | |||
| 7e409460be | |||
| ee18c4782c | |||
| 0456d100b2 | |||
| 102d9fc831 | |||
| 014468e02b | |||
| 5626d03c98 | |||
| da10d4a5bd | |||
| e73363b515 | |||
| 3cb351b6b9 | |||
| fe73a0b466 | |||
| 850c8a6022 | |||
| 8eac2ea5f3 | |||
| a9414ea3d3 | |||
| 0aaff7f75e | |||
| 2c9457e573 | |||
| 3e4f44211b | |||
| ef4b5f87d5 | |||
| 26fd5f3192 | |||
| 62f6502d61 | |||
| 45c5d9eef4 | |||
| 2810dafaa8 | |||
| 4ebdd21aa5 | |||
| d694b1e79d | |||
| a1ec5de39c | |||
| 98cac21297 | |||
| 8d27d765eb | |||
| ba8289b0da | |||
| 30e76c6eb3 | |||
| 8e1d1632d2 | |||
| 50d09bf155 | |||
| a2f80c56c2 | |||
| 334c0eac19 | |||
| 78a8d62e11 | |||
| 36a0e84a17 | |||
| 8778183bc7 | |||
| 4bb85a98ab | |||
| 1fc601e7c3 | |||
| b84b924463 | |||
| 935f03d0aa | |||
| efc6cb8cca | |||
| 8f88ea892b | |||
| 7f623b6ad5 | |||
| 522f54cc43 | |||
| 1250c4bf20 | |||
| 25009a9121 | |||
| 587964ef35 | |||
| c5ead11f0e | |||
| db6288f9a1 | |||
| 0a309c5c6b | |||
| d25a0d261b | |||
| 0f44035783 | |||
| a3ca109cf5 | |||
| ccdad0eef1 | |||
| 8d6bd636e1 | |||
| 582828999a | |||
| bf5ddc5886 | |||
| 8875a3c547 | |||
| d674c419c0 | |||
| 7a4b29d6dd | |||
| a30b2bbdfb | |||
| 867b90b13f | |||
| 52a0df9b6e | |||
| a17117047a | |||
| 919ab71dcd | |||
| 252f496f3d | |||
| 6b1cf8f2d0 | |||
| b28e3073d1 | |||
| 8d1c3ce4f3 | |||
| b2ac10427c | |||
| 6522417fa6 | |||
| ca2738ef00 | |||
| 63636d0518 | |||
| 6c350a6bb0 | |||
| 4073aac2bc | |||
| 3a16f09f78 | |||
| aae54dedd2 | |||
| 67058f8b96 | |||
| fd5c4b21ca | |||
| 1b92d8ec99 |
@@ -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) \
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
- Python dependencies listed in the file `requirements.txt`.
|
||||
- Make
|
||||
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
|
||||
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
|
||||
|
||||
### Instructions
|
||||
|
||||
@@ -18,8 +19,9 @@
|
||||
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
|
||||
for more detailed instructions.
|
||||
|
||||
Optional: place your local copy of the `odoo/odoo` repository in the parent directory or in the root
|
||||
directory of the documentation to build the latter with the documented Python docstrings.
|
||||
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
|
||||
the parent directory or in the root directory of the documentation to build the latter
|
||||
with the documented Python docstrings.
|
||||
|
||||
## Contribute to the documentation
|
||||
|
||||
|
||||
@@ -133,6 +133,24 @@ else:
|
||||
)
|
||||
odoo_dir_in_path = True
|
||||
|
||||
if odoo_dir_in_path:
|
||||
upgrade_util_dir = next(filter(Path.exists, [Path('upgrade-util'), Path('../upgrade-util')]), None)
|
||||
if not upgrade_util_dir:
|
||||
_logger.warning(
|
||||
"Could not find Upgrade Utils sources directory in `upgrade_util`.\n"
|
||||
"The developer documentation will be built but autodoc directives will be skipped.\n"
|
||||
"In order to fully build the 'Developer' documentation, clone the repository with "
|
||||
"`git clone https://github.com/odoo/upgrade-util` or create a symbolic link."
|
||||
)
|
||||
odoo_dir_in_path = False
|
||||
else:
|
||||
_logger.info(
|
||||
"Found Upgrade Util sources in %(directory)s",
|
||||
{'directory': upgrade_util_dir.resolve()},
|
||||
)
|
||||
from odoo import upgrade
|
||||
upgrade.__path__.append(str((upgrade_util_dir / 'src').resolve()))
|
||||
|
||||
# Mapping between odoo models related to master data and the declaration of the
|
||||
# data. This is used to point users to available xml_ids when giving values for
|
||||
# a field with the autodoc_field extension.
|
||||
@@ -250,6 +268,9 @@ redirects_dir = 'redirects/'
|
||||
sphinx_tabs_disable_tab_closing = True
|
||||
sphinx_tabs_disable_css_loading = True
|
||||
|
||||
# Autodoc ordering
|
||||
autodoc_member_order = 'bysource'
|
||||
|
||||
#=== Options for HTML output ===#
|
||||
|
||||
html_theme = 'odoo_theme'
|
||||
|
||||
@@ -46,10 +46,10 @@ Transferring an Odoo Online database
|
||||
====================================
|
||||
|
||||
.. important::
|
||||
Odoo Online's :ref:`intermediary versions <supported_versions>` cannot be hosted on-premise as
|
||||
that type of hosting does not support those versions. Therefore, if the database to transfer
|
||||
is running an intermediary version, it must be upgraded first to the next :ref:`major version
|
||||
<supported_versions>`, waiting for its release if necessary.
|
||||
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
|
||||
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
|
||||
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
|
||||
necessary.
|
||||
|
||||
.. example::
|
||||
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
|
||||
|
||||
@@ -21,7 +21,7 @@ turned into a testing environment.
|
||||
Deactivated features
|
||||
====================
|
||||
|
||||
Here is a non-exhaustive list of the deactivated parameters:
|
||||
Here is a non-exhaustive list of the deactivated features:
|
||||
|
||||
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
|
||||
- outgoing emails
|
||||
@@ -29,6 +29,7 @@ Here is a non-exhaustive list of the deactivated parameters:
|
||||
- payment providers
|
||||
- delivery methods
|
||||
- :abbr:`IAP (In-App Purchase)` tokens
|
||||
- website visibility (prevent search engines from indexing your site)
|
||||
|
||||
.. note::
|
||||
**A red banner at the top of the screen is displayed on the neutralized database so that it can
|
||||
|
||||
@@ -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
|
||||
================================
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ Manually
|
||||
--------
|
||||
|
||||
If you want to create your module structure manually,
|
||||
you can follow the :doc:`/developer/tutorials/getting_started` tutorial to understand
|
||||
you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand
|
||||
the structure of a module and the content of each file.
|
||||
|
||||
Push the development branch
|
||||
|
||||
@@ -740,7 +740,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
|
||||
==================
|
||||
|
||||
@@ -45,7 +45,7 @@ Git
|
||||
|
||||
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
|
||||
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
|
||||
Started developer tutorial </developer/tutorials/getting_started>`.
|
||||
Started developer tutorial </developer/tutorials/server_framework_101>`.
|
||||
|
||||
.. tabs::
|
||||
|
||||
@@ -144,7 +144,7 @@ Odoo requires **Python 3.10** or later to run.
|
||||
to download and install Python 3 if needed.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
If Python 3 is already installed, make sure that the version is 3.10 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. tabs::
|
||||
@@ -277,18 +277,22 @@ Dependencies
|
||||
|
||||
.. tab:: Debian/Ubuntu
|
||||
|
||||
For Debian-based systems, the packages are listed in the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
|
||||
|
||||
On Debian/Ubuntu, the following commands should install the required packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
|
||||
$ cd odoo #CommunityPath
|
||||
$ sudo ./setup/debinstall.sh
|
||||
|
||||
The `setup/debinstall.sh` script will parse the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
|
||||
|
||||
.. tab:: Install with pip
|
||||
|
||||
.. warning::
|
||||
Using pip may lead to security issues and broken dependencies; only do this if you
|
||||
know what you are doing.
|
||||
|
||||
As some of the Python packages need a compilation step, they require system libraries to
|
||||
be installed.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
Upgrade
|
||||
=======
|
||||
|
||||
.. _administration/upgrade:
|
||||
|
||||
An upgrade is the process of moving your database from an older version to a newer :doc:`supported
|
||||
version <supported_versions>` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is essential as
|
||||
each version comes with new and improved features, bug fixes, and security patches.
|
||||
@@ -45,30 +43,23 @@ An upgrade does not cover:
|
||||
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
|
||||
modules </developer/howtos/upgrade_custom_db>`.
|
||||
|
||||
|
||||
Upgrading in a nutshell
|
||||
-----------------------
|
||||
|
||||
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
|
||||
<upgrade/request-test-database>`).
|
||||
|
||||
#. If applicable, upgrade the source code of your custom module to be compatible with the new
|
||||
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
|
||||
|
||||
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
|
||||
<upgrade/test_your_db>`).
|
||||
|
||||
#. Report any issue encountered during the testing to Odoo via the `support page
|
||||
<https://odoo.com/help?stage=migration>`__.
|
||||
|
||||
#. Report any issue encountered during the testing to Odoo by `submitting a ticket for an issue
|
||||
related to my future upgrade (I am testing an upgrade) <https://odoo.com/help?stage=migration>`_.
|
||||
#. Once all issues are resolved and you are confident that the upgraded database can be used as
|
||||
your main database without any issues, plan the upgrade of your production database.
|
||||
|
||||
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
|
||||
to complete the process (see :ref:`upgrading the production database <upgrade/upgrade-prod>`).
|
||||
|
||||
#. Report any issue encountered during the upgrade to Odoo via the `support page
|
||||
<https://odoo.com/help?stage=post_upgrade>`__.
|
||||
#. Report any issue encountered during the upgrade to Odoo by `submitting a ticket for an issue
|
||||
related to my upgrade (production) <https://odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade/request-test-database:
|
||||
|
||||
@@ -254,9 +245,9 @@ working correctly and to get more familiar with the new version.
|
||||
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
|
||||
|
||||
If you face an issue while testing your upgraded test database, you can request the assistance of
|
||||
Odoo via the `support page <https://odoo.com/help?stage=migration>`__ by selecting the option
|
||||
related to testing the upgrade. In any case, it is essential to report any
|
||||
problem encountered during the testing to fix it before upgrading your production database.
|
||||
Odoo by `submitting a ticket for an issue related to my future upgrade (I am testing an upgrade)
|
||||
<https://odoo.com/help?stage=migration>`_. In any case, it is essential to report any problem
|
||||
encountered during the testing to fix it before upgrading your production database.
|
||||
|
||||
You might encounter significant differences with standard views, features, fields, and models during
|
||||
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
|
||||
@@ -280,24 +271,22 @@ 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.
|
||||
|
||||
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
|
||||
to frequently request another upgraded test database to ensure that the upgrade process is
|
||||
still successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade
|
||||
process the day before upgrading the production database is also recommended.**
|
||||
to frequently request another upgraded test database to ensure that the upgrade process is still
|
||||
successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade 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.
|
||||
@@ -358,10 +347,9 @@ exceptions.
|
||||
a filestore. Therefore, the upgraded database filestore must be merged with the production
|
||||
filestore before deploying the new version.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo via the
|
||||
`support page <https://odoo.com/help?stage=post_upgrade>`__ by selecting the option related to
|
||||
the upgrade in production.
|
||||
|
||||
In case of an issue with your production database, you can request the assistance of Odoo by
|
||||
`submitting a ticket for an issue related to my upgrade (production)
|
||||
<https://odoo.com/help?stage=post_upgrade>`_.
|
||||
|
||||
.. _upgrade/sla:
|
||||
|
||||
|
||||
@@ -7,5 +7,6 @@ Odoo essentials
|
||||
essentials/activities
|
||||
essentials/reporting
|
||||
essentials/search
|
||||
essentials/contacts
|
||||
essentials/export_import_data
|
||||
essentials/in_app_purchase
|
||||
|
||||
@@ -2,238 +2,344 @@
|
||||
Activities
|
||||
==========
|
||||
|
||||
*Activities* are follow-up tasks tied to a record in an Odoo database. Activities can be scheduled
|
||||
on any page of the database that contains a chatter thread, kanban view, list view, or activities
|
||||
view of an application.
|
||||
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
|
||||
|
||||
*Activities* are follow-up tasks tied to a record in an Odoo database.
|
||||
|
||||
.. _activities/important:
|
||||
|
||||
The icon used to display activities varies, depending on the :ref:`activity type
|
||||
<activities/types>`:
|
||||
|
||||
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
|
||||
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
|
||||
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
|
||||
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
|
||||
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
|
||||
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
|
||||
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
|
||||
|
||||
Schedule activities
|
||||
===================
|
||||
|
||||
One way that activities are created is by clicking the :guilabel:`Schedule Activity` button, located
|
||||
at the top of the *chatter* on any record. On the pop-up window that appears, select an
|
||||
:guilabel:`Activity Type` from the drop-down menu.
|
||||
Activities can be scheduled on any page of the database that contains a :ref:`chatter
|
||||
<activities/chatter>` thread, :ref:`Kanban view <activities/kanban>`, :ref:`list view
|
||||
<activities/list>`, or :ref:`activities view <activities/activity>` of an application.
|
||||
|
||||
.. _activities/chatter:
|
||||
|
||||
Chatter
|
||||
-------
|
||||
|
||||
Activities can be created from the chatter on any record.
|
||||
|
||||
To schedule a new activity, click the :guilabel:`Activities` button, located at the top of the
|
||||
chatter. In the :guilabel:`Schedule Activity` pop-up window that appears, :ref:`fill out the
|
||||
Schedule Activity form <activities/form>`.
|
||||
|
||||
.. image:: activities/chatter.png
|
||||
:align: center
|
||||
:alt: New activity type form.
|
||||
|
||||
.. _activities/kanban:
|
||||
|
||||
Kanban view
|
||||
-----------
|
||||
|
||||
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
|
||||
|
||||
To do so, click on the |clock| located at the bottom of an individual record.
|
||||
|
||||
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
|
||||
.. image:: activities/schedule-kanban-activity.png
|
||||
:align: center
|
||||
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. _activities/list:
|
||||
|
||||
List view
|
||||
---------
|
||||
|
||||
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
|
||||
|
||||
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
|
||||
:guilabel:`(settings adjust)` icon in the far-right of the top row.
|
||||
|
||||
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
|
||||
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
|
||||
appears.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. image:: activities/schedule-list-activity.png
|
||||
:align: center
|
||||
:alt: List view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. _activities/activity:
|
||||
|
||||
Activity view
|
||||
-------------
|
||||
|
||||
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
|
||||
the top-right corner of the main menu bar, amongst the other view option icons.
|
||||
|
||||
To open the activity view, click the |clock|.
|
||||
|
||||
.. image:: activities/activities.png
|
||||
:align: center
|
||||
:alt: Top-right menu with the Activities icon called out.
|
||||
|
||||
In this view, all the available activities are listed in the columns, while the horizontal entries
|
||||
represent all the individual records.
|
||||
|
||||
Activities that appear green have a due date in the future, activities that appear orange are due
|
||||
today, while activities appearing red are overdue.
|
||||
|
||||
Color bars in each column represent records for specific activity types, and display a number
|
||||
indicating how many activities are scheduled for that type.
|
||||
|
||||
If multiple activity types are scheduled for a record, a number appears in the box, indicating the
|
||||
total number of scheduled activities.
|
||||
|
||||
.. note::
|
||||
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
|
||||
regardless of the activity type, or the view.
|
||||
|
||||
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
|
||||
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
|
||||
.. image:: activities/activity-view.png
|
||||
:align: center
|
||||
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. _activities/form:
|
||||
|
||||
Schedule Activity form
|
||||
----------------------
|
||||
|
||||
Activities can be scheduled from many different places, such as from the :ref:`chatter
|
||||
<activities/chatter>` of a record, or from one of multiple views in an application, when available:
|
||||
the :ref:`Kanban view <activities/kanban>`, :ref:`list view <activities/list>`, or :ref:`activity
|
||||
view <activities/activity>`.
|
||||
|
||||
Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
|
||||
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
|
||||
Depending on what other applications are installed, additional options may be available.
|
||||
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
|
||||
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
|
||||
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
|
||||
user to the activity, select them from the drop-down menu.
|
||||
- :guilabel:`Notes`: add any additional information for the activity in this field.
|
||||
|
||||
When the :guilabel:`Schedule Activity` pop-up window is completed, click one of the following
|
||||
buttons:
|
||||
|
||||
- :guilabel:`Open Calendar`: opens the user's calendar to add and schedule the activity.
|
||||
|
||||
Click on the desired date and time for the activity, and a :guilabel:`New Event` pop-up window
|
||||
appears. The summary from the *Schedule Activity* pop-up window populates the :guilabel:`Title`
|
||||
field.
|
||||
|
||||
Enter the information in the :guilabel:`New Event` pop-up window, then click :guilabel:`Save &
|
||||
Close` to schedule it. Once scheduled, the activity is added to the chatter under the
|
||||
:guilabel:`Planned Activities` section.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Open Calendar` button **only** appears if the :guilabel:`Activity Type` is set
|
||||
to either :guilabel:`Call` or :guilabel:`Meeting`.
|
||||
|
||||
- :guilabel:`Schedule`: schedules the activity, and adds the activity to the chatter under
|
||||
:guilabel:`Planned Activities`.
|
||||
- :guilabel:`Schedule & Mark as Done`: adds the details of the activity to the chatter under
|
||||
:guilabel:`Today`. The activity is not scheduled, and is automatically marked as done.
|
||||
- :guilabel:`Done & Schedule Next`: adds the details of the activity to the chatter under
|
||||
:guilabel:`Today`. The activity is not scheduled, is automatically marked as done, and a new
|
||||
:guilabel:`Schedule Activity` pop-up window appears.
|
||||
- :guilabel:`Cancel`: discards any changes made on the :guilabel:`Schedule Activity` pop-up window.
|
||||
|
||||
.. image:: activities/schedule-pop-up.png
|
||||
:align: center
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
|
||||
.. _activities/all:
|
||||
|
||||
All scheduled activities
|
||||
========================
|
||||
|
||||
To view a consolidated list of activities, organized by application, click the |clock| in the header
|
||||
menu, located in the top-right corner.
|
||||
|
||||
If any activities are scheduled, the number of activities appear in a red bubble on the
|
||||
|clock|.
|
||||
|
||||
All activities for each application are further divided into subsections, indicating where in the
|
||||
application the activity is to be completed. Each sub-section lists the number of scheduled
|
||||
activities that are :guilabel:`Late`, due :guilabel:`Today`, and scheduled in the
|
||||
:guilabel:`Future`.
|
||||
|
||||
.. example::
|
||||
In the *Time Off* application, one activity is scheduled to be done in the *All Time Off*
|
||||
requests dashboard, and six activities are scheduled to be done in the *Allocations* dashboard.
|
||||
|
||||
These requests appear in two separate lists in the all activities drop-down menu: one labeled
|
||||
`Time Off` and one labeled `Time Off Allocation`.
|
||||
|
||||
.. image:: activities/activities-menu.png
|
||||
:align: center
|
||||
:alt: The list of activities that is accessed from the main menu bar. Two entries for the Time
|
||||
Off application are highlighted.
|
||||
|
||||
Request a document
|
||||
------------------
|
||||
|
||||
The option to :guilabel:`Request a Document` is available at the bottom of the list of :ref:`all
|
||||
scheduled activities <activities/all>`, the option to :guilabel:`Request a Document` appears. Click
|
||||
:guilabel:`Request a Document`, and a :guilabel:`Request a file` pop-up window appears.
|
||||
|
||||
Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Document Name`: enter a name for the document being requested.
|
||||
- :guilabel:`Request To`: select the user the document is being requested from using the drop-down
|
||||
menu.
|
||||
- :guilabel:`Due Date In`: enter a numerical value indicating when the document is due. Next to
|
||||
this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default option, to
|
||||
reveal a drop-down menu. Select the desired time-frame option from the list. The options are
|
||||
:guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||
- :guilabel:`Workspace`: using the drop-down menu, select the specific :ref:`Workspace
|
||||
<documents/workspaces>` the document is being uploaded to.
|
||||
- :guilabel:`Tags`: select any desired tags from the drop-down menu. The available tags displayed
|
||||
are based on the tags configured for the selected :guilabel:`Workspace`.
|
||||
- :guilabel:`Message`: enter a message to clarify the document request in this field.
|
||||
|
||||
When all the fields are completed, click :guilabel:`Request` to send the document request.
|
||||
|
||||
.. image:: activities/request-doc.png
|
||||
:align: center
|
||||
:alt: The Request a file form, with all fields filled out to request a contract.
|
||||
|
||||
.. _activities/types:
|
||||
|
||||
Activity types
|
||||
==============
|
||||
|
||||
To view the currently configured types of activities in the database, navigate to
|
||||
:menuselection:`Settings app --> Discuss section --> Activities setting --> Activity Types`.
|
||||
|
||||
.. image:: activities/settings-activities-types.png
|
||||
:align: center
|
||||
:alt: Activity Types button in the Settings application under the Discuss section.
|
||||
|
||||
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||
|
||||
.. tip::
|
||||
Individual applications have a list of *Activity Types* dedicated to that application. For
|
||||
example, to view and edit the activities available for the *CRM* application, go to
|
||||
:menuselection:`CRM app --> Configuration --> Activity Types`.
|
||||
|
||||
Enter a title for the activity in the :guilabel:`Summary` field, located in the :guilabel:`Schedule
|
||||
Activity` pop-up window.
|
||||
.. image:: activities/activity-list.png
|
||||
:align: center
|
||||
:alt: The list of activity types already configured and available.
|
||||
|
||||
To assign the activity to a different user, select a name from the :guilabel:`Assigned to` drop-down
|
||||
menu. Otherwise, the user creating the activity is automatically assigned.
|
||||
Edit activity types
|
||||
-------------------
|
||||
|
||||
Lastly, feel free to add any additional information in the optional :guilabel:`Log a note...` field.
|
||||
To edit an existing :ref:`activity type <activities/types>`, click on the activity type, and the
|
||||
activity type form loads.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Due Date` field on the :guilabel:`Schedule Activity` pop-up window auto-populates
|
||||
based on the configuration settings for the selected :guilabel:`Activity Type`. However, this
|
||||
date can be changed by selecting a day on the calendar in the :guilabel:`Due Date` field.
|
||||
Make any desired changes to the activity type form. The form automatically saves, but it can be
|
||||
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
|
||||
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
|
||||
|
||||
Lastly, click one of the following buttons:
|
||||
Create new activity types
|
||||
-------------------------
|
||||
|
||||
- :guilabel:`Schedule`: adds the activity to the chatter under :guilabel:`Planned activities`.
|
||||
- :guilabel:`Mark as Done`: adds the details of the activity to the chatter under :guilabel:`Today`.
|
||||
The activity is not scheduled, it is automatically marked as completed.
|
||||
- :guilabel:`Done \& Schedule Next`: adds the task under :guilabel:`Today` marked as done, and
|
||||
opens a new activity window.
|
||||
- :guilabel:`Discard`: discards any changes made on the pop-up window.
|
||||
To create a new :ref:`activity type <activities/types>`, click :guilabel:`New` from the
|
||||
:guilabel:`Activity Types` page, and a blank activity type form loads.
|
||||
|
||||
.. image:: activities/schedule-pop-up.png
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
Enter a :guilabel:`Name` for the activity type at the top of the form, then enter the following
|
||||
information on the form.
|
||||
|
||||
.. note::
|
||||
Depending on the activity type, the :guilabel:`Schedule` button may be replaced by a
|
||||
:guilabel:`Save` button, or an :guilabel:`Open Calendar` button.
|
||||
Activity Settings section
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Scheduled activities are added to the chatter for the record under :guilabel:`Planned activities`.
|
||||
- :guilabel:`Action`: using the drop-down menu, select an action associated with this new activity
|
||||
type. Some actions trigger specific behaviors after an activity is scheduled, such as:
|
||||
|
||||
.. image:: activities/chatter-activities.png
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
- :guilabel:`Upload Document`: if selected, a link to upload a document is automatically added to
|
||||
the planned activity in the chatter.
|
||||
- :guilabel:`Call` or :guilabel:`Meeting`: if selected, users have the option to open their
|
||||
calendar to select a date and time for the activity.
|
||||
- :guilabel:`Request Signature`: if selected, a link to open a signature request pop-up window is
|
||||
automatically added to the planned activity in the chatter. This requires the Odoo *Sign*
|
||||
application to be installed.
|
||||
|
||||
Activities can also be scheduled from the kanban, list, or activities view of an application.
|
||||
.. note::
|
||||
Available activity types vary based on the installed applications in the database.
|
||||
|
||||
.. tabs::
|
||||
- :guilabel:`Folder`: select a specific :ref:`workspace <documents/workspaces>` folder to save a
|
||||
document to. This field **only** appears if :guilabel:`Upload Document` is selected for the
|
||||
:guilabel:`Action`.
|
||||
|
||||
.. tab:: Kanban view
|
||||
Using the drop-down menu, select the :guilabel:`Folder` the document is saved to.
|
||||
|
||||
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
|
||||
then :guilabel:`Schedule An Activity`, and proceed to fill out the pop-up form.
|
||||
- :guilabel:`Default User`: select a user from the drop-down menu to automatically assign this
|
||||
activity to the selected user when this activity type is scheduled. If this field is left blank,
|
||||
the activity is assigned to the user who creates the activity.
|
||||
- :guilabel:`Default Summary`: enter a note to include whenever this activity type is created.
|
||||
|
||||
.. image:: activities/schedule-kanban-activity.png
|
||||
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||
.. note::
|
||||
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
|
||||
included when an activity is created. However, they can be altered before the activity is
|
||||
scheduled or saved.
|
||||
|
||||
.. tab:: List view
|
||||
- :guilabel:`Keep Done`: tick this checkbox to keep activities that have been marked as `Done`
|
||||
visible in the :ref:`activity view <activities/activity>`.
|
||||
- :guilabel:`Default Note`: enter any notes to appear with the activity.
|
||||
|
||||
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
|
||||
then :guilabel:`Schedule An Activity`. If the record already has an activity scheduled, the
|
||||
clock icon may be replaced by a :guilabel:`📞 (phone)` or an :guilabel:`✉️ (envelope)` icon.
|
||||
|
||||
.. image:: activities/schedule-list-activity.png
|
||||
:alt: List view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. tab:: Activity view
|
||||
|
||||
To open the activity view for an application, select the :guilabel:`🕘 (clock)` icon from the
|
||||
menu bar anywhere in the database. Select any application from the drop-down menu, and click
|
||||
the :guilabel:`🕘 (clock)` icon for the desired app.
|
||||
|
||||
.. image:: activities/schedule-activity-view-menu.png
|
||||
:alt: Activity menu drop down with focus on where to open activity view for CRM.
|
||||
|
||||
Select a record on which to schedule an activity. Move across the row to find the desired
|
||||
activity type, then click the :guilabel:`+ (plus sign)`.
|
||||
|
||||
.. image:: activities/schedule-activity-view.png
|
||||
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. note::
|
||||
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
|
||||
regardless of the activity type, or the view.
|
||||
|
||||
- Activities that appear in **green** indicate a due date sometime in the future.
|
||||
- **Yellow** indicates that the activity's due date is today.
|
||||
- **Red** indicates that the activity is overdue and the due date has passed.
|
||||
|
||||
For example, if an activity is created for a phone call, and the due date passes, the activity
|
||||
appears with a red phone in list view, and a red clock on the kanban view.
|
||||
|
||||
View scheduled activities
|
||||
=========================
|
||||
|
||||
To view scheduled activities, open either the :menuselection:`Sales app` or :menuselection:`CRM app`
|
||||
and click the :guilabel:`🕘 (clock)` icon, located to the far-right side of the other view options.
|
||||
|
||||
Doing so opens the activities menu, showcasing all the scheduled activities for the user, by
|
||||
default. To show all activities for every user, remove the :guilabel:`My Pipeline` filter from the
|
||||
:guilabel:`Search...` bar.
|
||||
|
||||
To view a consolidated list of activities separated by the application where they were created, and
|
||||
by deadline, click the :guilabel:`🕘 (clock)` icon on the header menu to see the activities for that
|
||||
specific application in a drop-down menu.
|
||||
|
||||
The possibility to :guilabel:`Add new note` and :guilabel:`Request a Document` appear at the bottom
|
||||
of this drop-down menu, when the :guilabel:`🕘 (clock)` icon on the header menu is clicked.
|
||||
|
||||
.. image:: activities/activities-menu.png
|
||||
:alt: View of CRM leads page emphasizing the activities menu.
|
||||
|
||||
Configure activity types
|
||||
========================
|
||||
|
||||
To configure the types of activities in the database, go to :menuselection:`Settings app --> Discuss
|
||||
--> Activities --> Activity Types`.
|
||||
|
||||
.. image:: activities/settings-activities-types.png
|
||||
:alt: View of the settings page emphasizing the menu activity types.
|
||||
|
||||
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||
|
||||
To edit an existing activity type, select it from the list, then click :guilabel:`Edit`. To create a
|
||||
new activity type, click :guilabel:`Create`.
|
||||
|
||||
At the top of a blank activity type form, start by choosing a :guilabel:`Name` for the new activity
|
||||
type.
|
||||
|
||||
.. image:: activities/new-activity-type.png
|
||||
:alt: New activity type form.
|
||||
|
||||
Activity settings
|
||||
-----------------
|
||||
|
||||
Action
|
||||
~~~~~~
|
||||
|
||||
The *Action* field specifies the intent of the activity. Some actions trigger specific behaviors
|
||||
after an activity is scheduled.
|
||||
|
||||
- If :guilabel:`Upload Document` is selected, a link to upload a document is added directly to the
|
||||
planned activity in the chatter.
|
||||
- If either :guilabel:`Phonecall` or :guilabel:`Meeting` are selected, users have the option to open
|
||||
their calendar to schedule a time for this activity.
|
||||
- If :guilabel:`Request Signature` is selected, a link is added to the planned activity in the
|
||||
chatter that opens a signature request pop-up window.
|
||||
|
||||
.. note::
|
||||
The actions available to select on an activity type vary, depending on the applications currently
|
||||
installed in the database.
|
||||
|
||||
Default user
|
||||
~~~~~~~~~~~~
|
||||
|
||||
To automatically assign this activity to a specific user when this activity type is scheduled,
|
||||
choose a name from the :guilabel:`Default User` drop-down menu. If this field is left blank, the
|
||||
activity is assigned to the user who creates the activity.
|
||||
|
||||
Default summary
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
To include notes whenever this activity type is created, enter them into the :guilabel:`Default
|
||||
Summary` field.
|
||||
|
||||
.. note::
|
||||
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
|
||||
included when an activity is created. However, they can be altered before the activity is
|
||||
scheduled or saved.
|
||||
|
||||
Next activity
|
||||
-------------
|
||||
|
||||
To automatically suggest, or trigger, a new activity after an activity has been marked complete, the
|
||||
:guilabel:`Chaining Type` must be set.
|
||||
|
||||
Suggest next activity
|
||||
Next Activity section
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Chaining Type` field, select :guilabel:`Suggest Next Activity`. Upon doing so, the
|
||||
field underneath changes to: :guilabel:`Suggest`. Click the :guilabel:`Suggest` field drop-down menu
|
||||
to select any activities to recommend as follow-up tasks to this activity type.
|
||||
It is possible to have another activity either suggested or triggered. To do so, configure the
|
||||
:guilabel:`Next Activity` section.
|
||||
|
||||
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
|
||||
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
|
||||
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
|
||||
deadline`.
|
||||
- :guilabel:`Chaining Type`: select either :guilabel:`Suggest Next Activity` or :guilabel:`Trigger
|
||||
Next Activity` from the drop-down menu. Depending on the selected option, either the
|
||||
:guilabel:`Suggest` or :guilabel:`Trigger` field is displayed.
|
||||
|
||||
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
|
||||
.. note::
|
||||
The :guilabel:`Chaining Type` field does **not** appear if :guilabel:`Upload Document` is
|
||||
selected for the :guilabel:`Action`.
|
||||
|
||||
When all configurations are complete, click :guilabel:`Save`.
|
||||
- :guilabel:`Suggest/Trigger`: depending on what is selected for the :guilabel:`Chaining Type`, this
|
||||
field either displays :guilabel:`Suggest` or :guilabel:`Trigger`. Using the drop-down menu, select
|
||||
the activity to recommend or schedule as a follow-up task to the activity type.
|
||||
- :guilabel:`Schedule`: configure when the next activity is suggested or triggered.
|
||||
|
||||
.. image:: activities/schedule-recommended-activity.png
|
||||
:alt: Schedule activity popup with emphasis on recommended activities.
|
||||
First, enter a numerical value indicating when the activity is suggested or triggered.
|
||||
|
||||
.. note::
|
||||
If an activity has the :guilabel:`Chaining Type` set to :guilabel:`Suggest Next Activity`, and
|
||||
has activities listed in the :guilabel:`Suggest` field, users are presented with recommendations
|
||||
for activities as next steps.
|
||||
Next to this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default
|
||||
option, to reveal a drop-down menu. Select the desired time-frame option from the list. The
|
||||
options are :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||
|
||||
Trigger next activity
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
Lastly, using the drop-down menu, select whether the activity is scheduled or triggered either
|
||||
:guilabel:`after previous activity deadline` or :guilabel:`after completion date`.
|
||||
|
||||
Setting the :guilabel:`Chaining Type` to :guilabel:`Trigger Next Activity` immediately launches the
|
||||
next activity once the previous one is completed.
|
||||
|
||||
If :guilabel:`Trigger Next Activity` is selected in the :guilabel:`Chaining Type` field, the field
|
||||
beneath changes to: :guilabel:`Trigger`. From the :guilabel:`Trigger` field drop-down menu, select
|
||||
the activity that should be launched once this activity is completed.
|
||||
|
||||
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
|
||||
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
|
||||
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
|
||||
deadline`.
|
||||
|
||||
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
|
||||
|
||||
When all configurations are complete, click :guilabel:`Save`.
|
||||
|
||||
.. image:: activities/triggered-activities.png
|
||||
:alt: Schedule new activity popup with emphasis on Done and launch next button.
|
||||
|
||||
.. note::
|
||||
When an activity has the :guilabel:`Chaining Type` set to :guilabel:`Trigger Next Activity`,
|
||||
marking the activity as `Done` immediately launches the next activity listed in the
|
||||
:guilabel:`Trigger` field.
|
||||
.. image:: activities/new-activity.png
|
||||
:align: center
|
||||
:alt: A new Activity form with all the fields filled out.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/productivity/discuss`
|
||||
- :doc:`/applications/productivity/discuss/team_communication`
|
||||
- :doc:`../productivity/discuss`
|
||||
- :doc:`../productivity/discuss/team_communication`
|
||||
- :doc:`../sales/crm/optimize/utilize_activities`
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,263 @@
|
||||
:show-content:
|
||||
|
||||
========
|
||||
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 *Resellers* module is installed.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
|
||||
information on publishing partners on the website.
|
||||
|
||||
Membership tab
|
||||
--------------
|
||||
|
||||
Finally, there is the :guilabel:`Membership` tab on contact forms, 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* application is installed.
|
||||
|
||||
Activate membership
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
|
||||
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
|
||||
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
|
||||
when both fields are filled in.
|
||||
|
||||
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
|
||||
:guilabel:`Membership` tab of a contact form.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
|
||||
members on the website.
|
||||
|
||||
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>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
contacts/merge
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,78 @@
|
||||
==============
|
||||
Merge contacts
|
||||
==============
|
||||
|
||||
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
|
||||
information in the process. This keeps the database organized, and prevents contacts from being
|
||||
contacted by more than one salesperson.
|
||||
|
||||
.. _contacts/merge-duplicate:
|
||||
|
||||
Merge duplicate contacts
|
||||
========================
|
||||
|
||||
.. danger::
|
||||
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
|
||||
should be combined.
|
||||
|
||||
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
|
||||
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
|
||||
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
|
||||
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
|
||||
|
||||
.. image:: merge/merge-menu.png
|
||||
:align: center
|
||||
:alt: The merge contacts option in the Contacts application.
|
||||
|
||||
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
|
||||
confirming they should be merged. If any contacts in the list should **not** be merged, click the
|
||||
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
|
||||
|
||||
.. tip::
|
||||
Click the individual contact to open the record for that contact, and view additional
|
||||
information.
|
||||
|
||||
.. image:: merge/merge-window.png
|
||||
:align: center
|
||||
:alt: The merge pop-up window in the Contacts application.
|
||||
|
||||
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
|
||||
field defaults to the contact record that was created first in the system.
|
||||
|
||||
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
|
||||
|
||||
Deduplicate contacts
|
||||
====================
|
||||
|
||||
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
|
||||
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
|
||||
duplicated records, based on selected criteria, and merges them automatically, or after manual
|
||||
approval.
|
||||
|
||||
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
|
||||
Contacts` pop-up window.
|
||||
|
||||
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
|
||||
be searched, based on the following criteria:
|
||||
|
||||
- :guilabel:`Email`
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Is Company`
|
||||
- :guilabel:`VAT`
|
||||
- :guilabel:`Parent Company`
|
||||
|
||||
.. note::
|
||||
If more than one field is selected, only records that have **all** fields in common are suggested
|
||||
as duplicates.
|
||||
|
||||
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
|
||||
duplicates can be excluded from the search, based on the following criteria:
|
||||
|
||||
- :guilabel:`A user associated to the contact`
|
||||
- :guilabel:`Journal Items associated to the contact`
|
||||
|
||||
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
|
||||
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
|
||||
|
||||
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
|
||||
above <contacts/merge-duplicate>`.
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
@@ -2,6 +2,9 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
|
||||
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
|
||||
|
||||
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||
modification. This document covers the export and import of data into and out of Odoo.
|
||||
|
||||
@@ -20,9 +23,9 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
|
||||
each available application.
|
||||
|
||||
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||
(:guilabel:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
|
||||
select the records that should be exported. To select a record, tick the checkbox next to the
|
||||
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
|
||||
(|list|), on the items that need to be exported, then select the records that should be exported. To
|
||||
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
|
||||
then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
@@ -36,9 +39,10 @@ several options for the data to export:
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the existing
|
||||
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
|
||||
field options because it shows all the fields, not just the ones that can be imported.
|
||||
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
|
||||
unticked, gives many more field options because it shows all the fields, not just the ones that
|
||||
can be imported.
|
||||
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||
file, including both content and formatting.
|
||||
@@ -70,7 +74,8 @@ Import data into Odoo
|
||||
=====================
|
||||
|
||||
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||
be updated in bulk. The following documentation covers how to import data into an Odoo database.
|
||||
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
|
||||
data into an Odoo database.
|
||||
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
@@ -158,6 +163,9 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
|
||||
.. _essentials/external-id:
|
||||
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
@@ -166,7 +174,8 @@ from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
|
||||
creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
@@ -176,10 +185,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
|
||||
the original unique identifier. This record can also be found using its name.
|
||||
|
||||
.. warning::
|
||||
It should be noted that there will be a conflict if two or more records have the same name.
|
||||
|
||||
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
|
||||
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
|
||||
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
@@ -476,3 +482,43 @@ The two files produced are ready to be imported in Odoo without any modification
|
||||
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||
the companies, and then the people.
|
||||
|
||||
.. _essentials/update-data:
|
||||
|
||||
Update data in Odoo
|
||||
===================
|
||||
|
||||
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
|
||||
<essentials/external-id>` remains consistent.
|
||||
|
||||
Prepare data export
|
||||
-------------------
|
||||
|
||||
To update data through an import, first navigate to the data to be updated, and select the |list| to
|
||||
activate list view. On the far-left side of the list, tick the checkbox for any record to be
|
||||
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
|
||||
menu.
|
||||
|
||||
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
|
||||
to update data (import-compatible export)`. This automatically includes the *External ID* in the
|
||||
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
|
||||
that are able to be imported.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
|
||||
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
|
||||
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
|
||||
|
||||
Select the required fields to be included in the export using the :ref:`options <export-data>` on
|
||||
the pop-up window, then click :guilabel:`Export`.
|
||||
|
||||
Import updated data
|
||||
-------------------
|
||||
|
||||
After exporting, make any necessary changes to the data file. When the file is ready, it can be
|
||||
:ref:`imported <import-data>` by following the same process as a normal data import.
|
||||
|
||||
.. danger::
|
||||
When updating data, it is extremely important that the *External ID* remain consistent, as
|
||||
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
|
||||
duplicate record, instead of updating the existing one.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
=====================
|
||||
In-app purchase (IAP)
|
||||
=====================
|
||||
======================
|
||||
In-app purchases (IAP)
|
||||
======================
|
||||
|
||||
.. |IAP| replace:: :abbr:`IAP (In-app purchases)`
|
||||
|
||||
@@ -22,7 +22,9 @@ the service in the app to activate it. However, each service requires its own pr
|
||||
when they run out, users **must** :ref:`buy more <iap/buying_credits>` in order to keep using it.
|
||||
|
||||
.. note::
|
||||
Users with an Enterprise version of Odoo Online get free credits to test IAP features.
|
||||
Enterprise Odoo users with a valid subscription get free credits to test IAP features before
|
||||
deciding to purchase more credits for the database. This includes demo/training databases,
|
||||
educational databases, and one-app-free databases.
|
||||
|
||||
.. _in_app_purchase/portal:
|
||||
|
||||
@@ -31,7 +33,7 @@ IAP services
|
||||
|
||||
|IAP| services are provided by Odoo, as well as third-parties, and have a wide range of uses.
|
||||
|
||||
The following |IAP| services are provided by Odoo:
|
||||
The following |IAP| services are offered by Odoo:
|
||||
|
||||
- :guilabel:`Documents Digitization`: digitizes scanned or PDF vendor bills, expenses, and resumes
|
||||
with OCR and AI.
|
||||
@@ -40,9 +42,12 @@ The following |IAP| services are provided by Odoo:
|
||||
- :guilabel:`Lead Generation`: generates leads based on a set of criteria, and converts web visitors
|
||||
into quality leads and opportunities.
|
||||
- :guilabel:`Snailmail`: sends customer invoices and follow-up reports by post, worldwide.
|
||||
- :guilabel:`Signer identification with itsme®️`: ask document signatories in Odoo *Sign* to provide
|
||||
their identity using the *itsme®* identity platform, which is available in Belgium and the
|
||||
Netherlands.
|
||||
|
||||
For more information on every service currently available, visit the `Odoo IAP Catalog
|
||||
<https://iap.odoo.com/iap/all-in-app-services>`_.
|
||||
For more information on every service currently available (offered from developers other than Odoo),
|
||||
visit the `Odoo IAP Catalog <https://iap.odoo.com/iap/all-in-app-services>`_.
|
||||
|
||||
Use IAP services
|
||||
----------------
|
||||
@@ -53,7 +58,7 @@ settings. To use a service, simply interact with it wherever it appears in the d
|
||||
.. example::
|
||||
The following flow focuses on the *SMS* |IAP| service being used from a contact's record.
|
||||
|
||||
This can be done by clicking the :guilabel:`📱 (phone) SMS` icon within the database.
|
||||
This can be done by clicking the :guilabel:`📱 SMS` icon within the database.
|
||||
|
||||
.. image:: in_app_purchase/sms-icon.png
|
||||
:align: center
|
||||
@@ -61,16 +66,17 @@ settings. To use a service, simply interact with it wherever it appears in the d
|
||||
|
||||
One way to utilize the *SMS* |IAP| service with Odoo is showcased in the following steps:
|
||||
|
||||
#. Navigate to the :menuselection:`Contacts application`, and click on a contact with a mobile
|
||||
phone number entered in either the :guilabel:`Phone` or :guilabel:`Mobile` field of the
|
||||
contact form.
|
||||
#. Hover the mouse over the :guilabel:`Phone` or :guilabel:`Mobile` field, and a :guilabel:`📱
|
||||
(phone) SMS` icon appears to the right.
|
||||
#. Click the :guilabel:`📱 (phone) SMS` icon, and a :guilabel:`Send SMS Text Message` pop-up
|
||||
window appears.
|
||||
#. Type a message in the :guilabel:`Message` field of the :guilabel:`Send SMS Text Message`
|
||||
pop-up window. Then, click the :guilabel:`Send SMS` button. Odoo then sends the message, via
|
||||
SMS, to the contact, and logs what was sent in the *chatter* of the contact's form.
|
||||
First, navigate to the :menuselection:`Contacts application`, and click on a contact with a
|
||||
mobile phone number entered in either the :guilabel:`Phone` or :guilabel:`Mobile` field of the
|
||||
contact form.
|
||||
|
||||
Next, find the :guilabel:`📱 SMS` icon that appears to the right of the :guilabel:`Phone` or
|
||||
:guilabel:`Mobile` fields. Click the :guilabel:`📱 SMS` icon, and a :guilabel:`Send SMS Text
|
||||
Message` pop-up window appears.
|
||||
|
||||
Type a message in the :guilabel:`Message` field of the pop-up window. Then, click the
|
||||
:guilabel:`Send SMS` button. Odoo then sends the message, via SMS, to the contact, and logs what
|
||||
was sent in the *chatter* of the contact's form.
|
||||
|
||||
Upon sending the SMS message, the prepaid credits for the *SMS* |IAP| service are automatically
|
||||
deducted from the existing credits. If there are not enough credits to send the message, Odoo
|
||||
@@ -80,10 +86,10 @@ settings. To use a service, simply interact with it wherever it appears in the d
|
||||
For more information on how to use various |IAP| services, and for more in-depth instructions
|
||||
related to SMS functionality in Odoo, review the documentation below:
|
||||
|
||||
- :doc:`Lead mining </applications/sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Enrich your contacts base with Partner Autocomplete
|
||||
</applications/sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials </applications/marketing/sms_marketing/essentials/sms_essentials>`
|
||||
<../sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
|
||||
|
||||
.. _in_app_purchase/credits:
|
||||
|
||||
@@ -113,7 +119,7 @@ Credits are purchased in *Packs* from the `Odoo IAP Catalog
|
||||
The number of credits consumed depends on the length of the SMS and the country of destination.
|
||||
|
||||
For more information, refer to the :doc:`SMS Pricing and FAQ
|
||||
</applications/marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
|
||||
.. _iap/buying_credits:
|
||||
|
||||
@@ -124,9 +130,10 @@ If there are not enough credits to perform a task, the database automatically pr
|
||||
of more credits.
|
||||
|
||||
Users can check the current balance of credits for each service, and manually purchase more credits,
|
||||
by navigating to the :menuselection:`Settings app --> Search IAP --> View My Services`.
|
||||
by navigating to the :menuselection:`Settings app --> Contacts section`, and beneath the
|
||||
:guilabel:`Odoo IAP` setting, click :guilabel:`View My Services`.
|
||||
|
||||
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
|
||||
Doing so reveals an :guilabel:`IAP Service` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open its :guilabel:`Account Information` page, where
|
||||
additional credits can be purchased.
|
||||
|
||||
@@ -135,32 +142,29 @@ Manually buy credits
|
||||
|
||||
To manually buy credits in Odoo, follow these steps:
|
||||
|
||||
#. Go to the :menuselection:`Settings application`.
|
||||
#. Type `IAP` in the search bar.
|
||||
#. Click :guilabel:`View My Services`.
|
||||
First, go to the :menuselection:`Settings application` and type `IAP` in the :guilabel:`Search...`
|
||||
bar. Alternatively users can scroll down to the :guilabel:`Contacts` section. Under the
|
||||
:guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
|
||||
Services`.
|
||||
|
||||
.. image:: in_app_purchase/view-services.png
|
||||
:align: center
|
||||
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
|
||||
.. image:: in_app_purchase/view-services.png
|
||||
:align: center
|
||||
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
|
||||
|
||||
#. Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open its :guilabel:`Account Information` page,
|
||||
where additional credits can be purchased.
|
||||
#. On the :guilabel:`Account Information` page, click the :guilabel:`Buy Credit` button.
|
||||
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open its :guilabel:`Account Information` page, where
|
||||
additional credits can be purchased.
|
||||
|
||||
.. image:: in_app_purchase/account-info.png
|
||||
:align: center
|
||||
:alt: The Account Information page for an IAP service showing the Buy Credit button.
|
||||
On the :guilabel:`Account Information` page, click the :guilabel:`Buy Credit` button. Doing so loads
|
||||
a :guilabel:`Buy Credits for (IAP Account)` page in a new tab. From here, click :guilabel:`Buy` on
|
||||
the desired pack of credits. Then, follow the prompts to enter payment details, and confirm the
|
||||
order.
|
||||
|
||||
#. Doing so loads a :guilabel:`Buy Credits for (IAP Account)` page in a new tab. From here, click
|
||||
:guilabel:`Buy` on the desired pack of credits. Then, follow the prompts to enter payment
|
||||
details, and confirm the order.
|
||||
.. image:: in_app_purchase/buy-pack.png
|
||||
:align: center
|
||||
:alt: The SMS service page on IAP.Odoo.com with four packs of credits available for purchase.
|
||||
|
||||
.. image:: in_app_purchase/buy-pack.png
|
||||
:align: center
|
||||
:alt: The SMS service page on IAP.Odoo.com with four packs of credits available for purchase.
|
||||
|
||||
#. Once the transaction is complete, the credits are available for use in the database.
|
||||
Once the transaction is complete, the credits are available for use in the database.
|
||||
|
||||
.. _in_app_purchase/low-credits:
|
||||
|
||||
@@ -170,23 +174,19 @@ Low-credit notification
|
||||
It is possible to be notified when credits are low, in order to avoid running out of credits, while
|
||||
using an |IAP| service. To do that, follow this process:
|
||||
|
||||
#. Go to the :menuselection:`Settings application`.
|
||||
#. Type `IAP` in the search bar.
|
||||
#. Click :guilabel:`View My Services`.
|
||||
#. The available |IAP| accounts appear in a list view on the :guilabel:`IAP Account` page. From
|
||||
here, click on the desired |IAP| account to view that service's :guilabel:`Account Information`
|
||||
page.
|
||||
#. On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` box. Doing so reveals
|
||||
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
|
||||
Go to the :menuselection:`Settings application`, and type `IAP` in the :guilabel:`Search...` bar.
|
||||
Under the :guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
|
||||
Services`.
|
||||
|
||||
.. image:: in_app_purchase/low-credits.png
|
||||
:align: center
|
||||
:alt: Odoo will send an email alert when credits for this service fall below the threshold.
|
||||
The available |IAP| accounts appear in a list view on the :guilabel:`IAP Account` page. From here,
|
||||
click on the desired |IAP| account to view that service's :guilabel:`Account Information` page.
|
||||
|
||||
#. In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the minimum
|
||||
threshold for this service.
|
||||
#. In the :guilabel:`Warning Email` field, enter the email address that should receive the
|
||||
notification.
|
||||
On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` checkbox. Doing so reveals
|
||||
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
|
||||
|
||||
In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the
|
||||
minimum threshold for this service. In the :guilabel:`Warning Email` field, enter the email address
|
||||
that receives the notification.
|
||||
|
||||
Odoo sends a low-credit alert to the :guilabel:`Warning Email` when the balance of credits falls
|
||||
below the amount listed as the :guilabel:`Threshold`.
|
||||
|
||||
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.9 KiB |
@@ -1,100 +1,283 @@
|
||||
=========================
|
||||
Search and filter records
|
||||
=========================
|
||||
=================================
|
||||
Search, filter, and group records
|
||||
=================================
|
||||
|
||||
Odoo uses filters to include only the most relevant records depending on the purpose of the view you
|
||||
are on. However, you can edit the default filter or search for specific values.
|
||||
|
||||
.. _search/preconfigured-filters:
|
||||
|
||||
Preconfigured filters
|
||||
=====================
|
||||
|
||||
You can modify the default selection of records by clicking :guilabel:`Filters` and selecting one or
|
||||
several **preconfigured filters**.
|
||||
|
||||
.. example::
|
||||
On the Sales Analysis report, only records at the sales order stage are selected by default.
|
||||
However, you could *also* include records at the quotation stage by selecting
|
||||
:guilabel:`Quotations`. Furthermore, you could *only* include records from a specific year, for
|
||||
example *2022*, by selecting :menuselection:`Order Date --> 2022`.
|
||||
|
||||
.. image:: search/preconfigured-filters.png
|
||||
:align: center
|
||||
:alt: Using preconfigured filters on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
If you select preconfigured filters from the same group (i.e., that are *not* separated by an
|
||||
horizontal line), the records can match *any* condition to be included. However, if you select
|
||||
filters from different groups, the records have to match *all* condition to be included.
|
||||
|
||||
.. _search/custom-filters:
|
||||
|
||||
Custom filters
|
||||
==============
|
||||
|
||||
You can create custom filters using most fields present on the model by clicking
|
||||
:menuselection:`Filters --> Add Custom Filter`, selecting a field, an operator, a value, and
|
||||
clicking :guilabel:`Apply`.
|
||||
|
||||
.. example::
|
||||
You could *only* include records from a single salesperson on the Sales Analysis report, for
|
||||
example *Mitchell Admin*, by selecting :guilabel:`Salesperson` as the field, :guilabel:`is equal
|
||||
to` as the operator, and typing `Mitchell Admin` as the value.
|
||||
|
||||
.. image:: search/custom-filter.png
|
||||
:align: center
|
||||
:alt: Using a custom filter on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
If the records should *only* match one of several conditions, click :guilabel:`Add a condition`
|
||||
before applying a custom filter. If the records should match *all* conditions, add new custom
|
||||
filters instead.
|
||||
Odoo allows for the searching, filtering, and grouping of records in a view to display only the most
|
||||
relevant records. The search bar is located at the top of the view, start typing to :ref:`search for
|
||||
values <search/values>`, or click the :guilabel:`🔽 (down arrow)` icon to access the :ref:`Filter
|
||||
<search/filters>`, :ref:`Group By <search/group>`, and :ref:`Favorites <search/favorites>` drop-down
|
||||
menus.
|
||||
|
||||
.. _search/values:
|
||||
|
||||
Search for values
|
||||
=================
|
||||
|
||||
You can use the search field to quickly look for specific values and add them as a filter. Either
|
||||
type the full value you are searching for and select the desired field, or type a part of the
|
||||
value, click the dropdown button (:guilabel:`⏵`) before the chosen field, and select the exact
|
||||
value you are looking for.
|
||||
Use the search field to quickly look for specific values, and add them as a filter. Type the value
|
||||
to search for, and select the desired option from the drop-down menu to apply the search filter.
|
||||
|
||||
.. example::
|
||||
Instead of adding a custom filter to select records where *Mitchell Admin* is the salesperson on
|
||||
the Sales Analysis report, you could search for `Mitch`, click the dropdown button
|
||||
(:guilabel:`⏵`) next to :guilabel:`Search Salesperson for: Mitch`, and select
|
||||
:guilabel:`Mitchell Admin`.
|
||||
Instead of adding a :ref:`custom filter <search/custom-filters>` to select records where
|
||||
*Mitchell Admin* is the salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
|
||||
Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to
|
||||
:guilabel:`Search Salesperson for: Mitch`, and select :guilabel:`Mitchell Admin`.
|
||||
|
||||
.. image:: search/search-values.png
|
||||
:align: center
|
||||
:alt: Searching for a specific value on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
Using the search field is equivalent to using the *contains* operator when adding a custom
|
||||
filter. If you enter a partial value and directly select the desired field, *all* records
|
||||
containing the characters you typed for the selected field will be included.
|
||||
Using the search field is equivalent to using the *contains* operator when adding a :ref:`custom
|
||||
filter <search/custom-filters>`. If a partial value is entered, and the desired field is directly
|
||||
selected (without selecting the :guilabel:`⏵ (right arrow)`), *all* records containing the typed
|
||||
characters for the selected field are included.
|
||||
|
||||
.. _search/filters:
|
||||
|
||||
Filters
|
||||
=======
|
||||
|
||||
Filters are used to select records that meet specific criteria. The default selection of records is
|
||||
specific to each view, but can be modified by selecting one (or several) :ref:`preconfigured filters
|
||||
<search/preconfigured-filters>`, or by adding a :ref:`custom filter <search/custom-filters>`.
|
||||
|
||||
.. _search/preconfigured-filters:
|
||||
|
||||
Preconfigured filters
|
||||
---------------------
|
||||
|
||||
Modify the default selection of records by clicking the :guilabel:`🔽 (down arrow)` icon from the
|
||||
search bar, and selecting one (or several) *preconfigured filters* from the :guilabel:`Filters`
|
||||
drop-down menu.
|
||||
|
||||
.. example::
|
||||
On the *Sales Analysis* report (:menuselection:`Sales app --> Reporting --> Sales`), only records
|
||||
that are at the *sales order* stage, with an *order date* within the last 365 days, are selected
|
||||
by default.
|
||||
|
||||
To also include records at the *quotation* stage, select :guilabel:`Quotations` from the
|
||||
:guilabel:`Filters`.
|
||||
|
||||
Furthermore, to *only* include sales order and quotation records from a specific year, like
|
||||
2024, for example, first remove the existing `Order Date: Last 365 Days` filter, by clicking the
|
||||
:guilabel:`❌ (remove)` icon, then select :menuselection:`Order Date --> 2024`.
|
||||
|
||||
.. image:: search/preconfigured-filters.png
|
||||
:align: center
|
||||
:alt: Using preconfigured filters on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
The preconfigured :guilabel:`Filters` are grouped, and each group is separated by a horizontal
|
||||
line. Selecting preconfigured filters from the same group allows records to match *any* of the
|
||||
applied conditions. However, selecting filters from different groups requires records to match
|
||||
*all* of the applied conditions.
|
||||
|
||||
.. _search/custom-filters:
|
||||
|
||||
Custom filters
|
||||
--------------
|
||||
|
||||
If the :ref:`preconfigured filters <search/preconfigured-filters>` are not specific enough, add a
|
||||
custom filter. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select
|
||||
:menuselection:`Filters --> Add Custom Filter`.
|
||||
|
||||
The :guilabel:`Add Custom Filter` pop-up window displays the matching option, filter rule, and a
|
||||
toggle to :guilabel:`Include archived` records.
|
||||
|
||||
.. image:: search/custom-filter.png
|
||||
:align: center
|
||||
:alt: The Add Custom Filter pop-up window.
|
||||
|
||||
The default matching configuration is to :guilabel:`Match any of the following rules`, indicating
|
||||
that each filter rule is applied independently. To change the matching configuration to
|
||||
:guilabel:`Match all of the following rules`, at least two filter rules must be added to the custom
|
||||
filter.
|
||||
|
||||
- :guilabel:`Match all 🔽 of the following rules`: **all** of the filter rules must be met.
|
||||
Logically, this is an *AND* (`&`) operation.
|
||||
- :guilabel:`Match any 🔽 of the following rules`: **any** of the filter rules can be met.
|
||||
Logically, this is an *OR* (`|`) operation.
|
||||
|
||||
By default, a single filter rule is added to the custom filter. The following describes the
|
||||
structure of a filter rule:
|
||||
|
||||
#. The first inline field is the *field name* to filter by. Some fields have refined parameters that
|
||||
are nested within another field. These fields have an :guilabel:`> (arrow)` icon beside them,
|
||||
which can be selected to reveal the nested fields.
|
||||
#. The second inline field is the conditional *operator* used to compare the field name to the
|
||||
value. The :ref:`available conditional operators <reference/orm/domains>` are specific to the
|
||||
field's data type.
|
||||
#. The third inline field is the variable *value* of the field name. The value input may appear as a
|
||||
drop-down menu, a text input, a number input, a date/time input, a boolean selector, or it may be
|
||||
blank, depending on the operator used and the field's data type.
|
||||
|
||||
Three inline buttons are also available to the right of the rule's filter criteria:
|
||||
|
||||
#. :guilabel:`➕ (plus sign)`: adds a new rule below the existing rule.
|
||||
#. :guilabel:`(Add branch)`: adds a new group of rules below the existing rule, with the
|
||||
:guilabel:`any` and :guilabel:`all` matching options available to define how each rule within
|
||||
this branch is applied to the filter. If the matching option is set to the same as the parent
|
||||
group, the fields are moved to join the parent group.
|
||||
|
||||
.. example::
|
||||
If the matching option is set to :guilabel:`Match all 🔽 of the following rules`, and a new
|
||||
branch is added with its matching option changed from :guilabel:`any 🔽 of` to :guilabel:`all
|
||||
🔽 of`, the newly-added branch disappears, and its group of rules are moved to the parent
|
||||
group.
|
||||
|
||||
#. :guilabel:`🗑️ (garbage can)`: deletes the node. If a branch node is deleted, all children of
|
||||
that node are deleted, as well.
|
||||
|
||||
A new filter rule can be added to the custom filter by clicking the :guilabel:`New Rule` button.
|
||||
|
||||
Once the filter criteria are defined, click :guilabel:`Add` to add the custom filter to the view.
|
||||
|
||||
.. example::
|
||||
To target all leads and opportunities from the :menuselection:`CRM` app that are in the *Won*
|
||||
stage, and have an expected revenue greater than $1,000, the following should be entered:
|
||||
|
||||
:guilabel:`Match all 🔽 (down arrow) of the following rules:`
|
||||
|
||||
#. :guilabel:`Stage` :guilabel:`is in` :guilabel:`Won`
|
||||
#. :guilabel:`Expected Revenue` :guilabel:`>` `1,000`
|
||||
#. :guilabel:`any 🔽 (down arrow)` :guilabel:`of:`
|
||||
|
||||
- :guilabel:`Type` :guilabel:`=` :guilabel:`Lead`
|
||||
- :guilabel:`Type` :guilabel:`=` :guilabel:`Opportunity`
|
||||
|
||||
.. image:: search/custom-filter-example.png
|
||||
:align: center
|
||||
:alt: Adding a custom filter to filter specific records in CRM.
|
||||
|
||||
.. tip::
|
||||
Activate :ref:`developer-mode` to reveal each field's technical name and data type, as well as
|
||||
the :guilabel:`# Code editor` text area below the filter rules, to view and edit the domain
|
||||
manually.
|
||||
|
||||
.. _search/group:
|
||||
|
||||
Group records
|
||||
=============
|
||||
|
||||
You can click :guilabel:`Group By` below the search field to cluster records together according to
|
||||
one of the **preconfigured groups**.
|
||||
The display of records in a view can be clustered together, according to one of the *preconfigured
|
||||
groups*. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select one of
|
||||
the :guilabel:`Group By` options from the drop-down menu.
|
||||
|
||||
.. example::
|
||||
You could group the records by salesperson on the Sales Analysis report by clicking
|
||||
:guilabel:`Group By` and selecting :guilabel:`Salesperson`. No records are filtered out.
|
||||
To group the records by salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
|
||||
Reporting --> Sales`), click the :guilabel:`Salesperson` option from the :guilabel:`Group By`
|
||||
drop-down menu. The view changes to group the records by salesperson, without filtering out any
|
||||
records.
|
||||
|
||||
.. image:: search/group.png
|
||||
:align: center
|
||||
:alt: Grouping records on the Sales Analysis report
|
||||
|
||||
You can **customize groups** by using a wide selection of fields present on the model. To do so,
|
||||
click :menuselection:`Group By --> Add Custom Group`, select a field, and click :guilabel:`Apply`.
|
||||
It is possible to *customize groups* by using a field present on the model. To do so, click
|
||||
:menuselection:`Add Custom Group`, and select a field from the drop-down menu.
|
||||
|
||||
.. note::
|
||||
You can use several groups at the same time. The first group you select is the main cluster, the
|
||||
next one you add further divides the main group's categories, and so on.
|
||||
Several groups can be used at the same time. The first group that is selected is the main
|
||||
cluster, the next one that is added further divides the main group's categories, and so on.
|
||||
Furthermore, filters and groups can be used together to refine the view even more.
|
||||
|
||||
.. _search/comparison:
|
||||
|
||||
Comparison
|
||||
==========
|
||||
|
||||
Certain reporting dashboards include a :guilabel:`Comparison` section in the drop-down menus of
|
||||
their :guilabel:`Search...` bars. This includes the :doc:`Overall Equipment Effectiveness
|
||||
<../inventory_and_mrp/manufacturing/workflows/oee>` report for the *Manufacturing* app, and the
|
||||
:doc:`Purchase <../inventory_and_mrp/purchase/advanced/analyze>` report for the *Purchase* app,
|
||||
among others.
|
||||
|
||||
The options in the :icon:`fa-adjust` :guilabel:`Comparison` section are used to compare data from
|
||||
two different time periods. There are two comparison options to choose from: :guilabel:`(Time
|
||||
Filter): Previous Period` and :guilabel:`(Time Filter): Previous Year`.
|
||||
|
||||
.. important::
|
||||
For some reports, the :guilabel:`Comparison` section **only** appears in the
|
||||
:guilabel:`Search...` bar drop-down menu if one (or more) time periods have been selected in the
|
||||
:guilabel:`Filters` column. This is because, if no time period is specified, there is nothing to
|
||||
compare.
|
||||
|
||||
Additionally, some reports only allow use of the :guilabel:`Comparison` feature when the
|
||||
:icon:`fa-pie-chart` :guilabel:`(pie chart)` graph type, or the :icon:`oi-view-pivot`
|
||||
:guilabel:`(pivot)` view, is selected. A :guilabel:`Comparison` option can be selected even if
|
||||
another view is enabled, but doing so does **not** change the way data is displayed on the
|
||||
report.
|
||||
|
||||
.. image:: search/comparison-section.png
|
||||
:align: center
|
||||
:alt: The Search... bar for the production analysis report.
|
||||
|
||||
To view data using one of the two comparisons, begin by selecting a time period in the
|
||||
:guilabel:`Filters` column of the :guilabel:`Search...` bar drop-down menu. Then, select either
|
||||
:guilabel:`(Time Filter): Previous Period` or :guilabel:`(Time Filter): Previous Year` in the
|
||||
:guilabel:`Comparison` section.
|
||||
|
||||
With one of the :guilabel:`Comparison` options enabled, the report compares the data for the
|
||||
selected period, with the data for the same unit of time (month, quarter, year), one period or year
|
||||
prior. The way the data is displayed depends on the selected view:
|
||||
|
||||
- The :icon:`fa-bar-chart` :guilabel:`(bar chart)` shows two bars, side-by-side, for each unit of
|
||||
time for the selected time period. The left bar represents the selected time period, while the
|
||||
right bar represents the previous time period.
|
||||
- The :icon:`fa-line-chart` :guilabel:`(line chart)` is displayed with two lines, one representing
|
||||
the selected time period, and the other representing the previous time period.
|
||||
- The :icon:`fa-pie-chart` :guilabel:`(pie chart)` appears as a large circle with a smaller circle
|
||||
inside. The larger circle represents the selected time period, while the smaller circle represents
|
||||
the previous time period.
|
||||
- The :icon:`oi-view-pivot` :guilabel:`(pivot table)` is displayed with each column split into two
|
||||
smaller columns. The right column represents the selected time period, while the left column
|
||||
represents the previous time period.
|
||||
|
||||
.. example::
|
||||
In the :guilabel:`Production Analysis` report of the :menuselection:`Manufacturing` app, data for
|
||||
the second quarter of 2024 is compared to data for the second quarter of 2023. :guilabel:`Q2` is
|
||||
selected in the :guilabel:`End Date` filter section of the :guilabel:`Search...` bar drop-down
|
||||
menu. In the :guilabel:`Comparison` section, :guilabel:`End Date: Previous Year` is selected.
|
||||
|
||||
The current year is 2024, so the larger circle shows data for the second quarter (Q2) of 2024.
|
||||
The smaller circle shows data for the second quarter (Q2) of 2023, which is the same time period,
|
||||
but one *year* prior.
|
||||
|
||||
If :guilabel:`End Date: Previous Period` is selected instead, the smaller circle shows data for
|
||||
the first quarter (Q1) of 2024, which is the same time period, but one *period* prior.
|
||||
|
||||
.. image:: search/comparison.png
|
||||
:align: center
|
||||
:alt: The comparison view of the Production Analysis report.
|
||||
|
||||
.. _search/favorites:
|
||||
|
||||
Favorites
|
||||
=========
|
||||
|
||||
Favorites are a way to save a specific search for future use, or as the new default filter for the
|
||||
view.
|
||||
|
||||
To save the current view as a favorite, click the :guilabel:`🔽 (down arrow)` icon in the search
|
||||
bar, then select the :guilabel:`Save current search` drop-down menu to display the following
|
||||
options:
|
||||
|
||||
- Filter name: name of the favorited search.
|
||||
- :guilabel:`Default filter`: sets the favorited search as the default filter for the view.
|
||||
- :guilabel:`Shared`: makes the favorited search available to all users. By default, the favorited
|
||||
search is only available to the user who created it.
|
||||
|
||||
Once the options are set, click :guilabel:`Save` to save the favorited search.
|
||||
|
||||
.. image:: search/favorites.png
|
||||
:align: center
|
||||
:alt: Saving a favorite search on the Sales Analysis report
|
||||
|
||||
Saved favorites can be accessed by clicking the :guilabel:`🔽 (down arrow)` icon in the search bar,
|
||||
then selecting the saved filter in the :guilabel:`Favorites` drop-down menu. To remove a saved
|
||||
favorite, click the :guilabel:`🗑️ (garbage can)` icon next to the favorited search.
|
||||
|
||||
.. tip::
|
||||
To view *all* favorited searches, first activate :ref:`developer-mode`, and navigate to
|
||||
:menuselection:`Settings app --> Technical --> User Interface: User-defined Filters`. From here,
|
||||
all favorited searches can be viewed, edited, archived, or deleted.
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
|
||||
.. seealso::
|
||||
:doc:`Cash basis <accounting/taxes/cash_basis>`
|
||||
|
||||
.. _accounting/multi-company:
|
||||
|
||||
Multi-company
|
||||
=============
|
||||
|
||||
|
||||
@@ -27,11 +27,19 @@ Odoo supports multiple file formats to import transactions:
|
||||
- Quicken Interchange Format (.QIF);
|
||||
- Belgium: Coded Statement of Account (.CODA).
|
||||
|
||||
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
|
||||
click on :guilabel:`Import Transactions`.
|
||||
To import a file, go to the **Accounting Dashboard**, and in the :guilabel:`Bank` journal,
|
||||
click on :guilabel:`Import File`.
|
||||
|
||||
.. image:: transactions/import-transactions.png
|
||||
:alt: Import bank transactions from the bank journal
|
||||
.. tip::
|
||||
Alternatively, you can also:
|
||||
|
||||
- click :guilabel:`⋮` on the :guilabel:`Bank` journal and select :guilabel:`Import file`;
|
||||
- or access the transaction list by clicking :guilabel:`⋮` on the :guilabel:`Bank` journal and
|
||||
selecting :guilabel:`Transactions`, then click the gear icon :guilabel:`(⚙)` and select
|
||||
:guilabel:`Import records`.
|
||||
|
||||
.. image:: transactions/import-transactions.png
|
||||
:alt: Import bank transactions from the bank journal
|
||||
|
||||
Next, select the file and upload it.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 17 KiB |
@@ -55,7 +55,8 @@ Generate deferral entries on validation
|
||||
.. tip::
|
||||
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
|
||||
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
|
||||
month as the :guilabel:`Invoice Date`.
|
||||
month as the :guilabel:`Invoice Date`. Deferred revenue entries are posted from the invoice
|
||||
date and are displayed in the report accordingly.
|
||||
|
||||
For each line of the invoice that should be deferred, specify the start and end dates of the
|
||||
deferral period.
|
||||
|
||||
@@ -36,8 +36,8 @@ your customer’s address is set correctly, including the country, before sendin
|
||||
<developer-mode>`, go to :menuselection:`General Settings --> Technical --> Reporting
|
||||
section: Paper Format`.
|
||||
- A square of **15mm by 15mm** on the bottom left corner has to stay clear.
|
||||
- The postage area has to stay clear (click :download:`here <snailmail/snailmail-template.pdf>`
|
||||
to get more info about the area).
|
||||
- The postage area has to stay clear (:download:`download the snailmail PDF template
|
||||
<snailmail/snailmail-template.pdf>` for more details).
|
||||
- Pingen (Odoo Snailmail service provider) scans the area to process the address, so if something
|
||||
gets written outside the area, it is not counted as part of the address.
|
||||
|
||||
@@ -51,7 +51,5 @@ To buy stamps, go to :menuselection:`Accounting --> Configuration --> Settings -
|
||||
invoices: Snailmail`, click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> In-App
|
||||
Purchases: Odoo IAP`, and click on :guilabel:`View my Services`.
|
||||
|
||||
.. tip::
|
||||
- If you are on Odoo Online and have the Enterprise version, you benefit from free trial credits
|
||||
to test the feature.
|
||||
- Click `here <https://iap.odoo.com/privacy#header_4>`_ to know about our *Privacy Policy*.
|
||||
.. seealso::
|
||||
`Odoo's IAP Privacy Policy <https://iap.odoo.com/privacy#header_4>`_
|
||||
|
||||
@@ -24,13 +24,15 @@ 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/management/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/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
doc.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
|
||||
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
|
||||
- :doc:`Using inventory valuation
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
|
||||
- :ref:`Other inventory valuation methods <inventory/warehouses_storage/costing_methods>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -41,7 +43,8 @@ product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` a
|
||||
:guilabel:`Inventory Valuation` to `Automated`.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Inventory valuation configuration <inventory/management/inventory_valuation_config>`
|
||||
:doc:`Inventory valuation configuration
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
|
||||
|
||||
Using average cost valuation
|
||||
============================
|
||||
@@ -260,7 +263,7 @@ value** increases based on the vendor price of the products that have entered th
|
||||
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
|
||||
- :ref:`Anglo-Saxon vs. Continental <inventory/warehouses_storage/accounting-types>`
|
||||
|
||||
The table below reflects journal entries and accounts. The *stock input* account stores the money
|
||||
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
|
||||
|
||||
@@ -15,6 +15,8 @@ When browsing your chart of accounts, you can sort the accounts by :guilabel:`Co
|
||||
.. image:: chart_of_accounts/chart-of-accounts-sort.png
|
||||
:alt: Group the accounts by type in Odoo Accounting
|
||||
|
||||
.. _chart-of-account/create:
|
||||
|
||||
Configuration of an account
|
||||
===========================
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ for use at a later date:
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
|
||||
|
||||
.. _payments/register:
|
||||
|
||||
Registering payment from an invoice or bill
|
||||
===========================================
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ of your organisation as at a particular date.
|
||||
|
||||
.. image:: reporting/main_reports09.png
|
||||
|
||||
.. _accounting/reporting/balance-sheet:
|
||||
|
||||
Profit and Loss
|
||||
---------------
|
||||
|
||||
@@ -49,6 +51,8 @@ report period.
|
||||
|
||||
.. image:: reporting/main_reports10.png
|
||||
|
||||
.. _accounting/reporting/executive-summary:
|
||||
|
||||
Executive Summary
|
||||
-----------------
|
||||
|
||||
@@ -126,6 +130,8 @@ payment during a selected month and several months prior.
|
||||
|
||||
.. image:: reporting/main_reports07.png
|
||||
|
||||
.. _accounting/reporting/cash-flow-statement:
|
||||
|
||||
Cash Flow Statement
|
||||
-------------------
|
||||
|
||||
|
||||
@@ -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,440 @@
|
||||
: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, Canada, and Brazil. This means the fiscal position/country of a database can only
|
||||
be set to the United States, Canada, or Brazil. 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`, :guilabel:`Canada`, or :guilabel:`Brazil`. 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 geo localization`
|
||||
- `account_avatax_geolocalize`
|
||||
- This module includes the features required for integration of *AvaTax* into geo-localization
|
||||
in Odoo.
|
||||
* - :guilabel:`Avatax for SO`
|
||||
- `account_avatax_sale`
|
||||
- Includes the information needed for tax calculation on sales orders in Odoo.
|
||||
* - :guilabel:`Avatax for Inventory`
|
||||
- `account_avatax_stock`
|
||||
- Includes tax calculation in Odoo Inventory.
|
||||
* - :guilabel:`Amazon/Avatax Bridge`
|
||||
- `sale_amazon_avatax`
|
||||
- Includes tax calculation features between the *Amazon Connector* and Odoo.
|
||||
* - :guilabel:`Avatax Brazil`
|
||||
- `l10n_br_avatax`
|
||||
- Includes information for tax calculation in the Brazil localization.
|
||||
* - :guilabel:`Avatax Brazil for Services`
|
||||
- `l10n_br_avatax_services`
|
||||
- This module includes the required features for tax calculation for services in the Brazil
|
||||
localization.
|
||||
* - :guilabel:`Avatax Brazil Sale for Services`
|
||||
- `l10n_br_edi_sale_services`
|
||||
- This module includes the required features for tax calculation for the sale of services in
|
||||
the Brazil localization. This includes electronic data interchange (EDI).
|
||||
* - :guilabel:`Test SOs for the Brazilian AvaTax`
|
||||
- `l10n_br_test_avatax_sale`
|
||||
- This module includes the required features for test sales orders in the Brazil localization.
|
||||
|
||||
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:`Avatax for Inventory`: `account_avatax_stock`
|
||||
|
||||
Should *AvaTax* be needed for geo-localization, or with the *Amazon Connector*, then install those
|
||||
modules individually by clicking on :guilabel:`Install` on :guilabel:`Avatax for geo localization`
|
||||
and :guilabel:`Amazon/Avatax Bridge`, respectively.
|
||||
|
||||
.. seealso::
|
||||
For localization specific *AvaTax* instructions, view the following :doc:`fiscal localization
|
||||
<../../fiscal_localizations>` documentation:
|
||||
|
||||
- :doc:`../../fiscal_localizations/brazil`
|
||||
|
||||
.. _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.
|
||||
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.
|
||||
|
||||
.. tip::
|
||||
If you do not yet have credentials, click on :guilabel:`How to Get Credentials`.
|
||||
First, tick the checkbox to the left of the :guilabel:`AvaTax` settings, to activate *AvaTax* on the
|
||||
database. This is a quick, convenient way to activate and deactivate *AvaTax* tax calculation on the
|
||||
Odoo database.
|
||||
|
||||
.. 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.
|
||||
|
||||
.. tip::
|
||||
Additionally, there is a :guilabel:`Tax Mapping` tab and :guilabel:`Account Mapping` tab in the
|
||||
:guilabel:`Automatic Tax Mapping (AvaTax)` fiscal position, where mapping for products can also
|
||||
be configured. To access :guilabel:`Fiscal Positions` navigate to :menuselection:`Accounting app
|
||||
--> Configuration --> Accounting: Fiscal Positions`.
|
||||
|
||||
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>`_
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,166 @@
|
||||
==========
|
||||
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` button, while these documents are in draft stage.
|
||||
|
||||
.. tip::
|
||||
Clicking the :guilabel:`Compute Taxes` 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 button 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` button at the bottom of the quote.
|
||||
- :guilabel:`Compute Taxes` button at the top of the invoice.
|
||||
|
||||
Use each of these buttons to manually re-calculate the sales tax.
|
||||
|
||||
.. 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 clicking :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`.
|
||||
|
||||
.. 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`
|
||||
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -55,7 +55,8 @@ Generate deferral entries on validation
|
||||
.. tip::
|
||||
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
|
||||
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
|
||||
month as the :guilabel:`Bill Date`.
|
||||
month as the :guilabel:`Bill Date`. Deferred expense entries are posted from the bill date and
|
||||
are displayed in the report accordingly.
|
||||
|
||||
For each line of the bill that should be deferred, specify the start and end dates of the deferral
|
||||
period.
|
||||
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -5,8 +5,8 @@ Expenses
|
||||
========
|
||||
|
||||
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
|
||||
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
|
||||
then be processed and disbursed back to the employee for reimbursement(s).
|
||||
in Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
|
||||
processed, and disbursed back to the employee for reimbursement.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
||||
@@ -62,16 +62,16 @@ report the actual cost when submitting an expense report.
|
||||
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
|
||||
:guilabel:`Cost` at `0.00`:
|
||||
|
||||
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
|
||||
- **Meals**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
|
||||
they enter the actual amount of the bill and will be reimbursed for that amount. An expense for
|
||||
a meal costing $95.23 would equal a reimbursement for $95.23.
|
||||
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
- **Mileage**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
"mileage", they enter the number of miles driven in the :guilabel:`Quantity` field, and are
|
||||
reimbursed 0.30 per mile they entered. An expense for 100 miles would equal a reimbursement for
|
||||
$30.00.
|
||||
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
|
||||
- **Monthly Parking**: set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
|
||||
"monthly parking", the reimbursement would be for $75.00.
|
||||
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||
- **Expenses**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
|
||||
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
|
||||
the reimbursement would be for $350.00.
|
||||
@@ -98,10 +98,10 @@ the default :guilabel:`My Expenses` view. This view can also be accessed from
|
||||
|
||||
First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
|
||||
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
|
||||
- :guilabel:`Description`: enter a short description for the expense in the :guilabel:`Description`
|
||||
field. This should be short and informative, such as `lunch with client` or `hotel for
|
||||
conference`.
|
||||
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
|
||||
- :guilabel:`Category`: select the expense category from the drop-down menu that most closely
|
||||
corresponds to the expense. For example, an airplane ticket would be appropriate for an expense
|
||||
:guilabel:`Category` named :guilabel:`Air Travel`.
|
||||
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
|
||||
@@ -119,7 +119,7 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles* driven, and the total
|
||||
is calculated.
|
||||
|
||||
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
|
||||
- :guilabel:`Included Taxes`: if taxes were configured on the expense category, the tax percentage
|
||||
and amount appear automatically after entering either the :guilabel:`Total` or the
|
||||
:guilabel:`Quantity`.
|
||||
|
||||
@@ -127,20 +127,20 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value will
|
||||
update in real time as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
|
||||
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
|
||||
- :guilabel:`Employee`: using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Paid By`: click the radio button to indicate who paid for the expense and should be
|
||||
reimbursed. If the employee paid for the expense (and should be reimbursed) select
|
||||
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
|
||||
credit card was used to pay for the expense) select :guilabel:`Company`. Depending on the expense
|
||||
category selected, this field may not appear.
|
||||
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
|
||||
- :guilabel:`Bill Reference`: if there is any reference text that should be included for the
|
||||
expense, enter it in this field.
|
||||
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
|
||||
- :guilabel:`Expense Date`: using the calendar module, enter the date the expense was incurred. Use
|
||||
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
|
||||
click on the specific day to enter the selection.
|
||||
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
|
||||
- :guilabel:`Account`: select the expense account that this expense should be logged on from the
|
||||
drop-down menu.
|
||||
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||
- :guilabel:`Customer to Reinvoice`: if the expense is something that should be paid for by a
|
||||
customer, select the :abbr:`SO (Sales Order)` and customer that will be invoiced for this expense
|
||||
from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales
|
||||
Order)` as well as the company the sales order is written for, but after the expense is saved, the
|
||||
@@ -152,14 +152,13 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
expenses tied to that meeting would indicate the sales order for the custom garden (which also
|
||||
references the customer) as the :guilabel:`Customer to Reinvoice`.
|
||||
|
||||
- :guilabel:`Analytic Distribution`: Select the account(s) the expense should be written against
|
||||
from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both.
|
||||
Multiple accounts can be listed for each category if needed. Adjust the percentage for each
|
||||
analytic account by typing in the percentage value next to the account.
|
||||
- :guilabel:`Company`: If multiple companies are set up, select the company this expense should be
|
||||
filed for from the drop-down menu. The current company will automatically populate this field.
|
||||
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
|
||||
notes field.
|
||||
- :guilabel:`Analytic Distribution`: select the accounts the expense should be written against from
|
||||
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
|
||||
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
|
||||
account by typing in the percentage value next to the account.
|
||||
- :guilabel:`Company`: if multiple companies are set up, select the company this expense should be
|
||||
filed for from the drop-down menu. The current company automatically populates this field.
|
||||
- :guilabel:`Notes...`: if any notes are needed to clarify the expense, enter them in this field.
|
||||
|
||||
.. image:: expenses/expense-filled-in.png
|
||||
:align: center
|
||||
@@ -263,110 +262,6 @@ appears: :guilabel:`Use this reference as a subject prefix when submitting by em
|
||||
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
|
||||
- The :guilabel:`Cost` for the expense is `$25.00`
|
||||
|
||||
.. _expenses/report:
|
||||
|
||||
Create an expense report
|
||||
========================
|
||||
|
||||
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
|
||||
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
|
||||
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
|
||||
Expenses --> My Expenses`.
|
||||
|
||||
Expenses are color coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) the text appears in blue. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
First, select each individual expense for the report by clicking the check box next to each entry,
|
||||
or quickly select all the expenses in the list by clicking the check box next to :guilabel:`Expense
|
||||
Date`.
|
||||
|
||||
Another way to quickly add all expenses that are not on an expense report is to click
|
||||
:guilabel:`Create Report` without selecting any expenses, and Odoo will select all expenses with a
|
||||
status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expenses/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, regardless of status. The
|
||||
:guilabel:`Create Report` button is visible as long as there is a minimum of 1 expense with a
|
||||
status of :guilabel:`To Report` selected. When the :guilabel:`Create Report` button is clicked,
|
||||
only expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense
|
||||
report will appear in the newly created expense report.
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :guilabel:`📎 (paperclip)` icon appears next to the :guilabel:`Customer
|
||||
to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field by default. It is recommended to edit this field with a short summary for each report
|
||||
to help keep expenses organized. Enter a short description for the expense report (such as `Client
|
||||
Trip NYC`, or `Repairs for Company Car`) in the :guilabel:`Expense Report Summary` field. Next,
|
||||
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If
|
||||
needed, the :guilabel:`Journal` can be changed. Use the drop-down menu to select a different
|
||||
:guilabel:`Journal`.
|
||||
|
||||
.. image:: expenses/expense-report-summary.png
|
||||
:align: center
|
||||
:alt: Enter a short description and select a manager for the report.
|
||||
|
||||
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
|
||||
a line` at the bottom of the :guilabel:`Expense` tab. A pop up appears with all the available
|
||||
expenses that can be added to the report (with a status of :guilabel:`To Submit`). Click the check
|
||||
box next to each expense to add, then click :guilabel:`Select`. The items now appear on the report
|
||||
that was just created. If a new expense needs to be added that does *not* appear on the list, click
|
||||
:guilabel:`New` to create a new expense and add it to the report.
|
||||
|
||||
.. image:: expenses/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Go to the main :menuselection:`Expenses` app dashboard (also accessed by going to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Go to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Go to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
Submit an expense report
|
||||
------------------------
|
||||
|
||||
When an expense report is completed, the next step is to submit the report to a manager for
|
||||
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
|
||||
specific report from the list of expense reports (if the report is not already open). To view all
|
||||
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful since only reports that have a
|
||||
:guilabel:`To Submit` status need to be submitted, reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are easily identifiable not just from the :guilabel:`To Submit`
|
||||
status, but the text appears in blue, while the other expenses text appears in black.
|
||||
|
||||
.. image:: expenses/expense-status.png
|
||||
:align: center
|
||||
:alt: Submit the report to the manager.
|
||||
|
||||
.. note::
|
||||
The status of each report is shown in the :guilabel:`Status` column on the right. If the
|
||||
:guilabel:`Status` column is not visible, click the :guilabel:`Additional Options (two dots)`
|
||||
icon at the end of the row, and enable :guilabel:`Status`.
|
||||
|
||||
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
|
||||
the next step is to wait for the manager to approve it.
|
||||
|
||||
.. important::
|
||||
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
|
||||
**only** for users with the *necessary rights*.
|
||||
|
||||
.. _expenses/approve:
|
||||
|
||||
Approve expenses
|
||||
@@ -386,10 +281,10 @@ To see who has rights to approve, go to the main :menuselection:`Settings` app a
|
||||
:guilabel:`Administration` section (bottom right of the :guilabel:`Access Rights` tab) is set to
|
||||
one of three options:
|
||||
|
||||
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
|
||||
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
|
||||
- :guilabel:`None (blank)`: the user cannot access the *Settings* app at all.
|
||||
- :guilabel:`Access Rights`: the user can only view the :guilabel:`User's & Companies` section of
|
||||
the *Settings* app.
|
||||
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
|
||||
- :guilabel:`Settings`: the user has access to the entire *Settings* app with no restrictions.
|
||||
|
||||
Please refer to :doc:`this document </applications/general/users>` to learn more about managing
|
||||
users and their access rights.
|
||||
@@ -398,12 +293,12 @@ Click on an individual to view their card, which displays the :guilabel:`Access
|
||||
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
|
||||
there are four options:
|
||||
|
||||
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
|
||||
- :guilabel:`None (blank)`: a blank field means the user has no rights to view or approve expense
|
||||
reports, and can only view their own.
|
||||
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
|
||||
- :guilabel:`Team Approver`: the user can only view and approve expense reports for their own
|
||||
specific team.
|
||||
- :guilabel:`All Approver`: The user can view and approve any expense report.
|
||||
- :guilabel:`Administrator`: The user can view and approve any expense report, as well as access the
|
||||
- :guilabel:`All Approver`: the user can view and approve any expense report.
|
||||
- :guilabel:`Administrator`: the user can view and approve any expense report, as well as access the
|
||||
reporting and configuration menus in the *Expenses* app.
|
||||
|
||||
Users who are able to approve expense reports (typically managers) can easily view all expense
|
||||
@@ -416,18 +311,18 @@ reports with a status of :guilabel:`Refused` are hidden in the default view.
|
||||
:align: center
|
||||
:alt: Reports to validate are found on the Reports to Approve page.
|
||||
|
||||
When viewing expense reports, there is a panel of filters that can be enabled or disabled on the
|
||||
left side. The three categories that filters can be applied on are :guilabel:`Status`,
|
||||
When viewing expense reports, there is a panel of filters that can be enabled (or disabled) on the
|
||||
left side. The three categories where filters can be applied on are :guilabel:`Status`,
|
||||
:guilabel:`Employee`, and :guilabel:`Company`. To view only expense reports with a particular
|
||||
status, enable the specific status filter to display the expense reports with only that status.
|
||||
Disable the specific status filter to hide the reports with that status. To view expense reports for
|
||||
a particular employee and/or company, enable the specific employee name filter and/or company filter
|
||||
in the :guilabel:`Employee` and :guilabel:`Company` sections.
|
||||
|
||||
Reports can be approved in two ways (individually or several at once) and refused only one way. To
|
||||
Reports can be approved in two ways (individually or several at once), and refused only one way. To
|
||||
approve multiple expense reports at once, remain in the list view. First, select the reports to
|
||||
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||
to select all the reports in the list.
|
||||
approve by ticking the checkbox next to each report, or tick the checkbox next to
|
||||
:guilabel:`Employee` to select all the reports in the list.
|
||||
|
||||
.. important::
|
||||
Only reports with a status of :guilabel:`Submitted` can be approved. It is recommended to only
|
||||
@@ -435,7 +330,7 @@ to select all the reports in the list.
|
||||
:guilabel:`Submitted` filter enabled.
|
||||
|
||||
If a report is selected that is unable to be approved, the :guilabel:`Approve Report` button
|
||||
**will not appear**, indicating there is a problem with the selected report(s).
|
||||
does **not** appear, indicating there is a problem with the selected report.
|
||||
|
||||
Next, click the :guilabel:`Approve Report` button.
|
||||
|
||||
@@ -477,46 +372,6 @@ the manager's team.
|
||||
:align: center
|
||||
:alt: Send messages in the chatter.
|
||||
|
||||
.. _expenses/post:
|
||||
|
||||
Post expenses in accounting
|
||||
===========================
|
||||
|
||||
Once an expense report is approved, the next step is to post the report to the accounting journal.
|
||||
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only the
|
||||
expense reports that have been approved and need to be posted, adjust the filters on the left side
|
||||
so that only the :guilabel:`Approved` status is enabled.
|
||||
|
||||
.. image:: expenses/post-reports.png
|
||||
:align: center
|
||||
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||
|
||||
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
|
||||
post multiple expense reports at once, remain in the list view. First, select the reports to post by
|
||||
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
|
||||
all the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
|
||||
.. image:: expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
|
||||
To post an individual report, click on a report to go to the detailed view of that report. In this
|
||||
view, several options are presented: :guilabel:`Post Journal Entries`, :guilabel:`Report In Next
|
||||
Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`. Click :guilabel:`Post Journal Entries`
|
||||
to post the report.
|
||||
|
||||
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
|
||||
in the :guilabel:`Reason to Refuse Expense` field, and then click :guilabel:`Refuse`. Refused
|
||||
reports can be viewed by going to :menuselection:`Expenses app --> Expense Reports`, then adjusting
|
||||
the filters on the left so that only :guilabel:`Refused` is selected. This will only show the
|
||||
refused expense reports.
|
||||
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user must have following access rights:
|
||||
|
||||
- Accounting: Accountant or Adviser
|
||||
- Expenses: Manager
|
||||
|
||||
.. _expenses/reimburse:
|
||||
|
||||
Reimburse employees
|
||||
@@ -532,8 +387,9 @@ Reports --> Reports To Pay`.
|
||||
|
||||
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
|
||||
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
|
||||
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||
to select all the reports in the list. Next, click :guilabel:`Register Payment`.
|
||||
to pay by ticking the checkbox next to each report, or tick the checkbox next to
|
||||
:guilabel:`Employee` to select all the reports in the list. Next, click :guilabel:`Register
|
||||
Payment`.
|
||||
|
||||
.. image:: expenses/register-payment.png
|
||||
:align: center
|
||||
@@ -567,7 +423,7 @@ If expenses are tracked on customer projects, expenses can be automatically char
|
||||
customer. This is done by creating an expense, referencing the :abbr:`SO (Sales Order)` the expense
|
||||
should be added to, and then creating the expense report. Next, managers approve the expense report,
|
||||
and the accounting department posts the journal entries. Finally, once the expense report is posted
|
||||
to a journal, the expense(s) appears on the :abbr:`SO (Sales Order)` that was referenced. The sales
|
||||
to a journal, the expenses appear on the :abbr:`SO (Sales Order)` that was referenced. The sales
|
||||
order can then be invoiced, thus invoicing the customer for the expense.
|
||||
|
||||
Setup
|
||||
@@ -589,11 +445,11 @@ Create an expense
|
||||
-----------------
|
||||
|
||||
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
|
||||
entered in order to re-invoice a customer. Select the *sales order* the expense will appear on in
|
||||
the :guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
|
||||
:guilabel:`Analytic Account` the expense will be posted to. After the expense(s) are created, the
|
||||
expense report needs to be :ref:`created <expenses/report>` and :ref:`submitted <expenses/submit>`
|
||||
as usual.
|
||||
entered to re-invoice a customer. Select the sales order the expense should appear on in the
|
||||
:guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
|
||||
:guilabel:`Analytic Account` the expense should be posted to. After the expenses are created, the
|
||||
expense report needs to be :doc:`created <expenses/expense_reports>`, and :ref:`submitted
|
||||
<expenses/submit>`, as usual.
|
||||
|
||||
.. image:: expenses/reinvoice-expense.png
|
||||
:align: center
|
||||
@@ -609,16 +465,16 @@ as usual.
|
||||
Validate and post expenses
|
||||
--------------------------
|
||||
|
||||
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
|
||||
Only employees with permissions (typically, managers or supervisors) can :ref:`approve expenses
|
||||
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic
|
||||
Distribution` is set on every expense line of a report. If an :guilabel:`Analytic Distribution` is
|
||||
missing, assign the correct account(s) from the drop-down menu, and then click :guilabel:`Approve`
|
||||
or :guilabel:`Refuse`.
|
||||
missing, assign the correct accounts from the drop-down menu, and click :guilabel:`Approve` or
|
||||
:guilabel:`Refuse`.
|
||||
|
||||
The accounting department is typically responsible for :ref:`posting journal entries
|
||||
<expenses/post>`. Once an expense report is approved, it can then be posted. The :abbr:`SO (Sales
|
||||
Order)` is **only** updated *after the journal entries are posted*. One the journal entries are
|
||||
posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
The accounting department is typically responsible for :doc:`posting journal entries
|
||||
<expenses/post_expenses>`. Once an expense report is approved, it can then be posted. The :abbr:`SO
|
||||
(Sales Order)` is **only** updated *after* the journal entries are posted. Once the journal entries
|
||||
are posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
|
||||
Invoice expenses
|
||||
----------------
|
||||
@@ -651,3 +507,13 @@ Next, click :guilabel:`Create Invoice`, and select if the invoice is for a :guil
|
||||
invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)` by
|
||||
clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. The customer has now
|
||||
been invoiced for the expenses.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`expenses/post_expenses`
|
||||
- :doc:`expenses/expense_reports`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
expenses/post_expenses
|
||||
expenses/expense_reports
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,126 @@
|
||||
===============
|
||||
Expense reports
|
||||
===============
|
||||
|
||||
When expenses are ready to submit (such as, at the end of a business trip, or once a month), an
|
||||
*expense report* needs to be created. Open the main :menuselection:`Expenses app` dashboard, which
|
||||
displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
|
||||
|
||||
Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) is shown in blue text. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
Create expense reports
|
||||
======================
|
||||
|
||||
First, select each desired expense to be added to the report on the :guilabel:`My Expenses`
|
||||
dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the
|
||||
list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed.
|
||||
|
||||
Another way to quickly add all expenses that are not on a expense report, is to click the
|
||||
:guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects
|
||||
all expenses with a status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expense_reports/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a
|
||||
status of :guilabel:`Approved`.
|
||||
|
||||
The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on
|
||||
the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`.
|
||||
|
||||
When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To
|
||||
Submit` that are *not* currently on another expense report appears in the newly-created expense
|
||||
report.
|
||||
|
||||
If all expenses on the :guilabel:`My Expenses` report are already associated with another expense
|
||||
report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no
|
||||
expenses to report.`
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the
|
||||
:guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field, by default. It is recommended to edit this field with a short summary for each
|
||||
report to help keep expenses organized. Enter a description for the expense report, such as `Client
|
||||
Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field.
|
||||
|
||||
The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the
|
||||
information listed on the individual expenses.
|
||||
|
||||
Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
|
||||
If needed, update the :guilabel:`Journal` field, using the drop-down menu.
|
||||
|
||||
.. image:: expense_reports/expense-report-summary.png
|
||||
:align: center
|
||||
:alt: Enter a short description and select a manager for the report.
|
||||
|
||||
If some expenses are missing from the report, they can still be added from this report form. To do
|
||||
so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab.
|
||||
|
||||
An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with
|
||||
a :guilabel:`To Submit` status) that can be added to the report.
|
||||
|
||||
If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to
|
||||
:ref:`create a new expense <expenses/new>` and add it to the report.
|
||||
|
||||
Tick the checkbox next to each expense being added, then click :guilabel:`Select`.
|
||||
|
||||
Doing so removes the pop-up window, and the items now appear on the report.
|
||||
|
||||
.. image:: expense_reports/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Navigate to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
Submit expense reports
|
||||
======================
|
||||
|
||||
When an expense report is completed, the next step is to submit the report to a manager for
|
||||
approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses -->
|
||||
My Reports`. Open the specific report from the list of expense reports.
|
||||
|
||||
.. note::
|
||||
Reports must be individually submitted, and **cannot** be submitted in batches.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful, since only reports with a
|
||||
:guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the
|
||||
blue text, while all other expense text appears in black.
|
||||
|
||||
.. image:: expense_reports/expense-status.png
|
||||
:align: center
|
||||
:alt: Submit the report to the manager.
|
||||
|
||||
.. note::
|
||||
The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status`
|
||||
column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon
|
||||
at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting
|
||||
drop-down menu.
|
||||
|
||||
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
|
||||
the next step is to wait for the manager to approve it.
|
||||
|
||||
.. important::
|
||||
:ref:`Approving <expenses/approve>`, :doc:`posting <../expenses/post_expenses>`, and
|
||||
:ref:`reimbursing <expenses/reimburse>` expenses are **only** for users with the appropriate
|
||||
:doc:`access rights <../../general/users/access_rights>`.
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,75 @@
|
||||
=============
|
||||
Post expenses
|
||||
=============
|
||||
|
||||
Once an expense report is :ref:`approved <expenses/approve>`, the next step is to post the expense
|
||||
report to the proper accounting journal.
|
||||
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user **must** have the following
|
||||
:doc:`access rights <../../general/users/access_rights>`:
|
||||
|
||||
- Accounting: *Accountant* or *Adviser*
|
||||
- Expenses: *Manager*
|
||||
|
||||
Only expense reports with an *Approved* status can post the expenses to a journal. To view all
|
||||
expense reports, navigate to :menuselection:`Expenses app --> Expense Reports`. Next, to view
|
||||
**only** approved expense reports that need to be posted, adjust the filters on the left side, so
|
||||
only the :guilabel:`Approved` checkbox is ticked.
|
||||
|
||||
.. image:: post-expenses/post-reports.png
|
||||
:align: center
|
||||
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||
|
||||
.. note::
|
||||
The default :guilabel:`All Reports` dashboard displays all expense reports, except reports with a
|
||||
status of :guilabel:`Refused`.
|
||||
|
||||
Expense reports can be posted to accounting journals in two ways: :ref:`individually
|
||||
<expenses/individual>` or :ref:`in bulk <expenses/multiple>`.
|
||||
|
||||
.. _expenses/individual:
|
||||
|
||||
Post individual reports
|
||||
-----------------------
|
||||
|
||||
To post an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and
|
||||
click on an individual report with a :guilabel:`Status` of :guilabel:`Approved`, to view the report
|
||||
form. In this view, several options are presented: :guilabel:`Post Journal Entries`,
|
||||
:guilabel:`Report In Next Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`.
|
||||
|
||||
Click :guilabel:`Post Journal Entries` to post the report.
|
||||
|
||||
The accounting journal the expenses are posted to is listed in the :guilabel:`Journal` field of the
|
||||
expense report.
|
||||
|
||||
After posting the expenses to an accounting journal, a :guilabel:`Journal Entry` smart button
|
||||
appears at the top of the screen. Click the :guilabel:`Journal Entry` smart button, and the details
|
||||
for the journal entry appear, with a status of :guilabel:`Posted`.
|
||||
|
||||
.. _expenses/multiple:
|
||||
|
||||
Post multiple reports
|
||||
---------------------
|
||||
|
||||
To post multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense
|
||||
Reports` to view a list of expense reports. Next, select the reports to approve by ticking the
|
||||
checkbox next to each report being approved.
|
||||
|
||||
.. note::
|
||||
Only expense reports with a status of :guilabel:`Approved` are able to post the expenses to an
|
||||
accounting journal. If an expense report is selected that **cannot** be posted, such as an
|
||||
unapproved report, or the report has already been posted to a journal, the :guilabel:`Post
|
||||
Entries` button is **not** visible.
|
||||
|
||||
.. tip::
|
||||
To select **only** approved expense reports, adjust the filters on the left side, so that only
|
||||
the :guilabel:`Approved` checkbox is ticked. Next, tick the checkbox next to the
|
||||
:guilabel:`Employee` column title to select **all** the :guilabel:`Approved` reports in the list
|
||||
at once.
|
||||
|
||||
Next, click the :guilabel:`Post Entries` button.
|
||||
|
||||
.. image:: post-expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
@@ -121,7 +121,7 @@ available on Odoo.
|
||||
- :doc:`United Arab Emirates - Accounting <fiscal_localizations/united_arab_emirates>`
|
||||
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
|
||||
- Ukraine - Accounting
|
||||
- United States - Accounting
|
||||
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
|
||||
- Uruguay - Accounting
|
||||
- Venezuela - Accounting
|
||||
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
|
||||
@@ -159,3 +159,4 @@ available on Odoo.
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
fiscal_localizations/united_states
|
||||
|
||||