Compare commits
388 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bdaf736eef | |||
| 83d105c067 | |||
| 79289bf99b | |||
| ee2cfe2bb5 | |||
| 490eb9a865 | |||
| f019e3b18f | |||
| 31bfb0c693 | |||
| 069fa84987 | |||
| a4cdf38bd6 | |||
| cc8c576936 | |||
| 9ff60ea1d7 | |||
| c54584a3f0 | |||
| ee735a813f | |||
| 6bd2a67549 | |||
| 878da9318e | |||
| 094924d5ff | |||
| 7e30d6f7da | |||
| e3eae6ac88 | |||
| 192281038d | |||
| 56cf586061 | |||
| b5bfc45f09 | |||
| f16d89dbc7 | |||
| 656064ea1c | |||
| 36ca933672 | |||
| 92b3166167 | |||
| 880f1cc01d | |||
| 0fbf9995f0 | |||
| 97f5c6f02a | |||
| 51a70769ca | |||
| ffcdc7f3ea | |||
| b65460db47 | |||
| fdda9ff30a | |||
| 90606a0d56 | |||
| c63dda1e5f | |||
| e4057858a1 | |||
| 2c613fdfc4 | |||
| 2e99e9b57e | |||
| 7353d7b2cc | |||
| 4a28f69400 | |||
| c2a84d65f7 | |||
| dfb88db7b6 | |||
| 3d82c7671c | |||
| 9a5074848c | |||
| e0e97ea763 | |||
| 3e4463c978 | |||
| 735097850c | |||
| d8494b2c4b | |||
| f4bcdc815e | |||
| e655f90e62 | |||
| d7595e5eb8 | |||
| 0b6bef6516 | |||
| 3a18276d4a | |||
| bb9cb27935 | |||
| 148eaedfa9 | |||
| a9d4fbbd5a | |||
| 7cacdf626b | |||
| b07ea8d014 | |||
| 158a1dee79 | |||
| bfcb1fa443 | |||
| 6355b52f87 | |||
| d43cc3e466 | |||
| 281d3976da | |||
| 02a47a607d | |||
| 36ab5e74c3 | |||
| 33712a339f | |||
| 5a8691d249 | |||
| 20865bfaea | |||
| 4255e514a9 | |||
| 632add350d | |||
| d36e0b095c | |||
| 946a55b029 | |||
| e259853486 | |||
| fd8b628b0e | |||
| bcd3747156 | |||
| 1f1f574615 | |||
| 89c63cb952 | |||
| 2da5c1664f | |||
| 25f95ce12d | |||
| 300345957a | |||
| ffaa9ec7a8 | |||
| 60d55082ce | |||
| d8b4b1d60f | |||
| 10cd2a061b | |||
| 41b3bd3bc9 | |||
| 9be4c889e3 | |||
| dc5136cc45 | |||
| 2d0505c0bd | |||
| 22b294400f | |||
| ef3e57c994 | |||
| 04f9ea14cd | |||
| 4742f77ef9 | |||
| df01a6edf4 | |||
| d3f17c6609 | |||
| a54e626075 | |||
| 069ee16ee1 | |||
| df48788817 | |||
| dc0dfea959 | |||
| 1c2897c54d | |||
| f87f12c53a | |||
| a7f87a913a | |||
| 77b0cc21ee | |||
| 41c33f1165 | |||
| 6d923e4729 | |||
| 59dcc0e921 | |||
| 3875f79b5c | |||
| befe1d0c8d | |||
| f65dbd4c15 | |||
| 40015002bd | |||
| 2383ecff09 | |||
| d266d142a8 | |||
| f8c1f3538d | |||
| 757f750358 | |||
| f61b571960 | |||
| 6349f5a13e | |||
| 76b234ba3a | |||
| c1f4f1fb57 | |||
| b2bad17b19 | |||
| 1ad921a1d1 | |||
| 8291dc0379 | |||
| 1534cf4e19 | |||
| 3dc21be0a7 | |||
| 9cbc9e3610 | |||
| 269d602af0 | |||
| 0bde5db3bc | |||
| ac9eb58b7a | |||
| 3229ee3210 | |||
| 21362bea09 | |||
| 3867472761 | |||
| b3fc71894a | |||
| 3fada867de | |||
| 75fa2c64b3 | |||
| af5ac872e7 | |||
| dc3bdd3824 | |||
| ce85e620f1 | |||
| 00faf01516 | |||
| dcf55ac08a | |||
| b0009b8e10 | |||
| b154ed017f | |||
| 54f7faa593 | |||
| 2a00746f71 | |||
| ee1ef85417 | |||
| 9f21404579 | |||
| 212da24684 | |||
| ca71dfa66a | |||
| 715bd20ac1 | |||
| 7576501508 | |||
| 00771d68bd | |||
| 83ca0c26ff | |||
| e0010641ac | |||
| 2198e60c5e | |||
| d4d62b6967 | |||
| 48bfcc6d93 | |||
| 5eb6fc8cbc | |||
| af0853ec77 | |||
| 9265f644ad | |||
| 1da9a538c2 | |||
| 91201d199a | |||
| c612a4e1fa | |||
| caffe57110 | |||
| 7cf18082ad | |||
| deecd2ae21 | |||
| f07ce400b0 | |||
| 23b5138038 | |||
| 18fd3f00e4 | |||
| a8d88ed33e | |||
| 281137ccfb | |||
| 81509af376 | |||
| 8b76aedf88 | |||
| cffbd073fb | |||
| 5400f76019 | |||
| a5803c0a57 | |||
| 72a7fa97e0 | |||
| 9331fce764 | |||
| 2abc1ceb54 | |||
| c330f4d72e | |||
| e8576b7a04 | |||
| 07333c0061 | |||
| 05370926ff | |||
| 67894e33f6 | |||
| 2118084f11 | |||
| cbe72a69bb | |||
| e6c1f703ab | |||
| 484cf203a9 | |||
| 474d0b7b94 | |||
| df637c5746 | |||
| 539435d14d | |||
| 05637af163 | |||
| 5689bc1039 | |||
| aecf49d6c8 | |||
| a787a2652f | |||
| e5586b3180 | |||
| 439c4521ad | |||
| 6a7bc2d449 | |||
| 03ace4206c | |||
| bc6c92d786 | |||
| 6391349a6d | |||
| eded294b05 | |||
| 856a60cd24 | |||
| 05be4c72db | |||
| fb48206c21 | |||
| 47300c10bf | |||
| 403c616602 | |||
| 6f81a3b076 | |||
| 9223318b05 | |||
| 7e45e144a6 | |||
| 998addbdb2 | |||
| f751e9548a | |||
| 9aa0b714ef | |||
| fd598899c2 | |||
| a926fbf998 | |||
| 8ebfc5cd2a | |||
| 75734d8c6d | |||
| 8f8e65640a | |||
| 5f416e028f | |||
| 3099ce8e0b | |||
| 968177ade5 | |||
| 9776aa010c | |||
| bb99bd6bf6 | |||
| 82f68ea5fc | |||
| 9c417efadc | |||
| 6b963f8f7d | |||
| 9e777948c1 | |||
| 73fc5e9be4 | |||
| 01883d07c1 | |||
| 8557dbf8c2 | |||
| 313a22ba60 | |||
| c847bdc4dd | |||
| 054801995e | |||
| 7d5afdda56 | |||
| cace3cc370 | |||
| 0178034f89 | |||
| a1eaf3af64 | |||
| f499de92ab | |||
| a56255286a | |||
| cc03963248 | |||
| f62c7f83c5 | |||
| 9e740e90d1 | |||
| 66959cf6ee | |||
| edb41d8c51 | |||
| 648cc25775 | |||
| bdcd01f798 | |||
| 2a46a816bc | |||
| e0ab490d57 | |||
| d0fc3e23f7 | |||
| ab5a5e0997 | |||
| a969aaf498 | |||
| 5be62e15e2 | |||
| 2e0df8e810 | |||
| fc363ad00f | |||
| 336801a842 | |||
| b7ce6cf74e | |||
| 0387e3f518 | |||
| d81d63945b | |||
| 1df1c46ff1 | |||
| c219ff72c2 | |||
| 6d6e82a158 | |||
| 2bffc3d457 | |||
| 3e450bafa6 | |||
| 16fb06757a | |||
| 3411cdb2ae | |||
| 6b9ba7f9ed | |||
| 230461a3e8 | |||
| a4f0e6b9b8 | |||
| 4fac976025 | |||
| bdc6660120 | |||
| c2c3b912ed | |||
| eba685e7d9 | |||
| 4ef21b06cd | |||
| 554193a14b | |||
| 6dbaeeb29b | |||
| cba598cac8 | |||
| f23dcb7d35 | |||
| e4fd701fd2 | |||
| 5a298f09eb | |||
| 5995f3dcce | |||
| 2025434058 | |||
| 2cfaf34d9b | |||
| da20d2f5f8 | |||
| 882a34c2bd | |||
| 3d4a275196 | |||
| 066c662509 | |||
| 613420f55e | |||
| ea2145960b | |||
| 8b6e7a0323 | |||
| 74d5918ff3 | |||
| b9a40d117e | |||
| a08970722b | |||
| feeb8dc18f | |||
| 97e3173c7c | |||
| ae77baa7f3 | |||
| fbd85e82ba | |||
| e0921f7b6e | |||
| b35f9305c9 | |||
| 1d61839374 | |||
| 567b22f30c | |||
| f3a4770775 | |||
| 77f1a1fc12 | |||
| b9ba63fde0 | |||
| ed6f2aba4d | |||
| a6d3a8d497 | |||
| b6964f128e | |||
| d0761052da | |||
| 54f32b3df6 | |||
| 1cffbdfa5b | |||
| 675eaa8068 | |||
| 2d749c3134 | |||
| c605694f0b | |||
| bf87dbeccb | |||
| 68fcd62330 | |||
| 2b0059937a | |||
| e24c83a0a1 | |||
| e28bed32d0 | |||
| 533f7f884c | |||
| b188381b70 | |||
| 8ba87a67ce | |||
| 1a44524ab5 | |||
| 8ecbd48796 | |||
| 51b98a71d4 | |||
| 61cad6cd0d | |||
| 2662fa5437 | |||
| ebc80297af | |||
| b44913931d | |||
| be835f7493 | |||
| 11076c8cdd | |||
| 23b88dbff5 | |||
| 8e3008f06a | |||
| d337b38433 | |||
| c9affa54a8 | |||
| 1860805474 | |||
| 8025fdd915 | |||
| ae08218516 | |||
| 25a7492e74 | |||
| 32517aa638 | |||
| e8106a55c4 | |||
| 05da049af4 | |||
| 4d48d1dfa6 | |||
| 3da8280f33 | |||
| ccf0b02713 | |||
| 37e10a53d9 | |||
| b50ca9703a | |||
| 01d5b97ee0 | |||
| ff6f914a09 | |||
| 2459ad79b9 | |||
| 386a3a9e10 | |||
| 4fff23c50e | |||
| 1fc36ffa82 | |||
| 01625aa661 | |||
| 80aa3b74dc | |||
| 9be2b43adb | |||
| e946be6abd | |||
| a70677317a | |||
| d7218a2d75 | |||
| 507c4a07e1 | |||
| f92a81d051 | |||
| e5ee15e20d | |||
| 5070f160ed | |||
| 52b86aab37 | |||
| ae1ad46925 | |||
| ee93bc9d9d | |||
| 0336359c57 | |||
| 5d840a56d7 | |||
| b09c1e045e | |||
| f938a012ad | |||
| 787ec0f787 | |||
| 7cb346fbb1 | |||
| 5e579431e1 | |||
| 1a353a6b91 | |||
| 17885d893e | |||
| f13d8b52fc | |||
| 7f69acd5aa | |||
| 66414a765e | |||
| 1c0678a99a | |||
| b237af1ba8 | |||
| 03cf50013a | |||
| 9ab09aa0a5 | |||
| 255b3b2651 | |||
| 07bb9ec349 | |||
| 717b45bf56 | |||
| 60490b0a7d | |||
| 6ce9a014a7 | |||
| c4f0e9c11c | |||
| 4fdfda7ddb | |||
| 765d8935d4 | |||
| 6cb55a5cce | |||
| fd7d95f707 | |||
| ffe569a625 | |||
| 077b7a577f | |||
| 9d94d155fd |
@@ -21,6 +21,16 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = essentials
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
@@ -41,6 +51,16 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:hr]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||
source_file = locale/sources/hr.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = hr
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:index]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||
source_file = locale/sources/index.pot
|
||||
@@ -111,6 +131,16 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = studio
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
|
||||
@@ -26,7 +26,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-17.1
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/17.0
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
||||
@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
|
||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||
# also used in various other places throughout the built documents.
|
||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'saas-17.1'
|
||||
version = release = '17.0'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
@@ -213,6 +213,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-17.2': "Odoo Online",
|
||||
'saas-17.1': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
'saas-16.4': "Odoo Online",
|
||||
@@ -233,8 +234,11 @@ languages_names = {
|
||||
'es': 'ES',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'ko': 'KO',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
'sv': 'SV',
|
||||
'uk': 'UA',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
@@ -445,7 +449,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
"""
|
||||
_current_lang = app.config.language or 'en'
|
||||
# Replace the context value by its upper-cased value ("FR" instead of "fr")
|
||||
context['language'] = languages_names.get(_current_lang)
|
||||
context['language'] = languages_names.get(_current_lang, _current_lang.upper())
|
||||
context['language_code'] = _current_lang
|
||||
|
||||
# If the list of languages is not set, assume that the project has no alternate language
|
||||
|
||||
@@ -61,4 +61,5 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
|
||||
administration/upgrade
|
||||
administration/neutralized_database
|
||||
administration/supported_versions
|
||||
administration/mobile
|
||||
administration/odoo_accounts
|
||||
|
||||
@@ -20,7 +20,7 @@ To Odoo Online
|
||||
- Odoo Online is *not* compatible with **non-standard apps**.
|
||||
- The database's current version must be :doc:`supported <supported_versions>`.
|
||||
|
||||
#. Create a :ref:`duplicate <duplicate_premise>` of the database.
|
||||
#. Create a :ref:`duplicate of the database <on-premise/duplicate>`.
|
||||
#. In this duplicate, uninstall all **non-standard apps**.
|
||||
#. Use the database manager to grab a *dump with filestore*.
|
||||
#. `Submit a support ticket <https://www.odoo.com/help>`_ including the following:
|
||||
@@ -59,6 +59,11 @@ Transferring an Odoo Online database
|
||||
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
|
||||
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
|
||||
|
||||
.. warning::
|
||||
If there is an active Odoo subscription linked to the database being migrated, reach out to
|
||||
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
|
||||
complete the subscription transfer.
|
||||
|
||||
To on-premise
|
||||
-------------
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
================
|
||||
Odoo mobile apps
|
||||
================
|
||||
|
||||
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
|
||||
recommended.
|
||||
|
||||
Progressive web app (PWA)
|
||||
=========================
|
||||
|
||||
PWAs are web-based applications designed to function across different devices and platforms,
|
||||
leveraging web browsers to deliver user experiences similar to native apps.
|
||||
|
||||
The Odoo PWA features include:
|
||||
|
||||
- Quick access by adding the PWA to a device's home screen
|
||||
- Seamless and borderless navigation experience
|
||||
- Push notifications
|
||||
- SSO authentication
|
||||
|
||||
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
|
||||
instructions to install a PWA depend on the platform and browser used.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Android
|
||||
|
||||
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
|
||||
:guilabel:`Install`.
|
||||
|
||||
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
|
||||
and hold the Odoo icon or tap :guilabel:`Add automatically`.
|
||||
|
||||
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
|
||||
|
||||
.. tab:: iOS
|
||||
|
||||
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
|
||||
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
|
||||
:guilabel:`Add`.
|
||||
|
||||
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
|
||||
**Edge**.
|
||||
|
||||
.. tab:: Desktop
|
||||
|
||||
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. seealso::
|
||||
- `Google Chrome Help: Use progressive web apps
|
||||
<https://support.google.com/chrome/answer/9658361>`_
|
||||
- `MDN Web Docs: Installing and uninstalling web apps
|
||||
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
|
||||
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
|
||||
|
||||
Store apps
|
||||
==========
|
||||
|
||||
The Odoo mobile apps are available for download on the `Google Play Store
|
||||
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
|
||||
<https://apps.apple.com/app/odoo/id1272543640>`_.
|
||||
|
||||
.. important::
|
||||
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||
|
||||
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
||||
@@ -7,159 +7,110 @@ On-premise
|
||||
Register a database
|
||||
===================
|
||||
|
||||
To register your database, you just need to enter your Subscription Code in the
|
||||
banner in the App Switcher. Make sure you do not add extra spaces before or after
|
||||
your subscription code. If the registration is successful, it will turn green and
|
||||
will provide you with the Expiration Date of your freshly-registered database. You
|
||||
can check this Expiration Date in the About menu (Odoo 9) or in the Settings Dashboard
|
||||
(Odoo 10).
|
||||
To register your database, enter your subscription code in the banner in the app dashboard. If the
|
||||
registration is successful, the banner will turn green and display the database expiration date.
|
||||
|
||||
Registration Error Message
|
||||
--------------------------
|
||||
.. tip::
|
||||
The expiration date is also displayed at the bottom of the Settings page.
|
||||
|
||||
If you are unable to register your database, you will likely encounter this
|
||||
message:
|
||||
|
||||
.. image:: on_premise/error_message_sub_code.png
|
||||
:alt: Something went wrong while registering your database, you can try again or contact Odoo
|
||||
Help
|
||||
|
||||
Solutions
|
||||
~~~~~~~~~
|
||||
|
||||
* Do you have a valid Enterprise subscription?
|
||||
|
||||
* Check if your subscription details get the tag "In Progress" on
|
||||
your `Odoo Account
|
||||
<https://accounts.odoo.com/my/subscription>`__ or with your Account Manager
|
||||
|
||||
* Have you already linked a database with your subscription reference?
|
||||
|
||||
* You can link only one database per subscription.
|
||||
(Need a test or a development database? `Find a partner
|
||||
<https://www.odoo.com/partners>`__)
|
||||
|
||||
* You can unlink the old database yourself on your `Odoo Contract
|
||||
<https://accounts.odoo.com/my/subscription>`__ with the button "Unlink database"
|
||||
|
||||
.. image:: on_premise/unlink_single_db.png
|
||||
|
||||
A confirmation message will appear; make sure this is the correct database as
|
||||
it will be deactivated shortly:
|
||||
|
||||
.. image:: on_premise/unlink_confirm_enterprise_edition.png
|
||||
|
||||
* Do you have the updated version of Odoo 9?
|
||||
|
||||
* From July 2016 onward, Odoo 9 now automatically change the uuid of a
|
||||
duplicated database; a manual operation is no longer required.
|
||||
|
||||
* If it's not the case, you may have multiple databases sharing the same
|
||||
UUID. Please check on your `Odoo Contract
|
||||
<https://accounts.odoo.com/my/subscription>`__, a short message will appear
|
||||
specifying which database is problematic:
|
||||
|
||||
.. image:: on_premise/unlink_db_name_collision.png
|
||||
|
||||
In this case, you need to change the UUID on your test databases to solve this
|
||||
issue. You will find more information about this in :ref:`this section <duplicate_premise>`.
|
||||
|
||||
For your information, we identify database with UUID. Therefore, each database
|
||||
should have a distinct UUID to ensure that registration and invoicing proceed
|
||||
effortlessly for your and for us.
|
||||
|
||||
* Check your network and firewall settings
|
||||
|
||||
* The Update notification must be able to reach Odoo's subscription
|
||||
validation servers. In other words, make sure that the Odoo server is able
|
||||
to open outgoing connections towards:
|
||||
|
||||
* services.odoo.com on port 443 (or 80)
|
||||
* services.openerp.com on port 443 (or 80) for older deployments
|
||||
|
||||
* Once you activated your database, you must keep these ports open, as the
|
||||
Update notification runs once a week.
|
||||
|
||||
Error message due to too many users
|
||||
-----------------------------------
|
||||
|
||||
If you have more users in your local database than provisionned in your
|
||||
Odoo Enterprise subscription, you may encounter this message:
|
||||
|
||||
.. image:: on_premise/add_more_users.png
|
||||
:alt: This database will expire in X days, you have more users than your subscription allows
|
||||
|
||||
|
||||
When the message appears you have 30 days before the expiration.
|
||||
The countdown is updated everyday.
|
||||
|
||||
Solutions
|
||||
~~~~~~~~~
|
||||
|
||||
- **Add more users** on your subscription: follow the link and Validate
|
||||
the upsell quotation and pay for the extra users.
|
||||
- **Deactivate users** as explained in this `documentation <documentation.html#deactivating-users>`_
|
||||
and **Reject** the upsell quotation.
|
||||
|
||||
Once your database has the correct number of users, the expiration message
|
||||
will disappear automatically after a few days, when the next verification occurs.
|
||||
We understand that it can be a bit frightening to see the countdown,
|
||||
so you can :ref:`force an Update Notification <force_ping>` to make the message disappear
|
||||
right away.
|
||||
|
||||
Database expired error message
|
||||
------------------------------
|
||||
|
||||
If your database reaches its expiration date before your renew your subscription,
|
||||
you will encounter this message:
|
||||
|
||||
.. image:: on_premise/database_expired.png
|
||||
:alt: This database has expired.
|
||||
|
||||
This **blocking** message appears after a non-blocking message that lasts 30 days.
|
||||
If you fail to take action before the end of the countdown, the database is expired.
|
||||
|
||||
Solutions
|
||||
~~~~~~~~~
|
||||
|
||||
* Renew your subscription: follow the link and renew your subscription - note that
|
||||
if you wish to pay by Wire Transfer, your subscription will effectively be renewed
|
||||
only when the payment arrives, which can take a few days. Credit card payments are
|
||||
processed immediately.
|
||||
* Contact our `Support <https://www.odoo.com/help>`__
|
||||
|
||||
None of those solutions worked for you? Please contact our
|
||||
`Support <https://www.odoo.com/help>`__
|
||||
|
||||
.. _force_ping:
|
||||
|
||||
.. _duplicate_premise:
|
||||
.. _on-premise/duplicate:
|
||||
|
||||
Duplicate a database
|
||||
====================
|
||||
|
||||
You can duplicate your database by accessing the database manager on your
|
||||
server (<odoo-server>/web/database/manager). In this page, you can easily
|
||||
duplicate your database (among other things).
|
||||
Duplicate a database by accessing the database manager on your server
|
||||
(`<odoo-server>/web/database/manager`). Typically, you want to duplicate your production database
|
||||
into a neutralized testing database. It can be done by checking the neutralize box when prompted,
|
||||
which executes all :file:`neutralize.sql` scripts for every installed module.
|
||||
|
||||
.. image:: on_premise/db_manager.gif
|
||||
Common error messages and solutions
|
||||
===================================
|
||||
|
||||
When you duplicate a local database, it is **strongly** advised to change
|
||||
the duplicated database's uuid (Unniversally Unique Identifier), since this
|
||||
uuid is how your database identifies itself with our servers. Having two
|
||||
databases with the same uuid could result in invoicing problems or registration
|
||||
problems down the line.
|
||||
Registration error
|
||||
------------------
|
||||
|
||||
.. note::
|
||||
From July 2016 onward, Odoo 9 now automatically change the uuid of a duplicated database; a
|
||||
manual operation is no longer required.
|
||||
In case of a registration error, the following message should be displayed.
|
||||
|
||||
The database uuid is currently accessible from the menu :menuselection:`Settings --> Technical -->
|
||||
System Parameters`, we advise you to use a `uuid generator <https://www.uuidtools.com>`_ or to
|
||||
use the unix command ``uuidgen`` to generate a new uuid. You can then simply replace it like any
|
||||
other record by clicking on it and using the edit button.
|
||||
.. image:: on_premise/error-message-sub-code.png
|
||||
:alt: Database registration error message
|
||||
|
||||
.. image:: on_premise/db_uuid.png
|
||||
To resolve the issue:
|
||||
|
||||
- Check the **validity of your Odoo Enterprise subscription** by verifying if your subscription
|
||||
details have the tag :guilabel:`In Progress` on your `Odoo Account
|
||||
<https://accounts.odoo.com/my/subscription>`_ or contact your Account Manager.
|
||||
|
||||
- Ensure that **no other database is linked** to the subscription code, as only one database can be
|
||||
linked per subscription.
|
||||
|
||||
.. tip::
|
||||
If a test or a development database is needed, you can :ref:`duplicate a database
|
||||
<on-premise/duplicate>`.
|
||||
|
||||
- Verify that **no databases share the same UUID** (Universally Unique Identifier) by opening your
|
||||
`Odoo Contract <https://accounts.odoo.com/my/subscription>`_. If two or more databases share the
|
||||
same UUID, their name will be displayed.
|
||||
|
||||
.. image:: on_premise/unlink-db-name-collision.png
|
||||
:alt: Database UUID error message
|
||||
|
||||
If that is the case, manually change the database(s) UUID or `send a support ticket
|
||||
<https://www.odoo.com/help>`_.
|
||||
|
||||
- As the update notification must be able to reach Odoo's subscription validation servers, ensure
|
||||
your **network and firewall settings** allow the Odoo server to open outgoing connections
|
||||
towards:
|
||||
|
||||
- `services.odoo.com` on port `443` (or `80`)
|
||||
- for older deployments, `services.openerp.com` on port `443` (or `80`)
|
||||
|
||||
These ports must be kept open even after registering a database, as the update notification runs
|
||||
once a week.
|
||||
|
||||
Too many users error
|
||||
--------------------
|
||||
|
||||
If you have more users in a local database than provisioned in your Odoo Enterprise subscription,
|
||||
the following message should be displayed.
|
||||
|
||||
.. image:: on_premise/add-more-users.png
|
||||
:alt: Too many users on a database error message
|
||||
|
||||
When the message appears, you have 30 days to act before the database expires. The countdown is
|
||||
updated every day.
|
||||
|
||||
To resolve the issue, either:
|
||||
|
||||
- **Add more users** to your subscription by clicking the :guilabel:`Upgrade your subscription` link
|
||||
displayed in the message to validate the upsell quotation and pay for the extra users.
|
||||
- :ref:`Deactivate users <users/deactivate>` and **reject** the upsell quotation.
|
||||
|
||||
.. important::
|
||||
If you are on a monthly subscription plan, the database will automatically update to reflect the
|
||||
added user(s). If you are on a yearly or multi-year plan, an expiration banner will appear in the
|
||||
database. You can create the upsell quotation by clicking the banner to update the subscription
|
||||
or `send a support ticket <https://www.odoo.com/help>`_ to resolve the issue.
|
||||
|
||||
Once your database has the correct number of users, the expiration message disappears automatically
|
||||
after a few days, when the next verification occurs.
|
||||
|
||||
Database expired error
|
||||
----------------------
|
||||
|
||||
If your database expires before you renew your subscription, the following message should be
|
||||
displayed.
|
||||
|
||||
.. image:: on_premise/database-expired.png
|
||||
:alt: Database expired error message
|
||||
|
||||
This message appears if you fail to act before the end of the 30-day countdown.
|
||||
|
||||
To resolve the issue, either:
|
||||
|
||||
- Click the :guilabel:`Renew your subscription` link displayed in the message and complete the
|
||||
process. If you pay by wire transfer, your subscription will be renewed when the payment arrives
|
||||
which can take a few days. Credit card payments are processed immediately.
|
||||
- `Send a support ticket <https://www.odoo.com/help>`_.
|
||||
|
||||
.. toctree::
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 17 KiB |
@@ -9,7 +9,7 @@ internet.
|
||||
|
||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||
|
||||
.. _db_filter:
|
||||
.. _dbfilter:
|
||||
|
||||
dbfilter
|
||||
========
|
||||
@@ -573,12 +573,12 @@ security-related topics:
|
||||
|
||||
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
||||
to restrict the visibility of your databases according to the hostname.
|
||||
See :ref:`db_filter`.
|
||||
See :ref:`dbfilter`.
|
||||
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
||||
list of available databases to filter from, instead of letting the system fetch
|
||||
them all from the database backend.
|
||||
|
||||
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
|
||||
- Once your ``db_name`` and ``dbfilter`` are configured and only match a single database
|
||||
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
||||
listing databases entirely, and to block access to the database management screens
|
||||
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
||||
@@ -722,7 +722,7 @@ management screens.
|
||||
the system administrator, including provisioning of new databases and automated backups.
|
||||
|
||||
Be sure to setup an appropriate ``db_name`` parameter
|
||||
(and optionally, ``db_filter`` too) so that the system can determine the target database
|
||||
(and optionally, ``dbfilter`` too) so that the system can determine the target database
|
||||
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
||||
database themselves.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
@@ -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::
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~17.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- April 2024
|
||||
-
|
||||
* - Odoo saas~17.1
|
||||
- |green|
|
||||
- N/A
|
||||
|
||||
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 22 KiB |
@@ -2,166 +2,246 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
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.
|
||||
|
||||
.. important::
|
||||
Sometimes, users run into a 'time out' error, or a record does not process, due to its size. This
|
||||
can occur with large exports, or in cases where the import file is too large. To circumvent this
|
||||
limitation surrounding the size of the records, process exports or imports in smaller batches.
|
||||
|
||||
.. _export-data:
|
||||
|
||||
Export data from Odoo
|
||||
=====================
|
||||
|
||||
When working with a database, it sometimes is necessary to export your data in a distinct file.
|
||||
Doing so can help to do reporting over your activities (even if Odoo offers a precise and easy
|
||||
reporting tool with each available application).
|
||||
When working with a database, it is sometimes necessary to export data in a distinct file. Doing so
|
||||
can aid in reporting on activities, although, Odoo provides a precise and easy reporting tool with
|
||||
each available application.
|
||||
|
||||
With Odoo, you can export the values from any field in any record. To do so,
|
||||
activate the list view on the items that need to be exported, click on *Action*, and, then,
|
||||
on *Export*.
|
||||
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`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
:alt: view of the different things to enable/click to export data
|
||||
:alt: View of the different things to enable/click to export data.
|
||||
|
||||
Pretty simple, this action still comes with some specificities. In fact,
|
||||
when clicking on *Export*, a pop-up window appears with several
|
||||
options for the data to export:
|
||||
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
|
||||
several options for the data to export:
|
||||
|
||||
.. image:: export_import_data/export-data-overview.png
|
||||
:align: center
|
||||
:alt: overview of all the options to take into account when exporting data in Odoo
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
|
||||
#. With the *I want to update data* option ticked, the system only
|
||||
shows the fields which can be imported. This is very helpful in
|
||||
case you want to update existing records. Basically, this works
|
||||
like a filter. Leaving the box unticked gives way more field
|
||||
options because it shows all the fields, not just the ones which
|
||||
can be imported.
|
||||
#. When exporting, you can choose between two formats: .csv and .xls.
|
||||
With .csv, items are separated with a comma, while .xls holds information about all the
|
||||
worksheets in a file, including both content and formatting.
|
||||
#. Those are the items you may want to export. Use the arrows to display
|
||||
more sub-field options. Of course, you can use the search bar to
|
||||
find specific fields more easily. To use the search option more
|
||||
efficiently, display all the fields by clicking on all the
|
||||
arrows!
|
||||
#. The + button is there to add fields to the "to export" list.
|
||||
#. The "handles" next to the selected fields allow you to move the fields up and down to
|
||||
change the order in which they must be displayed in the exported
|
||||
file.
|
||||
#. The trashcan is there if you need to remove fields.
|
||||
#. For recurring reports, it might be interesting to save export presets.
|
||||
Select all the needed ones and click on the template bar.
|
||||
There, click on *New template* and give a name to yours. The
|
||||
next time you need to export the same list, simply select the
|
||||
related template.
|
||||
#. 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.
|
||||
#. 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.
|
||||
#. These are the items that can be exported. Use the :guilabel:`> (right arrow)` icon to display
|
||||
more sub-field options. Use the :guilabel:`Search` bar to find specific fields. To use the
|
||||
:guilabel:`Search` option more efficiently, click on all the :guilabel:`> (right arrows)` to
|
||||
display all fields.
|
||||
#. The :guilabel:`+ (plus sign)` icon button is present to add fields to the :guilabel:`Fields to
|
||||
export` list.
|
||||
#. The :guilabel:`↕️ (up-down arrow)` to the left of the selected fields can be used to move the
|
||||
fields up and down, to change the order in which they are displayed in the exported file.
|
||||
Drag-and-drop using the :guilabel:`↕️ (up-down arrow)` icon.
|
||||
#. The :guilabel:`🗑️ (trash can)` icon is used to remove fields. Click on the :guilabel:`🗑️ (trash
|
||||
can)` icon to remove the field.
|
||||
#. For recurring reports, it is helpful to save export presets. Select all the needed fields, and
|
||||
click on the template drop-down menu. Once there, click on :guilabel:`New template`, and give a
|
||||
unique name to the export just created. Click the :guilabel:`💾 (floppy drive)` icon to save the
|
||||
configuration. The next time the same list needs to be exported, select the related template that
|
||||
was previously saved from the drop-down menu.
|
||||
|
||||
.. tip::
|
||||
It’s good to keep the field’s external identifier in mind. For example,
|
||||
*Related Company* is equal to *parent_id*. Doing so helps export
|
||||
only what you would like to import next.
|
||||
It is helpful to know the field's external identifier. For example, :guilabel:`Related Company`
|
||||
in the export user interface is equal to *parent_id* (external identifier). This is helpful
|
||||
because then, the only data exported is what should be modified and re-imported.
|
||||
|
||||
.. _import-data:
|
||||
|
||||
Import data into Odoo
|
||||
=====================
|
||||
|
||||
How to start
|
||||
------------
|
||||
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.
|
||||
|
||||
You can import data on any Odoo's business object using either Excel
|
||||
(.xlsx) or CSV (.csv) formats:
|
||||
contacts, products, bank statements, journal entries and even orders!
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
on` or `last modified`) to identify records changed or created by the import.
|
||||
|
||||
Open the view of the object you want to populate and click on :menuselection:`Favorites --> Import
|
||||
records`.
|
||||
.. tip::
|
||||
Activating :ref:`developer mode <developer-mode>` changes the visible import settings in the left
|
||||
menu. Doing so reveals an :menuselection:`Advanced` menu. Included in this advanced menu are two
|
||||
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
|
||||
|
||||
.. image:: export_import_data/import_button.png
|
||||
.. image:: export_import_data/advanced-import.png
|
||||
:align: center
|
||||
:alt: Advanced import options when developer mode is activated.
|
||||
|
||||
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
|
||||
subscriptions and sends notifications during the import, but leads to a slower import.
|
||||
|
||||
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
|
||||
within a field are used to match under the :guilabel:`Odoo Field` while importing.
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
Data can be imported on any Odoo business object using either Excel (`.xlsx`) or :abbr:`CSV
|
||||
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
|
||||
journal entries, and orders.
|
||||
|
||||
Open the view of the object to which the data should be imported/populated, and click on
|
||||
:menuselection:`⚙️ (Action) --> Import records`.
|
||||
|
||||
.. image:: export_import_data/import-button.png
|
||||
:align: center
|
||||
:alt: Action menu revealed with the import records option highlighted.
|
||||
|
||||
There you are provided with templates you can easily populate
|
||||
with your own data. Such templates can be imported in one click;
|
||||
The data mapping is already done.
|
||||
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
|
||||
downloaded and populated with the company's own data. Such templates can be imported in one click,
|
||||
since the data mapping is already done. To download a template click :guilabel:`Import Template for
|
||||
Customers` at the center of the page.
|
||||
|
||||
How to adapt the template
|
||||
-------------------------
|
||||
.. important::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
|
||||
`.xlsx`).
|
||||
|
||||
* Add, remove and sort columns to fit at best your data structure.
|
||||
* We advise to not remove the **ID** one (see why in the next section).
|
||||
* Set a unique ID to every single record by dragging down the ID sequencing.
|
||||
.. image:: export_import_data/formatting.png
|
||||
:align: center
|
||||
:alt: Formatting options presented when a CVS file is imported in Odoo.
|
||||
|
||||
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
|
||||
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
|
||||
:guilabel:`Import` to import the data.
|
||||
|
||||
Adapt a template
|
||||
----------------
|
||||
|
||||
Import templates are provided in the import tool of the most common data to import (contacts,
|
||||
products, bank statements, etc.). Open them with any spreadsheet software (*Microsoft Office*,
|
||||
*OpenOffice*, *Google Drive*, etc.).
|
||||
|
||||
Once the template is downloaded, proceed to follow these steps:
|
||||
|
||||
- Add, remove, and sort columns to best fit the data structure.
|
||||
- It is strongly advised to **not** remove the :guilabel:`External ID` (ID) column (see why in the
|
||||
next section).
|
||||
- Set a unique ID to every record by dragging down the ID sequencing in the :guilabel:`External ID`
|
||||
(ID) column.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
|
||||
|
||||
* When you add a new column, Odoo might not be able to map it automatically if its
|
||||
label doesn't fit any field in Odoo. Don't worry! You can map
|
||||
new columns manually when you test the import. Search the list for the
|
||||
corresponding field.
|
||||
.. note::
|
||||
When a new column is added, Odoo may not be able to map it automatically, if its label does not
|
||||
fit any field within Odoo. However, new columns can be mapped manually when the import is tested.
|
||||
Search the drop-down menu for the corresponding field.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Drop-down menu expanded in the initial import screen on Odoo.
|
||||
|
||||
Then, use this field's label in your file in order to make it work
|
||||
straight on the very next time.
|
||||
Then, use this field's label in the import file to ensure future imports are successful.
|
||||
|
||||
How to import from another application
|
||||
--------------------------------------
|
||||
.. tip::
|
||||
Another useful way to find out the proper column names to import is to export a sample file
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
In order to re-create relationships between different records,
|
||||
you should use the unique identifier from the original application
|
||||
and map it to the **ID** (External ID) column in Odoo.
|
||||
When you import another record that links to the first one,
|
||||
use **XXX/ID** (XXX/External ID) to the original unique identifier.
|
||||
You can also find this record using its name but you will be stuck
|
||||
if at least 2 records have the same name.
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
The **ID** will also be used to update the original import
|
||||
if you need to re-import modified data later,
|
||||
it's thus good practice to specify it whenever possible.
|
||||
The :guilabel:`External ID` (ID) is a unique identifier for the line item. Feel free to use one
|
||||
from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
I cannot find the field I want to map my column to
|
||||
--------------------------------------------------
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
Odoo tries to find with some heuristic, based on the first ten lines of
|
||||
the files, the type of field for each column inside your file.
|
||||
For example if you have a column only containing numbers,
|
||||
only the fields that are of type *Integer* will be displayed for you
|
||||
to choose from.
|
||||
While this behavior might be good and easy for most cases,
|
||||
it is also possible that it goes wrong or that you want to
|
||||
map your column to a field that is not proposed by default.
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
application should be used to map it to the :guilabel:`External ID` (ID) column in Odoo.
|
||||
|
||||
If that happens, you just have to check the
|
||||
** Show fields of relation fields (advanced)** option,
|
||||
you will then be able to choose from the complete list of fields for each column.
|
||||
When another record is imported that links to the first one, use **XXX/ID** (XXX/External ID) for
|
||||
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.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
|
||||
Odoo heuristically tries to find the type of field for each column inside the imported file, based
|
||||
on the first ten lines of the files.
|
||||
|
||||
For example, if there is a column only containing numbers, only the fields with the *integer* type
|
||||
are presented as options.
|
||||
|
||||
While this behavior might be beneficial in most cases, it is also possible that it could fail, or
|
||||
the column may be mapped to a field that is not proposed by default.
|
||||
|
||||
If this happens, check the :guilabel:`Show fields of relation fields (advanced) option`, then a
|
||||
complete list of fields becomes available for each column.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Searching for the field to match the tax column.
|
||||
|
||||
Where can I change the date import format?
|
||||
------------------------------------------
|
||||
|
||||
Odoo can automatically detect if a column is a date, and it will try to guess the date format from a
|
||||
set of most commonly used date formats. While this process can work for many date formats, some date
|
||||
formats will not be recognized. This can cause confusion due to day-month inversions; it is
|
||||
difficult to guess which part of a date format is the day and which part is the month in a date such
|
||||
as '01-03-2016'.
|
||||
|
||||
To view which date format Odoo has found from your file you can check the **Date Format** that is
|
||||
shown when clicking on **Options** under the file selector. If this format is incorrect you can
|
||||
change it to your liking using the *ISO 8601* to define the format.
|
||||
Change data import format
|
||||
-------------------------
|
||||
|
||||
.. note::
|
||||
If you are importing an excel (.xls, .xlsx) file, you can use date cells to store dates as the
|
||||
display of dates in excel is different from the way it is stored. That way you will be sure that
|
||||
the date format is correct in Odoo whatever your locale date format is.
|
||||
Odoo can automatically detect if a column is a date, and tries to guess the date format from a
|
||||
set of most commonly used date formats. While this process can work for many date formats, some
|
||||
date formats are not recognizable. This can cause confusion, due to day-month inversions; it is
|
||||
difficult to guess which part of a date format is the day, and which part is the month, in a
|
||||
date, such as `01-03-2016`.
|
||||
|
||||
Can I import numbers with currency sign (e.g.: $32.00)?
|
||||
-------------------------------------------------------
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options.
|
||||
|
||||
Yes, we fully support numbers with parenthesis to represent negative sign as well as numbers with
|
||||
currency sign attached to them. Odoo also automatically detect which thousand/decimal separator you
|
||||
use (you can change those under **options**). If you use a currency symbol that is not known to
|
||||
Odoo, it might not be recognized as a number though and it will crash.
|
||||
To view which date format Odoo has found from the file, check the :guilabel:`Date Format` that is
|
||||
shown when clicking on options under the file selector. If this format is incorrect, change it to
|
||||
the preferred format using *ISO 8601* to define the format.
|
||||
|
||||
Examples of supported numbers (using thirty-two thousands as an example):
|
||||
.. important::
|
||||
*ISO 8601* is an international standard, covering the worldwide exchange, along with the
|
||||
communication of date and time-related data. For example, the date format should be `YYYY-MM-DD`.
|
||||
So, in the case of July 24th 1981, it should be written as `1981-07-24`.
|
||||
|
||||
.. tip::
|
||||
When importing Excel files (`.xls`, `.xlsx`), consider using *date cells* to store dates. This
|
||||
maintains locale date formats for display, regardless of how the date is formatted in Odoo. When
|
||||
importing a :abbr:`CSV (Comma-separated Values)` file, use Odoo's :guilabel:`Formatting` section
|
||||
to select the date format columns to import.
|
||||
|
||||
Import numbers with currency signs
|
||||
----------------------------------
|
||||
|
||||
Odoo fully supports numbers with parenthesis to represent negative signs, as well as numbers with
|
||||
currency signs attached to them. Odoo also automatically detects which thousand/decimal separator is
|
||||
used. If a currency symbol unknown to Odoo is used, it might not be recognized as a number, and the
|
||||
import crashes.
|
||||
|
||||
.. note::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, the :guilabel:`Formatting` menu
|
||||
appears on the left-hand column. Under these options, the :guilabel:`Thousands Separator` can be
|
||||
changed.
|
||||
|
||||
Examples of supported numbers (using 'thirty-two thousand' as the figure):
|
||||
|
||||
- 32.000,00
|
||||
- 32000,00
|
||||
@@ -176,156 +256,191 @@ Example that will not work:
|
||||
- ABC 32.000,00
|
||||
- $ (32.000,00)
|
||||
|
||||
What can I do when the Import preview table isn't displayed correctly?
|
||||
----------------------------------------------------------------------
|
||||
.. important::
|
||||
A :guilabel:`() (parenthesis)` around the number indicates that the number is a negative value.
|
||||
The currency symbol **must** be placed within the parenthesis for Odoo to recognize it as a
|
||||
negative currency value.
|
||||
|
||||
By default the Import preview is set on commas as field separators and quotation marks as text
|
||||
delimiters. If your csv file does not have these settings, you can modify the File Format Options
|
||||
(displayed under the Browse CSV file bar after you select your file).
|
||||
Import preview table not displayed correctly
|
||||
--------------------------------------------
|
||||
|
||||
Note that if your CSV file has a tabulation as separator, Odoo will not detect the separations. You
|
||||
will need to change the file format options in your spreadsheet application. See the following
|
||||
question.
|
||||
By default, the import preview is set on commas as field separators, and quotation marks as text
|
||||
delimiters. If the :abbr:`CSV (Comma-separated Values)` file does not have these settings, modify
|
||||
the :guilabel:`Formatting` options (displayed under the :guilabel:`Import` :abbr:`CSV
|
||||
(Comma-separated Values)` file bar after selecting the :abbr:`CSV (Comma-separated Values)` file).
|
||||
|
||||
How can I change the CSV file format options when saving in my spreadsheet application?
|
||||
---------------------------------------------------------------------------------------
|
||||
.. important::
|
||||
If the :abbr:`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does
|
||||
**not** detect the separations. The file format options need to be modified in the spreadsheet
|
||||
application. See the following :ref:`Change CSV file format <export_import_data/change-csv>`
|
||||
section.
|
||||
|
||||
If you edit and save CSV files in spreadsheet applications, your computer's regional settings will
|
||||
be applied for the separator and delimiter. We suggest you use OpenOffice or LibreOffice Calc as
|
||||
they will allow you to modify all three options (in :menuselection:`'Save As' dialog box --> Check the
|
||||
box 'Edit filter settings' --> Save`).
|
||||
.. _export_import_data/change-csv:
|
||||
|
||||
Microsoft Excel will allow you to modify only the encoding when saving (in :menuselection:`'Save As'
|
||||
dialog box --> click 'Tools' dropdown list --> Encoding tab`).
|
||||
Change CSV file format in spreadsheet application
|
||||
-------------------------------------------------
|
||||
|
||||
What's the difference between Database ID and External ID?
|
||||
----------------------------------------------------------
|
||||
When editing and saving :abbr:`CSV (Comma-separated Values)` files in spreadsheet applications, the
|
||||
computer's regional settings are applied for the separator and delimiter. Odoo suggests using
|
||||
*OpenOffice* or *LibreOffice*, as both applications allow modifications of all three options (from
|
||||
*LibreOffice* application, go to :menuselection:`'Save As' dialog box --> Check the box 'Edit filter
|
||||
settings' --> Save`).
|
||||
|
||||
Microsoft Excel can modify the encoding when saving (:menuselection:`'Save As' dialog box -->
|
||||
'Tools' drop-down menu --> Encoding tab`).
|
||||
|
||||
Difference between Database ID and External ID
|
||||
----------------------------------------------
|
||||
|
||||
Some fields define a relationship with another object. For example, the country of a contact is a
|
||||
link to a record of the 'Country' object. When you want to import such fields, Odoo will have to
|
||||
recreate links between the different records. To help you import such fields, Odoo provides three
|
||||
mechanisms. You must use one and only one mechanism per field you want to import.
|
||||
link to a record of the 'Country' object. When such fields are imported, Odoo has to recreate links
|
||||
between the different records. To help import such fields, Odoo provides three mechanisms.
|
||||
|
||||
For example, to reference the country of a contact, Odoo proposes you 3 different fields to import:
|
||||
.. important::
|
||||
**Only one** mechanism should be used per field that is imported.
|
||||
|
||||
- Country: the name or code of the country
|
||||
- Country/Database ID: the unique Odoo ID for a record, defined by the ID postgresql column
|
||||
- Country/External ID: the ID of this record referenced in another application (or the .XML file
|
||||
that imported it)
|
||||
For example, to reference the country of a contact, Odoo proposes three different fields to import:
|
||||
|
||||
For the country Belgium, you can use one of these 3 ways to import:
|
||||
- :guilabel:`Country`: the name or code of the country
|
||||
- :guilabel:`Country/Database ID`: the unique Odoo ID for a record, defined by the ID PostgreSQL
|
||||
column
|
||||
- :guilabel:`Country/External ID`: the ID of this record referenced in another application (or the
|
||||
`.XML` file that imported it)
|
||||
|
||||
- Country: Belgium
|
||||
- Country/Database ID: 21
|
||||
- Country/External ID: base.be
|
||||
For the country of Belgium, for example, use one of these three ways to import:
|
||||
|
||||
According to your need, you should use one of these 3 ways to reference records in relations. Here
|
||||
is when you should use one or the other, according to your need:
|
||||
- :guilabel:`Country`: `Belgium`
|
||||
- :guilabel:`Country/Database ID`: `21`
|
||||
- :guilabel:`Country/External ID`: `base.be`
|
||||
|
||||
- Use Country: This is the easiest way when your data come from CSV files that have been created
|
||||
manually.
|
||||
- Use Country/Database ID: You should rarely use this notation. It's mostly used by developers as
|
||||
it's main advantage is to never have conflicts (you may have several records with the same name,
|
||||
According to the company's need, use one of these three ways to reference records in relations. Here
|
||||
is an example when one or the other should be used, according to the need:
|
||||
|
||||
- Use :guilabel:`Country`: this is the easiest way when data comes from :abbr:`CSV (Comma-separated
|
||||
Values)` files that have been created manually.
|
||||
- Use :guilabel:`Country/Database ID`: this should rarely be used. It is mostly used by developers
|
||||
as the main advantage is to never have conflicts (there may be several records with the same name,
|
||||
but they always have a unique Database ID)
|
||||
- Use Country/External ID: Use External ID when you import data from a third party application.
|
||||
- Use :guilabel:`Country/External ID`: use *External ID* when importing data from a third-party
|
||||
application.
|
||||
|
||||
When you use External IDs, you can import CSV files with the "External ID" column to define the
|
||||
External ID of each record you import. Then, you will be able to make a reference to that record
|
||||
with columns like "Field/External ID". The following two CSV files give you an example for Products
|
||||
and their Categories.
|
||||
When *External IDs* are used, import :abbr:`CSV (Comma-separated Values)` files with the
|
||||
:guilabel:`External ID` (ID) column defining the *External ID* of each record that is imported.
|
||||
Then, a reference can be made to that record with columns, like `Field/External ID`. The following
|
||||
two :abbr:`CSV (Comma-separated Values)` files provide an example for products and their categories.
|
||||
|
||||
:download:`CSV file for categories
|
||||
<export_import_data/External_id_3rd_party_application_product_categories.csv>`.
|
||||
- :download:`CSV file for categories
|
||||
<export_import_data/External_id_3rd_party_application_product_categories.csv>`
|
||||
- :download:`CSV file for Products
|
||||
<export_import_data/External_id_3rd_party_application_products.csv>`
|
||||
|
||||
:download:`CSV file for Products
|
||||
<export_import_data/External_id_3rd_party_application_products.csv>`.
|
||||
.. _export_import_data/relation-fields:
|
||||
|
||||
What can I do if I have multiple matches for a field?
|
||||
-----------------------------------------------------
|
||||
Import relation fields
|
||||
----------------------
|
||||
|
||||
If for example you have two product categories with the child name "Sellable" (ie. "Misc.
|
||||
Products/Sellable" & "Other Products/Sellable"), your validation is halted but you may still import
|
||||
your data. However, we recommend you do not import the data because they will all be linked to the
|
||||
first 'Sellable' category found in the Product Category list ("Misc. Products/Sellable"). We
|
||||
recommend you modify one of the duplicates' values or your product category hierarchy.
|
||||
An Odoo object is always related to many other objects (e.g. a product is linked to product
|
||||
categories, attributes, vendors, etc.). To import those relations, the records of the related object
|
||||
need to be imported first, from their own list menu.
|
||||
|
||||
However if you do not wish to change your configuration of product categories, we recommend you use
|
||||
make use of the external ID for this field 'Category'.
|
||||
This can be achieved by using either the name of the related record, or its ID, depending on the
|
||||
circumstances. The ID is expected when two records have the same name. In such a case add `/ ID`
|
||||
at the end of the column title (e.g. for product attributes: `Product Attributes / Attribute / ID`).
|
||||
|
||||
How can I import a many2many relationship field (e.g. a customer that has multiple tags)?
|
||||
-----------------------------------------------------------------------------------------
|
||||
Options for multiple matches on fields
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The tags should be separated by a comma without any spacing. For example, if you want your customer
|
||||
to be linked to both tags 'Manufacturer' and 'Retailer' then you will encode "Manufacturer,Retailer"
|
||||
in the same column of your CSV file.
|
||||
If, for example, there are two product categories with the child name `Sellable` (e.g. `Misc.
|
||||
Products/Sellable` & `Other Products/Sellable`), the validation is halted, but the data may still be
|
||||
imported. However, Odoo recommends that the data is not imported because it will all be linked to
|
||||
the first `Sellable` category found in the *Product Category* list (`Misc. Products/Sellable`).
|
||||
Odoo, instead, recommends modifying one of the duplicate's values, or the product category
|
||||
hierarchy.
|
||||
|
||||
:download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||
However, if the company does not wish to change the configuration of product categories, Odoo
|
||||
recommends making use of the *External ID* for this field, 'Category'.
|
||||
|
||||
Import many2many relationship fields
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
How can I import a one2many relationship (e.g. several Order Lines of a Sales Order)?
|
||||
-------------------------------------------------------------------------------------
|
||||
The tags should be separated by a comma, without any spacing. For example, if a customer needs to be
|
||||
linked to both tags: `Manufacturer` and `Retailer` then 'Manufacturer,Retailer' needs to be encoded
|
||||
in the same column of the :abbr:`CSV (Comma-separated Values)` file.
|
||||
|
||||
If you want to import sales order having several order lines; for each order line, you need to
|
||||
reserve a specific row in the CSV file. The first order line will be imported on the same row as the
|
||||
information relative to order. Any additional lines will need an additional row that does not have
|
||||
any information in the fields relative to the order. As an example, here is
|
||||
``purchase.order_functional_error_line_cant_adpat.CSV`` file of some quotations you can import,
|
||||
based on demo data.
|
||||
- :download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||
|
||||
:download:`File for some Quotations <export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`.
|
||||
Import one2many relationships
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The following CSV file shows how to import purchase orders with their respective purchase order
|
||||
lines:
|
||||
If a company wants to import a sales order with several order lines, a specific row **must** be
|
||||
reserved in the :abbr:`CSV (Comma-separated Values)` file for each order line. The first order line
|
||||
is imported on the same row as the information relative to order. Any additional lines need an
|
||||
additional row that does not have any information in the fields relative to the order.
|
||||
|
||||
:download:`Purchase orders with their respective purchase order lines <export_import_data/o2m_purchase_order_lines.csv>`.
|
||||
As an example, here is a :abbr:`CSV (Comma-separated Values)` file of some quotations that can be
|
||||
imported, based on demo data:
|
||||
|
||||
The following CSV file shows how to import customers and their respective contacts:
|
||||
- :download:`File for some Quotations
|
||||
<export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`
|
||||
|
||||
:download:`Customers and their respective contacts <export_import_data/o2m_customers_contacts.csv>`.
|
||||
The following :abbr:`CSV (Comma-separated Values)` file shows how to import purchase orders with
|
||||
their respective purchase order lines:
|
||||
|
||||
Can I import several times the same record?
|
||||
-------------------------------------------
|
||||
- :download:`Purchase orders with their respective purchase order lines
|
||||
<export_import_data/o2m_purchase_order_lines.csv>`
|
||||
|
||||
If you import a file that contains one of the column "External ID" or "Database ID", records that
|
||||
have already been imported will be modified instead of being created. This is very useful as it
|
||||
allows you to import several times the same CSV file while having made some changes in between two
|
||||
imports. Odoo will take care of creating or modifying each record depending if it's new or not.
|
||||
The following :abbr:`CSV (Comma-separated Values)` file shows how to import customers and their
|
||||
respective contacts:
|
||||
|
||||
This feature allows you to use the Import/Export tool of Odoo to modify a batch of records in your
|
||||
favorite spreadsheet application.
|
||||
- :download:`Customers and their respective contacts
|
||||
<export_import_data/o2m_customers_contacts.csv>`
|
||||
|
||||
What happens if I do not provide a value for a specific field?
|
||||
Import records several times
|
||||
----------------------------
|
||||
|
||||
If an imported file contains one of the columns: :guilabel:`External ID` or :guilabel:`Database ID`,
|
||||
records that have already been imported are modified, instead of being created. This is extremely
|
||||
useful as it allows users to import the same :abbr:`CSV (Comma-separated Values)` file several
|
||||
times, while having made some changes in between two imports.
|
||||
|
||||
Odoo takes care of creating or modifying each record, depending if it is new or not.
|
||||
|
||||
This feature allows a company to use the *Import/Export tool* in Odoo to modify a batch of records
|
||||
in a spreadsheet application.
|
||||
|
||||
Value not provided for a specific field
|
||||
---------------------------------------
|
||||
|
||||
If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined
|
||||
field. But, if fields are set with empty values in the :abbr:`CSV (Comma-separated Values)` file,
|
||||
Odoo sets the empty value in the field, instead of assigning the default value.
|
||||
|
||||
Export/import different tables from an SQL application to Odoo
|
||||
--------------------------------------------------------------
|
||||
|
||||
If you do not set all fields in your CSV file, Odoo will assign the default value for every non
|
||||
defined fields. But if you set fields with empty values in your CSV file, Odoo will set the EMPTY
|
||||
value in the field, instead of assigning the default value.
|
||||
If data needs to be imported from different tables, relations need to be recreated between records
|
||||
belonging to different tables. For instance, if companies and people are imported, the link between
|
||||
each person and the company they work for needs to be recreated.
|
||||
|
||||
How to export/import different tables from an SQL application to Odoo?
|
||||
----------------------------------------------------------------------
|
||||
To manage relations between tables, use the `External ID` facilities of Odoo. The `External ID` of a
|
||||
record is the unique identifier of this record in another application. The `External ID` must be
|
||||
unique across all records of all objects. It is a good practice to prefix this `External ID` with
|
||||
the name of the application or table. (like, 'company_1', 'person_1' - instead of '1')
|
||||
|
||||
If you need to import data from different tables, you will have to recreate relations between
|
||||
records belonging to different tables. (e.g. if you import companies and persons, you will have to
|
||||
recreate the link between each person and the company they work for).
|
||||
As an example, suppose there is an SQL database with two tables that are to be imported: companies
|
||||
and people. Each person belongs to one company, so the link between a person and the company they
|
||||
work for must be recreated.
|
||||
|
||||
To manage relations between tables, you can use the "External ID" facilities of Odoo. The "External
|
||||
ID" of a record is the unique identifier of this record in another application. This "External ID"
|
||||
must be unique across all the records of all objects, so it's a good practice to prefix this
|
||||
"External ID" with the name of the application or table. (like 'company_1', 'person_1' instead of
|
||||
'1')
|
||||
Test this example, with a :download:`sample of a PostgreSQL database
|
||||
<export_import_data/database_import_test.sql>`.
|
||||
|
||||
As an example, suppose you have a SQL database with two tables you want to import: companies and
|
||||
persons. Each person belong to one company, so you will have to recreate the link between a person
|
||||
and the company he work for. (If you want to test this example, here is a :download:`dump of such a
|
||||
PostgreSQL database <export_import_data/database_import_test.sql>`)
|
||||
|
||||
We will first export all companies and their "External ID". In PSQL, write the following command:
|
||||
First, export all companies and their *External ID*. In PSQL, write the following command:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;
|
||||
|
||||
This SQL command will create the following CSV file:
|
||||
This SQL command creates the following :abbr:`CSV (Comma-separated Values)` file:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -334,13 +449,14 @@ This SQL command will create the following CSV file:
|
||||
company_2,Organi,True
|
||||
company_3,Boum,True
|
||||
|
||||
To create the CSV file for persons, linked to companies, we will use the following SQL command in PSQL:
|
||||
To create the :abbr:`CSV (Comma-separated Values)` file for people linked to companies, use the
|
||||
following SQL command in PSQL:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV
|
||||
|
||||
It will produce the following CSV file:
|
||||
It produces the following :abbr:`CSV (Comma-separated Values)` file:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
@@ -350,62 +466,13 @@ It will produce the following CSV file:
|
||||
person_3,Eric,False,company_2
|
||||
person_4,Ramsy,False,company_3
|
||||
|
||||
As you can see in this file, Fabien and Laurence are working for the Bigees company (company_1) and
|
||||
Eric is working for the Organi company. The relation between persons and companies is done using the
|
||||
External ID of the companies. We had to prefix the "External ID" by the name of the table to avoid a
|
||||
conflict of ID between persons and companies (person_1 and company_1 who shared the same ID 1 in the
|
||||
original database).
|
||||
In this file, Fabien and Laurence are working for the Bigees company (`company_1`), and Eric is
|
||||
working for the Organi company. The relation between people and companies is done using the
|
||||
*External ID* of the companies. The *External ID* is prefixed by the name of the table to avoid a
|
||||
conflict of ID between people and companies (`person_1` and `company_1`, who shared the same ID 1 in
|
||||
the original database).
|
||||
|
||||
The two files produced are ready to be imported in Odoo without any modifications. After having
|
||||
imported these two CSV files, you will have 4 contacts and 3 companies. (the firsts two contacts are
|
||||
linked to the first company). You must first import the companies and then the persons.
|
||||
|
||||
How to adapt an import template
|
||||
===============================
|
||||
|
||||
Import templates are provided in the import tool of the most common data to
|
||||
import (contacts, products, bank statements, etc.).
|
||||
You can open them with any spreadsheets software (Microsoft Office,
|
||||
OpenOffice, Google Drive, etc.).
|
||||
|
||||
How to customize the file
|
||||
=========================
|
||||
|
||||
* Remove columns you don't need. We advise to not remove the *ID* one (see
|
||||
why here below).
|
||||
* Set a unique ID to every single record by dragging down the ID sequencing.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
|
||||
* When you add a new column, Odoo might not be able to map it automatically if its
|
||||
label doesn't fit any field of the system.
|
||||
If so, find the corresponding field using the search.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
|
||||
Then, use the label you found in your import template in order to make it work
|
||||
straight away the very next time you try to import.
|
||||
|
||||
Why an “ID” column
|
||||
==================
|
||||
|
||||
The **ID** (External ID) is an unique identifier for the line item.
|
||||
Feel free to use the one of your previous software to ease the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing but it helps in many cases:
|
||||
|
||||
* Update imports: you can import the same file several times without creating duplicates;
|
||||
* Import relation fields (see here below).
|
||||
|
||||
How to import relation fields
|
||||
=============================
|
||||
|
||||
An Odoo object is always related to many other objects (e.g. a product is linked
|
||||
to product categories, attributes, vendors, etc.). To import those relations you need to
|
||||
import the records of the related object first from their own list menu.
|
||||
|
||||
You can do it using either the name of the related record or its ID. The ID is expected when
|
||||
two records have the same name. In such a case add " / ID" at the end of the column title
|
||||
(e.g. for product attributes: Product Attributes / Attribute / ID).
|
||||
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.
|
||||
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 47 KiB |
@@ -47,9 +47,7 @@ Draft invoices
|
||||
--------------
|
||||
|
||||
The system generates invoice which are initially set to the Draft state.
|
||||
While these invoices
|
||||
|
||||
remain unvalidated, they have no accounting impact within the system.
|
||||
While these invoices remain unvalidated, they have no accounting impact within the system.
|
||||
There is nothing to stop users from creating their own draft invoices.
|
||||
|
||||
Let's create a customer invoice with following information:
|
||||
|
||||
@@ -307,6 +307,32 @@ directly to a product line.
|
||||
.. image:: taxes/list-sequence.png
|
||||
:alt: The taxes' sequence in Odoo determines which tax is applied first
|
||||
|
||||
Extra taxes
|
||||
===========
|
||||
|
||||
"Extra taxes" is a broad term referring to additional taxes beyond the standard or basic taxes
|
||||
imposed by governments. These extra taxes can be **luxury** taxes, **environmental** taxes,
|
||||
**import** or **export duties** taxes, etc.
|
||||
|
||||
.. note::
|
||||
The method to compute these taxes varies across different countries. We recommend consulting your
|
||||
country's regulations to understand how to calculate them for your business.
|
||||
|
||||
To compute an extra tax in Odoo, :ref:`create a tax <taxes/configuration>`, enter a tax name, select
|
||||
a :ref:`Tax Computation <taxes/configuration>`, set an :guilabel:`Amount`, and in the
|
||||
:guilabel:`Advanced Options` tab, check :guilabel:`Affect Base of Subsequent Taxes`. Then, drag and
|
||||
drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent>`.
|
||||
|
||||
.. example::
|
||||
- In Belgium, the formula to compute an environmental tax is: `(product price + environmental
|
||||
tax) x sales tax`. Therefore, our environmental tax has to come *before* the sales tax in the
|
||||
computation sequence.
|
||||
- In our case, we created a 5% environmental tax (Ecotax) and put it *before* the Belgian base
|
||||
tax of 21%.
|
||||
|
||||
.. image:: taxes/ecotax.png
|
||||
:alt: Environmental tax sequence in Belgium.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`taxes/fiscal_positions`
|
||||
- :doc:`taxes/B2B_B2C`
|
||||
|
||||
|
After Width: | Height: | Size: 6.7 KiB |
@@ -93,12 +93,11 @@ available on Odoo.
|
||||
- :doc:`Kenya - Accounting <fiscal_localizations/kenya>`
|
||||
- Lithuania - Accounting
|
||||
- :doc:`Luxembourg - Accounting <fiscal_localizations/luxembourg>`
|
||||
- :doc:`Malaysia - Accounting <fiscal_localizations/malaysia>`
|
||||
- Maroc - Accounting
|
||||
- :doc:`Mexico - Accounting <fiscal_localizations/mexico>`
|
||||
- Mongolia - Accounting
|
||||
- :doc:`Netherlands - Accounting <fiscal_localizations/netherlands>`
|
||||
- :doc:`New Zealand - Accounting <fiscal_localizations/new_zealand>`
|
||||
- New Zealand - Accounting
|
||||
- Norway - Accounting
|
||||
- OHADA - Accounting
|
||||
- Pakistan - Accounting
|
||||
@@ -147,10 +146,8 @@ available on Odoo.
|
||||
fiscal_localizations/italy
|
||||
fiscal_localizations/kenya
|
||||
fiscal_localizations/luxembourg
|
||||
fiscal_localizations/malaysia
|
||||
fiscal_localizations/mexico
|
||||
fiscal_localizations/netherlands
|
||||
fiscal_localizations/new_zealand
|
||||
fiscal_localizations/romania
|
||||
fiscal_localizations/peru
|
||||
fiscal_localizations/philippines
|
||||
@@ -162,4 +159,3 @@ available on Odoo.
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
fiscal_localizations/employment_hero
|
||||
|
||||
@@ -41,11 +41,13 @@ localization:
|
||||
- `l10n_ar_edi`
|
||||
- Includes all technical and functional requirements to generate electronic invoices via web
|
||||
service, based on the AFIP regulations.
|
||||
* - :guilabel:`Argentinean eCommerce`
|
||||
* - :ref:`Argentinean eCommerce <argentina/ecommerce-electronic-invoicing>`
|
||||
- `l10n_ar_website_sale`
|
||||
- (optional) Allows the user to see Identification Type and AFIP Responsibility in the
|
||||
eCommerce checkout form in order to create electronic invoices.
|
||||
|
||||
.. _argentina/configure-your-company:
|
||||
|
||||
Configure your company
|
||||
----------------------
|
||||
|
||||
@@ -549,6 +551,8 @@ When creating a :guilabel:`Credit Note` we can have two scenarios:
|
||||
:align: center
|
||||
:alt: FCE: Es Cancelación?
|
||||
|
||||
.. _argentina/invoice-printed-report:
|
||||
|
||||
Invoice printed report
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -872,6 +876,145 @@ The menu also displays critical information related to these operations, such as
|
||||
- The :guilabel:`Journal` in which the check is currently registered
|
||||
- The **partner** associated with the operation (either customer or vendor).
|
||||
|
||||
.. _argentina/ecommerce-electronic-invoicing:
|
||||
|
||||
Ecommerce electronic invoicing
|
||||
------------------------------
|
||||
|
||||
|
||||
:ref:`Install <general/install>` the *Argentinian eCommerce* (`l10n_ar_website_sale`) module to
|
||||
enable the following features and configurations:
|
||||
|
||||
- Clients being able to create online accounts for eCommerce purposes.
|
||||
- Support for required fiscal fields in the eCommerce application.
|
||||
- Receive payments for sale orders online.
|
||||
- Generate electronic documents from the eCommerce application.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Once all of the configurations are made for the Argentinian :ref:`electronic invoice
|
||||
<argentina/configure-your-company>` flow, it is also necessary to complete certain configurations to
|
||||
integrate the eCommerce flow.
|
||||
|
||||
Client account registration
|
||||
***************************
|
||||
|
||||
To configure your website for client accounts, follow the instructions in the :doc:`checkout
|
||||
<../../websites/ecommerce/checkout_payment_shipping/checkout>` documentation.
|
||||
|
||||
Automatic invoice
|
||||
*****************
|
||||
|
||||
Configure your website to generate electronic documents in the sales process by navigating to
|
||||
:menuselection:`Website --> Configuration --> Settings` and activating the :guilabel:`Automatic
|
||||
Invoice` feature in the :guilabel:`Invoicing` section to automatically generate the required
|
||||
electronic documents when the online payment is confirmed.
|
||||
|
||||
.. image:: argentina/l10nar-automatic-invoicing-ecommerce.png
|
||||
:align: center
|
||||
:alt: Feature activated to invoice automatically.
|
||||
|
||||
Since an online payment needs to be confirmed for the :guilabel:`Automatic Invoice` feature to
|
||||
generate the document, a :doc:`payment provider <../payment_providers>` **must** be configured for
|
||||
the related website.
|
||||
|
||||
Products
|
||||
********
|
||||
|
||||
To allow your products to be invoiced when an online payment is confirmed, navigate to the desired
|
||||
product from :menuselection:`Website --> eCommerce --> Products`. In the :guilabel:`General
|
||||
Information` tab, set the :guilabel:`Invoicing Policy` to :guilabel:`Ordered quantities` and define
|
||||
the desired :guilabel:`Customer Taxes`.
|
||||
|
||||
Invoicing flow for eCommerce
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Once the configurations mentioned above are all set, clients can complete the following required
|
||||
steps in the *Argentinian eCommerce* flow to input fiscal fields in the checkout process.
|
||||
|
||||
Fiscal fields are available for input in the checkout process once the :guilabel:`Country` field is
|
||||
set as `Argentina`. Inputting the fiscal data enables the purchase to conclude in the corresponding
|
||||
electronic document.
|
||||
|
||||
.. image:: argentina/l10nar-fiscal-fields-ar-ecommerce.png
|
||||
:align: center
|
||||
:alt: Fiscal required fields for electronic invoicing.
|
||||
|
||||
When the client makes a successful purchase and payment, the necessary invoice is generated with
|
||||
the corresponding layout and fiscal stamps stated in the :ref:`Invoice printed report
|
||||
<argentina/invoice-printed-report>`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Client account creation <../../websites/ecommerce/checkout_payment_shipping/checkout>`
|
||||
|
||||
Liquidity product direct sales
|
||||
------------------------------
|
||||
|
||||
Liquidity product direct sales are used for sales involving third parties. For such
|
||||
sales, the seller and the proprietary company of the goods can each register their corresponding
|
||||
sales and purchases.
|
||||
|
||||
.. note::
|
||||
:ref:`Install <general/install>` the *Argentinian Electronic Invoicing* module (`l10n_ar_edi`) to
|
||||
use this feature.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Purchase journal
|
||||
****************
|
||||
|
||||
A purchase journal is needed to generate an electronic vendor bill with a document type *Liquidity
|
||||
Product*. This journal needs to be synchronized with the AFIP as it will be used to generate the
|
||||
liquidity product electronic document.
|
||||
|
||||
To modify the existing purchase journal or create a new one, navigate to :menuselection:`Accounting
|
||||
--> Configuration --> Journals`. Then, select the existing purchase journal or click the
|
||||
:guilabel:`New` button, and fill in the following required information:
|
||||
|
||||
- :guilabel:`Type`: select :guilabel:`Purchase`.
|
||||
- :guilabel:`Use Documents`: check this field to to be able select the electronic document type.
|
||||
- :guilabel:`Is AFIP POS`: check this field to be able to generate electronic documents.
|
||||
- :guilabel:`AFIP POS System`: select :guilabel:`Electronic Invoice - Web Service` from the
|
||||
drop-down menu in order to send the electronic document to AFIP via web service.
|
||||
- :guilabel:`AFIP POS Number`: is the number configured in the AFIP to identify the operations
|
||||
related to this AFIP POS.
|
||||
- :guilabel:`AFIP POS Address`: is the field related to the commercial address registered for the
|
||||
POS, which is usually the same address as the company. For example, if a company has multiple
|
||||
stores (fiscal locations) then the AFIP will require the company to have one AFIP POS per
|
||||
location. This location will be printed in the invoice report.
|
||||
|
||||
.. image:: argentina/l10n-ar-purchase-journal.png
|
||||
:align: center
|
||||
:alt: l10n_ar Purchase Journal Configuration.
|
||||
|
||||
Sales journal
|
||||
*************
|
||||
|
||||
A sales journal is needed to register the invoice when a product is sold to a third party that will
|
||||
then sell the same product. This journal will not be synced with AFIP as the invoice will not be
|
||||
electronic.
|
||||
|
||||
To modify the existing sales journal or create a new one, navigate to
|
||||
:menuselection:`Accounting --> Configuration --> Journals`. Then, selecting the sales journal or
|
||||
click the :guilabel:`New` button, and fill in the following required information:
|
||||
|
||||
- :guilabel:`Type`: select :guilabel:`Sales`.
|
||||
- :guilabel:`Use Documents`: check this field on the journal to select the electronic document type
|
||||
(in this case the electronic invoice).
|
||||
|
||||
.. image:: argentina/l10n-ar-sales-journal.png
|
||||
:align: center
|
||||
:alt: l10n_ar Sales Journal Configuration.
|
||||
|
||||
Invoicing flow
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Once the configurations are all set, the *Liquidity Product Vendor Bill* will be generated by the
|
||||
company that is selling the product on behalf of another party. For example, a distributor of a
|
||||
specific product.
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
@@ -889,11 +1032,10 @@ VAT reports
|
||||
Sales VAT book
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
In this report, all the sales are recorded, which are taken as the basis for the accounting records
|
||||
to determine the VAT (Tax Debit).
|
||||
|
||||
The :guilabel:`Sales VAT` book report can be exported in a `.zip` file :guilabel:`VAT BOOK (ZIP)`
|
||||
button in the top left, which contains `.txt` files to upload in the AFIP portal.
|
||||
This report records all the sales, which are taken as the basis for the accounting records
|
||||
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
|
||||
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
|
||||
to the AFIP portal.
|
||||
|
||||
.. image:: argentina/sales-vat-book.png
|
||||
:align: center
|
||||
@@ -902,8 +1044,9 @@ button in the top left, which contains `.txt` files to upload in the AFIP portal
|
||||
Purchases VAT book
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :guilabel:`Purchases VAT` book report can be exported in a `.zip` file :guilabel:`VAT BOOK
|
||||
(ZIP)` button in the top left, which contains `.txt` files to upload in the AFIP portal.
|
||||
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
|
||||
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
|
||||
portal.
|
||||
|
||||
.. image:: argentina/purchases-vat-book.png
|
||||
:align: center
|
||||
@@ -912,7 +1055,7 @@ The :guilabel:`Purchases VAT` book report can be exported in a `.zip` file :guil
|
||||
VAT summary
|
||||
~~~~~~~~~~~
|
||||
|
||||
Pivot table designed to check the monthly VAT totals. This report is for internal usage, it is not
|
||||
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
|
||||
sent to the AFIP.
|
||||
|
||||
.. image:: argentina/vat-summary.png
|
||||
@@ -926,7 +1069,7 @@ IIBB - Sales by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay, therefore it is not sent to the AFIP.
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-sales-jurisdiction.png
|
||||
:align: center
|
||||
@@ -936,7 +1079,7 @@ IIBB - Purchases by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay, therefore it is not sent to the AFIP.
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-purchases-jurisdiction.png
|
||||
:align: center
|
||||
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -35,6 +35,9 @@ Configuration
|
||||
- `l10n_account_customer_statements`
|
||||
- Allows the management and sending of monthly customer statements from the partner ledger and
|
||||
the contact form. Also used in New Zealand.
|
||||
* - :guilabel:`Employment Hero Australian Payroll`
|
||||
- `l10n_au_keypay`
|
||||
- Synchronises all pay runs from Employment Hero with Odoo’s journal entries.
|
||||
|
||||
.. _australia/coa:
|
||||
|
||||
@@ -858,12 +861,70 @@ from the batch.
|
||||
|
||||
.. _australia/employment-hero:
|
||||
|
||||
Employment Hero payroll
|
||||
=======================
|
||||
Employment Hero Australian Payroll
|
||||
==================================
|
||||
|
||||
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
|
||||
use our connector as an alternative payroll solution.
|
||||
If your business is already up and running with `Employment Hero <https://employmenthero.com/>`_,
|
||||
you can use our connector as an alternative payroll solution.
|
||||
|
||||
The Employment Hero module synchronises payslip accounting entries (e.g., expenses, social charges,
|
||||
liabilities, taxes) automatically from Employment Hero to Odoo. Payroll administration is still done
|
||||
in Employment Hero. We only record the **journal entries** in Odoo.
|
||||
|
||||
.. important::
|
||||
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **Australia**,
|
||||
use the following value as :guilabel:`Payroll URL`: `https://api.yourpayroll.com.au/`.
|
||||
KeyPay was rebranded as **Employment Hero** in March 2023.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
#. :ref:`Activate <general/install>` the :guilabel:`Employment Hero Australian Payroll` module
|
||||
(`l10n_au_keypay`).
|
||||
#. Configure the **Employment Hero API** by going to :menuselection:`Accounting --> Configuration
|
||||
--> Settings`. More fields become visible after clicking on :guilabel:`Enable Employment Hero
|
||||
Integration`.
|
||||
|
||||
.. image:: australia/employment-hero-integration.png
|
||||
:alt: Enabling Employment Hero Integration in Odoo Accounting displays new fields in the
|
||||
settings
|
||||
|
||||
- You can find the API Key in the :guilabel:`My Account` section of the Employment Hero platform.
|
||||
|
||||
.. image:: australia/employment-hero-myaccount.png
|
||||
:alt: "Account Details" section on the Employment Hero dashboard
|
||||
|
||||
- The **Payroll URL** is pre-filled with `https://keypay.yourpayroll.com.au`.
|
||||
|
||||
.. warning::
|
||||
Do not change the **pre-filled Payroll URL**
|
||||
|
||||
- You can find the **Business ID** in the Employment Hero URL. (i.e., `189241`)
|
||||
|
||||
.. image:: australia/employment-hero-business-id.png
|
||||
:alt: The Employment Hero "Business ID" number is in the URL
|
||||
|
||||
- You can choose any Odoo journal to post the payslip entries.
|
||||
|
||||
How does the API work?
|
||||
----------------------
|
||||
|
||||
The API syncs the journal entries from Employment Hero to Odoo and leaves them in draft mode. The
|
||||
reference includes the Employment Hero payslip entry ID in brackets for the user to easily retrieve
|
||||
the same record in Employment Hero and Odoo.
|
||||
|
||||
.. image:: australia/employment-hero-journal-entry.png
|
||||
:alt: Example of a Employment Hero Journal Entry in Odoo Accounting (Australia)
|
||||
|
||||
By default, the synchronisation happens once per week. You can fetch the records manually by going
|
||||
to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Enable
|
||||
Employment Hero Integration` option, click on :guilabel:`Fetch Payruns Manually`.
|
||||
|
||||
Employment Hero payslip entries also work based on double-entry bookkeeping.
|
||||
|
||||
The accounts used by Employment Hero are defined in the section :guilabel:`Payroll settings`.
|
||||
|
||||
.. image:: australia/employment-hero-chart-of-accounts.png
|
||||
:alt: Chart of Accounts menu in Employment Hero
|
||||
|
||||
For the API to work, you need to create the same accounts as the default accounts of your Employment
|
||||
Hero business (**same name and same code**) in Odoo. You also need to choose the correct account
|
||||
types in Odoo to generate accurate financial reports.
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
@@ -216,14 +216,14 @@ CODA
|
||||
----
|
||||
|
||||
**CODA** is an electronic XML format used to import Belgian bank statements. You can download CODA
|
||||
files from your bank and import them directly into Odoo by clicking :guilabel:`Import Statement`
|
||||
from your :guilabel:`Bank` journal on your dashboard.
|
||||
files from your bank and import them directly into Odoo by clicking :guilabel:`Import file` from
|
||||
your :guilabel:`Bank` journal on your dashboard.
|
||||
|
||||
.. image:: belgium/coda-import.png
|
||||
:alt: Import CODA files
|
||||
|
||||
.. seealso::
|
||||
:ref:`Import bank statements files <transactions/import>`
|
||||
:ref:`Import bank files <transactions/import>`
|
||||
|
||||
.. _belgium/soda:
|
||||
|
||||
@@ -249,7 +249,8 @@ information and statements. Odoo provides a way to import such statements automa
|
||||
|
||||
.. note::
|
||||
As an accounting firm, you must manage your clients on separate databases and configure them
|
||||
individually to avoid mixing up their data.
|
||||
individually to avoid mixing up their data. The connection must be made by the accounting firm
|
||||
with valid CodaBox Connect credentials.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
@@ -263,9 +264,8 @@ You must first :ref:`install <general/install>` :guilabel:`CodaBox` and
|
||||
|
||||
.. important::
|
||||
Make sure the company settings are correctly configured, i.e., the country is set to
|
||||
:guilabel:`Belgium`, the :guilabel:`Tax ID` and :guilabel:`Accounting Firm` fields are filled,
|
||||
as well as the :guilabel:`Tax ID` of the accounting firm (if not filled, the :guilabel:`Tax ID`
|
||||
of the company is used).
|
||||
:guilabel:`Belgium`, the :guilabel:`Tax ID` and :guilabel:`Accounting Firm` fields are filled, as
|
||||
well as the :guilabel:`Tax ID` of the :guilabel:`Accounting Firm`.
|
||||
|
||||
Configure the journals
|
||||
**********************
|
||||
@@ -282,6 +282,10 @@ Configure the journals
|
||||
:align: center
|
||||
:alt: Configuration of a CODA journal.
|
||||
|
||||
.. tip::
|
||||
When working with bank transactions that use different currencies, it is recommended to
|
||||
create multiple journals with the same bank account but different currencies.
|
||||
|
||||
.. tab:: For SODA files
|
||||
|
||||
#. Create a new miscellaneous journal.
|
||||
|
||||
@@ -745,6 +745,55 @@ If you claim a vendor bill, the status changes from :guilabel:`Draft` to :guilab
|
||||
automatically. Considering this as best practice, all the claimed documents should be canceled as
|
||||
they won't be valid for your accounting records.
|
||||
|
||||
Electronic purchase invoice
|
||||
---------------------------
|
||||
|
||||
The *electronic purchase invoice* is a feature included in the `l10n_cl_edi` module.
|
||||
|
||||
Once all configurations have been made for :ref:`electronic invoices <chile/electronic-invoice>`
|
||||
(e.g., uploading a valid company certificate, setting up master data, etc.), the electronic
|
||||
purchase invoices need their own :abbr:`CAFs (Folio Authorization Code)`. Please refer to the
|
||||
:ref:`CAF documentation <chile/caf-documentation>` to check the details on how to acquire the
|
||||
:abbr:`CAFs (Folio Authorization Code)` for electronic purchase invoices.
|
||||
|
||||
Electronic purchase invoices are useful when vendors are not obligated to expedite an electronic
|
||||
vendor bill for your purchase. Still, your obligations require a document to be sent to the
|
||||
:abbr:`SII (Servicio de Impuestos Internos)` as proof of purchase.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To generate an electronic purchase invoice from a vendor bill, the bill must be created in a
|
||||
purchase journal with the *Use Documents* feature enabled. It is possible to modify an existing
|
||||
purchase journal or create a new one in the following process.
|
||||
|
||||
To modify the existing purchase journal, or create a new purchase journal, navigate to
|
||||
:menuselection:`Accounting --> Configuration --> Journals`. Then, click the :guilabel:`New` button,
|
||||
and fill in the following required information:
|
||||
|
||||
- :guilabel:`Type`: select :guilabel:`Purchase` from the drop-down menu for vendor bill journals.
|
||||
- :guilabel:`Use Documents`: check this field so the journal can generate electronic documents (in
|
||||
this case the electronic purchase invoice).
|
||||
|
||||
Generate an electronic purchase invoice
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To generate this type of document, it is necessary to create a vendor bill in Odoo. To do so,
|
||||
navigate to :menuselection:`Accounting --> Vendors --> Bills`, and click the :guilabel:`New` button.
|
||||
|
||||
When all of the electronic purchase invoice information is filled, select the option :guilabel:`(46)
|
||||
Electronic Purchase Invoice` in the :guilabel:`Document Type` field:
|
||||
|
||||
After the vendor bill is posted:
|
||||
|
||||
- The :abbr:`DTE (Documentos Tributarios Electrónicos)` file (Electronic Tax Document) is
|
||||
automatically created and added to the chatter.
|
||||
- The :guilabel:`DTE SII Status` is set as :guilabel:`Pending to be sent`.
|
||||
|
||||
Odoo automatically updates the *DTE Status* every night using a scheduled action. To get a response
|
||||
from the :abbr:`SII (Servicio de Impuestos Internos)` immediately, click the :guilabel:`Send now to
|
||||
SII` button.
|
||||
|
||||
Delivery guide
|
||||
--------------
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@ localization:
|
||||
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
|
||||
installs the base module :guilabel:`Ecuadorian - Accounting`.
|
||||
|
||||
.. _l10n_ec/configure-your-company:
|
||||
|
||||
Configure your company
|
||||
----------------------
|
||||
|
||||
@@ -586,3 +588,59 @@ includes the tax code within the parenthesis in order to report it to the SRI.
|
||||
.. image:: ecuador/104-form.png
|
||||
:align: center
|
||||
:alt: Report 104 form for Ecuador.
|
||||
|
||||
ATS report
|
||||
----------
|
||||
|
||||
:ref:`Install <general/install>` the *ATS Report* (`l10n_ec_reports_ats`) module to enable
|
||||
downloading the ATS report in XML format.
|
||||
|
||||
.. note::
|
||||
The Ecuadorian *ATS Report* module is dependent on the previous installation of the *Accounting*
|
||||
app and the *Ecuadorian EDI module*.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To issue electronic documents, ensure your company is configured as explained in the
|
||||
:ref:`electronic invoice <l10n_ec/configure-your-company>` section.
|
||||
|
||||
In the :abbr:`ATS (Anexo Transaccional Simplificado)`, every document generated in Odoo (invoices,
|
||||
vendor bills, sales and purchases withholdings, credit notes, and debit notes) will be included.
|
||||
|
||||
Vendor bills
|
||||
************
|
||||
|
||||
When generating a vendor bill, it is necessary to register the authorization number from the
|
||||
invoice that the vendor generated for the purchase. To do so, go to :menuselection:`Accounting
|
||||
--> Vendors --> Bills` and select the bill. Then, enter the number from the vendor's invoice in the
|
||||
:guilabel:`Authorization Number` field.
|
||||
|
||||
Credit and debit notes
|
||||
**********************
|
||||
|
||||
When generating a credit note or debit note manually or through importation, it is necessary to link
|
||||
this note to the sales invoice that is being modified by it.
|
||||
|
||||
.. note::
|
||||
Remember to add all required information to the documents before downloading the :abbr:`ATS
|
||||
(Anexo Transaccional Simplificado)` file. For example, add the *Authorization Number* and the
|
||||
*SRI Payment Method* on documents, when needed.
|
||||
|
||||
XML generation
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
To generate the :abbr:`ATS (Anexo Transaccional Simplificado)` report, go to
|
||||
:menuselection:`Accounting --> Reports --> Tax Report` and choose a time period for the desired
|
||||
:abbr:`ATS (Anexo Transaccional Simplificado)` report, then click :guilabel:`ATS`.
|
||||
|
||||
The downloaded XML file is ready to be uploaded to *DIMM Formularios*.
|
||||
|
||||
.. image:: ecuador/ats-report.png
|
||||
:align: center
|
||||
:alt: ATS report download for Ecuador in Odoo Accounting.
|
||||
|
||||
.. note::
|
||||
When downloading the :abbr:`ATS (Anexo Transaccional Simplificado)` report, Odoo generates a
|
||||
warning pop-up alerting the user if a document(s) has missing or incorrect data. Nevertheless,
|
||||
the user can still download the XML file.
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -1,73 +0,0 @@
|
||||
=======================
|
||||
Employment Hero Payroll
|
||||
=======================
|
||||
|
||||
The `Employment Hero <https://employmenthero.com/>`_ module synchronises payslip accounting entries
|
||||
(e.g., expenses, social charges, liabilities, taxes) automatically from Employment Hero to Odoo.
|
||||
Payroll administration is still done in Employment Hero. We only record the **journal entries** in
|
||||
Odoo.
|
||||
|
||||
.. important::
|
||||
KeyPay was rebranded as **Employment Hero** in March 2023.
|
||||
|
||||
.. _employment_hero/configuration:
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
#. :ref:`Activate <general/install>` the :guilabel:`Employment Hero Payroll` module
|
||||
(`l10n_employment_hero`).
|
||||
#. Configure the **Employment Hero API** by going to :menuselection:`Accounting --> Configuration
|
||||
--> Settings`. More fields become visible after clicking on :guilabel:`Enable Employment Hero
|
||||
Integration`.
|
||||
|
||||
.. image:: employment_hero/employment-hero-integration.png
|
||||
:alt: Enabling Employment Hero Integration in Odoo Accounting displays new fields in the
|
||||
settings
|
||||
|
||||
- You can find the API Key in the :guilabel:`My Account` section of the Employment Hero platform.
|
||||
|
||||
.. image:: employment_hero/employment-hero-myaccount.png
|
||||
:alt: "Account Details" section on the Employment Hero dashboard
|
||||
|
||||
- The **Payroll URL** is left empty by default to avoid any confusion. Please fill it according
|
||||
to the documentation specific to your localization.
|
||||
|
||||
.. note::
|
||||
Employment hero is available for :ref:`Australia <australia/employment-hero>`,
|
||||
:ref:`Malaysia <malaysia/employment-hero>`,
|
||||
:ref:`New Zealand <new-zealand/employment-hero>`,
|
||||
:ref:`Singapore <singapore/employment-hero>`,
|
||||
and the :ref:`United Kingdom <united-kingdom/employment-hero>`.
|
||||
|
||||
- You can find the **Business ID** in the Employment Hero URL. (i.e., `189241`)
|
||||
|
||||
.. image:: employment_hero/employment-hero-business-id.png
|
||||
:alt: The Employment Hero "Business ID" number is in the URL
|
||||
|
||||
- You can choose any Odoo journal to post the payslip entries.
|
||||
|
||||
How does the API work?
|
||||
----------------------
|
||||
|
||||
The API syncs the journal entries from Employment Hero to Odoo and leaves them in draft mode. The
|
||||
reference includes the Employment Hero payslip entry ID in brackets for the user to easily retrieve
|
||||
the same record in Employment Hero and Odoo.
|
||||
|
||||
.. image:: employment_hero/employment-hero-journal-entry.png
|
||||
:alt: Example of a Employment Hero Journal Entry in Odoo Accounting (Australia)
|
||||
|
||||
By default, the synchronisation happens once per week. You can fetch the records manually by going
|
||||
to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Enable
|
||||
Employment Hero Integration` option, click on :guilabel:`Fetch Payruns Manually`.
|
||||
|
||||
Employment Hero payslip entries also work based on double-entry bookkeeping.
|
||||
|
||||
The accounts used by Employment Hero are defined in the section :guilabel:`Payroll settings`.
|
||||
|
||||
.. image:: employment_hero/employment-hero-chart-of-accounts.png
|
||||
:alt: Chart of Accounts menu in Employment Hero
|
||||
|
||||
For the API to work, you need to create the same accounts as the default accounts of your Employment
|
||||
Hero business (**same name and same code**) in Odoo. You also need to choose the correct account
|
||||
types in Odoo to generate accurate financial reports.
|
||||
|
Before Width: | Height: | Size: 8.8 KiB |
@@ -22,10 +22,10 @@ localization:
|
||||
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`
|
||||
* - Italy - E-invoicing
|
||||
- `l10n_it_edi`
|
||||
- e-invoice implementation
|
||||
* - Italy - E-invoicing
|
||||
- E-invoice implementation
|
||||
* - Italy - E-invoicing (Withholding)
|
||||
- `l10n_it_edi_withholding`
|
||||
- e-invoice withholding
|
||||
- E-invoice withholding
|
||||
* - Italy - Accounting Reports
|
||||
- `l10n_it_reports`
|
||||
- Country-specific reports
|
||||
@@ -33,10 +33,6 @@ localization:
|
||||
- `l10n_it_stock_ddt`
|
||||
- Transport documents - Documento di Trasporto (DDT)
|
||||
|
||||
.. image:: italy/italy-modules.png
|
||||
:align: center
|
||||
:alt: Italian localization modules
|
||||
|
||||
Company information
|
||||
-------------------
|
||||
|
||||
@@ -49,70 +45,149 @@ section, click :guilabel:`Update info`. From here, fill out the fields:
|
||||
- :guilabel:`Codice Fiscale`: the fiscal code of the company;
|
||||
- :guilabel:`Tax System`: the tax system under which the company falls;
|
||||
|
||||
.. image:: italy/italy-company.png
|
||||
:align: center
|
||||
:alt: Company information to provide
|
||||
.. image:: italy/company.png
|
||||
:alt: Company information to be provided
|
||||
|
||||
Taxes configuration
|
||||
-------------------
|
||||
|
||||
Many of the e-invoicing features are implemented using Odoo's tax system. As such, taxes must be
|
||||
properly configured to generate invoices correctly and handle other billing use cases.
|
||||
|
||||
The **Italian** localization contains predefined **examples** of taxes for various purposes.
|
||||
|
||||
.. _italy/tax-exemption:
|
||||
|
||||
Tax exemption
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The use of sale taxes that amount to **zero percent** (0%) is required by Italian authorities to
|
||||
keep track of the exact :guilabel:`Tax Exemption Kind (Natura)` and :guilabel:`Law Reference` that
|
||||
justify the exemption operated on an invoice line.
|
||||
|
||||
.. example::
|
||||
The export tax in the EU can be used as reference (`0% EU`, invoice label `00eu`). It can be
|
||||
found under :menuselection:`Accounting --> Configuration --> Taxes`. Exports are exempt from VAT,
|
||||
and therefore, they require :guilabel:`Exoneration` kind and :guilabel:`Law Reference` filled in.
|
||||
|
||||
.. image:: italy/tax-exemption.png
|
||||
:alt: Tax Exemption Settings
|
||||
|
||||
.. seealso::
|
||||
There are many :guilabel:`Tax Exemption Kind (Natura)` and :guilabel:`Law Reference` codes. Make
|
||||
sure you check the latest version available to get the latest information on:
|
||||
|
||||
- `Italian authorities documentation <https://www.agenziaentrate.gov.it/portale/web/guest/aree-tematiche/fatturazione-elettronica>`_
|
||||
- `Official guide on Tax exemption <https://www.agenziaentrate.gov.it/portale/documents/20143/451259/Guida_compilazione-FE-Esterometro-V_1.9_2024-03-05.pdf/67fe4c2d-1174-e8de-f1ee-cea77b7f5203>`_
|
||||
|
||||
.. note::
|
||||
If you need to use a different kind of exoneration, go to :menuselection:`Accounting -->
|
||||
Configuration --> Taxes`, select a similar tax, then click on the cog icon and select
|
||||
:guilabel:`Duplicate`. In the :guilabel:`Advanced Options` tab, add the :guilabel:`Exoneration`
|
||||
and :guilabel:`Law Reference`. To confirm click on :guilabel:`Save`.
|
||||
|
||||
.. tip::
|
||||
**Rename** your taxes in the :guilabel:`Name` field according to their :guilabel:`Exoneration` to
|
||||
differentiate them easily.
|
||||
|
||||
.. _italy/reverse-charge:
|
||||
|
||||
Reverse charge
|
||||
==============
|
||||
|
||||
The **reverse charge** mechanism is a VAT rule that shifts the liability to pay VAT from the
|
||||
supplier to the customer. The customers pay the VAT *themselves* to the :abbr:`AdE (Agenzia delle
|
||||
Entrate)` instead. There are different types:
|
||||
|
||||
- | :guilabel:`Internal Reverse Charge` (for domestic sales)
|
||||
| The VAT responsibility is shifted to the buyer for certain categories of products and services.
|
||||
- | :guilabel:`External Reverse Charge` (for intra-EU sales)
|
||||
| VAT is due in the country of the delivery or in the country where the service is performed. When
|
||||
the buyer is itself an Italian business, then the EU offers a mechanism that allows the seller
|
||||
to transfer his responsibility to the buyer.
|
||||
|
||||
Invoices
|
||||
--------
|
||||
|
||||
**Reverse-charged** customer invoices show no VAT amount, but the :abbr:`AdE (Agenzia delle
|
||||
Entrate)` requires the seller to specify the :guilabel:`Tax Exemption` reason and the :guilabel:`Law
|
||||
Reference` that enable the reverse-charge mechanism. Odoo provides a set of special 0% taxes that
|
||||
can be assigned to each reverse-charged invoice lines, representing the most commonly used
|
||||
configurations.
|
||||
|
||||
Vendor bills
|
||||
------------
|
||||
|
||||
Italian companies subjected to Reverse Charge must send the information in the bill received to the
|
||||
:abbr:`AdE (Agenzia delle Entrate)`.
|
||||
|
||||
.. note::
|
||||
Self-reported VAT XML files must be issued and sent to the :abbr:`AdE (Agenzia Delle Entrate)`
|
||||
for reverse charged bills.
|
||||
|
||||
When creating a vendor bill, **reverse charge** taxes are available to be added in the
|
||||
:guilabel:`Taxes` field. You can check which taxes are available by going to
|
||||
:menuselection:`Accounting --> Configuration --> Taxes`, you can see that the 10% Goods and 22%
|
||||
Services taxes are activated, among others. Due to the automated configuration of the Italian fiscal
|
||||
position, these are automatically activated in the tax list.
|
||||
|
||||
.. _italy/grids:
|
||||
|
||||
Tax grids
|
||||
---------
|
||||
|
||||
The Italian localization has a specific :ref:`tax grid <tax-returns/tax-grids>` section for
|
||||
**reverse charge** taxes. These tax grids are identifiable by the :ref:`VJ <italy/grids>` tag, and
|
||||
can be found by going to :menuselection:`Accounting --> Reporting --> Audit Reports: Tax Report`.
|
||||
|
||||
.. image:: italy/grids.png
|
||||
:alt: Reverse charge tax grid from the VJ section of the Tax Declaration
|
||||
|
||||
.. _italy/e-invoicing:
|
||||
|
||||
E-invoicing
|
||||
-----------
|
||||
===========
|
||||
|
||||
The :abbr:`SdI (Sistema di Interscambio)` is the electronic invoicing system used in Italy. It
|
||||
enables to send and receive electronic invoices to and from customers. The documents must be in XML
|
||||
format and formally validated by the system before being delivered.
|
||||
The :abbr:`SdI (Sistema di Interscambio)` is the :doc:`electronic invoicing
|
||||
<../accounting/customer_invoices/electronic_invoicing>` system used in Italy. It enables the sending
|
||||
and receiving of electronic invoices to and from customers. The documents must be in an XML
|
||||
:abbr:`EDI (Electronic Data Interchange)` format called **FatturaPA** and formally validated by the
|
||||
system before being delivered.
|
||||
|
||||
To be able to receive invoices and notifications, the :abbr:`SdI (Sistema di Interscambio)` service
|
||||
must be notified that the user's files are to be sent to **Odoo** and processed on their behalf. To
|
||||
so, you must set up Odoo's :guilabel:`Codice Destinatario` on the **Agenzia Delle Entrate**
|
||||
portal.
|
||||
must be notified that the user's files need to be sent to Odoo and processed on their behalf. To do
|
||||
so, you must set up Odoo's :guilabel:`Destination Code` on the :abbr:`AdE (Agenzia Delle
|
||||
Entrate)` portal.
|
||||
|
||||
#. Go to https://ivaservizi.agenziaentrate.gov.it/portale/ and authenticate;
|
||||
#. Go to `Italian authorities portal <https://ivaservizi.agenziaentrate.gov.it/portale>`_ and
|
||||
authenticate;
|
||||
#. Go to section :menuselection:`Fatture e Corrispettivi`;
|
||||
#. Set the user as Legal Party for the VAT number you wish to configure the electronic address;
|
||||
#. In :menuselection:`Servizi Disponibili --> Fatturazione Elettronica --> Registrazione
|
||||
dell’indirizzo telematico dove ricevere tutte le fatture elettroniche`, insert Odoo's
|
||||
:guilabel:`Codice Destinatario` `K95IV18`, and confirm.
|
||||
:guilabel:`Destination Code` `K95IV18`, and confirm.
|
||||
|
||||
Electronic Data Interchange (EDI)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Odoo uses the **FatturaPA** :abbr:`EDI (Electronic Data Interchange)` format for the Italian
|
||||
localization and is enabled on the default journals when installed. When the **file processing
|
||||
authorization** has been set, all **invoices** and **bills** are automatically sent.
|
||||
|
||||
.. note::
|
||||
You can :ref:`enable electronic invoicing for other sales and purchase journals
|
||||
<e-invoicing/configuration>` than the default ones.
|
||||
|
||||
You can check the current status of an invoice by the :guilabel:`Electronic invoicing` field. The
|
||||
XML file can be found in the **chatter** of the invoice.
|
||||
|
||||
.. image:: italy/italy-test.png
|
||||
:align: center
|
||||
:alt: Electronic invoicing status (waiting for confirmation)
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/customer_invoices/electronic_invoicing`
|
||||
|
||||
File processing authorization (Odoo)
|
||||
------------------------------------
|
||||
EDI Mode and authorization
|
||||
--------------------------
|
||||
|
||||
Since the files are transmitted through Odoo's server before being sent to the :abbr:`SdI (Sistema
|
||||
di Interscambio)` or received by your database, you need to authorize Odoo to process your files
|
||||
from your database. To do so, go to :menuselection:`Accounting --> Configuration --> Settings -->
|
||||
Electronic Document Invoicing`.
|
||||
|
||||
There are **three** modes available:
|
||||
There are three modes available:
|
||||
|
||||
:guilabel:`Demo`
|
||||
This mode simulates an environment in which invoices are sent to the government. In this mode,
|
||||
invoices need to be *manually* downloaded as XML files and uploaded to the **Agenzia delle
|
||||
Entrate**'s website.
|
||||
:guilabel:`Test (experimental)`
|
||||
This mode sends invoices to a non-production (i.e., test) service made available by the **Agenzia
|
||||
delle Entrate**. Saving this change directs all companies on the database to use this
|
||||
configuration.
|
||||
:guilabel:`Official`
|
||||
This is a production mode that sends your invoices directly to the **Agenzia delle Entrate**.
|
||||
- | :guilabel:`Demo`
|
||||
| This mode simulates an environment in which invoices are sent to the government. In this mode,
|
||||
invoices need to be *manually* downloaded as XML files and uploaded to the :abbr:`AdE
|
||||
(Agenzia delle Entrate)`'s website.
|
||||
- | :guilabel:`Test (experimental)`
|
||||
| This mode sends invoices to a non-production (i.e., test) service made available by the
|
||||
:abbr:`AdE (Agenzia delle Entrate)`. Saving this change directs all companies on the database to
|
||||
use this configuration.
|
||||
- | :guilabel:`Official`
|
||||
| This is a production mode that sends your invoices directly to the :abbr:`AdE (Agenzia delle
|
||||
Entrate)`.
|
||||
|
||||
Once a mode is selected, you need to accept the **terms and conditions** by ticking :guilabel:`Allow
|
||||
Odoo to process invoices`, and then :guilabel:`Save`. You can now record your transactions in Odoo
|
||||
@@ -120,340 +195,436 @@ Accounting.
|
||||
|
||||
.. warning::
|
||||
Selecting either :guilabel:`Test (experimental)` or :guilabel:`Official` is **irreversible**.
|
||||
Once in :guilabel:`Official` mode, it is not possible to select :guilabel:`Test (experimental)`
|
||||
or :guilabel:`Demo`, and same for :guilabel:`Test (experimental)`. We recommend creating a
|
||||
separate database for testing purposes only.
|
||||
For example, once in :guilabel:`Official` mode, it is not possible to select :guilabel:`Test
|
||||
(experimental)` or :guilabel:`Demo`. We recommend creating a **separate database** for testing
|
||||
purposes only.
|
||||
|
||||
.. note::
|
||||
When in :guilabel:`Test (Experimental)` mode, all invoices sent *must* have a partner using one
|
||||
of the following fake :guilabel:`Codice Destinatario` given by the **Agenzia Delle Entrate**:
|
||||
`0803HR0` - `N8MIMM9` - `X9XX79Z`. Any real production :guilabel:`Codice Destinario` of your
|
||||
customers will not be recognized as valid by the test service.
|
||||
of the following fake :guilabel:`Destination Code` given by the :abbr:`AdE (Agenzia Delle
|
||||
Entrate)`: `0803HR0` - `N8MIMM9` - `X9XX79Z`. Any real production :guilabel:`Codice Destinario`
|
||||
of your customers will not be recognized as valid by the test service.
|
||||
|
||||
.. image:: italy/italy-edi.png
|
||||
:align: center
|
||||
:alt: Italy's electronic document invoicing options
|
||||
.. image:: italy/edi.png
|
||||
:alt: Electronic document invoicing settings
|
||||
|
||||
Taxes configuration
|
||||
===================
|
||||
.. _italy/e-invoicing-process:
|
||||
|
||||
Many of the e-invoicing features are implemented using Odoo's tax system. As such, it is very
|
||||
important that taxes are properly configured in order to generate invoices correctly and handle
|
||||
other billing use cases. For example, specific configurations are required for the **reverse
|
||||
charge** type of taxes. In case of a **reverse charge** tax, the seller does *not* charge the
|
||||
customer for the VAT but, instead, the customer pays the VAT *themselves* to their government. There
|
||||
are **two** main types:
|
||||
Process
|
||||
-------
|
||||
|
||||
- :ref:`external reverse charge <italy/external-reverse>`;
|
||||
- :ref:`internal reverse charge <italy/internal-reverse>`.
|
||||
|
||||
.. _italy/external-reverse:
|
||||
|
||||
External reverse charge
|
||||
-----------------------
|
||||
|
||||
Invoices
|
||||
~~~~~~~~
|
||||
|
||||
To make an export invoice, make sure that the invoice lines all use a tax configured for **reverse
|
||||
charge**. The **Italian** localization contains an **example** of a reverse charge tax for export in
|
||||
the EU to be used as reference (`0% EU`, invoice label `00eu`), which can be found under
|
||||
:menuselection:`Accounting --> Configuration --> Taxes`. Exports are exempt from VAT, and therefore
|
||||
**reverse charge** taxes require the :guilabel:`Has exoneration of tax (Italy)` option ticked, with
|
||||
both the :guilabel:`Exoneration` kind and :guilabel:`Law Reference` filled in.
|
||||
|
||||
.. image:: italy/italy-tax.png
|
||||
:align: center
|
||||
:alt: External reverse charge settings
|
||||
The submission of invoices to the :abbr:`SdI (Sistema di Interscambio)` for Italy is an electronic
|
||||
process used for the mandatory transmission of tax documents in XML format between companies and the
|
||||
:abbr:`AdE (Agenzia delle Entrate)` to reduce errors and verify the correctness of operations.
|
||||
|
||||
.. note::
|
||||
If you need to use a different kind of :guilabel:`Exoneration`, click :menuselection:`Action -->
|
||||
Duplicate` within the tax menu to create a copy of an existing similar tax. Then, select another
|
||||
:guilabel:`Exoneration`, and :guilabel:`Save`. Repeat this process as many times as you need
|
||||
different kind of :guilabel:`Exoneration` taxes.
|
||||
You can check the current status of an invoice by the :guilabel:`SdI State` field. The XML file
|
||||
is attached to the invoice.
|
||||
|
||||
.. tip::
|
||||
**Rename** your taxes in the :guilabel:`Name` field according to their :guilabel:`Exoneration` to
|
||||
differentiate them easily.
|
||||
.. image:: italy/edi-process.png
|
||||
:alt: EDI system architecture
|
||||
|
||||
On your invoice, select the corresponding tax you need in the :guilabel:`Taxes` field. You can find
|
||||
the following **additional info** by opening the **XML** file of the issued invoice:
|
||||
XML Documents creation
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- :guilabel:`SdI address (Codice Destinatario)`: must be filled for both **EU** or **non-EU**;
|
||||
- :guilabel:`Country Id`: must contain the country of the foreign seller in the two-letter ISO
|
||||
(Alpha-2) code (ex., `IT` for 'Italy');
|
||||
- :guilabel:`CAP`: must be filled with `00000`;
|
||||
- :guilabel:`Partita Iva` (**VAT number**): must contain the **VAT** number for **EU businesses**
|
||||
and `OO99999999999` (double 'O' **letter**, not 'zero') for **non-EU businesses**. In case of
|
||||
private customers without **VAT** number, use `0000000`;
|
||||
- :guilabel:`Fiscal Code`: for foreign entities without an actual **Codice Fiscale**, any
|
||||
recognizable identifier is valid.
|
||||
Odoo generates the required XML files as attachments to invoices in the `FatturaPA` format required
|
||||
by the :abbr:`AdE (Agenzia delle Entrate)`. Once the invoices needed are selected, go to
|
||||
:guilabel:`Action` and click on :guilabel:`Send and Print`.
|
||||
|
||||
.. note::
|
||||
Odoo does not support sending user-modified XML files.
|
||||
.. image:: italy/edi-menu.png
|
||||
:alt: Send and Print menu
|
||||
|
||||
For **invoices**, multiple configurations are technically identified by a :guilabel:`Tipo Documento`
|
||||
code:
|
||||
When the pop-up window opens there is a selection of actions that can be taken. :guilabel:`Generate
|
||||
XML File` generates the attachments.
|
||||
|
||||
- `TD02` - Down payments;
|
||||
- `TDO7` - Simplified invoice;
|
||||
- `TD08` - Simplified credit note;
|
||||
- `TD09` - Simplified debit note;
|
||||
- `TD24` - Deferred invoice.
|
||||
.. image:: italy/edi-send-and-print.png
|
||||
:alt: Send and Print dialog
|
||||
|
||||
.. tabs::
|
||||
The XML file as well as the PDF once can be found attached to the invoice.
|
||||
|
||||
.. tab:: `TD02`
|
||||
.. image:: italy/edi-attachments.png
|
||||
:alt: EDI Attachments
|
||||
|
||||
Down payments.
|
||||
Submission to SDI
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Down payment** invoices are imported/exported with a different :guilabel:`Tipo Documento`
|
||||
code `TDO2` than regular invoices. Upon import of the invoice, it creates a regular vendor
|
||||
bill.
|
||||
The :guilabel:`Send to Tax Agency` option in the :guilabel:`Send and Print` dialog sends the
|
||||
attachment to the :guilabel:`Proxy Server`, which gathers all requests and then forwards them via a
|
||||
WebServices channel to the :abbr:`SdI (Sistema di Interscambio)`. Check the sending status of the
|
||||
invoice through the :guilabel:`Check Sending` button at the top of the invoice's view.
|
||||
|
||||
Odoo exports moves as `TD02` if the following conditions are met:
|
||||
Processing by SDI
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Is an invoice;
|
||||
- All invoice lines are related to **sales order lines** that have the flag `is_downpayment`
|
||||
set as `True`.
|
||||
The :abbr:`SdI (Sistema di Interscambio)` receives the document and verifies for any errors. At this
|
||||
stage, the invoice is in the :guilabel:`SdI Processing` state, as shown on the invoice. The invoice
|
||||
also gets assigned a :guilabel:`FatturaPA Transaction` number that is shown in the
|
||||
:guilabel:`Electronic Invoicing` tab. The checks may take variable time, ranging from a few seconds
|
||||
up to a day, depending on the queue of invoices sent throughout Italy.
|
||||
|
||||
.. tab:: `TD07`, `TD08`, and `TD09`
|
||||
.. image:: italy/edi-processing.png
|
||||
:alt: Check Sending button and Sdi Processing state
|
||||
|
||||
Simplified invoices, and credit/debit notes.
|
||||
Acceptance
|
||||
~~~~~~~~~~
|
||||
|
||||
Simplified invoices and credit notes can be used to certify **domestic transactions** under
|
||||
**400 EUR** (VAT included). Its status is the same as a regular invoice, but with fewer
|
||||
information requirements.
|
||||
|
||||
For a **simplified** invoice to be established, it must include:
|
||||
|
||||
- :guilabel:`Customer Invoice` reference: **unique** numbering sequence with **no gaps**;
|
||||
- :guilabel:`Invoice Date`: issue **date** of the invoice;
|
||||
- :guilabel:`Company Info`: the **seller**'s full credentials (VAT/TIN number, name, full
|
||||
address) under :menuselection:`General Settings --> Companies (section)`;
|
||||
- :guilabel:`VAT`: the **buyer**'s VAT/TIN number (on their profile card);
|
||||
- :guilabel:`Total`: the total **amount** (VAT included) of the invoice.
|
||||
|
||||
In the :abbr:`EDI (Electronic Data Interchange)`, Odoo exports invoices as simplified if:
|
||||
|
||||
- It is a **domestic** transaction (i.e., the partner is from Italy);
|
||||
- The buyer's data is **insufficient** for a regular invoice;
|
||||
- The **required fields** for a regular invoice (address, ZIP code, city, country) are
|
||||
provided;
|
||||
- The total amount VAT included is **less** than **400 EUR**.
|
||||
|
||||
.. note::
|
||||
The 400 EUR threshold was defined in `the decree of the 10th of May 2019 in the Gazzetta
|
||||
Ufficiale <https://www.gazzettaufficiale.it/eli/id/2019/05/24/19A03271/sg>`_. We advise you
|
||||
to check the current official value.
|
||||
|
||||
.. tab:: `TD24`
|
||||
|
||||
Deferred invoices.
|
||||
|
||||
The **deferred invoice** is an invoice that is **issued at a later time** than the sale of
|
||||
goods or the provision of services. A **deferred invoice** has to be issued at the latest
|
||||
within the **15th day** of the month following the delivery covered by the document.
|
||||
|
||||
It usually is a **summary invoice** containing a list of multiple sales of goods or services,
|
||||
carried out in the month. The business is allowed to **group** the sales into **one invoice**,
|
||||
generally issued at the **end of the month** for accounting purposes. Deferred invoices are
|
||||
default for **wholesaler** having recurrent clients.
|
||||
|
||||
If the goods are transported by a **carrier**, every delivery has an associated **Documento di
|
||||
Transporto (DDT)**, or **Transport Document**. The deferred invoice **must** indicate the
|
||||
details of all the **DDTs** information for better tracing.
|
||||
|
||||
.. note::
|
||||
E-invoicing of deferred invoices requires the `l10n_it_stock_ddt`
|
||||
:ref:`module <italy/modules>`. In this case, a dedicated :guilabel:`Tipo Documento` `TD24`
|
||||
is used in the e-invoice.
|
||||
|
||||
Odoo exports moves as `TD24` if the following conditions are met:
|
||||
|
||||
- Is an invoice;
|
||||
- Is associated to deliveries whose **DDTs** have a **different** date than the issuance date
|
||||
of the invoice.
|
||||
|
||||
Vendor bills
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Italian companies buying goods or services from EU countries (or services from non-EU countries)
|
||||
must send the information contained within the bill received to the **Agenzia delle Entrate**. This
|
||||
allows you to complete tax-related information on your bill, and to send it. The seller must be set
|
||||
as :guilabel:`Cedente/Prestatore`, and the buyer as :guilabel:`Cessionario/Committente`. Contained
|
||||
within the **XML** document for the vendor bill, the vendor's credentials show as
|
||||
:guilabel:`Cedente/Prestatore`, and your company's credentials as
|
||||
:guilabel:`Cessionario/Committente`.
|
||||
|
||||
.. note::
|
||||
Self-billing invoices or VAT invoice integrations must be issued and sent to the tax agency.
|
||||
|
||||
When inputting taxes in a vendor bill, it is possible to select **reverse charge** taxes. These are
|
||||
automatically activated in the Italian fiscal position. By going to :menuselection:`Accounting -->
|
||||
Configuration --> Taxes`, the `10%` and `22%` :guilabel:`Goods` and :guilabel:`Services` tax scopes
|
||||
are activated and preconfigured with the correct tax grids. These are set up automatically to ensure
|
||||
the correct booking of accounting entries and display of the tax report.
|
||||
|
||||
For **vendor bills**, **three** types of configurations are technically identified by a code called
|
||||
:guilabel:`Tipo Documento`:
|
||||
|
||||
- `TD17` - Buying services from **EU** and **non-EU** countries;
|
||||
- `TD18` - Buying **goods** from **EU**;
|
||||
- `TD19` - Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy**
|
||||
in a **VAT deposit**.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: `TD17`
|
||||
|
||||
Buying **services** from **EU** and **non-EU** countries:
|
||||
|
||||
The foreign *seller* invoices a service with a **VAT-excluded** price, as it is not
|
||||
taxable in Italy. The VAT is paid by the *buyer* in Italy;
|
||||
|
||||
- Within EU: the *buyer* integrates the invoice received with the **VAT information**
|
||||
due in Italy (i.e., **vendor bill tax integration**);
|
||||
- Non-EU: the *buyer* sends themselves an invoice (i.e., **self-billing**).
|
||||
|
||||
Odoo exports a transaction as `TD17` if the following conditions are met:
|
||||
|
||||
- Is a vendor bill;
|
||||
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Services` as **products**, or a tax with the
|
||||
:guilabel:`Services` as **tax scope**.
|
||||
|
||||
.. tab:: `TD18`
|
||||
|
||||
Buying **goods** from **EU**:
|
||||
|
||||
Invoices issued within the EU follow a **standard format**, therefore only an integration of
|
||||
the existing invoice is required.
|
||||
|
||||
Odoo exports a transaction as `TD18` if the following conditions are met:
|
||||
|
||||
- Is a vendor bill;
|
||||
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Consumable` as **products**, or a tax with the
|
||||
:guilabel:`Goods` as **tax scope**.
|
||||
|
||||
.. tab:: `TD19`
|
||||
|
||||
Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy** in a
|
||||
**VAT deposit**:
|
||||
|
||||
- From EU: the *buyer* integrates the invoice received with the **VAT information** due in
|
||||
Italy (i.e., **vendor bill tax integration**);
|
||||
- Non-EU: the *buyer* sends an invoice to *themselves* (i.e., **self-billing**).
|
||||
|
||||
Odoo exports a move as a `TD19` if the following conditions are met:
|
||||
|
||||
- Is a vendor bill;
|
||||
- At least one tax on the invoice lines targets the tax grid :ref:`VJ3 <italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Consumable` products, or a tax with
|
||||
:guilabel:`Goods` as tax scope.
|
||||
If the document is valid, it is recorded and considered fiscally valid by the :abbr:`AdE (Agenzia
|
||||
delle Entrate)`, which will proceed with archiving in :guilabel:`Substitute Storage (Conservazione
|
||||
Sostitutiva)` if explicitly requested on the Agency's portal.
|
||||
|
||||
.. warning::
|
||||
Odoo does not offer the
|
||||
`Conservazione Sostitutiva <https://www.agid.gov.it/index.php/it/piattaforme/conservazione>`_
|
||||
requirements. Other providers and **Agenzia delle Entrate** supply free and certified storage to
|
||||
meet the requested conditions.
|
||||
Odoo does not offer the `Conservazione Sostitutiva
|
||||
<https://www.agid.gov.it/index.php/it/piattaforme/conservazione>`_ requirements. Other providers
|
||||
and :abbr:`AdE (Agenzia delle Entrate)` supply free and certified storage to meet the
|
||||
specifications requested by law.
|
||||
|
||||
.. _italy/internal-reverse:
|
||||
The :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` attempts to forward the
|
||||
invoice to the customer at the provided address, whether it is a `PEC` email address or a
|
||||
:abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` for their ERP's WebServices
|
||||
channels. A maximum of 6 attempts are made every 12 hours, so even if unsuccessful, this process can
|
||||
take up to three days. The invoice status is :guilabel:`Accepted by SDI, Forwarding to Partner`.
|
||||
|
||||
Internal reverse charge
|
||||
-----------------------
|
||||
Possible Rejection
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. warning::
|
||||
Odoo currently does not support domestic **internal reverse charge** processes.
|
||||
The :abbr:`SdI (Sistema di Interscambio)` may find inaccuracies in the compilation, possibly even
|
||||
formal ones. In this case, the invoice is in the :guilabel:`SDI Rejected` state. The :abbr:`SdI
|
||||
(Sistema di Interscambio)`'s observations are inserted at the top of the Invoice tab. To resolve the
|
||||
issue, it is sufficient to delete the attachments of the invoice, return the invoice to
|
||||
:guilabel:`Draft`, and fix the errors. Once the invoice is ready, it can be resent.
|
||||
|
||||
.. _italy/grids:
|
||||
.. note::
|
||||
To regenerate the XML, both the XML attachment and the PDF report must be deleted, so that they
|
||||
are then regenerated together. This ensures that both always contain the same data.
|
||||
|
||||
'Reverse Charge' tax grids
|
||||
--------------------------
|
||||
.. image:: italy/edi-rejected.png
|
||||
:alt: EDI Rejected State
|
||||
|
||||
The Italian localization has a specific **tax grid** section for **reverse charge** taxes. These
|
||||
tax grids are identifiable by the :ref:`VJ <italy/grids>` tag, and can be found under
|
||||
:menuselection:`Accounting --> Reporting --> Audit Reports: Tax Report`.
|
||||
Forwarding Completed
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. image:: italy/italy-grids.png
|
||||
:align: center
|
||||
:alt: Italian reverse charge tax grids
|
||||
The invoice has been delivered to the customer; however, you can still send a copy to the customer
|
||||
in PDF via email or post. Its status is :guilabel:`Accepted by SDI, Delivered to Partner`.
|
||||
|
||||
San Marino
|
||||
==========
|
||||
If the :abbr:`SdI (Sistema di Interscambio)` cannot contact your customer, they may not be
|
||||
registered on the :abbr:`AdE (Agenzia delle Entrate)` portal. In this case, just make sure to send
|
||||
the invoice in PDF via email or by mail. The invoice is then in the :guilabel:`Accepted by SDI,
|
||||
Partner Delivery Failed` state.
|
||||
|
||||
Tax Integration
|
||||
---------------
|
||||
|
||||
When you receive a vendor bill, either from :abbr:`SdI (Sistema di Interscambio)`, from paper or
|
||||
from an imported XML file, the Tax Agency might request that you send some tax information
|
||||
integration back to the :abbr:`SdI (Sistema di Interscambio)`. It happens when a transaction that
|
||||
was tax exempt becomes taxable for any reason.
|
||||
|
||||
.. example::
|
||||
Here is a non-exhaustive list:
|
||||
|
||||
- | :ref:`italy/reverse-charge`
|
||||
| As a buyer, you have to pay taxes on what you buy and integrate tax information.
|
||||
:guilabel:`Reverse Charge` taxes.
|
||||
- | :ref:`italy/split-payment`
|
||||
| As a :abbr:`PA (Public Administration)` business buyer, you have to pay taxes and integrate
|
||||
tax information. Be sure that you replace the :guilabel:`0% Sale Taxes` on the vendor bill
|
||||
you received with the correct :guilabel:`Split Payment` taxes.
|
||||
- | :guilabel:`Self Consumption`
|
||||
| When, as a business owner, you use an asset that you bought for business for personal reasons
|
||||
instead, you have to pay those taxes you originally deducted as a business cost for it.
|
||||
|
||||
Odoo may detect that your vendor bill can be interpreted as a document of a type that needs tax
|
||||
integration, as detailed in the :ref:`italy/document-types` section.
|
||||
|
||||
.. important::
|
||||
Be sure that you replace the :guilabel:`0% Sale Taxes` on the vendor bill you received with the
|
||||
ones you're supposed to pay to the :abbr:`AdE (Agenzia delle Entrate)`. A button then appears on
|
||||
the top of the single vendor bill form to send them.
|
||||
|
||||
When clicking on the :guilabel:`Send Tax Integration` button, an XML file of the appropriate
|
||||
:guilabel:`Document Type` is generated, attached to the bill, and sent as for invoices.
|
||||
|
||||
.. image:: italy/edi-tax-integration-button.png
|
||||
:alt: EDI Send Tax Integration button
|
||||
|
||||
.. _italy/document-types:
|
||||
|
||||
Document Types
|
||||
--------------
|
||||
|
||||
The :abbr:`SdI (Sistema di Interscambio)` requires businesses to send customer invoices and other
|
||||
documents through the :abbr:`EDI (Electronic Data Interchange)`.
|
||||
|
||||
The following :guilabel:`Document Type` codes all technically identify different business use cases.
|
||||
|
||||
TD01 - Invoices
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
This represents the standard **domestic** scenario for all invoices exchanged through the :abbr:`SdI
|
||||
(Sistema di Interscambio)`. Any invoice that doesn't fall into one of the specific special cases
|
||||
is categorized as a regular invoice, identified by the :guilabel:`Document Type` `TD01`.
|
||||
|
||||
TD02 - Down payments
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Down payment** invoices are imported/exported with a different :guilabel:`Document Type` code
|
||||
`TDO2` than regular invoices. Upon import of the invoice, a regular vendor bill is created.
|
||||
|
||||
Odoo exports transactions as `TD02` if the following conditions are met:
|
||||
|
||||
#. It is an invoice;
|
||||
#. All invoice lines are related to down payment sales order lines.
|
||||
|
||||
TD04 - Credit notes
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is the standard scenario for all **credit notes** issued to **domestic** clients, when we need to
|
||||
formally acknowledge that the seller is reducing or canceling a previously issued invoice, for
|
||||
example, in case of overbilling, incorrect items, or overpayment. Just like invoices, they must be
|
||||
sent to the :abbr:`SdI (Sistema di Interscambio)`, their :guilabel:`Document Type` `TD04`
|
||||
|
||||
TD07, TD08, TD09 - Simplified Invoicing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Simplified invoices (`TD07`), credit notes (`TD08`), and debit notes (`TD09`) can be used to certify
|
||||
domestic transactions under 400 EUR (VAT included). Its status is the same as that of a regular
|
||||
invoice, but with fewer information requirements.
|
||||
|
||||
For a simplified invoice to be established, it must include:
|
||||
|
||||
#. :guilabel:`Customer Invoice` reference: **unique** numbering sequence with **no gaps**;
|
||||
#. :guilabel:`Invoice Date`: issue **date** of the invoice;
|
||||
#. :guilabel:`Company Info`: the **seller**'s full credentials (VAT/TIN number, name, full address)
|
||||
under :menuselection:`General Settings --> Companies (section)`;
|
||||
#. :guilabel:`VAT`: the **buyer**'s VAT/TIN number (on the partner form);
|
||||
#. :guilabel:`Total`: the total **amount** (VAT included) of the invoice.
|
||||
|
||||
In the :abbr:`EDI (Electronic Data Interchange)`, Odoo exports invoices as simplified if:
|
||||
|
||||
#. It is a domestic transaction (i.e., the partner is from Italy);
|
||||
#. Your company's **required fields** (:guilabel:`VAT Number` or :guilabel:`Codice Fiscale`,
|
||||
:guilabel:`Fiscal Regime`, and full **address**) are provided;
|
||||
#. The partner's address is not fully specified (i.e., it misses the City or the ZipCode);
|
||||
#. The total amount of VAT included is **less** than **400 EUR**.
|
||||
|
||||
.. note::
|
||||
The 400 EUR threshold was defined in `the decree of the 10th of May 2019 in the Gazzetta
|
||||
Ufficiale <https://www.gazzettaufficiale.it/eli/id/2019/05/24/19A03271/sg>`_. We advise you to
|
||||
check the current official value.
|
||||
|
||||
TD16 - Internal Reverse Charge
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Internal reverse charge transactions (see :ref:`italy/tax-exemption` and
|
||||
:ref:`italy/reverse-charge`) are exported as `TD16` if the following conditions are met:
|
||||
|
||||
- It is a vendor bill;
|
||||
- It has at least **one tax** on the invoice lines that targets one of these :ref:`tax grids
|
||||
<italy/grids>`: `VJ6`, `VJ7`, `VJ8`, `VJ12`, `VJ13`, `VJ14`, `VJ15`, `VJ16`, `VJ17`
|
||||
|
||||
TD17 - Buying services from abroad
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
When buying **services** from **EU** and **non-EU** countries, the foreign *seller* invoices a
|
||||
service with a **VAT-excluded** price, as it is not taxable in Italy. The VAT is paid by the *buyer*
|
||||
in Italy.
|
||||
|
||||
- Within the EU: the *buyer* integrates the invoice received with the **VAT information** due in
|
||||
Italy (i.e., **vendor bill tax integration**);
|
||||
- Non-EU: the *buyer* sends themselves an invoice (i.e., **self-billing**).
|
||||
|
||||
Odoo exports a transaction as `TD17` if the following conditions are met:
|
||||
|
||||
- It is a vendor bill;
|
||||
- It has at least **one tax** on the invoice lines that targets the tax grid :ref:`VJ3
|
||||
<italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Services` as **products**, or a tax with the
|
||||
:guilabel:`Services` as **tax scope**.
|
||||
|
||||
TD18 - Buying goods from EU
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Invoices issued within the EU follow a **standard format**, therefore only an integration of the
|
||||
existing invoice is required.
|
||||
|
||||
Odoo exports a transaction as `TD18` if the following conditions are met:
|
||||
|
||||
- It is a vendor bill;
|
||||
- The **partner** is from an **EU** country;
|
||||
- It has at least one tax on the invoice lines that targets the tax grid :ref:`VJ9 <italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Consumable` as **products**, or a tax with
|
||||
:guilabel:`Goods` as **tax scope**.
|
||||
|
||||
TD19 - Buying goods from VAT deposit
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy** in a **VAT
|
||||
deposit**.
|
||||
|
||||
- From the EU: the *buyer* integrates the invoice received with the **VAT information** due in
|
||||
Italy (i.e., **vendor bill tax integration**);
|
||||
- Non-EU: the *buyer* sends an invoice to *themselves* (i.e., **self-billing**).
|
||||
|
||||
Odoo exports a transaction as a `TD19` if the following conditions are met:
|
||||
|
||||
- It is a vendor bill;
|
||||
- It has at least one tax on the invoice lines that targets the tax grid :ref:`VJ3 <italy/grids>`;
|
||||
- All invoice lines either have :guilabel:`Consumables` as products, or a tax with
|
||||
:guilabel:`Goods` as **tax scope**.
|
||||
|
||||
TD24 - Deferred invoices
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The **deferred invoice** is an invoice that is **issued at a later time** than the sale of goods or
|
||||
the provision of services. A **deferred invoice** has to be issued at the latest within the **15th
|
||||
day** of the month following the delivery covered by the document.
|
||||
|
||||
It usually is a **summary invoice** containing a list of multiple sales of goods or services carried
|
||||
out in the month. The business is allowed to **group** the sales into **one invoice**, generally
|
||||
issued at the **end of the month** for accounting purposes. Deferred invoices are default for
|
||||
**wholesalers** having recurrent clients.
|
||||
|
||||
If the goods are transported by a **carrier**, every delivery has an associated **Documento di
|
||||
Transporto (DDT)**, or **Transport Document**. The deferred invoice **must** indicate the details of
|
||||
all the **DDTs** information for better tracing.
|
||||
|
||||
.. note::
|
||||
E-invoicing of deferred invoices requires the `l10n_it_stock_ddt` :ref:`module <italy/modules>`.
|
||||
In this case, a dedicated :guilabel:`Document Type` `TD24` is used in the e-invoice.
|
||||
|
||||
Odoo exports transactions as `TD24` if the following conditions are met:
|
||||
|
||||
#. It is an invoice;
|
||||
#. It is associated with deliveries whose **DDTs** have a **different** date than the issue date of
|
||||
the invoice.
|
||||
|
||||
TD28 - San Marino
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Invoices
|
||||
--------
|
||||
********
|
||||
|
||||
San Marino and Italy have special agreements on e-invoicing operations. As such, **invoices** follow
|
||||
the regular **reverse charge** rules. Additional requirements are not enforced by Odoo, however, the
|
||||
user is requested by the **State** to:
|
||||
the regular **reverse charge** rules. You can use the proper :guilabel:`Document Type` depending on
|
||||
the invoice type: `TD01`, `TD04`, `TD05`, `TD24`, `TD25`. Additional requirements are not enforced
|
||||
by Odoo. However, the user is requested by the **State** to:
|
||||
|
||||
- Select a tax with the option :guilabel:`Has exoneration of tax (Italy)` ticked, and the
|
||||
:guilabel:`Exoneration` set to `N3.3`;
|
||||
- Use the generic :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Codice Destinatario` `2R4GT08`.
|
||||
The invoice is then routed by a dedicated office in San Marino to the correct business.
|
||||
- Select a tax with the :guilabel:`Tax Exemption Kind` set to `N3.3`;
|
||||
- Use the generic :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` `2R4GT08`.
|
||||
|
||||
Bills
|
||||
-----
|
||||
The invoice is then routed by a dedicated office in San Marino to the correct business.
|
||||
|
||||
Vendor Bills
|
||||
************
|
||||
|
||||
When a **paper bill** is received from San Marino, any Italian company **must** submit that invoice
|
||||
to the **Agenzia delle Entrate** by indicating the e-invoice's :guilabel:`Tipo Documento` field with
|
||||
the special value `TD28`.
|
||||
to the :abbr:`AdE (Agenzia delle Entrate)` by indicating the e-invoice's :guilabel:`Document Type`
|
||||
field with the special value `TD28`.
|
||||
|
||||
.. tabs::
|
||||
Odoo exports a transaction as `TD28` if the following conditions are met:
|
||||
|
||||
.. tab:: `TD28`
|
||||
#. It is a vendor bill;
|
||||
#. It has at least one tax on the invoice lines that targets the tax grids :ref:`VJ <italy/grids>`;
|
||||
#. The **country** of the partner is **San Marino**.
|
||||
|
||||
Odoo exports a move as `TD28` if the following conditions are met:
|
||||
Public Administration Businesses (B2G)
|
||||
======================================
|
||||
|
||||
- Is a vendor bill;
|
||||
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
|
||||
- The **country** of the partner is **San Marino**.
|
||||
:abbr:`PA (Public Administration)` businesses are subjected to more control than private businesses
|
||||
as they handle public money coming from taxpayers. The :abbr:`EDI (Electronic Data Interchange)`
|
||||
process adds some steps to the :ref:`regular one <italy/e-invoicing-process>`, as :abbr:`PA (Public
|
||||
Administration)` businesses can **accept** or **refuse** invoices.
|
||||
|
||||
Pubblica amministrazione (B2G)
|
||||
==============================
|
||||
.. note::
|
||||
:abbr:`PA (Public Administration)` businesses have a 6-digit long :guilabel:`Destination Code`,
|
||||
also called :abbr:`CUU (Codice Univoco Ufficio)`, that is **mandatory**, **PEC** address cannot
|
||||
be used in this case.
|
||||
|
||||
.. warning::
|
||||
Odoo does **not** send invoices directly to the government as they need to be signed. If we see
|
||||
that the codice destinatario is 6 digits, then it is not sent to the PA automatically, but you
|
||||
can download the XML, sign it with an external program and send it through the portal.
|
||||
|
||||
Digital qualified signature
|
||||
---------------------------
|
||||
|
||||
For invoices and bills intended to the **Pubblica Amministrazione (B2G)**, a **Digital Qualified
|
||||
Signature** is required for all files sent through the :abbr:`SdI (Sistema di Interscambio)`. The
|
||||
**XML** file must be certified using a certificate that is either:
|
||||
|
||||
- a **smart card**;
|
||||
- a **USB token**;
|
||||
- a **Hardware Security Module (HSM)**.
|
||||
.. seealso::
|
||||
`Complete list of businesses that belong to the Public Administration along with their
|
||||
Destination Code <https://www.agenziaentrate.gov.it/portale/web/guest/aree-tematiche/fatturazione-elettronica>`_
|
||||
|
||||
CIG, CUP, DatiOrdineAcquisto
|
||||
----------------------------
|
||||
|
||||
To ensure the effective traceability of payments by public administrations, electronic invoices
|
||||
issued to the public administrations must contain:
|
||||
issued to public administrations must contain:
|
||||
|
||||
- The :abbr:`CIG (Codice Identificativo Gara)`, except in cases of exclusion from traceability
|
||||
obligations provided by law n. 136 of August 13, 2010;
|
||||
- The :abbr:`CUP (Codice Unico di Progetto)`, in case of invoices related to public works.
|
||||
|
||||
If the **XML** file requires it, the **Agenzia Delle Entrate** can *only* proceed payments of
|
||||
electronic invoices when the **XML** file contains a :abbr:`CIG (Codice Identificativo Gara)` and
|
||||
:abbr:`CUP (Codice Unico di Progetto)`. For each electronic invoice, it is **necessary** to indicate
|
||||
the :abbr:`CUU (Codice Univoco Ufficio)`, which represents the unique identifier code that allows
|
||||
the :abbr:`SdI (Sistema di Interscambio)` to correctly deliver the electronic invoice to the
|
||||
recipient office.
|
||||
If the XML file requires it, the :abbr:`AdE (Agenzia Delle Entrate)` can *only* proceed payments of
|
||||
electronic invoices when the XML file contains a :abbr:`CIG (Codice Identificativo Gara)` and
|
||||
:abbr:`CUP (Codice Unico di Progetto)`.
|
||||
|
||||
.. note::
|
||||
- The :abbr:`Codice Unico di Progetto)` and the :abbr:`CIG (Codice Identificativo Gara)` must be
|
||||
included in one of the **2.1.2** (DatiOrdineAcquisto), **2.1.3** (Dati Contratto), **2.1.4**
|
||||
(DatiConvenzione), **2.1.5** (Date Ricezione), or **2.1.6** (Dati Fatture Collegate)
|
||||
information blocks. These correspond to the elements named :guilabel:`CodiceCUP` and
|
||||
:guilabel:`CodiceCIG` of the electronic invoice **XML** file, whose table can be found on the
|
||||
government `website <http://www.fatturapa.gov.it/>`_.
|
||||
- The :abbr:`CUU (Codice Univoco Ufficio)` must be included in the electronic invoice
|
||||
corresponding to the element **1.1.4** (:guilabel:`CodiceDestinario`).
|
||||
The :abbr:`CUP (Codice Unico di Progetto)` and the :abbr:`CIG (Codice Identificativo Gara)` must
|
||||
be included in one of the `DatiOrdineAcquisto`, `DatiContratto`, `DatiConvenzione`,
|
||||
`DateRicezione`, or `DatiFattureCollegate` XML tags.
|
||||
|
||||
These correspond to the elements named :guilabel:`CodiceCUP` and :guilabel:`CodiceCIG` of the
|
||||
electronic invoice XML file, whose table can be found on the government `website
|
||||
<http://www.fatturapa.gov.it/>`_.
|
||||
|
||||
.. _italy/split-payment:
|
||||
|
||||
Split Payment
|
||||
-------------
|
||||
|
||||
The :guilabel:`Split Payment` mechanism behaves much like :ref:`italy/reverse-charge`.
|
||||
|
||||
.. example::
|
||||
When an Italian company bills a :abbr:`PA (Public Administration)` business - for example,
|
||||
cleaning services for a public building - the :abbr:`PA (Public Administration)` business
|
||||
self-reports the VAT to the Tax Agency themselves, and the vendor just has to select the
|
||||
appropriate tax with the right :guilabel:`Tax Exemption` for their invoice lines.
|
||||
|
||||
The specific :guilabel:`Scissione dei Pagamenti` fiscal position is available to deal with partners
|
||||
belonging to the :abbr:`PA (Public Administration)`.
|
||||
|
||||
Process
|
||||
-------
|
||||
|
||||
.. _italy/digital-signature:
|
||||
|
||||
Digital qualified signature
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For invoices and bills intended for the :abbr:`PA (Public Administration)`, a **Digital Qualified
|
||||
Signature** is required for all files sent through the :abbr:`SdI (Sistema di Interscambio)`. The
|
||||
XML file must be certified using a certificate that is either:
|
||||
|
||||
- a **smart card**;
|
||||
- a **USB token**;
|
||||
- an :abbr:`HSM (Hardware Security Module)`.
|
||||
|
||||
.. warning::
|
||||
Odoo **cannot** digitally sign documents for you. When a 6-digit long :guilabel:`Codice
|
||||
Destinatario` is detected, then the :abbr:`EDI (Electronic Data Interchange)` process stops, and
|
||||
the invoice is set on the :guilabel:`Requires user signature` state. You can download the
|
||||
document in XML, sign it with any :guilabel:`Digital Qualified Signature` provider's external
|
||||
program and send it through the :abbr:`AdE (Agenzia Delle Entrate)` portal.
|
||||
|
||||
Acceptance or Refusal
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. warning::
|
||||
As Odoo does not handle sending signed invoices to :abbr:`PA (Public Administration)` businesses,
|
||||
these states cannot be directly triggered by Odoo. When you upload the invoice on the :abbr:`AdE
|
||||
(Agenzia Delle Entrate)` portal, Odoo receives notifications about it, putting the correct
|
||||
:guilabel:`SdI State` on the invoice.
|
||||
|
||||
After receiving the invoice through the :abbr:`SdI (Sistema di Interscambio)`, the :abbr:`PA (Public
|
||||
Administration)` business has 15 days to accept the invoice. If it does, then the process ends here.
|
||||
If the :abbr:`PA (Public Administration)` business refuses the invoice, it is still considered valid
|
||||
once it is accepted by the :abbr:`SdI (Sistema di Interscambio)`. You then have to issue a credit
|
||||
note to compensate and send it to the :abbr:`SdI (Sistema di Interscambio)`.
|
||||
|
||||
Expired Terms
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
If the :abbr:`PA (Public Administration)` business doesn't reply within 15 days, you need to contact
|
||||
the :abbr:`PA (Public Administration)` business directly, sending them both the invoice and the
|
||||
received deadline notification by email. You can make an arrangement with them and manually set the
|
||||
correct :guilabel:`SdI State` on your invoice.
|
||||
|
||||
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
@@ -1,15 +0,0 @@
|
||||
========
|
||||
Malaysia
|
||||
========
|
||||
|
||||
.. _malaysia/employment-hero:
|
||||
|
||||
Employment Hero payroll
|
||||
=======================
|
||||
|
||||
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
|
||||
use our connector as an alternative payroll solution.
|
||||
|
||||
.. important::
|
||||
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **Malaysia**, use
|
||||
the following value as :guilabel:`Payroll URL`: `https://apimy.yourpayroll.io/`.
|
||||
@@ -1,15 +0,0 @@
|
||||
===========
|
||||
New Zealand
|
||||
===========
|
||||
|
||||
.. _new-zealand/employment-hero:
|
||||
|
||||
Employment Hero payroll
|
||||
=======================
|
||||
|
||||
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
|
||||
use our connector as an alternative payroll solution.
|
||||
|
||||
.. important::
|
||||
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **New Zealand**,
|
||||
use the following value as :guilabel:`Payroll URL`: `https://api.nzpayroll.co.nz/`.
|
||||
@@ -11,9 +11,9 @@ localization, such as a chart of accounts, taxes, and the BIR 2307 report. These
|
||||
template to get started with using Philippine accounting.
|
||||
|
||||
.. note::
|
||||
- When creating a new database and `Philippines` is selected as a country, the fiscal
|
||||
- When creating a new database and selecting the `Philippines` as a country, the fiscal
|
||||
localization module **Philippines - Accounting** is automatically installed.
|
||||
- If installing the module in an existing company, the **chart of accounts** and **taxes** will
|
||||
- If the module is installed in an existing company, the **chart of accounts** and **taxes** will
|
||||
*not* be replaced if there are already posted journal entries.
|
||||
- The BIR 2307 report is installed, but the withholding taxes may need to be manually created.
|
||||
|
||||
@@ -21,20 +21,22 @@ Chart of accounts and taxes
|
||||
---------------------------
|
||||
|
||||
A minimum configuration default chart of accounts is installed, and the following types of taxes are
|
||||
installed and also linked to the relevant account:
|
||||
installed and linked to the relevant account:
|
||||
|
||||
- VAT 12%
|
||||
- VAT Exempt
|
||||
- Withholding taxes
|
||||
- Sales and Purchase VAT 12%
|
||||
- Sales and Purchase VAT Exempt
|
||||
- Sales and Purchase VAT Zero-Rated
|
||||
- Purchase Withholding
|
||||
|
||||
For the withholding taxes, there is an additional :guilabel:`Philippines ATC` field under the
|
||||
:guilabel:`Philippines` tab.
|
||||
For the withholding taxes (:menuselection:`Configuration --> Taxes`), there is an additional
|
||||
:guilabel:`Philippines ATC` field under the :guilabel:`Philippines` tab.
|
||||
|
||||
.. image:: philippines/philippines-atc-code.png
|
||||
:alt: Philippines ATC code field set on taxes.
|
||||
|
||||
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code must
|
||||
be added.
|
||||
.. note::
|
||||
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code
|
||||
must be added.
|
||||
|
||||
Contacts
|
||||
--------
|
||||
@@ -59,8 +61,9 @@ For individuals not belonging to a company, identify them by using the following
|
||||
BIR 2307 report
|
||||
===============
|
||||
|
||||
**BIR 2307** report data, also known as *Certificate of Creditable Tax Withheld at Source*,
|
||||
can be generated for purchase orders and vendor payments with the applicable withholding taxes.
|
||||
**BIR 2307** report data, also known as `Certificate of Creditable Tax Withheld at Source
|
||||
<https://www.bir.gov.ph/index.php/bir-forms/certificates.html>`_, can be generated for purchase
|
||||
orders and vendor payments with the applicable withholding taxes.
|
||||
|
||||
To generate a BIR 2307 report, select one or multiple vendor bills from the list view, and click
|
||||
:menuselection:`Action --> Download BIR 2307 XLS`.
|
||||
@@ -68,7 +71,8 @@ To generate a BIR 2307 report, select one or multiple vendor bills from the list
|
||||
.. image:: philippines/philippines-multi-bill.png
|
||||
:alt: Multiple vendor bills selected with action to "Download BIR 2307 XLS".
|
||||
|
||||
The same action can be performed on a vendor bill from the form view.
|
||||
.. tip::
|
||||
The same action can be performed on a vendor bill from the form view.
|
||||
|
||||
A pop-up appears to review the selection, then click on :guilabel:`Generate`.
|
||||
|
||||
@@ -78,18 +82,67 @@ A pop-up appears to review the selection, then click on :guilabel:`Generate`.
|
||||
This generates the `Form_2307.xls` file that lists all the vendor bill lines with the applicable
|
||||
withholding tax.
|
||||
|
||||
The same process above can also be done for a *single* vendor :doc:`payment
|
||||
<../accounting/payments>` if they were linked to one or more :doc:`vendor bills
|
||||
<../accounting/payments>` with applied withholding taxes.
|
||||
The process above can also be used for a *single* vendor :doc:`payment <../accounting/payments>` if
|
||||
it is linked to one or more :doc:`vendor bills <../accounting/payments>` with applied withholding
|
||||
taxes.
|
||||
|
||||
.. note::
|
||||
- If there is no withholding tax applied, then the XLS file will not generate records for those
|
||||
vendor bill lines.
|
||||
- If no withholding tax is applied, then the XLS file will not generate records for those vendor
|
||||
bill lines.
|
||||
- When grouping payments for multiple bills, Odoo splits the payments based on the contact. From
|
||||
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS`, generates a report that
|
||||
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS` generates a report that
|
||||
only includes vendor bills related to that contact.
|
||||
|
||||
.. important::
|
||||
Odoo cannot generate the BIR 2307 PDF report or DAT files directly.
|
||||
The generated `Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT
|
||||
or PDF format.
|
||||
Odoo cannot generate the BIR 2307 PDF report or DAT files directly. The generated
|
||||
:file:`Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT or PDF
|
||||
format.
|
||||
|
||||
SLSP Report
|
||||
===========
|
||||
|
||||
The **SLSP** report, also known as the *Summary List of Sales and Purchases*, can be viewed and
|
||||
exported (in XLSX format). The report can be viewed from :menuselection:`Reporting --> Partner
|
||||
Reports --> Summary List of Sales and Purchases`.
|
||||
|
||||
The report is split into two sections, which can be accessed from their respective buttons at the
|
||||
top:
|
||||
|
||||
- | :guilabel:`Sales` for :abbr:`SLS (Summary List of Sales)` report
|
||||
| All customer invoices with the associated sales taxes applied are shown in this report.
|
||||
- | :guilabel:`Purchases` for :abbr:`SLP (Summary List of Purchases)` report
|
||||
| All vendor bills with the associated purchase taxes applied are shown in this report.
|
||||
|
||||
.. image:: philippines/slsp.png
|
||||
:alt: SLSP Report
|
||||
|
||||
By default, both reports exclude journal entries containing partners without a TIN number set and
|
||||
those with importation taxes set. To view or hide them, the :guilabel:`Options:` button gives
|
||||
additional filters to include these, among others:
|
||||
|
||||
- `Including Partners Without TIN`
|
||||
- `Including Importations`
|
||||
|
||||
.. important::
|
||||
Odoo cannot generate the DAT files directly. The :guilabel:`Export SLSP` and :guilabel:`XLSX`
|
||||
buttons export an XLSX file, which can be processed using an *external* tool to convert to the
|
||||
DAT format.
|
||||
|
||||
2550Q Tax report
|
||||
================
|
||||
|
||||
The tax report report is accessible by navigating to :menuselection:`Reporting --> Statement Reports
|
||||
--> Tax Report --> 2550Q(PH)`. The form is based on the latest *2550Q (Quarterly Value-Added Tax
|
||||
Return)* Jan. 2023 version.
|
||||
|
||||
.. image:: philippines/2550Q.png
|
||||
:alt: 2550Q Tax Report
|
||||
|
||||
.. tip::
|
||||
Most lines in the tax report are automatically computed based on the taxes. For more accurate
|
||||
reporting and filing of the tax report, manual journal entries can also be mapped to the tax
|
||||
report through preconfigured **Tax Grids** for each tax report line.
|
||||
|
||||
.. important::
|
||||
Odoo cannot generate the 2550Q BIR formatted PDF report directly. It should be used as a
|
||||
reference when externally filing the form manually or online.
|
||||
|
||||
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 31 KiB |
@@ -52,16 +52,3 @@ QR-code` option to *EMV Merchant-Presented QR-code*.
|
||||
|
||||
Ensure that the :guilabel:`Recipient Bank` is the one you configured, as Odoo uses this field to
|
||||
generate the PayNow QR code.
|
||||
|
||||
.. _singapore/employment-hero:
|
||||
|
||||
Employment Hero payroll
|
||||
=======================
|
||||
|
||||
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
|
||||
use our connector as an alternative payroll solution.
|
||||
|
||||
.. important::
|
||||
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **Singapore**,
|
||||
use the following value as :guilabel:`Payroll URL`: `https://apisg.yourpayroll.io/`.
|
||||
|
||||
|
||||
@@ -115,15 +115,3 @@ each submission:
|
||||
.. note::
|
||||
During this process, the :guilabel:`Connect to HMRC` button no longer appears for other UK-based
|
||||
companies.
|
||||
|
||||
.. _united-kingdom/employment-hero:
|
||||
|
||||
Employment Hero payroll
|
||||
=======================
|
||||
|
||||
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
|
||||
use our connector as an alternative payroll solution.
|
||||
|
||||
.. important::
|
||||
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **United
|
||||
Kingdom**, use the following value as :guilabel:`Payroll URL`: `https://api.yourpayroll.co.uk/`.
|
||||
|
||||
@@ -284,8 +284,8 @@ in the *System Parameters*. To override the following defaults they need to be a
|
||||
|
||||
The two system parameters are as follows:
|
||||
|
||||
- `mail.incoming.limit.period` (60 minutes by default)
|
||||
- `mail.incoming.limit.alias` (5 by default)
|
||||
- `mail.gateway.loop.minutes` (120 minutes by default)
|
||||
- `mail.gateway.loop.threshold` (20 by default)
|
||||
|
||||
Add these fields in Odoo by first enabling :ref:`developer mode <developer-mode>`, and then
|
||||
navigating to :menuselection:`Settings --> Technical Menu --> Parameters --> System Parameters`.
|
||||
@@ -293,13 +293,13 @@ Change the value of these parameters, as needed.
|
||||
|
||||
When an email is received in the Odoo database on the catchall email address or on any alias, Odoo
|
||||
looks at the mail received for the given period of time defined in the system parameter
|
||||
`mail.incoming.limit.period`. If the received email was sent to an alias then Odoo will reference
|
||||
the `mail.incoming.limit.alias` system parameter and determine the value as the number of records
|
||||
this alias is allowed to create in the given period of time (value of `mail.incoming.limit.period`).
|
||||
`mail.gateway.loop.minutes`. If the received email was sent to an alias then Odoo will reference the
|
||||
`mail.gateway.loop.threshold` system parameter and determine the value as the number of records this
|
||||
alias is allowed to create in the given period of time (value of `mail.gateway.loop.minutes`).
|
||||
|
||||
In addition, when email is received to the catchall email address, Odoo will reference the emails
|
||||
received to the database during the set period of time (as stated by the value in the system
|
||||
parameter: `mail.incoming.limit.period`). Odoo will then determine whether any of the emails
|
||||
parameter: `mail.gateway.loop.minutes`). Odoo will then determine whether any of the emails
|
||||
received match that of the email(s) being received during the specified time-frame, and will prevent
|
||||
a feedback loop from occurring if a duplicate email is detected.
|
||||
|
||||
@@ -325,6 +325,11 @@ recipient, and :abbr:`CC (Carbon Copy)` email addresses of an incoming email.
|
||||
the database falsely treats the email as the full `commercial` alias (with a different domain),
|
||||
and therefore, creates a ticket/lead/opportunity/etc.
|
||||
|
||||
.. important::
|
||||
This alias mismatch issue has been resolved in Odoo 17, however, the
|
||||
`mail.catchall.domain.allowed` system parameter is still used in Odoo 17 for backward
|
||||
compatibility.
|
||||
|
||||
To add the `mail.catchall.domain.allowed` system parameter, first, activate the :ref:`developer mode
|
||||
<developer-mode>`. Then, go to :menuselection:`Settings app --> Technical --> Parameters section -->
|
||||
System Parameters`. Click :guilabel:`Create`. Then, type in `mail.catchall.domain.allowed` for the
|
||||
|
||||
@@ -7,3 +7,4 @@ Integrations
|
||||
integrations/mail_plugins
|
||||
integrations/unsplash
|
||||
integrations/geolocation
|
||||
integrations/google_translate
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
================
|
||||
Google Translate
|
||||
================
|
||||
|
||||
*Google Translate* can be used to translate user generated text in the Odoo chatter.
|
||||
|
||||
Google API console
|
||||
==================
|
||||
|
||||
A majority of the setup for integrating *Google Translate* into Odoo is done with the *Google API
|
||||
console*. Once the following processes are complete, an *API key* is created to input in Odoo.
|
||||
|
||||
.. seealso::
|
||||
`Google Translate setup on Google <https://cloud.google.com/translate/docs/setup>`_
|
||||
|
||||
Create a new project
|
||||
--------------------
|
||||
|
||||
To get started, go to the `Google API Console <https://console.developers.google.com>`_. Then, log
|
||||
in with a *Google Workspace* account, if there is one. If not, log in with a personal Gmail account
|
||||
(this should match the email address that has billing attached to it).
|
||||
|
||||
Next, click :guilabel:`Create Project` on the far-right of the :guilabel:`OAuth consent screen`.
|
||||
|
||||
.. tip::
|
||||
If the *Google API Console* has existing projects, click the drop-down menu next to the
|
||||
:guilabel:`Google Cloud` icon, and a pop-over window appears. Next, click :guilabel:`New Project`
|
||||
top-right of the pop-over window.
|
||||
|
||||
On the :guilabel:`New Project` screen, rename the :guilabel:`Project name` to `Odoo Translate`, and
|
||||
browse for the :guilabel:`Location`. Set the :guilabel:`Location` as the *Google Workspace
|
||||
organization*. If a personal Gmail account is being used, leave the :guilabel:`Location` as
|
||||
:guilabel:`No Organization`.
|
||||
|
||||
.. image:: google_translate/new-project.png
|
||||
:align: center
|
||||
:alt: Project Name and Location for Google OAuth.
|
||||
|
||||
Click on :guilabel:`Create` to finish this step.
|
||||
|
||||
API library
|
||||
-----------
|
||||
|
||||
Next, the *Cloud Translation API* needs to be installed on this newly-created project. To do that,
|
||||
click :menuselection:`Library` in the left menu. Then, search the term `Cloud Translation API`, and
|
||||
click into the result. This should be a *Google Enterprise API* labeled :guilabel:`Cloud Translation
|
||||
API`.
|
||||
|
||||
Click :guilabel:`Enable` to install the library on this project.
|
||||
|
||||
.. important::
|
||||
Using the *Google Translate* API **requires** a current billing account with `Google
|
||||
<https://https://myaccount.google.com/>`_.
|
||||
|
||||
Once a billing account is setup with *Google* and the library is enabled, click :guilabel:`Manage`
|
||||
to finish configuration on the API.
|
||||
|
||||
Create credentials
|
||||
------------------
|
||||
|
||||
Now that the project is set up, and the *Cloud Translation API* is enabled, credentials **must** be
|
||||
created. This includes the *API key*.
|
||||
|
||||
To begin this process, click :menuselection:`Credentials` in the left sidebar menu.
|
||||
|
||||
Then, click :guilabel:`Create Credentials` in the top menu, and select :guilabel:`API key` from the
|
||||
drop-down menu.
|
||||
|
||||
.. image:: google_translate/api-key.png
|
||||
:align: center
|
||||
:alt: Create an API key in the Google API console.
|
||||
|
||||
Copy the :guilabel:`API key` for use in the next section.
|
||||
|
||||
.. important::
|
||||
For security purposes, the usage of the *API key* can be restricted.
|
||||
|
||||
To do that, go to the *API restrictions* by clicking on :guilabel:`Edit API key` in the pop-over
|
||||
window, or by clicking on the listed API key on the :guilabel:`Credentials` page. From here, key
|
||||
restrictions can be set. This includes setting an application to restrict the use of the API key,
|
||||
and whether this API key can call any API.
|
||||
|
||||
It is recommended that the Odoo *Translate API* be restricted to **only** allow requests from the
|
||||
configured Odoo database and to the *Cloud Translation API*.
|
||||
|
||||
To add the website restriction, click :guilabel:`Websites`, under the :guilabel:`Set an
|
||||
application restriction`. Then, enter the address of the database *Google Translate* is being
|
||||
used in, by clicking on :guilabel:`Add`. Lastly, add the :abbr:`URL (Uniform Resource Locator)`,
|
||||
and click :guilabel:`Done`.
|
||||
|
||||
To restrict use of the key to a selected API, first, select :guilabel:`Restrict key`, under the
|
||||
:guilabel:`API restrictions` section. Then use the drop-down menu to choose the API being
|
||||
configured (*Cloud Translation API*).
|
||||
|
||||
.. tip::
|
||||
- Save the API key: copy the API key and store it somewhere secure.
|
||||
- Do **not** share the API key publicly or expose it in client-side code.
|
||||
|
||||
Odoo configuration
|
||||
==================
|
||||
|
||||
To access the integration in Odoo, navigate to the :menuselection:`Settings app --> Discuss
|
||||
section`. Enter the API key into the field labeled :guilabel:`Message Translation`. Then,
|
||||
:guilabel:`Save` the settings, and *Google Translate* can be used in any chatter throughout the
|
||||
database.
|
||||
|
||||
.. image:: google_translate/odoo-config.png
|
||||
:align: center
|
||||
:alt: Odoo configuration of the API key from the *Google API Console*.
|
||||
|
||||
Translate chatter
|
||||
=================
|
||||
|
||||
To translate a user's text from another language, click the :guilabel:`... (three dot)` icon menu to
|
||||
the right of the chatter. Then, select :guilabel:`Translate`. The content translates to the
|
||||
*language* set on the user's preferences.
|
||||
|
||||
.. image:: google_translate/google-translate.png
|
||||
:align: center
|
||||
:alt: Google Translate present in an Odoo database's chatter.
|
||||
|
||||
.. seealso::
|
||||
:ref:`language/change-user-language`
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 28 KiB |
@@ -11,6 +11,6 @@ Configuration
|
||||
config/connect
|
||||
config/pos
|
||||
config/https_certificate_iot
|
||||
config/flash_sdcard
|
||||
config/updating_iot
|
||||
config/troubleshooting
|
||||
config/windows_iot
|
||||
|
||||
@@ -37,8 +37,8 @@ via :ref:`WiFi <iot_connect/wifi>`.
|
||||
.. important::
|
||||
The disk image that the :abbr:`IoT (Internet of Things)` box SD card is formatted with is unique
|
||||
to the version of the Odoo database that the :abbr:`IoT (Internet of Things)` box is running on.
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box is :doc:`flashed <flash_sdcard>` with the
|
||||
most up-to-date disk image.
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box is :ref:`flashed <iot/config/flash>` with
|
||||
the most up-to-date disk image.
|
||||
|
||||
.. _iot_connect/ethernet:
|
||||
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
====================
|
||||
Flashing the SD card
|
||||
====================
|
||||
|
||||
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
|
||||
re-flashed to benefit from Odoo's latest :abbr:`IoT (Internet of Things)` image update. This means
|
||||
that the Odoo :abbr:`IoT (Internet of Things)` box software may need to be updated.
|
||||
|
||||
Upgrade from the IoT box home page
|
||||
==================================
|
||||
|
||||
Go to the :abbr:`IoT (Internet of Things)` box homepage by navigating to :menuselection:`IoT app -->
|
||||
IoT Boxes` and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)` box.
|
||||
Then click on :guilabel:`Update` (next to the version number).
|
||||
|
||||
If a new version of the :abbr:`IoT (Internet of Things)` Box image is available, an
|
||||
:guilabel:`Upgrade to _xx.xx_` button will appear at the bottom of the page. Click this button to
|
||||
upgrade the unit and the :abbr:`IoT (Internet of Things)` box will then flash itself to the new
|
||||
version. All of the previous configurations will be saved.
|
||||
|
||||
.. note::
|
||||
This process can take more than 30 minutes. Do not turn off or unplug the :abbr:`IoT (Internet of
|
||||
Things)` box as it would leave it in an inconsistent state. This means that the :abbr:`IoT
|
||||
(Internet of Things)` box will need to be re-flashed with a new image. See
|
||||
:ref:`flash_sdcard/etcher`.
|
||||
|
||||
.. image:: flash_sdcard/flash-upgrade.png
|
||||
:align: center
|
||||
:alt: IoT box software upgrade in the IoT Box Home Page.
|
||||
|
||||
.. _flash_sdcard/etcher:
|
||||
|
||||
Upgrade with Etcher Software
|
||||
============================
|
||||
|
||||
.. note::
|
||||
A computer with a micro SD card reader/adapter is required in order to re-flash the micro SD
|
||||
card.
|
||||
|
||||
Navigate to Balena's website and download `Etcher <https://www.balena.io/>`_. It's a free and
|
||||
open-source utility used for burning image files onto drives. Click to `download
|
||||
<https://www.balena.io/etcher#download-etcher>`_. Install and launch the program on the computer.
|
||||
|
||||
Then download the version-specific :abbr:`IoT (Internet of Things)` image from `nightly
|
||||
<http://nightly.odoo.com/master/iotbox/>`_.
|
||||
|
||||
The following are image versions on the `nightly <http://nightly.odoo.com/master/iotbox/>`_ website
|
||||
with their corresponding Odoo database version:
|
||||
|
||||
- Odoo V16 --> iotbox-latest.zip
|
||||
- Odoo V15 --> iotboxv21_10.zip
|
||||
- Odoo V14 --> iotboxv21_04.zip
|
||||
- Odoo V13 --> iotboxv20_10.zip
|
||||
|
||||
The images should be downloaded and extracted to a convenient file location.
|
||||
|
||||
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
|
||||
the computer or reader. Open *Etcher* and select :guilabel:`Flash from file`, then find and select
|
||||
the image just downloaded and extracted. Next, select the drive the image should be burned to.
|
||||
Lastly, click on :guilabel:`Flash` and wait for the process to finish.
|
||||
|
||||
.. image:: flash_sdcard/etcher-app.png
|
||||
:align: center
|
||||
:alt: Balena's Etcher software dashboard.
|
||||
|
||||
.. note::
|
||||
An alternative software for flashing the micro SD card is *Raspberry Pi Imager*. Download the
|
||||
*Raspberry Pi* software `here <https://www.raspberrypi.com/software/>`_.
|
||||
@@ -19,10 +19,10 @@ The pairing code does not show under the following circumstances:
|
||||
It is automatically removed from connected displays when this time has expired.
|
||||
- The version of the :abbr:`IoT (Internet of Things)` box image is too old. If the :abbr:`IoT
|
||||
(Internet of Things)` box image is from an earlier version, then the SD card of the :abbr:`IoT
|
||||
(Internet of Things)` box will need to be re-flashed to update the image (see :doc:`Flashing the
|
||||
SD Card <flash_sdcard>`).
|
||||
(Internet of Things)` box needs to be re-flashed to update the image (see :ref:`Flashing the SD
|
||||
Card <iot/config/flash>`).
|
||||
|
||||
If none of the cases listed above correct the issue, then make sure that the :abbr:`IoT (Internet of
|
||||
If none of the cases listed above correct the issue, then make sure the :abbr:`IoT (Internet of
|
||||
Things)` box has correctly started, by checking that a fixed green LED is showing next to the power
|
||||
port.
|
||||
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
==============
|
||||
Updating (IoT)
|
||||
==============
|
||||
|
||||
Due to the complexity of the :abbr:`IoT (Internet of Things)` box, and virtual Windows :abbr:`IoT
|
||||
(Internet of Things)` box, the term 'updating' can mean several different things.
|
||||
|
||||
The actual drivers can be updated, the core code on the :abbr:`IoT (Internet of Things)` box can be
|
||||
updated, or a new image can be flashed (using a physical :abbr:`IoT (Internet of Things)` box).
|
||||
|
||||
This document explores the various ways to update :abbr:`IoT (Internet of Things)` boxes to ensure
|
||||
smooth operation of :abbr:`IoT (Internet of Things)` box processes and devices.
|
||||
|
||||
.. _iot/config/flash:
|
||||
|
||||
Flashing the SD card on IoT box
|
||||
===============================
|
||||
|
||||
.. important::
|
||||
This update does **not** apply to the Windows :abbr:`IoT (Internet of Things)` box (Odoo 16 and
|
||||
higher).
|
||||
|
||||
To update the Windows :abbr:`IoT (Internet of Things)`, first, uninstall the previous version of
|
||||
the Odoo Windows program, and then reinstall it using the most up-to-date installation package.
|
||||
|
||||
To begin the installation, navigate to the Odoo 16 (or higher) installation package for
|
||||
Enterprise or Community - Windows edition, at `Odoo's download page
|
||||
<https://odoo.com/download>`_.
|
||||
|
||||
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
|
||||
re-flashed with *Etcher* software to benefit from Odoo's latest :abbr:`IoT (Internet of Things)`
|
||||
image update. This means the Odoo :abbr:`IoT (Internet of Things)` box software may need to be
|
||||
updated in instances of a new :abbr:`IoT (Internet of Things)` box, or when a handler's update, or
|
||||
an update from the :abbr:`IoT (Internet of Things)` box home page, does not resolve issues.
|
||||
|
||||
|
||||
.. note::
|
||||
- It is often necessary to re-flash the :abbr:`IoT (Internet of Things)` box's image after
|
||||
upgrading the Odoo database to a new version.
|
||||
- A computer with a micro SD card reader/adapter is **required** to re-flash the micro SD card.
|
||||
|
||||
First, begin by downloading `Etcher <https://www.balena.io/etcher#download-etcher>`_. It is a free,
|
||||
open-source utility, used for burning image files onto drives. After the download completes, install
|
||||
and launch the program on the computer.
|
||||
|
||||
Then, download the latest :abbr:`IoT (Internet of Things)` image from `nightly
|
||||
<http://nightly.odoo.com/master/iotbox>`_, which will be labeled as `iotbox-latest.zip`. This
|
||||
particular image is compatible with *all* supported versions of Odoo.
|
||||
|
||||
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
|
||||
the computer or reader. Open *Etcher*, and select :guilabel:`Flash from file`, then find and select
|
||||
the `iotbox-latest.zip` image and extract it. Next, select the drive the image should be burned to.
|
||||
|
||||
Lastly, click :guilabel:`Flash`, and wait for the process to finish.
|
||||
|
||||
.. image:: updating_iot/etcher-app.png
|
||||
:align: center
|
||||
:alt: Balena's Etcher software dashboard.
|
||||
|
||||
.. tip::
|
||||
Balena's *Etcher* software also allows for the administrator to flash the :abbr:`SD (Secure
|
||||
Digital)` card from a :abbr:`URL (Uniform Resource Locator)`. To flash from a :abbr:`URL (Uniform
|
||||
Resource Locator)`, simply click :guilabel:`Flash from URL`, instead of :guilabel:`Flash from
|
||||
file`.
|
||||
|
||||
Then, enter the following: `http://nightly.odoo.com/master/iotbox/iotbox-latest.zip`.
|
||||
|
||||
.. image:: updating_iot/url-flash.png
|
||||
:align: center
|
||||
:alt: A view of Balena's Etcher software, with the flash from URL option highlighted.
|
||||
|
||||
.. note::
|
||||
An alternative software for flashing the micro SD card is `Raspberry Pi Imager
|
||||
<https://www.raspberrypi.com/software/>`_.
|
||||
|
||||
Windows IoT update
|
||||
==================
|
||||
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box may occasionally need an update to work
|
||||
properly.
|
||||
|
||||
The following processes cover the :ref:`uninstallation <iot/config/uninstall-windows-iot>` and
|
||||
:ref:`re-installation <iot/config/re-install-windows-iot>` of the Windows virtual :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
.. _iot/config/uninstall-windows-iot:
|
||||
|
||||
Uninstalling Windows IoT
|
||||
------------------------
|
||||
|
||||
Prior to upgrading the Windows virtual :abbr:`IoT (Internet of Things)` box, the previous version
|
||||
should be uninstalled first.
|
||||
|
||||
.. important::
|
||||
Before uninstalling a previous version of the Windows virtual :abbr:`IoT (Internet of Things)`
|
||||
box, ensure that there is a newer version of Windows virtual :abbr:`IoT (Internet of Things)` box
|
||||
available, compared to the version currently installed. To do so, navigate to the `Odoo Nightly
|
||||
builds <https://nightly.odoo.com/>`_ page.
|
||||
|
||||
On the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds (stable version)
|
||||
--> windows/` to view the date next to the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0). The latest version of the Windows
|
||||
virtual :abbr:`IoT (Internet of Things)` box can be downloaded by selecting this file, or it is
|
||||
always available at the `Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
Uninstalling the Windows virtual :abbr:`IoT (Internet of Things)` box is done through the Windows
|
||||
program manager.
|
||||
|
||||
On any version of Windows, search for `program` to open the :menuselection:`Programs --> Programs
|
||||
and Features` section of the :guilabel:`Control Panel`. Then, select :guilabel:`Uninstall or change
|
||||
a program`. Next, search for `Odoo`, and click the :guilabel:`... (three dot)` menu on the
|
||||
:guilabel:`Odoo.exe` program to uninstall.
|
||||
|
||||
Confirm the uninstallation, and follow the steps to uninstall through the Odoo uninstall wizard.
|
||||
|
||||
.. _iot/config/re-install-windows-iot:
|
||||
|
||||
Download and re-install
|
||||
-----------------------
|
||||
|
||||
The latest version of the Windows virtual :abbr:`IoT (Internet of Things)` box can be downloaded
|
||||
from the `Odoo Nightly builds <https://nightly.odoo.com/>`_ page or it is always available at the
|
||||
`Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
To download from the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds
|
||||
(stable version) --> windows/` to and select the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0).
|
||||
|
||||
To download from the :guilabel:`Odoo Download` page, find the section for the version of Odoo (e.g.
|
||||
16.0, 17.0), and select the :guilabel:`Download` button for :guilabel:`Windows`.
|
||||
|
||||
Next, install and setup the downloaded Odoo :file:`.exe` file. After the instructions screen, click
|
||||
:guilabel:`Next` to start the installation, and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
|
||||
During the next step of the re-installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select
|
||||
the type of install` drop-down menu.
|
||||
|
||||
.. example::
|
||||
For reference, the following should be installed:
|
||||
|
||||
- :guilabel:`Odoo server`
|
||||
- :guilabel:`Odoo IoT`
|
||||
- :guilabel:`Nginx WebServer`
|
||||
- :guilabel:`Ghostscript interpreter`
|
||||
|
||||
Ensure there is enough space on the computer for the installation, then click :guilabel:`Next`.
|
||||
|
||||
Set the destination and complete the installation
|
||||
-------------------------------------------------
|
||||
|
||||
To complete the re-installation, select the :guilabel:`Destination Folder`, and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. warning::
|
||||
Choosing `C:\\odoo` as the install location allows for the *Nginx* server to start. Odoo's
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box software should **not** be installed inside
|
||||
any of the Windows user's directories. Doing so does **not** allow for *Nginx* to initialize.
|
||||
|
||||
The installation may take a few minutes. When complete, click :guilabel:`Next` to continue.
|
||||
|
||||
Then, ensure that the :guilabel:`Start Odoo` box is checked, and click :guilabel:`Finish`. After
|
||||
installation, the Odoo server runs, and automatically opens `http://localhost:8069` on a web
|
||||
browser. The webpage should display the :abbr:`IoT (Internet of Things)` box homepage.
|
||||
|
||||
.. tip::
|
||||
A :ref:`restart <iot/restart_windows_iot>` of the Windows IoT program may be necessary if the web
|
||||
browser does not display anything.
|
||||
|
||||
.. _iot/config/homepage-upgrade:
|
||||
|
||||
Update from the IoT box home page
|
||||
=================================
|
||||
|
||||
In the background, the :abbr:`IoT (Internet of Things)` box uses a version of Odoo code to run and
|
||||
connect to the Odoo database. This code may need to be updated in order for the :abbr:`IoT (Internet
|
||||
of Things)` box to operate effectively. This operation should be completed on a routine basis, to
|
||||
ensure the :abbr:`IoT (Internet of Things)` system, and its processes, stay up-to-date.
|
||||
|
||||
Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to :menuselection:`IoT app
|
||||
--> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)`
|
||||
box. Then, click on :guilabel:`Update` (next to the version number).
|
||||
|
||||
If a new version of the :abbr:`IoT (Internet of Things)` box image is available, an
|
||||
:guilabel:`Upgrade to _xx.xx_` button appears at the bottom of the page. Click this button to
|
||||
upgrade the unit, at which point the :abbr:`IoT (Internet of Things)` box flashes itself to the
|
||||
newer version. All of the previous configurations are then saved.
|
||||
|
||||
.. important::
|
||||
This process can take more than 30 minutes. Do **not** turn off, or unplug, the :abbr:`IoT
|
||||
(Internet of Things)` box, as it would leave it in an inconsistent state. This means the
|
||||
:abbr:`IoT (Internet of Things)` box needs to be :ref:`re-flashed <iot/config/flash>` with a new
|
||||
image.
|
||||
|
||||
.. image:: updating_iot/flash-upgrade.png
|
||||
:align: center
|
||||
:alt: IoT box software upgrade in the IoT Box Home Page.
|
||||
|
||||
Handler (driver) update
|
||||
=======================
|
||||
|
||||
There may be some instances where drivers or interfaces need to be updated for individual devices
|
||||
(e.g. scales, measurement tools, etc.). The IoT handler's (drivers and interfaces) code can be
|
||||
modified by syncing them with the configured server handler's code.
|
||||
|
||||
This can be helpful in instances where :abbr:`IoT (Internet of Things)` devices (e.g. scales,
|
||||
measurement tools, etc.) are not working properly with the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
For both the Windows :abbr:`IoT (Internet of Things)` (Odoo 16 and higher) and physical :abbr:`IoT
|
||||
(Internet of Things)` box, this process can be performed manually from the :abbr:`IoT (Internet of
|
||||
Things)` box home page. Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to
|
||||
:menuselection:`IoT app --> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
Next, click :guilabel:`Handlers list`, and then select :guilabel:`Load Handlers` at the bottom of
|
||||
the page.
|
||||
|
||||
.. image:: updating_iot/load-handlers.png
|
||||
:align: center
|
||||
:alt: Handlers list on an IoT box with the load handlers button highlighted.
|
||||
|
||||
.. important::
|
||||
Handler's code is fetched from the configured server, and it needs to be up-to-date to have the
|
||||
latest fixes and patches.
|
||||
|
||||
.. note::
|
||||
A handler update is also performed automatically each time the :abbr:`IoT (Internet of Things)`
|
||||
box is restarted. The only exception to this process is if the *Automatic drivers update* is
|
||||
unchecked in the form view of the :abbr:`IoT (Internet of Things)` box on the Odoo server. This
|
||||
setting can be reached by going to :menuselection:`IoT App --> Select the IoT box --> Automatic
|
||||
drivers update`.
|
||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
@@ -182,7 +182,7 @@ Configure new rule
|
||||
On the :menuselection:`Rule Type` screen, select :guilabel:`Port`. Then click :guilabel:`Next`. From
|
||||
the :menuselection:`Protocol and Ports` page leave the rule application to :guilabel:`TCP`. Then,
|
||||
select :guilabel:`Specific Local Ports` for the :guilabel:`ports` option. In the text box, type in
|
||||
`8069`. Finally click :guilabel:`Next` to continue to the next step.
|
||||
`8069, 443`. Finally, click :guilabel:`Next` to continue to the next step.
|
||||
|
||||
On the :menuselection:`Actions` page, select :guilabel:`Allow the connection` and click
|
||||
:guilabel:`Next`. The following page on the :menuselection:`Rule Configuration` wizard is the
|
||||
|
||||
@@ -1,67 +1,184 @@
|
||||
=============
|
||||
Access Rights
|
||||
Access rights
|
||||
=============
|
||||
|
||||
Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Settings --> Users &
|
||||
Companies --> Groups`.
|
||||
*Access rights* are permissions that determine the content and applications users can access and
|
||||
edit. In Odoo, these permissions can be set for individual users or for groups of users. Limiting
|
||||
permissions to only those who need them ensures that users do not modify or delete anything they
|
||||
should not have access to.
|
||||
|
||||
Groups
|
||||
======
|
||||
**Only** an *administrator* can change access rights.
|
||||
|
||||
| When choosing the groups the user can have access under
|
||||
:ref:`Access Rights <users/add-individual>`, details of the rules and inheritances of that group
|
||||
are not shown, so this is when the menu *Groups* comes along. *Groups* are created to define rules
|
||||
to models within an application.
|
||||
| Under *Users*, have a list of the current ones. The ones with administrative rights are shown
|
||||
in black.
|
||||
.. danger::
|
||||
Making changes to access rights can have a detrimental impact on the database. This includes
|
||||
*impotent admin*, which means that no user in the database can make changes to the access rights.
|
||||
For this reason, Odoo recommends contacting an Odoo Business Analyst, or our Support Team, before
|
||||
making changes.
|
||||
|
||||
.. image:: access_rights/groups-users.png
|
||||
.. tip::
|
||||
A user **must** have the specific *Administration* access rights set on their user profile, in
|
||||
order to make changes on another user's settings for access rights.
|
||||
|
||||
To access this setting, navigate to :menuselection:`Settings app --> Manage users --> select a
|
||||
user --> Access Rights tab --> Administration section --> Administration field`.
|
||||
|
||||
Once at the setting, an already existing administrator **must** change the setting in the
|
||||
:guilabel:`Administration` field to :guilabel:`Access Rights`.
|
||||
|
||||
Once complete, click :guilabel:`Save` to save the changes, and implement the user as an
|
||||
administrator.
|
||||
|
||||
Users
|
||||
=====
|
||||
|
||||
The access rights for :ref:`individual users <users/add-individual>` are set when the user is added
|
||||
to the database, but they can be adjusted at any point in the user's profile.
|
||||
|
||||
To make changes to a user's rights, click on the desired user to edit their profile.
|
||||
|
||||
.. image:: access_rights/navigate-to-users-menu.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab users in Odoo
|
||||
:alt: Users menu in the Users & Companies section of the Settings app of Odoo.
|
||||
|
||||
*Inherited* means that users added to this application group are automatically added to the
|
||||
following ones. In the example below, users who have access to the group *Administrator* of *Sales*
|
||||
also have access to *Website/Restricted Editor* and *Sales/User: All Documents*.
|
||||
On the user's profile page, in the :guilabel:`Access Rights` tab, scroll down to view the current
|
||||
permissions.
|
||||
|
||||
.. image:: access_rights/groups-inherited.png
|
||||
For each app, use the drop-down menu to select what level of permission this user should have. The
|
||||
options vary for each section, yet the most common are: :guilabel:`Blank/None`, :guilabel:`User: Own
|
||||
Documents`, :guilabel:`User: All Documents`, or :guilabel:`Administrator`.
|
||||
|
||||
The :guilabel:`Administration` field in the :guilabel:`Access Rights` tab has the following options:
|
||||
:guilabel:`Settings` or :guilabel:`Access Rights`.
|
||||
|
||||
.. image:: access_rights/user-permissions-dropdown-menu.png
|
||||
:align: center
|
||||
:height: 330
|
||||
:alt: View of a group’s form emphasizing the tab inherited in Odoo
|
||||
:alt: The Sales apps drop-down menu to set the user's level of permissions.
|
||||
|
||||
Create and modify groups
|
||||
========================
|
||||
|
||||
*Groups* are app-specific sets of permissions that are used to manage common access rights for a
|
||||
large amount of users. Administrators can modify the existing groups in Odoo, or create new ones to
|
||||
define rules for models within an application.
|
||||
|
||||
To access groups, first activate Odoo's :ref:`developer mode <developer-mode>`, then go to
|
||||
:menuselection:`Settings app --> Users & Companies --> Groups`.
|
||||
|
||||
.. image:: access_rights/click-users-and-companies.png
|
||||
:align: center
|
||||
:alt: Groups menu in the Users & Companies section of the Settings app of Odoo.
|
||||
|
||||
To create a new group from the :guilabel:`Groups` page, click :guilabel:`Create`. Then, from the
|
||||
blank group form, select an :guilabel:`Application`, and complete the group form (detailed below).
|
||||
|
||||
To modify existing groups, click on an existing group from the list displayed on the
|
||||
:guilabel:`Groups` page, and edit the contents of the form.
|
||||
|
||||
Enter a :guilabel:`Name` for the group and tick the checkbox next to :guilabel:`Share Group`, if
|
||||
this group was created to set access rights for sharing data with some users.
|
||||
|
||||
.. important::
|
||||
Remember to always test the settings being changed in order to ensure that they are being applied
|
||||
to the needed and right users.
|
||||
Always test the settings being changed to ensure they are being applied to the correct users.
|
||||
|
||||
The *Menus* tab is where you define which menus (models) the user can have access to.
|
||||
The group form contains multiple tabs for managing all elements of the group. In each tab, click
|
||||
:guilabel:`Add a line` to add a new row for users or rules, and click the :guilabel:`❌ (remove)`
|
||||
icon to remove a row.
|
||||
|
||||
.. image:: access_rights/groups-menus.png
|
||||
.. image:: access_rights/groups-form.png
|
||||
:align: center
|
||||
:height: 330
|
||||
:alt: View of a group’s form emphasizing the tab menus in Odoo
|
||||
:alt: Tabs in the Groups form to modify the settings of the group.
|
||||
|
||||
*Access Rights* rules are the first level of rights. The field is composed of the object name, which
|
||||
is the technical name given to a model. For each model, enable the following options as appropriate:
|
||||
- :guilabel:`Users` tab: lists the current users in the group. Users listed in black have
|
||||
administrative rights. Users without administrative access appear in blue. Click :guilabel:`Add a
|
||||
line` to add users to this group.
|
||||
- :guilabel:`Inherited` tab: inherited means that users added to this group are automatically added
|
||||
to the groups listed on this tab. Click :guilabel:`Add a line` to add inherited groups.
|
||||
|
||||
- *Read*: the values of that object can be only seen by the user.
|
||||
- *Write*: the values of that object can be edited by the user.
|
||||
- *Create*: values for that object can be created by the user.
|
||||
- *Delete*: the values of that object can be deleted by the user.
|
||||
.. example::
|
||||
For example, if the group *Sales/Administrator* lists the group *Website/Restricted Editor* in
|
||||
its :guilabel:`Inherited` tab, then any users added to the *Sales/Administrator* group
|
||||
automatically receive access to the *Website/Restricted Editor* group, as well.
|
||||
|
||||
.. image:: access_rights/groups-access-rights.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab access rights in Odoo
|
||||
- :guilabel:`Menus` tab: defines which menus/models the group can have access to. Click
|
||||
:guilabel:`Add a line` to add a specific menu.
|
||||
- :guilabel:`Views` tab: lists which views in Odoo the group has access to. Click :guilabel:`Add a
|
||||
line` to add a view to the group.
|
||||
- :guilabel:`Access Rights` tab: lists the first level of rights (models) that this group has access
|
||||
rights to. Click :guilabel:`Add a line` to link access rights to this group. In this tab, the
|
||||
:guilabel:`Model` column represents the common name of the menu/model, and the :guilabel:`Name`
|
||||
column represents the technical name given to the model. For each model, enable the following
|
||||
options as appropriate:
|
||||
|
||||
| As a second layer of editing and visibility rules, *Record Rules* can be formed. They overwrite,
|
||||
or refine, the *Access Rights*.
|
||||
| A record rule is written using a *Domain*. Domains are conditions used to filter or searching
|
||||
data. Therefore, a domain expression is a list of conditions. For each rule, choose among the
|
||||
following options: *Read*, *Write*, *Create* and *Delete* values.
|
||||
- :guilabel:`Read`: users can see the object's existing values.
|
||||
- :guilabel:`Write`: users can edit the object's existing values.
|
||||
- :guilabel:`Create`: users can create new values for the object.
|
||||
- :guilabel:`Delete`: users can delete values for the object.
|
||||
|
||||
.. image:: access_rights/groups-record-rules.png
|
||||
:align: center
|
||||
:alt: View of a group’s form emphasizing the tab record rules in Odoo
|
||||
.. tip::
|
||||
First try searching for the common name of the model in the drop-down menu of the
|
||||
:guilabel:`Model` column. The :guilabel:`Model` technical name can be found by expanding the
|
||||
model common name, which can be done by clicking the :guilabel:`(external link)` icon.
|
||||
|
||||
The model technical name can also be accessed in :ref:`developer mode <developer-mode>`.
|
||||
|
||||
On a form, navigate to any field, and hover over the field name. A box of backend information
|
||||
reveals itself with the specific Odoo :guilabel:`Object` name in the backend. This is the
|
||||
technical name of the model that should be added.
|
||||
|
||||
.. image:: access_rights/technical-info.png
|
||||
:align: center
|
||||
:alt: Technical information shown on a field of a model, with object highlighted.
|
||||
|
||||
- :guilabel:`Record Rules`: lists the second layer of editing and visibility rights.
|
||||
:guilabel:`Record Rules` overwrite, or refine, the group's access rights. Click :guilabel:`Add a
|
||||
line` to add a record rule to this group. For each rule, choose values for the following options:
|
||||
|
||||
- :guilabel:`Apply for Read`.
|
||||
- :guilabel:`Apply for Write`.
|
||||
- :guilabel:`Apply for Create`.
|
||||
- :guilabel:`Apply for Delete`.
|
||||
|
||||
.. important::
|
||||
Record rules are written using a *domain*, or conditions that filter data. A domain expression
|
||||
is a list of such conditions. For example:
|
||||
|
||||
`[('mrp_production_ids', 'in', user.partner_id.commercial_partner_id.production_ids.ids)]`
|
||||
|
||||
This record rule is to enable MRP consumption warnings for subcontractors.
|
||||
|
||||
Odoo has a library of preconfigured record rules for ease of use. Users without knowledge of
|
||||
domains (and domain expressions) should consult an Odoo Business Analyst, or the Odoo Support
|
||||
Team, before making changes.
|
||||
|
||||
Superuser mode
|
||||
==============
|
||||
|
||||
*Superuser mode* allows the user to bypass record rules and access rights. To activate *Superuser
|
||||
mode*, first, activate :ref:`developer mode <developer-mode>`. Then, navigate to the *debug* menu,
|
||||
represented by a :guilabel:`🪲 (bug)` icon, located in the top banner.
|
||||
|
||||
Finally, towards the bottom of the menu, click :guilabel:`Become Superuser`.
|
||||
|
||||
.. important::
|
||||
Making changes in access rights can have a big impact on the database. For this reason, we
|
||||
recommend you to contact your Odoo Business Analyst or our Support Team, unless you have
|
||||
knowledge about Domains in Odoo.
|
||||
Only users with *Settings* access for the *Administration* section of the *Access Rights* (in
|
||||
their user profile) are allowed to log in to *Superuser mode*.
|
||||
|
||||
.. danger::
|
||||
*Superuser mode* allows for circumvention of record rules and access rights, and therefore,
|
||||
should be exercised with extreme caution.
|
||||
|
||||
Upon exiting *Superuser mode*, users may be locked out of the database, due to changes that were
|
||||
made. This can cause *impotent admin*, or an administrator without the ability to change access
|
||||
rights/settings.
|
||||
|
||||
In this case contact Odoo Support here: `new help ticket <https://www.odoo.com/help>`_. The
|
||||
support team is able to restore access using a support login.
|
||||
|
||||
To leave *Superuser mode*, log out of the account, by navigating to the upper-right corner, and
|
||||
clicking on the :guilabel:`OdooBot` username. Then, select the :guilabel:`Log out` option.
|
||||
|
||||
.. tip::
|
||||
An alternative way to activate *Superuser mode* is to login as a superuser. To do that, navigate
|
||||
to the login screen, and enter the appropriate :guilabel:`Email` and :guilabel:`Password`.
|
||||
|
||||
Instead of clicking :guilabel:`Login`, click :guilabel:`Log in as superuser`.
|
||||
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
After Width: | Height: | Size: 30 KiB |