Compare commits
19 Commits
18.0
...
saas-17.2-
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bbcfb57b88 |
[IMP] orm: add 'any' and 'not any' operators
- Add descriptions of the 'any' and 'not any' operators
- Simplify the example for searching partners
- Add an example using the 'any' operator for the sale.order model
Closes: #7620
X-original-commit:
|
||
|
|
692b6e59db |
[IMP] accounting: add extra taxes
Extra taxes (ecotax, luxury, etc) are currently missing from doc
taskid-3794931
closes odoo/documentation#8320
X-original-commit:
|
||
|
|
c192520bc8 |
[IMP] finance/fiscal_localizations: Internal Reverse Charge
Many updates are due because of all the changes that have happened in
the last version. Internal Reverse Charge section has been added. The
configuration section has been reordered and information no longer valid
(like invoices being automatically sent) are removed. The flow is
described in a little more detail.
closes odoo/documentation#8323
X-original-commit:
|
||
|
|
733b1b14b4 |
[FIX] website: anchors in analytics hyperlinks
Custom anchors can be used as hyperlinks to target a specific
heading on the page. However, the google analytics one didn't
work well because of the capital letters used.
closes odoo/documentation#8308
X-original-commit:
|
||
|
|
9486481337 |
[IMP] iot: flash card update section
closes odoo/documentation#8304
X-original-commit:
|
||
|
|
67e0c5aac6 |
[FW][FIX] dev/assets: typo
the "py" letter should be "by" to make the syntax correct and understood. closes odoo/documentation#8300 Forward-port-of: odoo/documentation#8276 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com> |
||
|
|
0bfa9dfba6 |
[IMP] email comms: feedback loop edit
closes odoo/documentation#8282
X-original-commit:
|
||
|
|
d1ab1de49b |
[I18N] conf: add more language codes
closes odoo/documentation#8248
X-original-commit:
|
||
|
|
6013cef5e2 |
[FW][FIX] dev/view_architectures: domain attribute of search view fields
The domain in the `field` component cannot accept user-provided values or access self variables. This commit removes the misleading sentence about it from the documentation. closes odoo/documentation#8218 Forward-port-of: odoo/documentation#8193 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com> |
||
|
|
8945dd6f73 |
[IMP] upgrade: ready to upgrade image
Screenshot taken from Odoo 16 database with the option to upgrade to Odoo 17
closes odoo/documentation#8272
X-original-commit:
|
||
|
|
c5dce7421d |
[ADD] Website: Structure blocks
task-3733822
closes odoo/documentation#8271
X-original-commit:
|
||
|
|
1cbc4d906b |
[ADD]inventory: product type
closes odoo/documentation#8258
X-original-commit:
|
||
|
|
3943ff6f4b |
[IMP] hosting: add admonition block on subscription
closes odoo/documentation#8255
X-original-commit:
|
||
|
|
78004f6ae3 |
[IMP] developer: external api add admonition block
closes odoo/documentation#8238
X-original-commit:
|
||
|
|
133abb2ab1 |
[REM] voip: onsip scrub per onsip
closes odoo/documentation#8237
X-original-commit:
|
||
|
|
637671bad0 |
[FIX] website: domain names
closes odoo/documentation#8233
X-original-commit:
|
||
|
|
bc0ceff831 |
[DEL] remove usage; contains packages + packagings
closes odoo/documentation#8220
X-original-commit:
|
||
|
|
05e34a4859 |
[IMP] database management: update on-premise page
task-3627193
closes odoo/documentation#8213
X-original-commit:
|
||
|
|
256061731f | [REL] saas-17.2 |
2
Makefile
|
|
@@ -26,7 +26,7 @@ SOURCE_DIR = content
|
|||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-17.2
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
|
|
|||
4
conf.py
|
|
@@ -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 = 'master'
|
||||
version = release = 'saas-17.2'
|
||||
|
||||
# `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,6 +234,7 @@ languages_names = {
|
|||
'es': 'ES',
|
||||
'fr': 'FR',
|
||||
'it': 'IT',
|
||||
'ko': 'KO',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
|
|
|
|||
|
|
@@ -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
|
||||
-------------
|
||||
|
||||
|
|
|
|||
|
|
@@ -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::
|
||||
|
||||
|
|
|
|||
BIN
content/administration/on_premise/add-more-users.png
Normal file
|
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 |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 22 KiB |
|
|
@@ -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`
|
||||
|
|
|
|||
BIN
content/applications/finance/accounting/taxes/ecotax.png
Normal file
|
After Width: | Height: | Size: 6.7 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 |
BIN
content/applications/finance/fiscal_localizations/italy/edi.png
Normal file
|
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 |
|
|
@@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@@ -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.
|
||||
|
||||
|
|
|
|||
137
content/applications/general/iot/config/updating_iot.rst
Normal file
|
|
@@ -0,0 +1,137 @@
|
|||
==============
|
||||
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/>`_.
|
||||
|
||||
.. _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 |
|
|
@@ -7,6 +7,7 @@ Product tracking
|
|||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
product_tracking/type
|
||||
product_tracking/differences
|
||||
product_tracking/serial_numbers
|
||||
product_tracking/lots
|
||||
|
|
|
|||
|
|
@@ -0,0 +1,232 @@
|
|||
============
|
||||
Product type
|
||||
============
|
||||
|
||||
.. |BOM| replace:: :abbr:`BoM (Bill of Materials)`
|
||||
|
||||
Define *product types* in Odoo to track products in varying levels of detail.
|
||||
|
||||
Classify products as *storable* to track stock counts, allowing users to trigger :doc:`reordering
|
||||
rules <../product_replenishment/reordering_rules>` for generating purchase orders. *Consumable*
|
||||
products are assumed to always be in stock, and *service* products are performed and served by the
|
||||
business.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Tutorials: Product Type <https://www.youtube.com/watch?v=l6j0ZkP5mLM>`_
|
||||
|
||||
Set product type
|
||||
================
|
||||
|
||||
To set a product type, go to :menuselection:`Inventory app --> Products --> Products`, and select
|
||||
the desired product from the list.
|
||||
|
||||
On the product form, in the :guilabel:`Product Type` field, select:
|
||||
|
||||
- :guilabel:`Storable Product` for products tracked with stock counts. Only storable products can
|
||||
trigger reordering rules for generating purchase orders;
|
||||
|
||||
.. tip::
|
||||
Choose :guilabel:`Storable Product` if it is necessary to track a product's stock at various
|
||||
locations, inventory valuations, or if the product has lots and/or serial numbers.
|
||||
|
||||
- :guilabel:`Consumable` for products that are always assumed to be in stock, whose quantities are
|
||||
not necessary to track or forecast (e.g. nails, toilet paper, coffee, etc.). Consumables are
|
||||
replaceable and essential, but exact counts are unnecessary; or
|
||||
- :guilabel:`Service` for sellable service products that are performed, and not tracked with stock
|
||||
counts (i.e. maintenance, installation, or repair services).
|
||||
|
||||
.. image:: type/product-form.png
|
||||
:align: center
|
||||
:alt: Set a product type on the product form.
|
||||
|
||||
.. note::
|
||||
The product types listed above are part of the standard *Inventory* app. For access to the fields
|
||||
below, :ref:`install <general/install>` the corresponding apps **in addition** to *Inventory*.
|
||||
|
||||
- :guilabel:`Booking Fees`: charge a fee for booking appointments through the *Appointments* app.
|
||||
Requires the installation of the *Calendar* app and *Pay to Book* (`appointment_account_payment`)
|
||||
module
|
||||
- :guilabel:`Combo`: create discounted products sold in a bundle. Requires the installation of the
|
||||
*PoS* app.
|
||||
- :guilabel:`Event Ticket`: sold to attendees wanting to go to an event. Requires the installation
|
||||
of the *Events* app
|
||||
- :guilabel:`Event Booth`: sold to partners or sponsors to set up a booth at an event. Requires the
|
||||
installation of the *Events* app
|
||||
- :guilabel:`Course`: sell access to an educational course. Requires the installation of the
|
||||
*eLearning* app
|
||||
|
||||
Compare types
|
||||
=============
|
||||
|
||||
Below is a summary of how each product type affects common *Inventory* operations, like transfers,
|
||||
reordering rules, and the forecasted report. Click the chart item with an asterisk (*) to navigate
|
||||
to detailed sections.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Product type
|
||||
- Storable
|
||||
- Consumable
|
||||
- Service
|
||||
* - Physical product
|
||||
- Yes
|
||||
- Yes
|
||||
- No
|
||||
* - On-hand quantity
|
||||
- :ref:`Yes* <inventory/product_management/on-hand-store>`
|
||||
- :ref:`Yes* <inventory/product_management/on-hand-con>`
|
||||
- No
|
||||
* - :doc:`Inventory valuation
|
||||
<../../warehouses_storage/inventory_valuation/using_inventory_valuation>`
|
||||
- Yes
|
||||
- No
|
||||
- No
|
||||
* - Create transfer
|
||||
- :ref:`Yes* <inventory/product_management/transfer-store>`
|
||||
- :ref:`Yes* <inventory/product_management/transfer-con>`
|
||||
- :ref:`No* <inventory/product_management/transfer-serv>`
|
||||
* - :doc:`Lot/serial number tracking <differences>`
|
||||
- Yes
|
||||
- No
|
||||
- No
|
||||
* - Create purchase order
|
||||
- Yes
|
||||
- :ref:`Yes* <inventory/product_management/po>`
|
||||
- No
|
||||
* - Can be manufactured or subcontracted
|
||||
- :ref:`Yes* <inventory/product_management/manufacture>`
|
||||
- :ref:`Yes* <inventory/product_management/manufacture>`
|
||||
- No
|
||||
* - Can be in a kit
|
||||
- Yes
|
||||
- Yes
|
||||
- No
|
||||
* - Placed in package
|
||||
- Yes
|
||||
- :ref:`Yes* <inventory/product_management/package>`
|
||||
- No
|
||||
* - Appears on Inventory report
|
||||
- :ref:`Yes <inventory/product_management/report>`
|
||||
- No
|
||||
- No
|
||||
|
||||
.. _inventory/product_management/on-hand-store:
|
||||
|
||||
On-hand quantity
|
||||
----------------
|
||||
|
||||
A storable product's on-hand and forecasted quantities, based on incoming and outgoing orders, are
|
||||
reflected on the product form, accessed by going to :menuselection:`Inventory app --> Products -->
|
||||
Products`, and selecting the desired product.
|
||||
|
||||
.. figure:: type/on-hand.png
|
||||
:align: center
|
||||
:alt: Show "On Hand" and "Forecast" smart buttons.
|
||||
|
||||
Current and forecasted quantities are displayed in the **On Hand** and **Forecasted** smart
|
||||
buttons on the product form.
|
||||
|
||||
.. _inventory/product_management/on-hand-con:
|
||||
|
||||
On the other hand, consumable products are regarded as always available, and they **cannot** be
|
||||
managed using reordering rules or lot/serial numbers.
|
||||
|
||||
.. _inventory/product_management/transfer-store:
|
||||
|
||||
Create transfer
|
||||
---------------
|
||||
|
||||
*Transfers* are any warehouse operation, such as receipts, internal or batch transfers, or
|
||||
deliveries.
|
||||
|
||||
When creating a transfer for storable products in the *Inventory* app, transfers modify the on-hand
|
||||
quantity at each location.
|
||||
|
||||
For example, transferring five units from the internal location `WH/Stock` to `WH/Packing Zone`
|
||||
decreases the recorded quantity at `WH/Stock` and increases it at `WH/Packing Zone`.
|
||||
|
||||
.. _inventory/product_management/transfer-con:
|
||||
|
||||
For consumable products, transfers can be created, but exact quantities at each storage location are
|
||||
not tracked.
|
||||
|
||||
.. _inventory/product_management/transfer-serv:
|
||||
|
||||
Service products cannot be included in transfers, but these products can be `linked to projects and
|
||||
tasks for deadline tracking <https://www.youtube.com/watch?v=fix2LGkv13c>`_.
|
||||
|
||||
.. _inventory/product_management/po:
|
||||
|
||||
Create purchase order
|
||||
---------------------
|
||||
|
||||
Both storable and consumable products can be included in a request for quotation in the *Purchase*
|
||||
app.
|
||||
|
||||
However, when receiving consumable products, their on-hand quantity does not change upon validating
|
||||
the receipt (e.g. `WH/IN`).
|
||||
|
||||
.. _inventory/product_management/manufacture:
|
||||
|
||||
Manufacture or subcontract
|
||||
--------------------------
|
||||
|
||||
Storable and consumable products can be manufactured, subcontracted, or included in a bill of
|
||||
materials (BoM).
|
||||
|
||||
.. figure:: type/manufacture.png
|
||||
:align: center
|
||||
:alt: Show "Bill of Materials" and "Used In" smart buttons.
|
||||
|
||||
When the **Bill of Materials** and **Used In** smart buttons are visible on the product form,
|
||||
this indicates the product can be manufactured or used as a component of a |BOM|.
|
||||
|
||||
.. _inventory/product_management/package:
|
||||
|
||||
Packages
|
||||
--------
|
||||
|
||||
Both storable and consumable products can be placed in :doc:`packages <package>`.
|
||||
|
||||
However, for consumable products, the quantity is not tracked, and the product is not listed in the
|
||||
package's :guilabel:`Contents`, accessed by going to :menuselection:`Inventory app --> Products -->
|
||||
Packages`, and selecting the desired package.
|
||||
|
||||
.. figure:: type/package-content.png
|
||||
:align: center
|
||||
:alt: Show Packages page, containing the package contents list.
|
||||
|
||||
A consumable product was placed in the package, but the **Content** section does not list it.
|
||||
|
||||
If the *Move Entire Package* feature is enabled, moving a package updates the location of the
|
||||
contained storable products. However, the location of consumable products are not updated.
|
||||
|
||||
.. _inventory/product_management/report:
|
||||
|
||||
Inventory report
|
||||
----------------
|
||||
|
||||
**Only** storable products appear on the following reports.
|
||||
|
||||
The *stock report* is a comprehensive list of all on-hand, unreserved, incoming, and outgoing
|
||||
storable products. The report is only available to users with :doc:`administrator access
|
||||
<../../../../general/users/access_rights>`, and is found by navigating to :menuselection:`Inventory
|
||||
app --> Reporting --> Stock`.
|
||||
|
||||
.. image:: type/stock-report.png
|
||||
:align: center
|
||||
:alt: Show stock reporting list found in Inventory > Reporting > Stock.
|
||||
|
||||
The *location report* is a breakdown of each location (internal, external, or virtual) and the
|
||||
on-hand and reserved quantity of each storable product. The report is only available with the
|
||||
*Storage Location* feature activated (:menuselection:`Inventory app --> Configuration -->
|
||||
Settings`), and to users with :doc:`administrator access <../../../../general/users/access_rights>`.
|
||||
|
||||
Navigate to the location report by going to :menuselection:`Inventory app --> Reporting -->
|
||||
Locations`.
|
||||
|
||||
.. image:: type/location-report.png
|
||||
:align: center
|
||||
:alt: Show location reporting list found in Inventory > Reporting > Locations.
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
|
@@ -14,5 +14,4 @@ Advanced operations
|
|||
advanced_operations_warehouse/cross_dock
|
||||
advanced_operations_warehouse/stock_warehouses
|
||||
advanced_operations_warehouse/putaway
|
||||
advanced_operations_warehouse/usage
|
||||
advanced_operations_warehouse/cluster_picking
|
||||
|
|
|
|||
|
|
@@ -83,7 +83,7 @@ form.
|
|||
Set the :guilabel:`Package Use` field to :guilabel:`Reusable Box`.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Packages <inventory/management/packages>`
|
||||
:doc:`Packages <../../product_management/product_tracking/package>`
|
||||
|
||||
.. example::
|
||||
A package intended for cluster picking is named `CLUSTER-PACK-3` for easy identification. For
|
||||
|
|
|
|||
|
|
@@ -1,195 +0,0 @@
|
|||
=======================
|
||||
Packages and packagings
|
||||
=======================
|
||||
|
||||
In Odoo, there are a variety of ways to specify the amount of products being bought, stocked, and
|
||||
sold. *Packages* and *packagings* are all available to streamline inventory flows, allowing for a
|
||||
variety of configurations for products as they enter and leave the warehouse.
|
||||
|
||||
.. _inventory/management/packages:
|
||||
|
||||
Packages
|
||||
========
|
||||
|
||||
Packages are a physical container that holds one or several products from a picking, typically used
|
||||
for outgoing deliveries or internal transfers. Packages can be a reusable or disposable (shipping)
|
||||
box, and are **not** specific to a product.
|
||||
|
||||
Reusable boxes temporarily hold products during a picking to be brought to either a packing or
|
||||
shipping area. Disposable boxes are the actual shipping containers (e.g. cardboard boxes, envelopes,
|
||||
shipping bags, etc). These are used to ship the products out to customers.
|
||||
|
||||
Multiple items in a sales order (SO) can be separated into different packages to accommodate the
|
||||
products. For example, an :abbr:`SO (Sales Order)` that has 20 boxes of pencils and 4 boxes of
|
||||
erasers can be separated into two separate packages, each containing 10 boxes of pencils and 2 boxes
|
||||
of erasers.
|
||||
|
||||
.. note::
|
||||
Products do *not* have to be divided equally. Products can be divided into as many packages that
|
||||
are needed to accommodate the :abbr:`SO (Sales Order)`.
|
||||
|
||||
In Odoo, the quantity of products in each package needs to be recorded, so there is a full history
|
||||
for each product, including which package each item is shipped out in.
|
||||
|
||||
To use this method, ensure the :guilabel:`Packages` option is enabled, by navigating to
|
||||
:menuselection:`Inventory app --> Configuration --> Settings --> Operations`. Click the
|
||||
:guilabel:`Packages` check box, and then :guilabel:`Save` to activate the feature.
|
||||
|
||||
On a delivery order, assign which package to use by clicking on the :guilabel:`≣ (Detailed
|
||||
Operations)` icon to the right of each product in the :guilabel:`Operations` tab.
|
||||
|
||||
.. image:: usage/detailed-operations-icon.png
|
||||
:align: center
|
||||
:alt: Find detailed operations icon to the right on the product line.
|
||||
|
||||
Clicking the :guilabel:`≣ (Detailed Operations)` icon of a product reveals a pop-up window. In this
|
||||
window, the :guilabel:`Product` name, :guilabel:`Demand`, and :guilabel:`Quantity Done` are clearly
|
||||
displayed above the customizable product line.
|
||||
|
||||
Here, the warehouse location the product is coming from can be modified, in addition to the
|
||||
:guilabel:`Source Package` and :guilabel:`Destination Package`, which represents what package(s) the
|
||||
product(s) will be packaged into.
|
||||
|
||||
Click :guilabel:`Add a line` to include each additional package used. Enter the desired amount in
|
||||
the :guilabel:`Done` field to specify the amount of products that will go into the
|
||||
:guilabel:`Destination Package`.
|
||||
|
||||
Multiple packages in a single delivery
|
||||
--------------------------------------
|
||||
|
||||
Although a :abbr:`DO (Delivery Order)` is typically associated with a single package, orders can be
|
||||
split by clicking the :guilabel:`≣ (Detailed Operations)` icon next to the products on an :abbr:`SO
|
||||
(Sales Order)` line. This opens the :guilabel:`Detailed Operations` window with an editable table to
|
||||
specify which products are intended for which package.
|
||||
|
||||
.. example::
|
||||
To package 10 boxes of pencils with 2 boxes of erasers from the same :abbr:`SO (Sales Order)`,
|
||||
begin by navigating to the :abbr:`DO (Delivery Order)`. Then, select the :guilabel:`≣ (four
|
||||
horizontal lines)` icon to the right of the product, `Box of Pencils`. Clicking the icon opens
|
||||
the :guilabel:`Detailed Operations` window that is used to detail how products, like the 20 `Box
|
||||
of Pencils`, are packaged.
|
||||
|
||||
Type in `10` under the :guilabel:`Done` field to package 10 products into the
|
||||
:guilabel:`Destination Package`. To specify the destination package, type the name of an existing
|
||||
package (such as `PACK0000006`) under the field, :guilabel:`Destination Package`. If the package
|
||||
does not exist, Odoo displays the :guilabel:`Create` button to create a new package. Click
|
||||
:guilabel:`Add a line` to assign the remaining products in another package, `PACK0000007`.
|
||||
|
||||
.. image:: usage/add-destination-package.png
|
||||
:align: center
|
||||
:alt: Detailed operations pop-up where the amount of product going in a pack can be specified.
|
||||
|
||||
Select :guilabel:`Detailed Operations` on the product line for `Box of Erasers` and similarly set
|
||||
2 :guilabel:`Done` products to `PACK0000006` and `PACK0000007` each.
|
||||
|
||||
.. image:: usage/put-in-pack-button.png
|
||||
:align: center
|
||||
:alt: Put in pack button to match the done amount matches the demand.
|
||||
|
||||
Once all the products for each line have been entered, click :guilabel:`Confirm` to return to the
|
||||
:abbr:`DO (Delivery Order)`.
|
||||
|
||||
The :guilabel:`Done` quantity on the :abbr:`DO (Delivery Order)` updates as products are selected
|
||||
for each package. When the :guilabel:`Done` amount matches the :guilabel:`Demand` amount, click the
|
||||
:guilabel:`Validate` button to complete the delivery order.
|
||||
|
||||
.. tip::
|
||||
The :guilabel:`Put In Pack` button is intended to quickly package all products in the :abbr:`DO
|
||||
(Delivery Order)` into one new package. The option to rename the package, or modify its contents,
|
||||
is available in the :guilabel:`Detailed Operations` pop-up.
|
||||
|
||||
Clicking on the :guilabel:`Packages` smart button in the upper-right corner of the delivery order
|
||||
reveals a separate page, showing all the packages used in that :abbr:`DO (Delivery Order)`.
|
||||
|
||||
Packagings
|
||||
==========
|
||||
|
||||
*Packaging* is product specific, and refers to a disposable container that holds several units of a
|
||||
specific product. Unlike packages, packagings cannot be reusable, and each specific packaging must
|
||||
be defined on the individual product form.
|
||||
|
||||
For example, different packages for cans of soda can be configured as a 6-pack, a 12-pack, or a case
|
||||
of 36. Each flavor of soda would need a `6`, `12`, and `36` can packaging configured on the
|
||||
individual product since packagings are product specific, not generic.
|
||||
|
||||
Set up packagings
|
||||
-----------------
|
||||
|
||||
To use packagings, ensure the :guilabel:`Product Packagings` feature is enabled. To do that,
|
||||
navigate to :menuselection:`Inventory app --> Configuration --> Settings`. Then, under the
|
||||
:guilabel:`Products` heading, check the box next to :guilabel:`Product Packagings`, and click
|
||||
:guilabel:`Save`.
|
||||
|
||||
In Odoo, product packagings are used on sales/purchase orders and inventory transfers.
|
||||
|
||||
Next, to create packagings, navigate to :menuselection:`Inventory app --> Products --> Products` and
|
||||
click on the desired product, then click :guilabel:`Edit` on the product page.
|
||||
|
||||
Under the :guilabel:`Inventory` tab, scroll down to the :guilabel:`Packaging` section, and click
|
||||
:guilabel:`Add a line`. Then, a pop-up window appears, in which the following information for each
|
||||
packaging should be entered:
|
||||
|
||||
- :guilabel:`Packaging`: name of packaging that appears on sales/purchase orders as a packaging
|
||||
option for the product
|
||||
- :guilabel:`Contained quantity`: amount of product in the packaging
|
||||
- :guilabel:`Barcode`: identifier used with the :ref:`Barcode app <barcode/operations/intro>` to
|
||||
trace the packaging of a product during stock moves or pickings. Leave blank if not in use
|
||||
- :guilabel:`Company`: indicates the packaging is only available at the selected company. Leave
|
||||
blank to make the packaging available across all companies.
|
||||
|
||||
.. example::
|
||||
Create a packaging type for 6 cans of the product, `Grape Soda`, by naming the
|
||||
:guilabel:`Packaging` to `6-pack` and setting the :guilabel:`Contained quantity` to `6` in the
|
||||
pop-up window that appears after clicking on :guilabel:`Add a line`.
|
||||
|
||||
.. image:: usage/create-product-packages.png
|
||||
:align: center
|
||||
:alt: Create 6-pack case for product.
|
||||
|
||||
When all the necessary information has been entered, either click :guilabel:`Save & Close` to save
|
||||
the packaging and return to the product detail form, or :guilabel:`Save & New` to save the packaging
|
||||
and create another one in a fresh pop-up window.
|
||||
|
||||
.. example::
|
||||
View all product packagings in the :guilabel:`Inventory` tab of the product form.
|
||||
|
||||
.. image:: usage/display-product-packaging.png
|
||||
:align: center
|
||||
:alt: Show packaging and contained quantities, specified on the product page form in the
|
||||
Inventory tab.
|
||||
|
||||
View all packagings
|
||||
-------------------
|
||||
|
||||
To view all packagings that have been created, go to :menuselection:`Inventory app --> Configuration
|
||||
--> Product Packagings`. Doing so reveals the :guilabel:`Product Packagings` page with a complete
|
||||
list of all packagings that have been created for all products. Create new packagings by clicking
|
||||
:guilabel:`Create`.
|
||||
|
||||
.. example::
|
||||
Two soda products, `Grape Soda` and `Diet Coke`, have three types of packaging configured. On the
|
||||
:guilabel:`Product Packagings` page, each product can sold as a `6-Pack` that contains 6
|
||||
products, `12-Pack` of 12 products, or a `Case` of 32 products.
|
||||
|
||||
.. image:: usage/packagings.png
|
||||
:align: center
|
||||
:alt: List of different packagings for products.
|
||||
|
||||
Apply packagings
|
||||
----------------
|
||||
|
||||
When creating a sales order in the :menuselection:`Sales` app, specify the packagings that should be
|
||||
used for the product(s). The chosen packaging is displayed on the :abbr:`SO (Sales Order)` under the
|
||||
:guilabel:`Package` field.
|
||||
|
||||
.. example::
|
||||
18 cans of the product, `Grape Soda`, is packed using three 6-pack packagings.
|
||||
|
||||
.. image:: usage/packagings-sales-order.png
|
||||
:align: center
|
||||
:alt: Assign packagings on the Sales Order Line.
|
||||
|
||||
.. tip::
|
||||
Packaging can be used in conjunction with Odoo :ref:`Barcode <inventory/barcode/software>`. When
|
||||
receiving products from suppliers, scanning the packaging barcode automatically adds the number
|
||||
of units in the packaging to the internal count of the product.
|
||||
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
|
@@ -169,7 +169,7 @@ the :guilabel:`Packages` feature.
|
|||
:alt: Enable the packages feature.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Packages <inventory/management/packages>`
|
||||
- :doc:`Packages <../product_management/product_tracking/package>`
|
||||
- :doc:`2-step delivery <../shipping_receiving/daily_operations/receipts_delivery_two_steps>`
|
||||
- :doc:`3-step delivery <../shipping_receiving/daily_operations/delivery_three_steps>`
|
||||
|
||||
|
|
|
|||
|
|
@@ -5,8 +5,9 @@ Use VoIP services in Odoo with OnSIP
|
|||
Introduction
|
||||
============
|
||||
|
||||
Odoo *VoIP* can be set up to work together with `OnSIP <https://www.onsip.com/>`_. OnSIP is a VoIP
|
||||
provider. An account is needed with OnSIP in order to use this service.
|
||||
Odoo *VoIP* can be set up to work together with `OnSIP (Odoo Landing Page)
|
||||
<https://info.onsip.com/odoo/>`_. OnSIP is a VoIP provider. An account is needed with OnSIP in order
|
||||
to use this service.
|
||||
|
||||
Before setting up an account with OnSIP, make sure the company's home area, and the areas that will
|
||||
be called, are covered by OnSIP services.
|
||||
|
|
@@ -128,14 +129,13 @@ Incorrect number
|
|||
~~~~~~~~~~~~~~~~
|
||||
|
||||
If an *Incorrect Number* message appears in the Odoo widget, make sure to use the international
|
||||
format for the number. This means leading with the :guilabel:`+ (plus)` sign, followed by the
|
||||
international country code.
|
||||
format for the number. This means leading with the international country code.
|
||||
|
||||
A country code is a locator code that allows access to the desired country's phone system. The
|
||||
country code is dialed first, prior to the target number. Each country in the world has its own
|
||||
specific country code.
|
||||
|
||||
For example, `+16505555555` (where `+1` is the international prefix for the United States).
|
||||
For example, `16505555555` (where `1` is the international prefix for the United States).
|
||||
|
||||
.. image:: onsip/onsip05.png
|
||||
:align: center
|
||||
|
|
|
|||
|
|
@@ -126,4 +126,4 @@ Customize posts by opening a blog post and clicking :menuselection:`Edit --> Cus
|
|||
:guilabel:`Select To Tweet`: visitors are offered to tweet the text they select.
|
||||
|
||||
.. tip::
|
||||
Use :ref:`Plausible <website/analytics/plausible>` to keep track of the traffic on your blog.
|
||||
Use :ref:`Plausible <analytics/plausible>` to keep track of the traffic on your blog.
|
||||
|
|
|
|||
|
|
@@ -30,5 +30,5 @@ Other options include **multiple views (Pivot, etc.), comparison** by periods or
|
|||
Analytics
|
||||
=========
|
||||
|
||||
It is possible to link your Odoo website with :ref:`website/analytics/plausible` and
|
||||
:ref:`website/analytics/GA`.
|
||||
It is possible to link your Odoo website with :ref:`analytics/plausible` and
|
||||
:ref:`analytics/google-analytics`.
|
||||
|
|
|
|||
|
|
@@ -37,12 +37,13 @@ Search for the desired domain name and check its availability.
|
|||
Ensure the Website app is installed if the domain name registration option does not appear.
|
||||
|
||||
Select the desired domain name, fill in the :guilabel:`Domain Owner` form, and click
|
||||
:guilabel:`Register`. The chosen domain name is directly linked to the database, but you still need
|
||||
to :ref:`map your domain name to your Odoo website <domain-name/db-map>`.
|
||||
:guilabel:`Register`. The chosen domain name is directly linked to the database.
|
||||
|
||||
.. image:: domain_names/domain-owner.png
|
||||
:alt: Filling in the domain owner information
|
||||
|
||||
Next, you should :ref:`map your domain name to your Odoo website <domain-name/website-map>`.
|
||||
|
||||
.. important::
|
||||
A verification email from `noreply@domainnameverification.net` will be sent to the email address
|
||||
provided in the :guilabel:`Domain Owner` form. It is essential to verify your email address to
|
||||
|
|
@@ -268,7 +269,7 @@ To make your custom domain name the *web base URL* of your database, access your
|
|||
custom domain name and log in as an administrator :dfn:`(a user part of the Settings access right
|
||||
group under Administration)`.
|
||||
|
||||
.. warning::
|
||||
.. important::
|
||||
If you access your database with the original Odoo address (e.g., `mycompany.odoo.com`), the *web
|
||||
base URL* of your database will be updated accordingly. To prevent the automatic update of the
|
||||
*web base URL* when an administrator logs in to the database, activate the :ref:`developer mode
|
||||
|
|
|
|||
|
|
@@ -152,8 +152,8 @@ Reporting
|
|||
Analytics
|
||||
---------
|
||||
|
||||
Each website has its own :ref:`analytics <website/analytics/plausible>`. To switch between websites,
|
||||
click the buttons in the upper right corner.
|
||||
Each website has its own :ref:`analytics <analytics/plausible>`. To switch between websites, click
|
||||
the buttons in the upper right corner.
|
||||
|
||||
.. image:: multi_website/analytics-switch-websites.png
|
||||
:alt: Switch websites in analytics
|
||||
|
|
|
|||
|
|
@@ -5,14 +5,14 @@ Website analytics
|
|||
Website analytics helps website owners monitor how people use their site. It provides data on
|
||||
visitor demographics, behavior, and interactions, helping improve websites and marketing strategies.
|
||||
|
||||
You can track your Odoo website's traffic using :ref:`website/analytics/plausible` or
|
||||
:ref:`website/analytics/GA`. We recommend using Plausible.io as it is privacy-friendly, lightweight,
|
||||
and easy to use.
|
||||
You can track your Odoo website's traffic using :ref:`analytics/plausible` or
|
||||
:ref:`analytics/google-analytics`. We recommend using Plausible.io as it is privacy-friendly,
|
||||
lightweight, and easy to use.
|
||||
|
||||
The Plausible analytics dashboard is also integrated into Odoo and can be accessed
|
||||
via :menuselection:`Website --> Reporting --> Analytics`.
|
||||
|
||||
.. _website/analytics/plausible:
|
||||
.. _analytics/plausible:
|
||||
|
||||
Plausible.io
|
||||
============
|
||||
|
|
@@ -83,7 +83,7 @@ Plausible.io account, proceed as follows:
|
|||
.. seealso::
|
||||
`Plausible Analytics documentation <https://plausible.io/docs>`_
|
||||
|
||||
.. _website/analytics/GA:
|
||||
.. _analytics/google-analytics:
|
||||
|
||||
Google Analytics
|
||||
================
|
||||
|
|
@@ -127,7 +127,7 @@ To follow your Odoo website's traffic with Google Analytics:
|
|||
.. seealso::
|
||||
`Google documentation on setting up Analytics for a website <https://support.google.com/analytics/answer/1008015?hl=en/>`_
|
||||
|
||||
.. _website/analytics/gtm:
|
||||
.. _analytics/google-tag-manager:
|
||||
|
||||
Google Tag Manager
|
||||
==================
|
||||
|
|
|
|||
|
|
@@ -50,7 +50,7 @@ country of origin for those clicks.
|
|||
#. You can also access the link tracker on *odoo.com/r* via your browser.
|
||||
#. Activate the developer mode (:menuselection:`Settings --> Activate the developer mode`) and
|
||||
get access to the *Link Tracker* module and its back-end functionalities.
|
||||
#. Integrated with :ref:`website/analytics/GA`, those trackers allow you to
|
||||
see the number of clicks and visitors to keep you on top of your marketing campaigns.
|
||||
#. Integrated with :ref:`analytics/google-analytics`, those trackers allow you to see the number
|
||||
of clicks and visitors to keep you on top of your marketing campaigns.
|
||||
#. The integration with the :doc:`CRM </applications/sales/crm/track_leads/prospect_visits>` application allows
|
||||
you to understand where your leads and opportunities are coming from.
|
||||
|
|
|
|||
|
|
@@ -1,3 +1,5 @@
|
|||
:show-content:
|
||||
|
||||
===============
|
||||
Building blocks
|
||||
===============
|
||||
|
|
@@ -138,3 +140,8 @@ Click the pen icon to edit their name.
|
|||
|
||||
.. image:: building_blocks/custom-blocks.png
|
||||
:alt: Custom section with saved building blocks
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
building_blocks/structure
|
||||
|
|
|
|||
|
|
@@ -0,0 +1,60 @@
|
|||
================
|
||||
Structure blocks
|
||||
================
|
||||
|
||||
The website configurator provides a range of :guilabel:`Structure` :doc:`building blocks
|
||||
<../building_blocks>` to design your website's layout, including headings, images, and text.
|
||||
|
||||
To add a block to a web page, click :guilabel:`Edit`, select a block from the :guilabel:`Structure`
|
||||
section, and drag and drop it into the page.
|
||||
|
||||
.. image:: structure/structure-blocks.png
|
||||
:alt: Dragging and dropping a building block into a page
|
||||
|
||||
Below are presented two types of structure blocks: :ref:`Banner <structure/banner>` and
|
||||
:ref:`Masonry <structure/masonry>`.
|
||||
|
||||
.. _structure/banner:
|
||||
|
||||
Banner block
|
||||
------------
|
||||
|
||||
The :guilabel:`Banner` block combines a title, text, images, and a call to action button, making it
|
||||
suitable for placement at the top of a website.
|
||||
|
||||
.. image:: structure/default-image-content.png
|
||||
:alt: The default banner block
|
||||
|
||||
Call to action
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The call to action button encourages visitors to take a specific action, for example, consulting
|
||||
your shop, downloading a file, or making an appointment.
|
||||
|
||||
.. image:: structure/call-to-action.png
|
||||
:alt: Selecting the call to action button
|
||||
|
||||
To change the button's link, select it and click the :guilabel:`Edit Link` icon. Additional
|
||||
customization options are available in the :guilabel:`Inline Text` section.
|
||||
|
||||
.. image:: structure/inline-text.png
|
||||
:alt: Configuring the call to action button
|
||||
|
||||
.. _structure/masonry:
|
||||
|
||||
Masonry block
|
||||
-------------
|
||||
|
||||
The :guilabel:`Masonry` building block offers a range of templates that associate image and text
|
||||
bricks. To change the default template, go to the :guilabel:`Customize` tab, click
|
||||
:guilabel:`Template` and select one.
|
||||
|
||||
.. image:: structure/masonry-template.png
|
||||
:alt: Selecting a masonry building block template
|
||||
|
||||
.. tip::
|
||||
The :guilabel:`Masonry` building block allows you to add text on top of images. To do so, go to
|
||||
the :guilabel:`Customize` tab, scroll to :guilabel:`Add Elements`, and click :guilabel:`Text`.
|
||||
|
||||
.. image:: structure/masonry-text-box.png
|
||||
:alt: Adding text on top of an image
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
|
@@ -60,8 +60,8 @@ The following sections are available:
|
|||
- :guilabel:`Input Fields`: Customize fields where you can enter data, e.g., a search bar or a form.
|
||||
|
||||
- :guilabel:`Advanced`: You can hide the header bar of your website using the
|
||||
:guilabel:`Show Header` button, inject :ref:`head and body code <website/analytics/gtm>`, enter
|
||||
your :guilabel:`Google Map Custom Key`, change the colors of the :guilabel:`Success`,
|
||||
:guilabel:`Show Header` button, inject :ref:`head and body code <analytics/google-tag-manager>`,
|
||||
enter your :guilabel:`Google Map Custom Key`, change the colors of the :guilabel:`Success`,
|
||||
:guilabel:`Info`, :guilabel:`Warning`, and :guilabel:`Error` pop up messages by clicking the
|
||||
related :guilabel:`Status Colors` buttons, and customize the :guilabel:`Grays` elements of your
|
||||
site.
|
||||
|
|
|
|||
|
|
@@ -939,6 +939,16 @@ A domain is a list of criteria, each criterion being a triple (either a
|
|||
Takes the semantics of the model into account (i.e following the
|
||||
relationship field named by
|
||||
:attr:`~odoo.models.Model._parent_name`).
|
||||
``any``
|
||||
matches if any record in the relationship traversal through
|
||||
``field_name`` (:class:`~odoo.fields.Many2one`,
|
||||
:class:`~odoo.fields.One2many`, or :class:`~odoo.fields.Many2many`)
|
||||
satisfies the provided domain ``value``.
|
||||
``not any``
|
||||
matches if no record in the relationship traversal through
|
||||
``field_name`` (:class:`~odoo.fields.Many2one`,
|
||||
:class:`~odoo.fields.One2many`, or :class:`~odoo.fields.Many2many`)
|
||||
satisfies the provided domain ``value``.
|
||||
|
||||
* ``value``
|
||||
variable type, must be comparable (through ``operator``) to the named
|
||||
|
|
@@ -960,21 +970,16 @@ Domain criteria can be combined using logical operators in *prefix* form:
|
|||
|
||||
.. example::
|
||||
|
||||
To search for partners named *ABC*, from belgium or germany, whose language
|
||||
is not english::
|
||||
To search for partners named *ABC*, with a phone or mobile number containing *7620*::
|
||||
|
||||
[('name','=','ABC'),
|
||||
('language.code','!=','en_US'),
|
||||
'|',('country_id.code','=','be'),
|
||||
('country_id.code','=','de')]
|
||||
[('name', '=', 'ABC'),
|
||||
'|', ('phone','ilike','7620'), ('mobile', 'ilike', '7620')]
|
||||
|
||||
This domain is interpreted as:
|
||||
To search sales orders to invoice that have at least one line with
|
||||
a product that is out of stock::
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
(name is 'ABC')
|
||||
AND (language is NOT english)
|
||||
AND (country is Belgium OR Germany)
|
||||
[('invoice_status', '=', 'to invoice'),
|
||||
('order_line', 'any', [('product_id.qty_available', '<=', 0)])]
|
||||
|
||||
Unlink
|
||||
------
|
||||
|
|
|
|||
|
|
@@ -12,6 +12,12 @@ easily available over XML-RPC_ and accessible from a variety of languages.
|
|||
Check out the `manual <https://www.php.net/manual/en/xmlrpc.installation.php>`_
|
||||
for the installation steps.
|
||||
|
||||
.. note::
|
||||
Access to data via the external API is only available on *Custom* Odoo pricing plans. Access to
|
||||
the external API is not available on *One App Free* or *Standard* plans. For more information
|
||||
visit the `Odoo pricing page <https://www.odoo.com/pricing-plan>`_ or reach out to your Customer
|
||||
Success Manager.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Tutorial on web services <../howtos/web_services>`
|
||||
|
||||
|
|
|
|||
|
|
@@ -287,7 +287,7 @@ provides a few helper functions, located in :file:`@web/core/assets`.
|
|||
:param Object assets: a description of various assets that should be loaded
|
||||
:returns: Promise<void>
|
||||
|
||||
Load the assets described py the `assets` parameter. It is an object that
|
||||
Load the assets described by the `assets` parameter. It is an object that
|
||||
may contain the following keys:
|
||||
|
||||
.. list-table::
|
||||
|
|
|
|||
|
|
@@ -1826,8 +1826,6 @@ The `field` element can have the following attributes:
|
|||
The filters to apply to the completion results for fields that allow for auto-completion (e.g.,
|
||||
:class:`~odoo.fields.Many2one`).
|
||||
|
||||
It can contain user-provided values, which are available under the `self` variable.
|
||||
|
||||
:requirement: Optional
|
||||
:type: :ref:`Python expression <reference/view_architectures/python_expression>`
|
||||
:default: `[]`
|
||||
|
|
|
|||
|
|
@@ -100,6 +100,7 @@ applications/general/email_communication/email_template.rst applications/general
|
|||
applications/general/export_import_data.rst applications/essentials/export_import_data.rst # general/* -> essentials/*
|
||||
applications/general/geolocation.rst applications/general/integrations/geolocation.rst # * -> integrations/*
|
||||
applications/general/in_app_purchase.rst applications/essentials/in_app_purchase.rst # general/* -> essentials/*
|
||||
applications/general/iot/config/flash_sdcard.rst applications/general/iot/config/updating_iot.rst # flash_sdcard --> updating_iot
|
||||
applications/general/payment_acquirers/adyen.rst applications/finance/payment_acquirers/adyen.rst
|
||||
applications/general/payment_acquirers/alipay.rst applications/finance/payment_acquirers/alipay.rst
|
||||
applications/general/payment_acquirers/buckaroo.rst applications/finance/payment_acquirers/buckaroo.rst
|
||||
|
|
|
|||