[FIX] *: remove trailing whitespaces

Part-of: odoo/documentation#2983
This commit is contained in:
Victor Feyens 2022-11-18 10:06:22 +00:00
parent 968ed0a17a
commit c367974170
105 changed files with 902 additions and 904 deletions

View File

@ -392,7 +392,7 @@ The solutions to support livechat/motifications in a WSGI application are:
* Deploy a threaded version of Odoo (instead of a process-based preforking
one) and redirect only requests to URLs starting with ``/websocket/`` to
that Odoo, this is the simplest and the websocket URL can double up as the cron
that Odoo, this is the simplest and the websocket URL can double up as the cron
instance.
* Deploy an evented Odoo via ``odoo-gevent`` and proxy requests starting
with ``/websocket/`` to
@ -410,7 +410,7 @@ a static HTTP server.
Serving static files
--------------------
Odoo static files are located in each module's :file:`static/` folder, so static files can be served
Odoo static files are located in each module's :file:`static/` folder, so static files can be served
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
(and file) in the various addons paths.
@ -420,13 +420,13 @@ by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up
Using the above NGINX (https) configuration, the following location block should be added to
serve static files via NGINX.
.. code-block:: nginx
location @odoo {
# copy-paste the content of the / location block
}
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
root /usr/lib/python3/dist-packages/odoo/addons;
@ -444,11 +444,11 @@ by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up
serve static files via NGINX.
.. code-block:: nginx
location @odoo {
# copy-paste the content of the / location block
}
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
root /opt/odoo;
@ -483,7 +483,7 @@ X-Sendfile and X-Accel).
- The X-Accel extension for NGINX **does** require the following additionnal configuration:
.. code-block:: nginx
location /web/filestore {
internal;
alias /path/to/odoo/data-dir/filestore;

View File

@ -17,7 +17,7 @@ You can use a custom domain name to access your Odoo database and websites:
``odoo.com`` for both the URL and the emails (e.g., ``https://example.odoo.com``).
.. important::
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
databases for one year. Visitors can then access your website with an address such as
``www.example.com`` rather than the default ``example.odoo.com``.

View File

@ -41,7 +41,7 @@ On Linux, using an installer
.. code-block:: console
$ sudo dpkg -i <path_to_enterprise_deb>
* Update your database to the enterprise packages using
.. code-block:: console

View File

@ -123,7 +123,7 @@ server in Odoo. The configuration automatically loads the token in Odoo, and a t
:align: center
:alt: Configure Outgoing Email Servers in Odoo.
Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should
Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should
appear. The Odoo database can now send safe, secure emails through Google using OAuth
authentication.

View File

@ -259,16 +259,16 @@ This server only keeps one month of backups: 7 daily and 4 weekly backups.
Dedicated backup servers keep the same backups, as well as 3 additional monthly backups.
To restore or download one of these monthly backups, please `contact us <https://www.odoo.com/help>`_.
If you merge a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked python
dependencies (in :file:`requirements.txt`), then Odoo.sh performs a backup automatically (flagged with type Update in the list),
as either the container will be changed by the installation of new pip packages, either the database itself will be
changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially
If you merge a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked python
dependencies (in :file:`requirements.txt`), then Odoo.sh performs a backup automatically (flagged with type Update in the list),
as either the container will be changed by the installation of new pip packages, either the database itself will be
changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially
break things.
If you merge a commit that only changes some code without the above-mentioned modifications, then no backup is done
by Odoo.sh, as neither the container nor the database is modified so the platform considers this safe enough. Of course,
as an extra precaution, you can make a backup manually before making big changes in your production sources in case
something goes wrong (those manual backups are available for about one week). To avoid abuse, we limit manual backups
If you merge a commit that only changes some code without the above-mentioned modifications, then no backup is done
by Odoo.sh, as neither the container nor the database is modified so the platform considers this safe enough. Of course,
as an extra precaution, you can make a backup manually before making big changes in your production sources in case
something goes wrong (those manual backups are available for about one week). To avoid abuse, we limit manual backups
to 5 per day.
The *import database* feature accepts database archives in the format provided by:

View File

@ -80,12 +80,12 @@ FAQ
I have an error when I try to delete my synchronization within Odoo
-------------------------------------------------------------------
Odoo can't permanently delete the connection you have created with the banking institution. However,
it can revoke the consent you gave so that Odoo won't be able to access your account anymore. The
error you are seeing is probably a message telling you that the consent was revoked, but the record
could not be deleted as it still exists within Salt edge. If you want to remove the connection
completely, please connect to your `Salt Edge account <https://www.saltedge.com/dashboard>`_
and manually delete your synchronization. Once this is done, you can go back to Odoo to delete the
Odoo can't permanently delete the connection you have created with the banking institution. However,
it can revoke the consent you gave so that Odoo won't be able to access your account anymore. The
error you are seeing is probably a message telling you that the consent was revoked, but the record
could not be deleted as it still exists within Salt edge. If you want to remove the connection
completely, please connect to your `Salt Edge account <https://www.saltedge.com/dashboard>`_
and manually delete your synchronization. Once this is done, you can go back to Odoo to delete the
record.
I have an error saying that I have already synchronized this account

View File

@ -11,7 +11,7 @@ Configuration
.. image:: manage_cash_register/journal.png
:align: center
1. Configure the Cash journal in :menuselection:`Accounting --> Configuration -->
1. Configure the Cash journal in :menuselection:`Accounting --> Configuration -->
Journals`.
2. In the tab Journal Entries, the Default Debit and Credit Account can be

View File

@ -23,9 +23,9 @@ modules are available:
- **l10n_ar_reports**: Add VAT Book report which is a legal requirement in Argentine and that holds
the VAT detail info of sales or purchases recorded on the journal entries. This module includes as
well the VAT summary report that is used to analyze the invoice
- **l10n_ar_edi**: This module includes all technical and functional requirements to generate
Electronic Invoice via web service, based on the AFIP regulations.
- **l10n_ar_edi**: This module includes all technical and functional requirements to generate
Electronic Invoice via web service, based on the AFIP regulations.
Configuration
@ -48,7 +48,7 @@ fiscal obligation and structure of the company:
.. image:: argentina/argentina02.png
:align: center
Chart of Account
~~~~~~~~~~~~~~~~
@ -75,9 +75,9 @@ Environment
The AFIP infrastructure is replicated in two separate environments, Testing and Production.
Testing is provided so that the Companies can test their developments until they are ready to move
into the Production environment. As these two environments are completely isolated from each other,
the digital certificates of one instance are not valid in the other one.
Testing is provided so that the Companies can test their developments until they are ready to move
into the Production environment. As these two environments are completely isolated from each other,
the digital certificates of one instance are not valid in the other one.
Go to :menuselection:`Accounting --> Settings --> Argentinian Localization` to select the environment:
@ -87,10 +87,10 @@ Go to :menuselection:`Accounting --> Settings --> Argentinian Localization` to s
AFIP Certificates
*****************
The electronic invoice and other afip services work with WebServices (WS) provided by the AFIP.
The electronic invoice and other afip services work with WebServices (WS) provided by the AFIP.
In order to enable communication with the AFIP, the first step is to request a Digital Certificate
if you dont have one already.
if you dont have one already.
#. Generate certificate Sign Request (Odoo). When this option is selected a file with extension
``.csr`` (certificate signing request) is generated to be used the AFIP portal to request the
@ -101,7 +101,7 @@ if you dont have one already.
#. Generate Certificate (AFIP). Access the AFIP portal and follow the instructions described in the
next document in order to get a certificate. `Get AFIP Certificate
<http://www.afip.gob.ar/ws/WSAA/wsaa_obtener_certificado_produccion.pdf>`_.
#. Upload Certificate and Private Key (Odoo). Once the certificate has been generated, it needs to
be uploaded in Odoo, using the pencil next in the field “Certificado” and selecting the
corresponding file.
@ -109,7 +109,7 @@ if you dont have one already.
.. image:: argentina/argentina_edi_03.png
.. tip::
In case you need to configure the Homologation Certificate, please refer to the AFIP official
In case you need to configure the Homologation Certificate, please refer to the AFIP official
documentation: `Homologation Certificate
<http://www.afip.gob.ar/ws/documentacion/certificados.asp>`_.
@ -244,11 +244,11 @@ defines as well:
#. The structure and data of the electronic invoice file.
Web Services
************
- ``wsfev1: Electronic Invoice.`` This is the most common service,
is used to generated invoices for document types A, B, C, M with no detail per item.
- ``wsbfev1: Electronic Fiscal Bond.`` For those who invoice capital goods and wish
to access the benefit of the Electronic Tax Bonds granted by the Ministry of Economy. For more
************
- ``wsfev1: Electronic Invoice.`` This is the most common service,
is used to generated invoices for document types A, B, C, M with no detail per item.
- ``wsbfev1: Electronic Fiscal Bond.`` For those who invoice capital goods and wish
to access the benefit of the Electronic Tax Bonds granted by the Ministry of Economy. For more
detail you can refer to the next link: `Fiscal Bond
<https://www.argentina.gob.ar/acceder-un-bono-por-fabricar-bienes-de-capital>`_.
- ``wsfexv1: Electronic Exportation Invoice.`` Used to generate invoices for international customers
@ -282,8 +282,8 @@ can be used:
:align: center
.. note::
When creating the Purchase journals, it's possible to define if they can be related to document
types or not. In case that the option to use documents is selected, there is no need to manually
When creating the Purchase journals, it's possible to define if they can be related to document
types or not. In case that the option to use documents is selected, there is no need to manually
associate the document type sequences as the document number is provided by the vendor.
@ -326,22 +326,22 @@ responsibility type but it can be updated manually by the user.
Electronic Invoice elements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
When using electronic invoice, if all the information is correct the Invoice is posted in the
standard way, in case that something needs to be addressed (check the section common errors for more
detail), an error message is raised indicating the issue/proposed solution and the invoice remains
in draft until the related data is corrected.
When using electronic invoice, if all the information is correct the Invoice is posted in the
standard way, in case that something needs to be addressed (check the section common errors for more
detail), an error message is raised indicating the issue/proposed solution and the invoice remains
in draft until the related data is corrected.
Once the invoice is posted, the information related to the AFIP validation and status is displayed
in the AFIP Tab, including:
Once the invoice is posted, the information related to the AFIP validation and status is displayed
in the AFIP Tab, including:
- AFIP Autorisation: CAE number.
- Expiration date: Deadline to deliver the invoice to the customers. Normally 10 days after the
CAE is generated.
- Expiration date: Deadline to deliver the invoice to the customers. Normally 10 days after the
CAE is generated.
- Result:
- Aceptado en AFIP.
- Aceptado con Observaciones.
- Aceptado con Observaciones.
.. image:: argentina/argentina_edi_15.png
:align: center
@ -378,7 +378,7 @@ Special Use Cases
Invoices for Services
*********************
For electronic invoices that include Services, the AFIP requires to report the service starting
and ending date, this information can be filled in the tab “Other Info”:
and ending date, this information can be filled in the tab “Other Info”:
.. image:: argentina/argentina_edi_06.png
:align: center
@ -392,34 +392,34 @@ filled automatically considering the beginning and day of the invoice month:
Exportation Invoices
********************
The invoices related to Exportation transactions required a Journal that used the AFIP POS
The invoices related to Exportation transactions required a Journal that used the AFIP POS
System “Expo Voucher - Web Service” so the proper document type be associated:
.. image:: argentina/argentina_edi_08.png
:align: center
When the customer selected in the Invoice has set the AFIP responsibility type as “Cliente /
When the customer selected in the Invoice has set the AFIP responsibility type as “Cliente /
Proveedor del Exterior” or “IVA Liberado Ley Nº 19.640”, Odoo automatically assigned:
- Journal related to the exportation Web Service.
- Exportation document type .
- Fiscal position: Compras/Ventas al exterior.
- Concepto AFIP: Products / Definitive export of goods.
- Exempt Taxes.
- Exempt Taxes.
.. image:: argentina/argentina_edi_09.png
:align: center
.. note::
The Exportation Documents required the Incoterm in :menuselection:`Other Info --> Accounting`:
.. image:: argentina/argentina_edi_13.png
:align: center
Fiscal Bond
***********
The Electronic Fiscal bond is used for those who invoice capital goods and wish to access
The Electronic Fiscal bond is used for those who invoice capital goods and wish to access
the benefit of the Electronic Tax Bonds granted by the Ministry of Economy.
For these transactions its important to have into consideration the next requirements:
@ -435,77 +435,77 @@ For these transactions its important to have into consideration the next requ
- Quantity.
- Unit of measurement.
- Bonus.
- VAT rate.
- VAT rate.
Electronic Credit Invoice MiPyme (FCE)
Electronic Credit Invoice MiPyme (FCE)
**************************************
**Invoices:** There are several document types classified as Mipyme also known as
Electronic Credit Invoice (FCE in spanish), which is used to impulse the SME, its purpose is
to develop a mechanism that improves the financing conditions of these companies and allows
them to increase their productivity, through the early collection of credits and receivables
issued to their clients and / or vendors.
Electronic Credit Invoice (FCE in spanish), which is used to impulse the SME, its purpose is
to develop a mechanism that improves the financing conditions of these companies and allows
them to increase their productivity, through the early collection of credits and receivables
issued to their clients and / or vendors.
For these transactions its important to have into consideration the next requirements:
- Specific document types (201, 202, 206, etc).
- The emisor should be eligible by the AFIP to MiPyme transactions.
- The amount should be bigger than 100,000 ARS.
- A bank account type CBU must be related to the emisor, otherwise the invoice cant
be validated, having these errors messages for example:
- The emisor should be eligible by the AFIP to MiPyme transactions.
- The amount should be bigger than 100,000 ARS.
- A bank account type CBU must be related to the emisor, otherwise the invoice cant
be validated, having these errors messages for example:
.. image:: argentina/argentina_edi_10.png
:align: center
**Credit& Debit Notes:** When creating a Credit/Debit note related to a FCE document, it is
**Credit& Debit Notes:** When creating a Credit/Debit note related to a FCE document, it is
important take the next points into consideration:
- Use the Credit and Debit Note buttons, so the correct reference of the originator
document passed to the note.
- Use the Credit and Debit Note buttons, so the correct reference of the originator
document passed to the note.
.. image:: argentina/argentina_edi_11.png
:align: center
- The document letter should be the same than the originator document (either A or B).
- The same currency as the source document must be used. When using a secondary currency
there is an exchange difference if the currency rate is different between the emission day
and the payment date, its possible to create a credit/debit note to decrease/increase the
amount to pay in ARS.
- The same currency as the source document must be used. When using a secondary currency
there is an exchange difference if the currency rate is different between the emission day
and the payment date, its possible to create a credit/debit note to decrease/increase the
amount to pay in ARS.
In the workflow we can have two scenarios:
#. The FCE is rejected so the Credit Note should have the field “FCE, is Cancellation?” as True.
#. The Credit Note, is created with the negative amount to annulate the FCE document,
in this case the field “FCE, is Cancellation?” must be empty (false).
#. The FCE is rejected so the Credit Note should have the field “FCE, is Cancellation?” as True.
#. The Credit Note, is created with the negative amount to annulate the FCE document,
in this case the field “FCE, is Cancellation?” must be empty (false).
.. image:: argentina/argentina_edi_12.png
:align: center
Invoice printed report
~~~~~~~~~~~~~~~~~~~~~~
The PDF report related to electronic invoices that have been validated by the AFIP includes
a barcode at the bottom of the format which represent the CAE number, the Expiration Date is
also displayed as its legal requirement:
The PDF report related to electronic invoices that have been validated by the AFIP includes
a barcode at the bottom of the format which represent the CAE number, the Expiration Date is
also displayed as its legal requirement:
.. image:: argentina/argentina_edi_14.png
:align: center
Troubleshooting and Auditing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For auditing and troubleshooting purposes you can get the detailed information of an
invoice number that has been previously sent to the AFIP,
For auditing and troubleshooting purposes you can get the detailed information of an
invoice number that has been previously sent to the AFIP,
.. image:: argentina/argentina_edi_23.png
:align: center
.. image:: argentina/argentina_edi_24.png
:align: center
:align: center
You can also get the last number used in AFIP for a specific Document Type and POS Number
as support for any possible issues on the sequence synchronization between Odoo and AFIP.
You can also get the last number used in AFIP for a specific Document Type and POS Number
as support for any possible issues on the sequence synchronization between Odoo and AFIP.
.. image:: argentina/argentina_edi_22.png
:align: center
@ -514,8 +514,8 @@ as support for any possible issues on the sequence synchronization between Odoo
Vendor Bills
------------
Based on the purchase journal selected for the vendor bill, the document type is now a required field.
This value is auto populated based on the AFIP Responsibility type of Issuer and Customer, but the
Based on the purchase journal selected for the vendor bill, the document type is now a required field.
This value is auto populated based on the AFIP Responsibility type of Issuer and Customer, but the
value can be switched if necessary.
.. image:: argentina/argentina16.png
@ -528,20 +528,20 @@ expected.
.. image:: argentina/argentina17.png
:align: center
The vendor bill number is structured in the same way that the invoices with the difference
The vendor bill number is structured in the same way that the invoices with the difference
that the document sequence is input by the user: “Document Prefix - Letter - Document number".
Validate Vendor Bill number in AFIP
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As most companies have internal controls to verify that the vendor bill is related to an AFIP
valid document, an automatic validation can be set in :menuselection:`Accounting --> Settings -->
Argentinian Localization --> Validate document in the AFIP`, considering the following levels:
valid document, an automatic validation can be set in :menuselection:`Accounting --> Settings -->
Argentinian Localization --> Validate document in the AFIP`, considering the following levels:
- **Not available:** The verification is not done (this is the default value).
- **Available:** The verification is done, in case the number is not valid
it only raises a warning but it allows you to post the vendor bill.
- **Required:** The verification is done and it doesn't allow the user to
- **Available:** The verification is done, in case the number is not valid
it only raises a warning but it allows you to post the vendor bill.
- **Required:** The verification is done and it doesn't allow the user to
post the vendor bill if the document number is not valid.
.. image:: argentina/argentina_edi_16.png
@ -549,13 +549,13 @@ Argentinian Localization --> Validate document in the AFIP`, considering the fol
How to use it in Odoo
*********************
This tool incorporates in the vendor bill a new "Verify on AFIP" button located
next to the AFIP Authorization code.
This tool incorporates in the vendor bill a new "Verify on AFIP" button located
next to the AFIP Authorization code.
.. image:: argentina/argentina_edi_17.png
:align: center
In case its not a valid AFIP authorization the value “Rejected” will be
In case its not a valid AFIP authorization the value “Rejected” will be
displayed and the details of the validation will be added to the chatter.
.. image:: argentina/argentina_edi_18.png
@ -566,8 +566,8 @@ Special Use cases
~~~~~~~~~~~~~~~~~
Untaxed Concepts
****************
There are some transactions that include items that are not part of the VAT base amount,
this is commonly used in fuel and gasoline invoices.
There are some transactions that include items that are not part of the VAT base amount,
this is commonly used in fuel and gasoline invoices.
The vendor bill will be registered using 1 item for each product that is part of the VAT
base amount and an additional item to register the amount of the Exempt concept:
@ -577,23 +577,23 @@ base amount and an additional item to register the amount of the Exempt concept
Perception Taxes
****************
The vendor bill will be registered using 1 item for each product that is part of the
VAT base amount, the perception tax can be added in any of the product lines, as result
we will have one tax group for the VAT and one for the perception, the perception default
value is always 1.00.
The vendor bill will be registered using 1 item for each product that is part of the
VAT base amount, the perception tax can be added in any of the product lines, as result
we will have one tax group for the VAT and one for the perception, the perception default
value is always 1.00.
.. image:: argentina/argentina_edi_20.png
:align: center
You should use the pencil that is the next to the Perception amount to edit it
and set the correct amount.
You should use the pencil that is the next to the Perception amount to edit it
and set the correct amount.
.. image:: argentina/argentina_edi_21.png
:align: center
After this is done the invoice can be validated.
After this is done the invoice can be validated.
Reports
=======

View File

@ -9,7 +9,7 @@ The chart of accounts SKR03 and SKR04 are both supported in Odoo. You can choose
one you want by going in :menuselection:`Accounting --> Configuration` then choose the
package you want in the Fiscal Localization section.
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
.. tip::
@ -20,7 +20,7 @@ German Accounting Reports
Here is the list of German-specific reports available on Odoo Enterprise:
- Balance Sheet
- Balance Sheet
- Profit & Loss
- Tax Report (Umsatzsteuervoranmeldung)
- Partner VAT Intra

View File

@ -37,7 +37,7 @@ Give Odoo permission to process files
Since the files are transmitted through Odoo's server before being sent to SDICoop or received by
your database, you need to authorize Odoo to process your files from your database.
To do this, go to :menuselection:`Accounting --> Settings --> Electronic Invoicing` and click on
To do this, go to :menuselection:`Accounting --> Settings --> Electronic Invoicing` and click on
*Register*.
.. image:: italy/register.png

View File

@ -5,20 +5,20 @@ Peru
Introduction
============
The Peruvian localization has been improved and extended, in this version the next modules are
The Peruvian localization has been improved and extended, in this version the next modules are
available:
- **l10n_pe**: Adds accounting features for the Peruvian localization, which represent the minimal
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are: Chart of account, taxes,
document types.
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are: Chart of account, taxes,
document types.
- **l10n_pe_edi**: includes all technical and functional requirements to generate and validate
Electronic Invoice, based on the SUNAT specification to create and process valid electronic
documents, for more technical detail you can access the
- **l10n_pe_edi**: includes all technical and functional requirements to generate and validate
Electronic Invoice, based on the SUNAT specification to create and process valid electronic
documents, for more technical detail you can access the
`SUNAT EDI specifications <https://cpe.sunat.gob.pe/node/88/>`_,
that keeps track of new changes and updates.
The features of this module are based on the resolutions published on the
that keeps track of new changes and updates.
The features of this module are based on the resolutions published on the
`SUNAT Legislation <https://www.sunat.gob.pe/legislacion/general/index.html/>`_.
Configuration
@ -27,24 +27,24 @@ Configuration
Install the Peruvian localization modules
-----------------------------------------
Go to *Apps* and search for Peru, then click Install in the module Peru EDI. This module has a
Go to *Apps* and search for Peru, then click Install in the module Peru EDI. This module has a
dependency with *Peru - Accounting*. In case this last one is not installed, Odoo installs it
automatically within EDI.
.. image:: peru/peru-modules.png
:align: center
:alt: The "Module" filter is set on "Peru"
:alt: The "Module" filter is set on "Peru"
.. note::
When you install a database from scratch selecting Peru as country, Odoo automatically
When you install a database from scratch selecting Peru as country, Odoo automatically
installs the base module: Peru - Accounting.
Configure your company
~~~~~~~~~~~~~~~~~~~~~~
In addition to the basic information in the Company, we need to set Peru as the Country, this is
essential for the Electronic Invoice to work properly. The field **Address Type Code** represents
the establishment code assigned by the SUNAT when companies register their RUC (Unique Contributor
essential for the Electronic Invoice to work properly. The field **Address Type Code** represents
the establishment code assigned by the SUNAT when companies register their RUC (Unique Contributor
Registration):
.. image:: peru/peru-company.png
@ -53,18 +53,18 @@ Registration):
.. tip::
In case the Address type code is unknown, you can set it as the default value: 0000. Be aware
that if an incorrect value is entered, the Electronic invoice validation might have errors.
In case the Address type code is unknown, you can set it as the default value: 0000. Be aware
that if an incorrect value is entered, the Electronic invoice validation might have errors.
.. note::
The NIF should be set following the RUC format.
Chart of Account
~~~~~~~~~~~~~~~~
The chart of accounts is installed by default as part of the set of data included in the
localization module, the accounts are mapped automatically in:
The chart of accounts is installed by default as part of the set of data included in the
localization module, the accounts are mapped automatically in:
- Taxes
- Default Account Payable.
@ -77,20 +77,20 @@ accounting.
Accounting Settings
-------------------
Once the modules are installed and the basic information of your company is set, you need to
configure the elements required for Electronic Invoice. For this, go to :menuselection:`Accounting
Once the modules are installed and the basic information of your company is set, you need to
configure the elements required for Electronic Invoice. For this, go to :menuselection:`Accounting
--> Settings --> Peruvian Localization`.
Basic Concepts
~~~~~~~~~~~~~~
Here are some terms that are essential on the Peruvian localization:
Here are some terms that are essential on the Peruvian localization:
- **EDI**: Electronic Data Interchange, which in this refers to the Electronic Invoice.
- **EDI**: Electronic Data Interchange, which in this refers to the Electronic Invoice.
- **SUNAT**: is the organization that enforces customs and taxation in Peru.
- **OSE**: Electronic Service Operator, `OSE SUNAT's definition
- **OSE**: Electronic Service Operator, `OSE SUNAT's definition
<https://cpe.sunat.gob.pe/aliados/ose#:~:text=El%20Operador%20de%20Servicios%20Electr%C3%B3nicos%20(OSE)%20es%20qui%C3%A9n%20se%20encarga,otro%20documento%20que%20se%20emita>`_.
- **CDR**: Receipt certificate (Constancia de Recepción).
- **CDR**: Receipt certificate (Constancia de Recepción).
- **SOL Credentials**: Sunat Operaciones en Línea. User and password are provided by the SUNAT and
grant access to Online Operations systems.
@ -112,12 +112,12 @@ IAP (Odoo In-App Purchase)
**************************
This is the default and the suggested option, considering the digital ceritificate is included as
part of the service.
part of the service.
.. image:: peru/peru-IAP.png
:align: center
:alt: IAP option as signature providers
What is the IAP?
^^^^^^^^^^^^^^^^
@ -146,34 +146,34 @@ Package.
| 20,000 | 440 |
+---------+-----+
The credits are consumed per each document that is sent to the OSE.
The credits are consumed per each document that is sent to the OSE.
.. important::
If you have a validation error and the document needs to be sent one more time, one additional
credit will be charged. Therefore, it is paramount that you verify all information is correct
If you have a validation error and the document needs to be sent one more time, one additional
credit will be charged. Therefore, it is paramount that you verify all information is correct
before sending your document to the OSE.
What do you need to do?
^^^^^^^^^^^^^^^^^^^^^^^
- In Odoo, once your enterprise contract is activated and you start working in Production, you
- In Odoo, once your enterprise contract is activated and you start working in Production, you
need to buy credits once the first 1000 are consumed.
- As Digiflow is the OSE used in the IAP, you need to affiliate it as the official OSE for your
- As Digiflow is the OSE used in the IAP, you need to affiliate it as the official OSE for your
company on the SUNAT website. This is a simple process. For more information, please check
`OSE Affiliation guide
`OSE Affiliation guide
<https://drive.google.com/file/d/1BkrMTZIiJyi5XI0lGMi3rbMzHddOL1pa/view?usp=sharing>`_.
- Register Digiflow as the authorized PSE, please check
`PSE Affiliation guide
`PSE Affiliation guide
<https://drive.google.com/file/d/1QZoqWvtQERpS0pqp6LcKmw7EBlm9EroU/view?usp=sharing>`_.
Digiflow
********
This option can be used as an alternative, instead of using the IAP services you can send your
This option can be used as an alternative, instead of using the IAP services you can send your
document validation directly to Digiflow. In this case you need to consider:
- Buy your own digital Certificate: For more detail regarding the official vendor list, and the
process to acquire it, please refer to `SUNAT Digital Ceritifcates
- Buy your own digital Certificate: For more detail regarding the official vendor list, and the
process to acquire it, please refer to `SUNAT Digital Ceritifcates
<https://cpe.sunat.gob.pe/informacion_general/certificados_digitales/>`_.
- Sign a service agreement directly with `Digiflow <https://www.digiflow.pe/>`_.
- Provide your SOL credentials.
@ -185,14 +185,14 @@ document validation directly to Digiflow. In this case you need to consider:
SUNAT
*****
In case your company wants to sign directly with the SUNAT, it is possible to select this option
In case your company wants to sign directly with the SUNAT, it is possible to select this option
in your configuration. In this case you need to consider:
- Get the SUNAT Certification process accepted.
- Buy your own digital Certificate: For more detail regarding the official vendor list, and the
process to acquire it, please refer to `SUNAT Digital Ceritifcates
- Buy your own digital Certificate: For more detail regarding the official vendor list, and the
process to acquire it, please refer to `SUNAT Digital Ceritifcates
<https://cpe.sunat.gob.pe/informacion_general/certificados_digitales/>`_.
- Provide you SOL credentials.
.. important::
@ -202,14 +202,14 @@ in your configuration. In this case you need to consider:
Testing environment
~~~~~~~~~~~~~~~~~~~
Odoo provides a testing environment that can be activated before your company goes into production.
Odoo provides a testing environment that can be activated before your company goes into production.
When using the testing environment and the IAP signature, you dont need to buy testing credits
When using the testing environment and the IAP signature, you dont need to buy testing credits
for your transactions as all of them are validated by default.
.. tip::
By default the databases are set to work on production, make sure to enable the testing mode
if needed.
By default the databases are set to work on production, make sure to enable the testing mode
if needed.
Certificate
~~~~~~~~~~~
@ -221,17 +221,17 @@ password.
.. image:: peru/peru-Certificate.png
:align: center
:alt: EDI Certificate wizard
Multicurrency
~~~~~~~~~~~~~
The official currency exchange rate in Peru is provided by the Bank of Peru. Odoo can connect
The official currency exchange rate in Peru is provided by the Bank of Peru. Odoo can connect
directly to its services and get the currency rate either automatically or manually.
.. image:: peru/peru-multicurrency.png
:align: center
:alt: Bank of Peru is displayed in Multicurrency Service option
Please refer to the next section in our documentation for more information about
:doc:`multicurrencies <../../others/multi_currency>`.
@ -241,7 +241,7 @@ Configure Master data
Taxes
~~~~~
As part of the localization module the taxes are created automatically with their related
As part of the localization module the taxes are created automatically with their related
financial account and electronic invoice configuration.
.. image:: peru/peru-taxes.png
@ -251,9 +251,9 @@ financial account and electronic invoice configuration.
EDI Configuration
*****************
As part of the taxes configuration, there are three new fields required for electronic invoice,
the taxes created by default have this data included, but in case you create new taxes make
sure you fill in the fields:
As part of the taxes configuration, there are three new fields required for electronic invoice,
the taxes created by default have this data included, but in case you create new taxes make
sure you fill in the fields:
.. image:: peru/peru-taxes-edi.png
:align: center
@ -272,15 +272,15 @@ There are two main fiscal positions included by default when you install the Per
Document Types
~~~~~~~~~~~~~~
In some Latin American countries, including Peru, some accounting transactions like invoices and
vendor bills are classified by document types, defined by the government fiscal authorities, in
this case by the SUNAT.
In some Latin American countries, including Peru, some accounting transactions like invoices and
vendor bills are classified by document types, defined by the government fiscal authorities, in
this case by the SUNAT.
Each document type can have a unique sequence per journal where it is assigned. As part of the
localization, the Document Type includes the country on which the document is applicable;the data
Each document type can have a unique sequence per journal where it is assigned. As part of the
localization, the Document Type includes the country on which the document is applicable;the data
is created automatically when the localization module is installed.
The information required for the document types is included by default so the user does not need
The information required for the document types is included by default so the user does not need
to fill anything on this view:
.. image:: peru/peru-document-type.png
@ -288,7 +288,7 @@ to fill anything on this view:
:alt: Document Type list
.. warning::
Currently the documents supported on customer invoices are: Invoice, Boleta, Debit Note and
Currently the documents supported on customer invoices are: Invoice, Boleta, Debit Note and
Credit Note.
Journals
@ -297,17 +297,17 @@ Journals
When creating Sales Journals, the following information must be filled, in addition to the standard
fields on the Journals:
Use Documents
Use Documents
*************
This field is used to define if the journal uses Document Types. It is only applicable to
Purchase and Sales journals, which are the ones that can be related to the different set of
document types available in Peru. By default, all the sales journals created use documents.
This field is used to define if the journal uses Document Types. It is only applicable to
Purchase and Sales journals, which are the ones that can be related to the different set of
document types available in Peru. By default, all the sales journals created use documents.
Electronic Data Interchange
***************************
This section indicates which EDI workflow is used in the invoice, for Peru we must select
This section indicates which EDI workflow is used in the invoice, for Peru we must select
“Peru UBL 2.1”.
.. image:: peru/peru-journal-edi.png
@ -323,8 +323,8 @@ Partner
Identification Type and VAT
***************************
As part of the Peruvian localization, the identification types defined by the SUNAT are now
available on the Partner form, this information is essential for most transactions either on
As part of the Peruvian localization, the identification types defined by the SUNAT are now
available on the Partner form, this information is essential for most transactions either on
the sender company and in the customer, make sure you fill in this information in your records.
.. image:: peru/peru-id-type.png
@ -335,8 +335,8 @@ the sender company and in the customer, make sure you fill in this information i
Product
~~~~~~~
Additional to the basic information in your products, for the Peruvian localization, the UNSPC
Code on the product is a required value to be configured.
Additional to the basic information in your products, for the Peruvian localization, the UNSPC
Code on the product is a required value to be configured.
.. image:: peru/peru-unspc-code.png
:align: center
@ -354,27 +354,27 @@ EDI Elements
Once you have configured your master data, the invoices can be created from your sales order or
manually. Additional to the basic invoice information described on :doc:`our page about the
invoicing process <../../receivables/customer_invoices/overview>`, there are a couple of fields
invoicing process <../../receivables/customer_invoices/overview>`, there are a couple of fields
required as part of the Peru EDI:
- **Document type**: The default value is “Factura Electronica” but you can manually change the
document type if needed and select Boleta for example.
- **Document type**: The default value is “Factura Electronica” but you can manually change the
document type if needed and select Boleta for example.
.. image:: peru/peru-invoice-document-type.png
:align: center
:alt: Invoice document type field on invoices
- **Operation type**: This value is required for Electronic Invoice and indicates the transaction
type, the default value is “Internal Sale” but another value can be selected manually when needed,
for example Export of Goods.
- **Operation type**: This value is required for Electronic Invoice and indicates the transaction
type, the default value is “Internal Sale” but another value can be selected manually when needed,
for example Export of Goods.
.. image:: peru/peru-operation-type.png
:align: center
:alt: Invoice operation type field on invoices
- **EDI Affectation Reason**: In the invoice lines, additional to the Tax there is a field “EDI
Affectation Reason” that determines the tax scope based on the SUNAT list that is displayed.
All the taxes loaded by default are associated with a default EDI affection reason, if needed
- **EDI Affectation Reason**: In the invoice lines, additional to the Tax there is a field “EDI
Affectation Reason” that determines the tax scope based on the SUNAT list that is displayed.
All the taxes loaded by default are associated with a default EDI affection reason, if needed
you can manually select another one when creating the invoice.
.. image:: peru/peru-tax-affectation-reason.png
@ -385,70 +385,70 @@ Invoice validation
~~~~~~~~~~~~~~~~~~
Once you check all the information in your invoice is correct, you can proceed to validate it. This
action registers the account move and triggers the Electronic invoice workflow to send it to the
action registers the account move and triggers the Electronic invoice workflow to send it to the
OSE and the SUNAT. The following message is displayed at the top of the invoice:
.. image:: peru/peru-posted-invoice.png
:align: center
:alt: Sending of EDI Invoice in blue
Asynchronous means that the document is not sent automatically after the invoice has been posted.
Asynchronous means that the document is not sent automatically after the invoice has been posted.
Electronic Invoice Status
*************************
**To be Sent**: To be sent: Indicates the document is ready to be sent to the OSE, this can be
done either automatically by Odoo with a *cron* that runs every hour, or the user can send it
**To be Sent**: To be sent: Indicates the document is ready to be sent to the OSE, this can be
done either automatically by Odoo with a *cron* that runs every hour, or the user can send it
immediately by clicking on the button “Sent now”.
.. image:: peru/peru-sent-manual.png
:align: center
:alt: Send EDI manually
**Sent**: Indicates the document was sent to the OSE and was successfully validated. As part of
the validation a ZIP file is downloaded and a message is logged in the chatter indicating the
correct Government validation.
**Sent**: Indicates the document was sent to the OSE and was successfully validated. As part of
the validation a ZIP file is downloaded and a message is logged in the chatter indicating the
correct Government validation.
.. image:: peru/peru-invoice-sent.png
:align: center
:alt: Message on chatter when the invoice is valid
In case there is a validation error the Electronic Invoice status remains in “To be sent” so the
corrections can be made and the invoice can be sent again.
In case there is a validation error the Electronic Invoice status remains in “To be sent” so the
corrections can be made and the invoice can be sent again.
.. warning::
One credit is consumed each time that you send a document for validation, in this sense if an
error is detected on an invoice and you send it one more time, two credits are consumed in
One credit is consumed each time that you send a document for validation, in this sense if an
error is detected on an invoice and you send it one more time, two credits are consumed in
total.
Common Errors
~~~~~~~~~~~~~
There are multiple reasons behind a rejection from the OSE or the SUNAT, when this happens Odoo
sends a message at the top of the invoice indicating the error details and in the most common
cases a hint to fix the issue.
There are multiple reasons behind a rejection from the OSE or the SUNAT, when this happens Odoo
sends a message at the top of the invoice indicating the error details and in the most common
cases a hint to fix the issue.
If a validation error is received, you have two options:
If a validation error is received, you have two options:
- In case the error is related to master data on the partner, customer or taxes, you can simply
apply the change on the record (example customer identification type) and once it is done click
on the Retry button.
- If the error is related to some data recorded on the invoice directly (Operation type, missing
data on the invoice lines), the correct solution is to reset the invoice to Draft, apply the
changes, and then send the invoice again to the SUNAT for another validation.
apply the change on the record (example customer identification type) and once it is done click
on the Retry button.
- If the error is related to some data recorded on the invoice directly (Operation type, missing
data on the invoice lines), the correct solution is to reset the invoice to Draft, apply the
changes, and then send the invoice again to the SUNAT for another validation.
.. image:: peru/peru-errors.png
:align: center
:alt: List of common errors on invoices
For more detail please refert to `Common errors in SUNAT
For more detail please refert to `Common errors in SUNAT
<https://www.nubefact.com/codigos-error-sunat/>`_.
Invoice PDF Report
~~~~~~~~~~~~~~~~~~
After the invoice is accepted and validated by the SUNAT, the invoice PDF report can be printed.
After the invoice is accepted and validated by the SUNAT, the invoice PDF report can be printed.
The report includes a QR code, indicating the invoice is a valid fiscal document.
.. image:: peru/peru-PDF.png
@ -458,18 +458,18 @@ The report includes a QR code, indicating the invoice is a valid fiscal document
IAP Credits
~~~~~~~~~~~
Odoos Electronic IAP offers 1000 credits for free, after these credits are consumed in your
production database, your company must buy new credits in order to process your transactions.
Odoos Electronic IAP offers 1000 credits for free, after these credits are consumed in your
production database, your company must buy new credits in order to process your transactions.
Once you run out of credits a red label is displayed at the top of the invoice indicating that
additional credits are required, you can easily buy them by accessing the link provided in
the message.
Once you run out of credits a red label is displayed at the top of the invoice indicating that
additional credits are required, you can easily buy them by accessing the link provided in
the message.
.. image:: peru/peru-credits-IAP.png
:align: center
:alt: Buying credits in the IAP
In the IAP service includes packages with different pricing based on the number of credits.
In the IAP service includes packages with different pricing based on the number of credits.
The price list in the IAP is always displayed in EUR.
Special Use cases
@ -478,30 +478,30 @@ Special Use cases
Cancellation process
********************
Some scenarios require an invoice cancellation, for example, when an invoice was created by mistake.
If the invoice was already sent and validated by the SUNAT, the correct way to proceed is by
Some scenarios require an invoice cancellation, for example, when an invoice was created by mistake.
If the invoice was already sent and validated by the SUNAT, the correct way to proceed is by
clicking on the button Request Cancellation:
.. image:: peru/peru-cancellation.png
:align: center
:alt: Request invoice cancellation button
In order to cancel an invoice, please provide a cancellation Reason.
In order to cancel an invoice, please provide a cancellation Reason.
Electronic Invoice Status
^^^^^^^^^^^^^^^^^^^^^^^^^
**To Cancel**: Indicates the cancellation request is ready to be sent to the OSE, this can be done
either automatically by Odoo with a *cron* that runs every hour, or the user can send it
immediately by clicking on the button “Send now”. Once it is sent, a cancellation ticket is
**To Cancel**: Indicates the cancellation request is ready to be sent to the OSE, this can be done
either automatically by Odoo with a *cron* that runs every hour, or the user can send it
immediately by clicking on the button “Send now”. Once it is sent, a cancellation ticket is
created, as a result the next message and CDR File are logged in the chatter:
.. image:: peru/peru-cancellation-cdr.png
:align: center
:alt: Cancellation CDR sent by the SUNAT
**Cancelled**: Indicates the cancellation request was sent to the OSE and was successfully
validated. As part of the validation a ZIP file is downloaded and a message is logged in the
**Cancelled**: Indicates the cancellation request was sent to the OSE and was successfully
validated. As part of the validation a ZIP file is downloaded and a message is logged in the
chatter indicating the correct Government validation.
.. image:: peru/peru-cancelled.png
@ -510,14 +510,14 @@ chatter indicating the correct Government validation.
.. warning::
One credit is consumed on each cancellation request.
Cancellation process
********************
When creating exportation invoices, take into account the next considerations:
- The Identification type on your customer must be Foreign ID.
- Operation type in your invoice must be an Exportation one.
- The Identification type on your customer must be Foreign ID.
- Operation type in your invoice must be an Exportation one.
- The taxes included in the invoice lines should be EXP taxes.
.. image:: peru/peru-exp-invoice.png
@ -527,24 +527,24 @@ When creating exportation invoices, take into account the next considerations:
Advance Payments
****************
#. Create the advance payment Invoice and apply its related payment.
#. Create the final invoice without considering the advance payment.
#. Create a credit note for the Final invoice with the advance payment amount.
#. Reconcile the Credit note with the final invoice.
#. The remaining balance on the final invoice should be paid with a regular payment transaction.
#. Create the advance payment Invoice and apply its related payment.
#. Create the final invoice without considering the advance payment.
#. Create a credit note for the Final invoice with the advance payment amount.
#. Reconcile the Credit note with the final invoice.
#. The remaining balance on the final invoice should be paid with a regular payment transaction.
Detraction Invoices
Detraction Invoices
********************
When creating invoices that is subject to Detractions, take into account the next considerations:
When creating invoices that is subject to Detractions, take into account the next considerations:
#. All the products included in the invoice must have these fields configured:
#. All the products included in the invoice must have these fields configured:
.. image:: peru/peru-detraction.png
:align: center
:alt: Detraction fields on products
#. Operation type in your invoice must be ``1001``
.. image:: peru/peru-detraction-invoice.png
@ -554,8 +554,8 @@ When creating invoices that is subject to Detractions, take into account the nex
Credit Notes
------------
When a correction or refund is needed over a validated invoice, a credit note must be generated,
for this just click on the button “Add Credit Note”, a part of the Peruvian localization you need
When a correction or refund is needed over a validated invoice, a credit note must be generated,
for this just click on the button “Add Credit Note”, a part of the Peruvian localization you need
to prove a Credit Reason selecting one of the options in the list.
.. image:: peru/peru-credit-note.png
@ -563,9 +563,9 @@ to prove a Credit Reason selecting one of the options in the list.
:alt: Add Credit Note from invoice
.. tip::
When creating your first credit Note, select the Credit Method: Partial Refund, this allows you
to define the credit note sequence.
When creating your first credit Note, select the Credit Method: Partial Refund, this allows you
to define the credit note sequence.
By default the Credit Note is set in the document type:
.. image:: peru/peru-credit-note-document.png
@ -576,13 +576,13 @@ To finish the workflow please follow the instructions on :doc:`our page about Cr
<../../receivables/customer_invoices/credit_notes>`.
.. note::
The EDI workflow for the Credit notes works in the same way as the invoices.
The EDI workflow for the Credit notes works in the same way as the invoices.
Debit Notes
------------
As part of the Peruvian localization, besides creating credit notes from an existing document
As part of the Peruvian localization, besides creating credit notes from an existing document
you can also create debit Notes. For this just use the button “Add Debit Note”.
By default the Debit Note is set in the document type.

View File

@ -9,12 +9,12 @@ In Odoo, there are several Spanish Chart of Accounts that are available by defau
- PGCE PYMEs 2008
- PGCE Completo 2008
- PGCE Entitades
- PGCE Entitades
You can choose the one you want by going in :menuselection:`Accounting --> Configuration`
then choose the package you want in the **Fiscal Localization** section.
then choose the package you want in the **Fiscal Localization** section.
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
.. tip::
When you create a new Odoo Online database, the PGCE PYMEs 2008 is installed by default.
@ -24,7 +24,7 @@ Spanish Accounting Reports
If the Spanish Accounting Localization is installed, you will have access to accounting reports specific to Spain:
- Balance Sheet
- Balance Sheet
- Tax Report (Modelo 111)
- Tax Report (Modelo 115)
- Tax Report (Modelo 303)
- Tax Report (Modelo 303)

View File

@ -12,7 +12,7 @@ called *Print ISR*.
.. image:: switzerland/switzerland00.png
:align: center
.. tip::
.. tip::
The button *Print ISR* only appears there is well a bank account
defined on the invoice. You can use CH6309000000250097798 as bank
account number and 010391391 as CHF ISR reference.
@ -142,4 +142,4 @@ odoo.com/help.
.. tip::
Don't forget to update your fiscal positions. If you have a version
11.1 (or higher), there is nothing to do. Otherwise, you will also
have to update your fiscal positions accordingly.
have to update your fiscal positions accordingly.

View File

@ -17,7 +17,7 @@ From Vendor Bill to Payment
Record a new vendor bill
------------------------
When a vendor bill is received, you can record it from :menuselection:`Purchases --> Vendor Bills`
When a vendor bill is received, you can record it from :menuselection:`Purchases --> Vendor Bills`
in the Accounting application. As a shortcut,
you can also use the **New Bill** feature on the accounting dashboard.
@ -36,12 +36,12 @@ Save the invoice to update the pre tax and tax amounts at the bottom of
the screen. You will most likely need to configure the prices of your
products without taxes as Odoo will compute the tax for you.
.. note::
On the bottom left corner, Odoo shows a summary table of all taxes on the vendor bill.
In several countries, different methods are accepted to round the totals (round per line,
or round globally). The default rounding method in Odoo is to round the final prices
per line (as you may have different taxes per product. E.g. Alcohol and cigarettes).
However if your vendor has a different tax amount on their bill, you can change the
.. note::
On the bottom left corner, Odoo shows a summary table of all taxes on the vendor bill.
In several countries, different methods are accepted to round the totals (round per line,
or round globally). The default rounding method in Odoo is to round the final prices
per line (as you may have different taxes per product. E.g. Alcohol and cigarettes).
However if your vendor has a different tax amount on their bill, you can change the
amount in the bottom left table to adjust and match.
Validate The Vendor Bill
@ -91,8 +91,8 @@ if set it correctly).
.. note::
You can also register a payment to a vendor directly without applying it to a vendor bill.
To do that, :menuselection:`Purchases --> Payments`. Then,
You can also register a payment to a vendor directly without applying it to a vendor bill.
To do that, :menuselection:`Purchases --> Payments`. Then,
from the vendor bill you will be able to reconcile this payment with directly.
Printing vendor Checks

View File

@ -7,9 +7,9 @@ Overview
Managing budgets is an essential part of running a business. Budgets help
people become more intentional with the way money is spent and direct people
to organize and prioritize their work to meet financial goals. They allows
you to plan your desired financial outcome and then measure your actual
performance against the plan. Odoo manages budgets using both General and Analytic
to organize and prioritize their work to meet financial goals. They allows
you to plan your desired financial outcome and then measure your actual
performance against the plan. Odoo manages budgets using both General and Analytic
Accounts.
We will use the following example to illustrate. We just started a
@ -17,7 +17,7 @@ project with Smith&Co and we would like to budget the incomes and
expenses of that project. We plan to have a revenue of 1000 and we don't
want to spend more than 700.
Configuration
Configuration
=============
First we need to install the relevant apps to use budgeting. The main
@ -40,17 +40,17 @@ Budgetary Positions
Budgetary positions are lists of accounts for which you want to keep
budgets (typically expense or income accounts). They need to be defined
so Odoo can know it which accounts he needs to go get the budget
information.
information.
The budgetary positions act as a type of restriction on what can be recorded
in the 'practical amount' column in a budget.
Each budgetary position can have any number of accounts from the general
ledger (the main chart of accounts) assigned to it, though it must have at least one.
Each budgetary position can have any number of accounts from the general
ledger (the main chart of accounts) assigned to it, though it must have at least one.
If you record a transaction that has an analytic account assigned to it that *is*
included in a budget line but one of the general ledger accounts *is not* included
in the budgetary position for that same budget line, it will not appear within the
If you record a transaction that has an analytic account assigned to it that *is*
included in a budget line but one of the general ledger accounts *is not* included
in the budgetary position for that same budget line, it will not appear within the
'practical amount' column of that budget line.
Some budgetary positions might be already installed with your chart of

View File

@ -19,7 +19,7 @@ First, install the three applications necessary to use this
functionality, namely **Accounting**, **Sales** and **Timesheet**. Enter the apps
module name and install them.
.. image:: timesheets/timesheets14.png
.. image:: timesheets/timesheets14.png
:align: center
.. image:: timesheets/timesheets05.png
@ -51,14 +51,14 @@ cost of 18 euros / hours. We will thus fill in 18 in this field.
.. image:: timesheets/timesheets07.png
:align: center
.. note::
.. note::
If you want the employee to be able to enter timesheets he
needs to be related to a User.
Repeat the operation to create the Cedric Digory employee. Don't forget
to specify its related user and **Timesheet Costs**.
Issue a Sales Order
Issue a Sales Order
--------------------
We created two employees called Harry Potter and Cedric Diggory in the
@ -121,7 +121,7 @@ Without filters
If we pointed all our costs and revenues of the project on the correct
analytical account we can easily retrieve the cost and revenues related
to this analytical account. Enter the *Accounting* app, select
to this analytical account. Enter the *Accounting* app, select
:menuselection:`Adviser --> Analytic Accounts --> Open Charts`.
Note : you can specify a period for **Analysis**. If you want to open the

View File

@ -13,11 +13,11 @@ Iceland, Norway, Switzerland, Andorra, Monaco and San Marino.
With Odoo, once you decide to pay a vendor, you can select to pay the
bill with SEPA. Then, at the end of the day, the manager can generate
the SEPA file containing all bank wire transfers and send it to the
bank.
bank.
By default,the file follows the SEPA Credit Transfer **'pain.001.001.03'**
specifications. This is a well-defined standard that makes consensus
among banks. However, according to the country set on your company,
among banks. However, according to the country set on your company,
another format can be used : **'pain.001.001.03.ch.02'** for Switzerland
and **'pain.001.003.03'** for Germany.

View File

@ -3,11 +3,11 @@ Cash rounding
=============
**Cash rounding** is required when the lowest physical denomination
of currency, or the smallest coin, is higher than the minimum unit
of currency, or the smallest coin, is higher than the minimum unit
of account.
For example, some countries require their companies to round up or
down the total amount of an invoice to the nearest five cents, when
For example, some countries require their companies to round up or
down the total amount of an invoice to the nearest five cents, when
the payment is made in cash.
Configuration
@ -19,22 +19,22 @@ and enable *Cash Rounding*, then click on *Save*.
.. image:: cash_rounding/cash_rounding01.png
:align: center
Go to :menuselection:`Accounting --> Configuration --> Cash Roundings`,
Go to :menuselection:`Accounting --> Configuration --> Cash Roundings`,
and click on *Create*.
Define here your *Rounding Precision*, *Rounding Strategy*, and
Define here your *Rounding Precision*, *Rounding Strategy*, and
*Rounding Method*.
Odoo supports two **rounding strategies**:
1. **Add a rounding line**: a *rounding* line is added on the invoice.
1. **Add a rounding line**: a *rounding* line is added on the invoice.
You have to define which account records the cash roundings.
2. **Modify tax amount**: the rounding is applied in the taxes section.
Apply roundings
===============
When editing a draft invoice, open the *Other Info* tab, go to the
*Accounting Information* section, and select the appropriate *Cash
*Accounting Information* section, and select the appropriate *Cash
Rounding Method*.

View File

@ -1,8 +1,8 @@
========================
Credit notes and refunds
========================
A **credit note**, or **credit memo**, is a document issued
to a customer that notifies them that they have been credited
A **credit note**, or **credit memo**, is a document issued
to a customer that notifies them that they have been credited
a certain amount.
There are several reasons that can lead to a credit note, such as:
@ -11,19 +11,19 @@ There are several reasons that can lead to a credit note, such as:
* the goods delivered are damaged
.. note::
Issuing a credit note is the only legal way to cancel,
refund or modify a validated invoice. Dont forget to
Issuing a credit note is the only legal way to cancel,
refund or modify a validated invoice. Dont forget to
*register the payment* afterward if you need to send money
back to your customer.
Issue a Credit Note
===================
You can create a credit note from scratch by going to
:menuselection:`Accounting --> Customers --> Credit Notes`,
and by clicking on *Create*. Filling the Credit Notes form
You can create a credit note from scratch by going to
:menuselection:`Accounting --> Customers --> Credit Notes`,
and by clicking on *Create*. Filling the Credit Notes form
works the same way as the Invoices form.
However, most of the time, credit notes are generated directly
However, most of the time, credit notes are generated directly
from the invoices they are related to.
To do so, open the *Customer Invoice*, and click on *Add Credit Note*.
@ -37,15 +37,15 @@ You can choose between three options:
- Full refund and new draft invoice
.. note::
Credit Notes numbers start with “R” and are followed by the
number of the document they are related to (e.g., RINV/2019/0004).
Credit Notes numbers start with “R” and are followed by the
number of the document they are related to (e.g., RINV/2019/0004).
Partial Refund
--------------
Odoo creates a draft credit note already prefilled with all the
Odoo creates a draft credit note already prefilled with all the
necessary information from the original invoice.
This is the option to choose to do a partial refund, or if you
This is the option to choose to do a partial refund, or if you
want to modify any detail on the credit note.
.. note::
@ -53,19 +53,19 @@ want to modify any detail on the credit note.
Full Refund
-----------
Odoo creates a credit note, automatically validates it, and
Odoo creates a credit note, automatically validates it, and
reconciles the original invoice with it.
.. image:: credit_notes/credit_notes02.png
:align: center
This is the option to choose to do a full refund or cancel
This is the option to choose to do a full refund or cancel
a validated invoice.
Full refund and new draft invoice
---------------------------------
Odoo creates a credit note, automatically validates it, reconciles
the original invoice with it, and open a new draft invoice
Odoo creates a credit note, automatically validates it, reconciles
the original invoice with it, and open a new draft invoice
prefilled with the same details from the original invoice.
This is the option to choose to modify the content of a validated invoice.
@ -74,22 +74,22 @@ Record a Vendor Refund
======================
**Vendor Refunds** are recorded the same way you would do with invoices credit notes:
You can either create a credit note from scratch by going
to :menuselection:`Accounting --> Vendors --> Refund`, and
by clicking on *Create*, or by opening the validated *Vendor Bill*,
You can either create a credit note from scratch by going
to :menuselection:`Accounting --> Vendors --> Refund`, and
by clicking on *Create*, or by opening the validated *Vendor Bill*,
and clicking on *Add Credit Note*.
Journal Entries
===============
Issuing a credit note from an invoice creates a **reverse entry**
that zeroes out the journal items generated by the original invoice.
Issuing a credit note from an invoice creates a **reverse entry**
that zeroes out the journal items generated by the original invoice.
Here is an example of an invoices journal entry:
.. image:: credit_notes/credit_notes03.png
:align: center
And here is the credit notes journal entry generated to reverse
And here is the credit notes journal entry generated to reverse
the original invoice above:
.. image:: credit_notes/credit_notes04.png

View File

@ -42,7 +42,7 @@ Configuration --> Chart of Accounts`, click on *Create*, and fill out the form.
.. note::
This account's type must be either *Current Liabilities* or *Non-current Liabilities*
Post an income to the right account
-----------------------------------
@ -64,7 +64,7 @@ save.
.. image:: deferred_revenues/deferred_revenues03.png
:align: center
:alt: Change of the Income Account for a product in Odoo
:alt: Change of the Income Account for a product in Odoo
.. tip::
It is possible to automate the creation of revenue entries for these products (see:
@ -75,11 +75,11 @@ Change the account of a posted journal item
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, select the journal item you
want to modify, click on the account, and select the right one.
want to modify, click on the account, and select the right one.
.. image:: deferred_revenues/deferred_revenues04.png
:align: center
:alt: Modification of a posted journal item's account in Odoo Accounting
:alt: Modification of a posted journal item's account in Odoo Accounting
Deferred Revenues entries
=========================
@ -107,8 +107,8 @@ recognize your revenue, and at which date.
.. image:: deferred_revenues/deferred_revenues06.png
:align: center
:alt: Revenue Board in Odoo Accounting
:alt: Revenue Board in Odoo Accounting
What does "Prorata Temporis" mean?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -126,7 +126,7 @@ Deferred Entry from the Sales Journal
You can create a deferred entry from a specific journal item in your **Sales Journal**.
To do so, open your Sales Journal by going to
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, and select the journal item you want to defer.
Make sure that it is posted in the right account (see:
`Change the account of a posted journal item`_).

View File

@ -1,36 +1,36 @@
============================
Add EPC QR Codes to invoices
============================
European Payments Council Quick Response Code,
or **EPC QR Code**, are two-dimensional barcodes
that customers can scan with their **mobile banking
European Payments Council Quick Response Code,
or **EPC QR Code**, are two-dimensional barcodes
that customers can scan with their **mobile banking
applications** to initiate a **SEPA Credit Transfer
(SCT)**, and pay their invoices instantly.
In addition to bringing ease of use and speed,
it greatly reduces typing errors that would potentially
make for payment issues.
In addition to bringing ease of use and speed,
it greatly reduces typing errors that would potentially
make for payment issues.
.. note::
This feature is only available in several European
countries such as Austria, Belgium, Finland, Germany,
This feature is only available in several European
countries such as Austria, Belgium, Finland, Germany,
and The Netherlands.
Configuration
=============
Go to :menuselection:`Accounting --> Configuration --> Settings`
Go to :menuselection:`Accounting --> Configuration --> Settings`
and activate the **SEPA QR Code** feature.
.. image:: epc_qr_code/epc_qr_code01.png
:align: center
Configure your Bank Accounts journal
-------------------------------------
Make sure that your *Bank Account* is correctly configured
Make sure that your *Bank Account* is correctly configured
on Odoo with your IBAN and BIC.
To do so, go to :menuselection:`Accounting --> Configuration
--> Journals`, open your *bank journal*, then fill out the
To do so, go to :menuselection:`Accounting --> Configuration
--> Journals`, open your *bank journal*, then fill out the
*Bank Account* and *Bank* under the *Bank Account* tab.
.. image:: epc_qr_code/epc_qr_code02.png
@ -38,26 +38,26 @@ To do so, go to :menuselection:`Accounting --> Configuration
Issue Invoices with EPC QR Codes
================================
EPC QR Codes are added automatically to your invoices, as
long as you issue them to customers that are located in a
EPC QR Codes are added automatically to your invoices, as
long as you issue them to customers that are located in a
country where this feature is available.
Go to :menuselection:`Accounting --> Customers --> Invoices`,
and create a new invoice.
Go to :menuselection:`Accounting --> Customers --> Invoices`,
and create a new invoice.
Before posting it, open the *Other Info* tab. Odoo automatically
Before posting it, open the *Other Info* tab. Odoo automatically
fills out the *Bank Account* field with your IBAN.
Make sure that the account indicated is the one you want to use to
receive your customers payment as Odoo uses this field to generate
Make sure that the account indicated is the one you want to use to
receive your customers payment as Odoo uses this field to generate
the EPC QR Code.
.. image:: epc_qr_code/epc_qr_code03.png
:align: center
.. tip::
If you want to issue an invoice without an EPC QR Code,
remove the IBAN indicated in the *Bank Account* field,
If you want to issue an invoice without an EPC QR Code,
remove the IBAN indicated in the *Bank Account* field,
under the *Other Info* tab of the invoice.
.. seealso::

View File

@ -72,7 +72,7 @@ their SEPA Direct Debit mandate.
.. todo::
Add link to future **Payment Provider** documentation.
Close or revoke a mandate
Close or revoke a mandate
-------------------------
Direct Debit mandates are closed automatically after their *End Date*. If this field is left blank,
@ -95,7 +95,7 @@ included in the next SDD XML file.
Get paid with SDD Batch Payments
================================
Customer Invoices
Customer Invoices
-----------------
You can register SDD payments for invoices issued to customers who have an active SDD mandate.

View File

@ -6,14 +6,14 @@ There are two ways to handle payments received by checks. Odoo support
both approaches so that you can use the one that better fits your
habits.
1. **Undeposited Funds:**
1. **Undeposited Funds:**
once you receive the check, you record a payment
by check on the invoice. (using a Check journal and posted on the
Undeposited Fund account) Then, once the check arrives in your
bank account, move money from Undeposited Funds to your bank
account.
2. **One journal entry only:**
2. **One journal entry only:**
once your receive the check, you record a
payment on your bank, paid by check, without going through the
**Undeposited Funds**. Once you process your bank statement, you do
@ -28,7 +28,7 @@ Even if the first method is cleaner, Odoo support the second approach
because some accountants are used to it (quickbooks and peachtree
users).
.. Note::
.. Note::
You may have a look at the *Deposit Ticket feature* if you deposit
several checks to your bank accounts in batch.
@ -90,7 +90,7 @@ If you use this approach to manage received checks, you get the list of
checks that have not been cashed in the **Undeposit Funds** account
(accessible, for example, from the general ledger).
.. Note::
.. Note::
Both methods will produce the same data in your accounting at the
end of the process. But, if you have checks that have not been cashed,
this one is cleaner because those checks have not been reported yet on
@ -135,7 +135,7 @@ books:
| Bank | | 100.00 | |
+----------------------+-------------------+----------+----------+
.. tip::
.. tip::
You may also record the payment directly without going on the
customer invoice, using the menu :menuselection:`Sales --> Payments`. This method may
be more convenient if you have a lot of checks to record in a batch but

View File

@ -20,7 +20,7 @@ Make sure your :ref:`Payment Providers are correctly configured <payment_provide
By default, ":doc:`Wire Transfer </applications/finance/payment_providers/wire_transfer>`" is the only
Payment Provider activated, but you still have to fill out the payment details.
To activate the Invoice Online Payment, go to :menuselection:`Accounting --> Configuration -->
To activate the Invoice Online Payment, go to :menuselection:`Accounting --> Configuration -->
Settings --> Customer Payments`, enable **Invoice Online Payment**, and click on *Save*.
Customer Portal

View File

@ -46,7 +46,7 @@ Add lines in your custom reports
=================================
After you've created the report, you need to fill it with lines. They
all need a **name**, a **code** (that is used to refer to the line), a
all need a **name**, a **code** (that is used to refer to the line), a
**sequence number** and a **level** (Used for the line rendering).
.. image:: customize/customize04.png

View File

@ -31,7 +31,7 @@ Balance Sheet
The **Balance Sheet** shows a snapshot of the assets, liabilities and equity
of your organisation as at a particular date.
.. image:: main_reports/main_reports09.png
.. image:: main_reports/main_reports09.png
:align: center
Profit and Loss
@ -41,7 +41,7 @@ The **Profit and Loss** report (or **Income Statement**) shows your
organisation's net income, by deducting expenses from revenue for the
report period.
.. image:: main_reports/main_reports10.png
.. image:: main_reports/main_reports10.png
:align: center
Executive Summary
@ -58,36 +58,36 @@ reporting :
The contribution each individual sale made
by your business less any direct costs needed to make those sales
(things like labour, materials, etc).
- **Net profit margin:**
- **Net profit margin:**
The contribution each individual sale made by
your business less any direct costs needed to make those sales,
as well as any fixed overheads your company has (things like
rent, electricity, taxes you need to pay as a result of those
sales).
- **Return on investment (p.a.):**
- **Return on investment (p.a.):**
The ratio of net profit made, to the
amount of assets the company used to make those profits.
- **Position:**
- **Average debtor days:**
- **Average debtor days:**
The average number of days it takes your
customers to pay you (fully), across all your customer invoices.
- **Average creditor days:**
The average number of days it takes you to
pay your suppliers (fully) across all your bills.
- **Short term cash forecast:**
- **Short term cash forecast:**
How much cash is expected in or out of
your organisation in the next month i.e. balance of your **Sales
account** for the month less the balance of your **Purchases account**
for the month.
- **Current assets to liabilities:**
Also referred to as **current ratio**, this is the ratio
- **Current assets to liabilities:**
Also referred to as **current ratio**, this is the ratio
of current assets (assets that could be
turned into cash within a year) to the current liabilities
(liabilities which will be due in the next year). This is
typically used as as a measure of a company's ability to service
its debt.
.. image:: main_reports/main_reports01.png
.. image:: main_reports/main_reports01.png
:align: center
General Ledger
@ -99,7 +99,7 @@ account and from there you can view a detailed transaction report or any
exceptions. This report is useful for checking every transaction that
occurred during a certain period of time.
.. image:: main_reports/main_reports05.png
.. image:: main_reports/main_reports05.png
:align: center
Aged Payable
@ -109,7 +109,7 @@ Run the **Aged Payable Details** report to display information on individual
bills, credit notes and overpayments owed by you, and how long these
have gone unpaid.
.. image:: main_reports/main_reports02.png
.. image:: main_reports/main_reports02.png
:align: center
Aged Receivable
@ -118,7 +118,7 @@ Aged Receivable
The **Aged Receivables** report shows the sales invoices that were awaiting
payment during a selected month and several months prior.
.. image:: main_reports/main_reports07.png
.. image:: main_reports/main_reports07.png
:align: center
Cash Flow Statement
@ -128,7 +128,7 @@ The **Cash Flow Statement** shows how changes in balance sheet accounts and
income affect cash and cash equivalents, and breaks the analysis down to
operating, investing and financing activities.
.. image:: main_reports/main_reports03.png
.. image:: main_reports/main_reports03.png
:align: center
Tax Report
@ -137,11 +137,11 @@ Tax Report
This report allows you to see the **net** and **tax amounts** for all the taxes
grouped by type (sale/purchase).
.. image:: main_reports/main_reports04.png
.. image:: main_reports/main_reports04.png
:align: center
Bank Reconciliation
-------------------
.. image:: main_reports/main_reports06.png
.. image:: main_reports/main_reports06.png
:align: center

View File

@ -29,6 +29,6 @@ You can then configure your fiscal years in
You only have to create fiscal years if they last more or less
than 12 months.
.. seealso::
.. seealso::
* :doc:`close_fiscal_year`

View File

@ -11,7 +11,7 @@ Taxes
taxes/default_taxes
taxes/fiscal_positions
taxes/eu_distance_selling
taxes/avatax
taxes/avatax
taxes/taxcloud
taxes/retention
taxes/B2B_B2C

View File

@ -114,19 +114,19 @@ Setting your products
Your company must be configured with tax excluded by default. This is
usually the default configuration, but you can check your **Default Sale
Tax** from the menu :menuselection:`Configuration --> Settings`
Tax** from the menu :menuselection:`Configuration --> Settings`
of the Accounting application.
.. image:: B2B_B2C/price_B2C_B2B01.png
:align: center
Once done, you can create a **B2C** pricelist. You can activate the
pricelist feature per customer from the menu:
:menuselection:`Configuration --> Settings` of the Sale application.
pricelist feature per customer from the menu:
:menuselection:`Configuration --> Settings` of the Sale application.
Choose the option **different prices per customer segment**.
Once done, create a B2C pricelist from the menu
:menuselection:`Configuration --> Pricelists`.
Once done, create a B2C pricelist from the menu
:menuselection:`Configuration --> Pricelists`.
It's also good to rename the default pricelist into B2B to avoid confusion.
Then, create a product at 8.26€, with a tax of 21% (defined as tax not
@ -141,8 +141,8 @@ Setting the B2C fiscal position
-------------------------------
From the accounting application, create a B2C fiscal position from this
menu: :menuselection:`Configuration --> Fiscal Positions`.
This fiscal position should map the VAT 21% (tax excluded of price)
menu: :menuselection:`Configuration --> Fiscal Positions`.
This fiscal position should map the VAT 21% (tax excluded of price)
with a VAT 21% (tax included in price)
.. image:: B2B_B2C/price_B2C_B2B03.png
@ -151,8 +151,8 @@ with a VAT 21% (tax included in price)
Test by creating a quotation
============================
Create a quotation from the Sale application, using the
:menuselection:`Sales --> Quotations` menu. You should have the
Create a quotation from the Sale application, using the
:menuselection:`Sales --> Quotations` menu. You should have the
following result: 8.26€ + 1.73€ = 9.99€.
.. image:: B2B_B2C/price_B2C_B2B04.png

View File

@ -40,8 +40,8 @@ Once the tax is defined, you can use it in your products, sales order or
invoices.
.. tip::
If the retention is a percentage of a regular tax, create a Tax with a
**Tax Computation** as a **Tax Group** and set the two taxes in this group
If the retention is a percentage of a regular tax, create a Tax with a
**Tax Computation** as a **Tax Group** and set the two taxes in this group
(normal tax and retention).
Applying retention taxes on invoices
@ -55,9 +55,9 @@ invoice line.
:align: center
.. note::
When you see the customer invoice on the screen, you get only a
**Taxes line** summarizing all the taxes (normal taxes & retentions).
But when you print or send the invoice, Odoo does the correct
When you see the customer invoice on the screen, you get only a
**Taxes line** summarizing all the taxes (normal taxes & retentions).
But when you print or send the invoice, Odoo does the correct
grouping amongst all the taxes.
The printed invoice will show the different amounts in each tax group.

View File

@ -14,7 +14,7 @@ How to set expense types
========================
The first step to track expenses is to configure the expense types (managed as products in Odoo)
that your company allows, from the *Configuration* menu.
that your company allows, from the *Configuration* menu.
When a specific expense is reimbursed at a fixed price, set a cost on the product.
Otherwise keep the cost at 0.0 and employees will report the real cost per expense.
@ -37,16 +37,16 @@ Here are some examples:
* Cost: 0.0
Don't forget to set an expense tax on each expense type
(and an account if you use Odoo Accounting).
It's usually a good practice to use a tax that is configured
Don't forget to set an expense tax on each expense type
(and an account if you use Odoo Accounting).
It's usually a good practice to use a tax that is configured
with :ref:`Tax Included in Price <taxes/included-in-price>`.
That way, employees report expenses with
That way, employees report expenses with
prices including taxes, which is usually the expected behaviour.
.. tip::
The *Sales* app allows you to specify units of measure for your
expense types (units, miles, nights, etc.).
.. tip::
The *Sales* app allows you to specify units of measure for your
expense types (units, miles, nights, etc.).
Go to :menuselection:`Sales --> Configuration --> Settings` and check
*Some products may be sold/purchased in different units of measure (advanced)*.
@ -57,20 +57,20 @@ How to record expenses
Manually
--------
As an employee (Employee in user access rights), you can record
As an employee (Employee in user access rights), you can record
expenses from :menuselection:`My Expenses --> Expenses to Submit`.
.. image:: expenses/submit_01.png
:align: center
1. Select the related product and enter either the total amount
you paid (with Quantity = 1) or the unit price if Quantity is
1. Select the related product and enter either the total amount
you paid (with Quantity = 1) or the unit price if Quantity is
countable (e.g. number of hotel nights).
2. Enter the expense date.
3. Choose if you paid the bill on your own (and expect to be reimbursed)
3. Choose if you paid the bill on your own (and expect to be reimbursed)
or if the company paid directly (e.g. if you used a company's credit card).
4. Set the bill reference, add some notes if requested and attach a
photo/scan of the receipt from the discussion thread.
4. Set the bill reference, add some notes if requested and attach a
photo/scan of the receipt from the discussion thread.
That will help the manager and the accountant validate it.
.. image:: expenses/submit_02.png
@ -79,56 +79,56 @@ expenses from :menuselection:`My Expenses --> Expenses to Submit`.
In one click from emails
------------------------
Let your employees record their expenses from a simple email.
Let your employees record their expenses from a simple email.
Make a snapshot of the receipt and send it by email, or simply forward a bill!
The only thing to do is setting up an email alias in
:menuselection:`Expenses --> Configuration --> Settings` (e.g. *expenses* @mycompany.odoo.com).
For security purposes, only authenticated employee emails
The only thing to do is setting up an email alias in
:menuselection:`Expenses --> Configuration --> Settings` (e.g. *expenses* @mycompany.odoo.com).
For security purposes, only authenticated employee emails
(cfr. *Work Email* in employee detail form) are accepted.
.. tip::
The expense product is set automatically if the mail subject contains
The expense product is set automatically if the mail subject contains
the product's internal reference in first position.
Type the expense amount in the mail subject to set it on the expense too (e.g. Ref001 Food 100€).
How to submit expenses to managers
==================================
When you are ready to submit your expenses to your manager
(e.g. at the end of a business trip, or once a month),
go to the menu :menuselection:`My Expenses --> Expenses to Submit`. Select all expenses
When you are ready to submit your expenses to your manager
(e.g. at the end of a business trip, or once a month),
go to the menu :menuselection:`My Expenses --> Expenses to Submit`. Select all expenses
from the list view and click on :menuselection:`Action --> Submit to Manager`.
Save the newly created expense report (i.e. set of expenses),
Save the newly created expense report (i.e. set of expenses),
and wait for your manager to approve it.
.. image:: expenses/submit_03.png
:align: center
You can also submit expenses one by one from the *Submit to Manager*
You can also submit expenses one by one from the *Submit to Manager*
button on the form view of an expense.
All your submitted expense reports can be found in
All your submitted expense reports can be found in
:menuselection:`Expenses --> My Expenses --> Expense Reports`.
How to approve expenses
=======================
HR and team managers get an overview of all expense reports to
validate from the top menu :menuselection:`To Approve --> Expense Reports to Approve`.
HR and team managers get an overview of all expense reports to
validate from the top menu :menuselection:`To Approve --> Expense Reports to Approve`.
Such users must have at least *Officers* access rights for *Expenses*.
.. image:: expenses/approval_01.png
:align: center
They can review expense reports, approve or reject them, as well as providing
They can review expense reports, approve or reject them, as well as providing
feedback thanks to the integrated communication tool.
.. image:: expenses/approval_02.png
:align: center
As a team manager you can easily find the expense reports of your team members.
As a team manager you can easily find the expense reports of your team members.
You need to be set as manager in the detail form of those employees.
.. image:: expenses/approval_03.png
@ -138,27 +138,27 @@ You need to be set as manager in the detail form of those employees.
How to post expenses in accounting
==================================
Once expense reports approved by managers, the accounting department
goes to :menuselection:`Expenses --> Accountant --> Expense Reports To Post` to check
accounts, products and taxes. They can click *Post Journal Entries*
to post related journal entries into your books.
Once expense reports approved by managers, the accounting department
goes to :menuselection:`Expenses --> Accountant --> Expense Reports To Post` to check
accounts, products and taxes. They can click *Post Journal Entries*
to post related journal entries into your books.
To do so, the user must have following access rights:
* Accounting: Accountant or Adviser
* Expenses: Manager
.. note::
To post an expense, a *Home Address* must be set on the employee.
If you get a related blocking message when posting, click the employee,
go to *Personal Information* tab and select/create the contact of your employee
in the address book.
To post an expense, a *Home Address* must be set on the employee.
If you get a related blocking message when posting, click the employee,
go to *Personal Information* tab and select/create the contact of your employee
in the address book.
A contact has been automatically created if this person is using Odoo.
How to reimburse employees
==========================
You can now see all the expense reports to reimburse in
:menuselection:`Expenses --> Accountant --> Expense Reports To Pay`.
You can now see all the expense reports to reimburse in
:menuselection:`Expenses --> Accountant --> Expense Reports To Pay`.
To record the payment or pay by check, click *Register a Payment*.
See how you can easily manage the payment process in Odoo:
@ -223,7 +223,7 @@ Submit, validate and post expenses
Invoice expenses
----------------
Now you can invoice the order. It shows up in
Now you can invoice the order. It shows up in
:menuselection:`Sales --> Invoicing --> Sales`
to Invoice. The expenses have been added automatically in the order
lines. Such items show up in blue (i.e. to invoice).
@ -231,4 +231,4 @@ lines. Such items show up in blue (i.e. to invoice).
.. image:: expenses/invoicing_04.png
:align: center
e (i.e. to invoice).
e (i.e. to invoice).

View File

@ -10,7 +10,7 @@ countries, currencies and payment methods in Latin America.
Configuration on Mercado Pago Dashboard
=======================================
#. Log into `Mercado Pago Dashboard <https://www.mercadopago.com.mx/developers/panel>`_
#. Log into `Mercado Pago Dashboard <https://www.mercadopago.com.mx/developers/panel>`_
and go to your **Application** or *create* a new one.
#. Go to :menuselection:`Production Credentials` or :menuselection:`Credentials` if your are in
a *Test* environment and copy your **Access Token**
@ -22,7 +22,7 @@ Configuration on Odoo
#. :ref:`Navigate to the payment provider Mercado Pago <payment_providers/add_new>` and change its
state to :guilabel:`Enabled`.
#. In the :guilabel:`Credentials` tab, fill the :guilabel:`Access Token` with the value
#. In the :guilabel:`Credentials` tab, fill the :guilabel:`Access Token` with the value
you saved at the step :ref:`payment_providers/mercado_pago/configure_dashboard`.
#. Configure the rest of the options to your liking.

View File

@ -14,4 +14,3 @@ Miscellaneous
general/digest_emails
general/in_app_purchase
general/developer_mode

View File

@ -70,7 +70,7 @@ Credentials
#. Select **Web Application** as the Application type. Now configure the allowed pages on which you
will be redirected.
In order to achieve this, in the **Authorized redirect URIs** field, enter your database's domain
immediately followed by ``/auth_oauth/signin``. For example:
``https://mydomain.odoo.com/auth_oauth/signin``, then click on *Create*.
@ -106,7 +106,7 @@ Odoo activation
.. note::
You may have to log in again after this step.
#. Go back to :menuselection:`General Settings --> Integrations`, activate **Google
Authentication**, then fill out the *Client ID* with the key from the Google API Dashboard, and
*Save*.

View File

@ -38,7 +38,7 @@ Activate through the command palette
The command palette tool has a command to activate the debug mode: open it with
the keyboard shortcut `ctrl+k`, then type `debug`: a command will show up to
activate the debug mode.
activate the debug mode.
.. image:: developer_mode/command_palette.png
:align: center

View File

@ -54,7 +54,7 @@ Custom digest emails
To do so, click on **Configure Digest Emails** and then **Create**.
From there, give your Digest Email a title, specify periodicity, and choose your desired KPIs and
recipients fields as needed.
recipients fields as needed.
After you click **Save**, your new custom Digest Email is available as a selection in the **General
Settings** dropdown menu.
@ -111,4 +111,4 @@ Computed values reference table
| POS Sales | `kpi_pos_total_value` |
+-----------------------+-------------------------------------------+
| New Employees | `kpi_hr_recruitment_new_colleagues_value` |
+-----------------------+-------------------------------------------+
+-----------------------+-------------------------------------------+

View File

@ -20,7 +20,7 @@ If your database is hosted on our cloud (Odoo Online or Odoo.sh), it is not nece
outgoing email server to send emails from your custom domain. You can enjoy this feature by using
the default Odoo email server.
.. important::
.. important::
The Odoo server is subject to a daily email limit to prevent abuse. The default limit is 200
emails sent per day for databases with an Enterprise subscription. This limit can be increased
under certain conditions. See our :doc:`FAQ <faq>` or contact support for more
@ -38,19 +38,19 @@ Be SPF compliant
================
The Sender Policy Framework (SPF) protocol allows the owner of a domain name to specify which
servers are allowed to send email from that domain. When a server receives an incoming email,
it checks whether the IP address of the sending server is on the list of allowed IPs according
servers are allowed to send email from that domain. When a server receives an incoming email,
it checks whether the IP address of the sending server is on the list of allowed IPs according
to the SPF record of the sender.
.. note::
.. note::
The SPF verification is performed on the domain mentioned in the Return-Path field of the email.
In the case of an email sent by Odoo, this domain corresponds to the value of the
`mail.catchall.domain` key in the database system parameters.
See the :ref:`documentation on incoming emails <email_communication/inbound_messages>`.
The SPF policy of a domain is set using a TXT record. How to create or modify a TXT record depends
on the provider hosting the DNS zone of your domain name. In order for the verification to work
The SPF policy of a domain is set using a TXT record. How to create or modify a TXT record depends
on the provider hosting the DNS zone of your domain name. In order for the verification to work
properly, each domain can only have one SPF record.
If your domain name does not yet have an SPF record, the content of the record to create is as
@ -66,7 +66,7 @@ new one).
If your TXT record is `v=spf1 include:_spf.google.com ~all`, you need to edit it to add
`include:_spf.odoo.com`: `v=spf1 include:_spf.odoo.com include:_spf.google.com ~all`
You can check if your SPF record is valid with a free tool like
You can check if your SPF record is valid with a free tool like
`MXToolbox SPF <https://mxtoolbox.com/spf.aspx>`_.
.. _email_communication/DKIM_compliant:
@ -86,13 +86,13 @@ To enable DKIM, you must add a CNAME record to the DNS zone of your domain name:
``odoo._domainkey IN CNAME odoo._domainkey.odoo.com.``
.. tip::
If your domain name is `mycompany.com`, you need to create a subdomain
If your domain name is `mycompany.com`, you need to create a subdomain
`odoo._domainkey.mycompany.com` whose canonical name is `odoo._domainkey.odoo.com.`.
How to create or modify a CNAME record depends on the provider hosting the DNS zone of your domain
name. The most common providers are list below.
You can check if your DKIM record is valid with a free tool like
You can check if your DKIM record is valid with a free tool like
`DKIM Core <https://dkimcore.org/tools/>`_. If a selector is asked, enter `odoo`.
Check your DMARC policy
@ -110,7 +110,7 @@ There are three DMARC policies:
``p=quarantine`` and ``p=reject`` instruct the server that receives an email to quarantine that
email or ignore it if the SPF and/or DKIM check fails.
If your domain name uses DMARC and has defined one of these policies, it is therefore imperative
If your domain name uses DMARC and has defined one of these policies, it is therefore imperative
to be SPF compliant or to enable DKIM.
.. danger::
@ -118,7 +118,7 @@ to be SPF compliant or to enable DKIM.
strongly advise against using an *@yahoo.com* or *@aol.com* address for your users. These emails
will never reach their recipient.
``p=none`` is used for the domain owner to receive reports about entities using their domain. It
``p=none`` is used for the domain owner to receive reports about entities using their domain. It
should not impact the deliverability if the DMARC check fails.
You can check the DMARC record of a domain name with a tool like
@ -127,12 +127,12 @@ You can check the DMARC record of a domain name with a tool like
If one of your partners, customer or vendor, uses DMARC and has defined one of these policies, the
Odoo server cannot relay emails from this partner to your users.
You need to :ref:`handle user notifications in Odoo <discuss_app/notification_preferences>`, or replace the
You need to :ref:`handle user notifications in Odoo <discuss_app/notification_preferences>`, or replace the
email address of the partner with a default email address.
.. _email_communication/SPFDKIM_common_providers:
SPF, DKIM & DMARC documentation of common providers
SPF, DKIM & DMARC documentation of common providers
===================================================
- `OVH DNS <https://docs.ovh.com/us/en/domains/web_hosting_how_to_edit_my_dns_zone/>`_
@ -145,8 +145,8 @@ SPF, DKIM & DMARC documentation of common providers
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
- `Azure DNS <https://docs.microsoft.com/en-us/azure/dns/dns-getstarted-portal>`_
To fully test your configuration, the tool `Mail-Tester <https://www.mail-tester.com/>`_ will give
you a full overview of the content and configuration you have in one email sent! Mail-Tester can
To fully test your configuration, the tool `Mail-Tester <https://www.mail-tester.com/>`_ will give
you a full overview of the content and configuration you have in one email sent! Mail-Tester can
also be used for other lesser known providers.
Use a default email address
@ -156,7 +156,7 @@ To force the email address from which emails are sent, you need to create the fo
the System Parameters of the database:
- If ``mail.default.from`` is set, and contains a full email address, all outgoing emails are sent
from the given address. This is a requirement to use `Outlook with Odoo
from the given address. This is a requirement to use `Outlook with Odoo
<https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365#option-1-authenticate-your-device-or-application-directly-with-a-microsoft-365-or-office-365-mailbox-and-send-mail-using-smtp-auth-client-submission>`_.
You access the **System Parameters** in :ref:`developer mode <developer-mode>` in the :menuselection:`Settings -->

View File

@ -10,15 +10,15 @@ improving their overall experience with the company.
.. note::
The email templates use QWeb. The composer allows you to edit emails in their final rendering,
making customizations more robust as you dont have to edit code.
making customizations more robust as you dont have to edit code.
Defining a default reply to on your mail template
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Although the field *reply to* is available within the mail templates, **this field is only used
for mass mailing** mode (this means when sending templates on what we call bulk emailing). You
can send emails in bulk in almost every app that has a list view. Select the records you want
and click on the action button. If you have an option to send an email, you will see a mail
Although the field *reply to* is available within the mail templates, **this field is only used
for mass mailing** mode (this means when sending templates on what we call bulk emailing). You
can send emails in bulk in almost every app that has a list view. Select the records you want
and click on the action button. If you have an option to send an email, you will see a mail
composer with possible values to define:
.. image:: email_template/composer-mass-mailing-quotations.png
@ -31,12 +31,12 @@ You can also define them by default on the template:
:align: center
:alt: Reply-to field on template.
Because of this, setting a value in this field is useless as the value defined will be totally
ignored. The default *reply-to* value is the default catchall email address to ensure a
Because of this, setting a value in this field is useless as the value defined will be totally
ignored. The default *reply-to* value is the default catchall email address to ensure a
communication between your customer and your Odoo database. For more information about the way
the catchall works, please check :ref:`how to manage inbound messages <email_communication/inbound_messages>`.
Transactional emails and corresponding URL for each company
Transactional emails and corresponding URL for each company
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When using Odoo, multiple events trigger the sending of automated emails. These emails are known
@ -45,36 +45,36 @@ as transactional emails and sometimes contain links pointing to your Odoo databa
By default, links generated by the database use the dynamic web.base.url key defined in the system
parameters. More information about this :ref:`parameter <domain-name/web-base-url>`.
If the website application isn't installed, the web.base.url key will always be the default
If the website application isn't installed, the web.base.url key will always be the default
parameter used to generate all the links.
Its important to know that this key can only have a single value, meaning that in a
multi-website/company database environment, even if you have a specific domain name for each
Its important to know that this key can only have a single value, meaning that in a
multi-website/company database environment, even if you have a specific domain name for each
website, the links generated to share a document or within a transactional email might remain the
same, whatever the website/company related to the sending of the email/document.
This is not always the case as some Odoo applications have a link established in the database with
the website application, meaning that in this case, if a specific domain is defined for the
This is not always the case as some Odoo applications have a link established in the database with
the website application, meaning that in this case, if a specific domain is defined for the
websites, the URL generated in the email template will use the domain defined on the corresponding
website of the company.
.. caution::
A document shared using the documents application will always use the web.base.url key, as the
document shared isn't associated with any particular website. Meaning that the URL will always be
the same (the web.base.url key value), whatever the company it's shared from, this is a known
A document shared using the documents application will always use the web.base.url key, as the
document shared isn't associated with any particular website. Meaning that the URL will always be
the same (the web.base.url key value), whatever the company it's shared from, this is a known
limitation!
On the other hand, sales orders made by a customer on one of your Odoo e-commerce websites have a
link established with the website from which the order was made. As a result, the e-mail sent for
On the other hand, sales orders made by a customer on one of your Odoo e-commerce websites have a
link established with the website from which the order was made. As a result, the e-mail sent for
the sales orders uses the domain name defined for the corresponding website to generate the links.
For more information about how to configure your domains, we invite you to check :doc:`our domain name
For more information about how to configure your domains, we invite you to check :doc:`our domain name
documentation </administration/maintain/domain_names>`.
Updating translations within email templates
********************************************
Email templates are automatically translated. Changing the translations shouldnt be necessary.
Email templates are automatically translated. Changing the translations shouldnt be necessary.
However, if for a specific reason youd like to change some of the translations, this can be done.
Like any modification in the code, keep in mind that modifications that arent done correctly (for
@ -89,7 +89,7 @@ In order to edit your translations, follow these steps from the template.
:align: left
:alt: Edit the language of a template
#. A pop-up window with the different languages installed on the database will be displayed. From
#. A pop-up window with the different languages installed on the database will be displayed. From
here, editing the translations will be possible. Don't forget to hit the save button to preserve
your changes.

View File

@ -1,10 +1,10 @@
===
FAQ
FAQ
===
This document contains an explanation of the most recurring mailing concerns.
We will start by addressing issues of outgoing emails (ex: my client has not received my email),
We will start by addressing issues of outgoing emails (ex: my client has not received my email),
and then, of incoming emails (ex: I do not receive responses from my customers in the database).
Outgoing emails
@ -27,15 +27,15 @@ Common error messages
.. _email_communication/daily_limit_mail:
You reached your daily limit:
You reached your daily limit:
*****************************
.. image:: faq/email-limit.png
:align: center
:alt: Warning in Odoo upon email limit reached
Each email service provider has its own email sending limits. The limits may be daily, hourly,
and sometimes even per minute. This is the same for Odoo, we have to limit our customers to prevent
Each email service provider has its own email sending limits. The limits may be daily, hourly,
and sometimes even per minute. This is the same for Odoo, we have to limit our customers to prevent
our e-mail servers from being blacklisted.
Here are the default limits for new databases:
@ -48,18 +48,18 @@ Here are the default limits for new databases:
In case you hit the limit, you can:
- Ask our support team to increase your daily limit. We will analyze the situation of your database
- Ask our support team to increase your daily limit. We will analyze the situation of your database
depending on (non-exhaustive list):
- How many users in your database,
- How many users in your database,
- Which apps are installed,
- Your bounce rate: the percentage of email addresses that did not receive your emails because
- Your bounce rate: the percentage of email addresses that did not receive your emails because
it was returned by a mail server on its way to the final recipient. You can contact the `support
<https://www.odoo.com/help>`_.
- Use your own outgoing email server to be independent of Odoos mail limit (please refer
- Use your own outgoing email server to be independent of Odoos mail limit (please refer
to :doc:`the corresponding documentation </applications/general/email_communication/email_servers>`),
- Wait until 11pm UTC for the reset and click on the retry button: The :ref:`Developer mode <developer-mode>`
- Wait until 11pm UTC for the reset and click on the retry button: The :ref:`Developer mode <developer-mode>`
must be activated. Then, go to :menuselection:`Settings --> Technical --> Emails`
.. image:: faq/email-retry-technical.png
@ -70,54 +70,54 @@ In case you hit the limit, you can:
The daily limit is global to your database and can rise quickly! By default an internal message,
a notification, a note, etc. counts as an email in your daily limit if it notifies someone.
You can mitigate this by receiving your :ref:`notifications in Odoo <discuss_app/notification_preferences>`
instead of by emails.
You can mitigate this by receiving your :ref:`notifications in Odoo <discuss_app/notification_preferences>`
instead of by emails.
SMTP Error
**********
You can find out why an email wasn't transmitted successfully by reviewing the Simple Mail
Transport Protocol (SMTP) error messages. SMTP is a protocol to describe the email structure
and transmit it over the Internet, and the error messages generated by email services are helpful
You can find out why an email wasn't transmitted successfully by reviewing the Simple Mail
Transport Protocol (SMTP) error messages. SMTP is a protocol to describe the email structure
and transmit it over the Internet, and the error messages generated by email services are helpful
tools to diagnose and troubleshoot email problems.
No Error
********
Odoo is not always capable of providing information for the reason it failed. The different
providers implement a personalized policy of the bounce emails and it is not always possible
Odoo is not always capable of providing information for the reason it failed. The different
providers implement a personalized policy of the bounce emails and it is not always possible
for Odoo to interpret it correctly.
If you have this problem on a recurring basis with the same client or the same domain, please
If you have this problem on a recurring basis with the same client or the same domain, please
do not hesitate to contact `Odoo Support <https://www.odoo.com/help>`_ for help in finding a reason.
Note: in such case, one of the most common reasons is related to :ref:`SPF <email_communication/spf_compliant>`
Note: in such case, one of the most common reasons is related to :ref:`SPF <email_communication/spf_compliant>`
and/or :ref:`DKIM <email_communication/DKIM_compliant>` configuration.
Why is my email sent late?
**************************
It may happen that you schedule an email campaign but it is not sent on time. We know that
we use a delayed job to send emails that we consider as not urgent (Newsletters concept
such as mass mailing, marketing automation, events). The system utility **cron** can be used
to schedule programs to run automatically at predetermined intervals. We use that policy in order
to avoid cluttering the mail servers and prioritize the communication.
It may happen that you schedule an email campaign but it is not sent on time. We know that
we use a delayed job to send emails that we consider as not urgent (Newsletters concept
such as mass mailing, marketing automation, events). The system utility **cron** can be used
to schedule programs to run automatically at predetermined intervals. We use that policy in order
to avoid cluttering the mail servers and prioritize the communication.
The emails considered urgent (communication from one person to another one such as
Sales Orders, Invoices, Purchase Orders, etc.) are sent directly.
The emails considered urgent (communication from one person to another one such as
Sales Orders, Invoices, Purchase Orders, etc.) are sent directly.
.. image:: faq/email-scheduled-later.png
:align: center
:alt: Email scheduled to be sent later.
By default, the Mass Mailing cron runs every 60 minutes. So, you should wait maximum an hour
By default, the Mass Mailing cron runs every 60 minutes. So, you should wait maximum an hour
before the campaign is actually sent.
Incoming emails
===============
When you have an issue with incoming emails, there might not be an indication per se in Odoo.
This is the client who tries to contact a database who will get a bounce (most of the
When you have an issue with incoming emails, there might not be an indication per se in Odoo.
This is the client who tries to contact a database who will get a bounce (most of the
time 550: mailbox unavailable).
Emails are not received
@ -127,22 +127,22 @@ Depending on the platform you are using:
- The **Odoo.sh** users can find their live logs on the folder :file:`~/logs/`.
- The folder :file:`~/logs/` (preferably accessed by the command line) of an Odoo.sh contains
a list of files containing the logs of the database. The log files are created everyday
at 5:00 AM UTC. The two last days are not compressed, while the older ones are, in order
to gain space. The naming of the files for Today and Yesterday are :file:`odoo.log` and
- The folder :file:`~/logs/` (preferably accessed by the command line) of an Odoo.sh contains
a list of files containing the logs of the database. The log files are created everyday
at 5:00 AM UTC. The two last days are not compressed, while the older ones are, in order
to gain space. The naming of the files for Today and Yesterday are :file:`odoo.log` and
:file:`odoo.log.1`. For the following, they are named with their dates and compressed.
See the Odoo.sh documentation about :ref:`logs <odoosh/logs>`. Use the command ``grep`` and
See the Odoo.sh documentation about :ref:`logs <odoosh/logs>`. Use the command ``grep`` and
``zgrep`` (for the compressed ones) to search through the files.
- **Odoo Online** users wont have access to their logs. However you can still contact
`Odoo Support <https://www.odoo.com/help>`_ , if you have a recurring issue
`Odoo Support <https://www.odoo.com/help>`_ , if you have a recurring issue
with the same client or domain.
Get help from support
---------------------
In order to get helped efficiently, please provide as much information as possible. Here is a list
In order to get helped efficiently, please provide as much information as possible. Here is a list
of what can be helpful:
- The **EML** of the email, stating for *Electronic Mail*, is the file format containing all the

View File

@ -16,7 +16,7 @@ SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: companies; Type: TABLE; Schema: public; Owner: fp; Tablespace:
-- Name: companies; Type: TABLE; Schema: public; Owner: fp; Tablespace:
--
CREATE TABLE companies (
@ -56,7 +56,7 @@ SELECT pg_catalog.setval('companies_id_seq', 3, true);
--
-- Name: persons; Type: TABLE; Schema: public; Owner: fp; Tablespace:
-- Name: persons; Type: TABLE; Schema: public; Owner: fp; Tablespace:
--
CREATE TABLE persons (
@ -134,7 +134,7 @@ COPY persons (id, company_id, person_name) FROM stdin;
--
-- Name: companies_pkey; Type: CONSTRAINT; Schema: public; Owner: fp; Tablespace:
-- Name: companies_pkey; Type: CONSTRAINT; Schema: public; Owner: fp; Tablespace:
--
ALTER TABLE ONLY companies

View File

@ -29,7 +29,7 @@ Settings --> IAP Account`.
.. image:: in_app_purchase/image2.png
:align: center
IAP Portal
==========
@ -62,7 +62,7 @@ Different services are available depending on the hosting type of your Database:
- *Odoo.sh and Odoo Enterprise (on-premise)*: both the services provided by Odoo and by third-party
apps can be used.
Offering my own services
Offering my own services
========================
I am more than welcome to offer my own IAP services through Odoo Apps! It is the perfect opportunity

View File

@ -26,7 +26,7 @@ In order to install libsrtp, follow the instructions below:
.. code-block:: console
cd /usr/local/src/
wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
tar zxvf srtp-1.4.2.tgz
cd /usr/local/src/srtp
./configure CFLAGS=-fPIC --prefix=/usr/local/lib
@ -67,7 +67,7 @@ You also need to install PJSIP, you can download the source `here <http://www.pj
# ldconfig -p | grep pj
- **The result should be:**
.. code-block:: console
libpjsua.so (libc6,x86-64) => /usr/lib/libpjsua.so
@ -90,7 +90,7 @@ Asterisk
- Extract Asterisk:
.. code-block:: console
tar zxvf asterisk*
- Enter the Asterisk directory:
@ -99,7 +99,7 @@ Asterisk
cd ./asterisk*
- Run the Asterisk configure script:
- Run the Asterisk configure script:
.. code-block:: console
@ -207,14 +207,14 @@ In Odoo, the configuration should be done in the user's preferences.
.. image:: asterisk/voip_config01.png
:align: center
- The SIP Login/Browser's Extension is the number you configured previously in the sip.conf file (in our example: 1060).
- The SIP Login/Browser's Extension is the number you configured previously in the sip.conf file (in our example: 1060).
- The SIP Password is the secret you chose in the sip.conf file.
- The SIP Password is the secret you chose in the sip.conf file.
- The extension of your office's phone is not a required field but it is used if you want to transfer your call from Odoo to an external phone also configured in the sip.conf file.
The configuration should also be done in the General Settings under the "Integrations" section.
The configuration should also be done in the General Settings under the "Integrations" section.
.. image:: onsip/onsip02.png
:align: center

View File

@ -18,12 +18,12 @@ warehouse.
Points to be Considered while Implementing Drop-Shipping
========================================================
- Use drop-shipping only for the products you can't or don't want to keep in stock.
- Use drop-shipping only for the products you can't or don't want to keep in stock.
One reason is that you'll always make smaller
margins on items that are drop-shipped, so you should keep it
only for items that take up a lot of space in your warehouse.
- Drop-shipping is best for niche products.
- Drop-shipping is best for niche products.
Chances are that products that are in high demand are being offered by large suppliers at a
fraction of the price you'll be able to charge, so using a more
costly shipping method won't be financially rewarding. But if
@ -32,11 +32,11 @@ Points to be Considered while Implementing Drop-Shipping
- To protect your customers from bad experiences.
Test drop-shipping companies for yourself beforehand and list the best ones.
- Make sure time is not against you.
- Make sure time is not against you.
Drop-shipping should take a reasonable amount of time and surely not more than it would have taken you to handle it all by yourself. It's also nice to be able
to provide your customers with a tracking number.
- Items have to be available from your supplier.
- Items have to be available from your supplier.
It's good to know if
the product you're selling is available upstream. If you don't
have that information, inform your customers that you don't hold

View File

@ -38,7 +38,7 @@ goods in output and then deliver (3 steps)* for *Outgoing Shipments*.
:align: center
Activating this option will lead to the creation of two new locations,
*Output* and *Packing Zone*. If you want to rename it go to :menuselection:`Inventory -->
*Output* and *Packing Zone*. If you want to rename it go to :menuselection:`Inventory -->
Configuration --> Locations`, *Select* the one you want to rename and update its name.
Create a Sales Order

View File

@ -19,7 +19,7 @@ provide a mechanism to chain different actions together. In this case,
we will chain the picking step to the shipping step.
To allow *multi-step routes*, go to :menuselection:`Inventory --> Configuration --> Settings` and
activate the option. Note that activating *Multi-Step Routes* will also
activate the option. Note that activating *Multi-Step Routes* will also
activate *Storage Locations*.
.. image:: two_steps/two_steps_01.png
@ -28,7 +28,7 @@ activate *Storage Locations*.
Warehouse configuration
=======================
Once *Multi-Step Routes* has been activated, you can go to :menuselection:`Inventory -->
Once *Multi-Step Routes* has been activated, you can go to :menuselection:`Inventory -->
Configuration --> Warehouse` and enter the warehouse which will use
delivery in 2 steps. You can then select the option *Send goods in
output and then deliver (2 steps)* for Outgoing Shipments.

View File

@ -43,10 +43,10 @@ on the dashboard, you can click the *1 TO PROCESS* button under the
Now, enter the picking that you want to process. You will be able to
click on *Validate* to complete the move directly as products coming
from suppliers are considered as being always available.
from suppliers are considered as being always available.
.. note::
If you have :guilabel:`Storage Locations` activated, you can click the hamburger menu next to
If you have :guilabel:`Storage Locations` activated, you can click the hamburger menu next to
the :guilabel:`Done quantity` to specify the location(s) where you are storing the received
product(s).

View File

@ -7,20 +7,20 @@ chain, it only makes sense that we assess the quality of the products received f
To do so, we will add a quality control step.
Odoo uses routes to define how to handle the different receipt steps.
Configuration of those routes is done at the warehouse level. By default, the reception is a
Configuration of those routes is done at the warehouse level. By default, the reception is a
one-step process, but it can also be configured to have two-steps or three-steps processes.
The three-steps flow works as follows: you receive the goods in your receiving area, then transfer
them into a quality area for quality control (QC). When the quality check is completed, the goods
The three-steps flow works as follows: you receive the goods in your receiving area, then transfer
them into a quality area for quality control (QC). When the quality check is completed, the goods
that match the QC requirements are moved to stock
Activate Multi-Step Routes
==========================
The first step is to allow the use of *Multi-Step Routes*. Routes provide a mechanism to chain different
The first step is to allow the use of *Multi-Step Routes*. Routes provide a mechanism to chain different
actions together. In this case, we will chain the picking step to the shipping step.
To enable *Multi-Step Routes*, go to :menuselection:`Inventory --> Configuration --> Settings` and
To enable *Multi-Step Routes*, go to :menuselection:`Inventory --> Configuration --> Settings` and
activate the option.
.. image:: three_steps/three_steps_01.png
@ -34,22 +34,22 @@ activate the option.
Configure warehouse for receipt in 3-steps
==========================================
Once *Multi-Step Routes* has been activated, go to :menuselection:`Inventory --> Configuration -->
Warehouse` and enter the warehouse which should work with the 3-steps reception. Then, select
Once *Multi-Step Routes* has been activated, go to :menuselection:`Inventory --> Configuration -->
Warehouse` and enter the warehouse which should work with the 3-steps reception. Then, select
*Receive goods in input, then quality and then stock (3 steps)* for *Incoming Shipments*.
.. image:: three_steps/three_steps_02.png
:align: center
:alt: View of the incoming shipment strategy to choose to receive goods in three steps
Activating this option leads to the creation of two new locations: *Input* and *Quality Control*.
Activating this option leads to the creation of two new locations: *Input* and *Quality Control*.
To rename them, go to :menuselection:`Inventory --> Configuration --> Locations` and select
the one you want to rename.
Create a Purchase Order
=======================
To start the 3-steps reception process, create a *Request for Quotation* from the *Purchase* app,
To start the 3-steps reception process, create a *Request for Quotation* from the *Purchase* app,
add some storable products to it and confirm. Then, three pickings are created with your *Purchase
Order* as the source document:
@ -68,25 +68,25 @@ Order* as the source document:
Process the receipt, quality control and entry in stock
=======================================================
As the receipt operation is the first one to be processed, it has a *Ready* status while the others
As the receipt operation is the first one to be processed, it has a *Ready* status while the others
are *Waiting Another Operation*.
To access the receipt operation, click on the button from the *Purchase Order* or go back to the
To access the receipt operation, click on the button from the *Purchase Order* or go back to the
*Inventory* app dashboard and click on *Receipts*.
.. image:: three_steps/three_steps_04.png
:align: center
:alt: View of the button to click to see the receipts that need to be processed
In the receipt order, products are always considered available because they come from the supplier.
In the receipt order, products are always considered available because they come from the supplier.
Then, the receipt can be validated.
.. image:: three_steps/three_steps_05.png
:align: center
:alt: View of the move (internal transfer) from the reception area to the warehouse input area
Once the receipt has been validated, the transfer to quality becomes *Ready*. And, because the documents
are chained to each other, products previously received are automatically reserved on the
Once the receipt has been validated, the transfer to quality becomes *Ready*. And, because the documents
are chained to each other, products previously received are automatically reserved on the
transfer. Then, the transfer can be directly validated.
.. image:: three_steps/three_steps_06.png
@ -97,7 +97,7 @@ transfer. Then, the transfer can be directly validated.
:align: center
:alt: View of the move (internal transfer) from the input area to the quality control area
Now, the transfer that enters the products to stock is *Ready*. Here, it is again ready to be
Now, the transfer that enters the products to stock is *Ready*. Here, it is again ready to be
validated in order to transfer the products to your stock location.
.. image:: three_steps/three_steps_08.png

View File

@ -40,7 +40,7 @@ After that, the different transfers that needed to be included in the batch tran
to the batch transfer
To see the products to pick for the different transfers, click on
*Select*. If *Multi-locations* has been activated, the document also shows the locations they have
*Select*. If *Multi-locations* has been activated, the document also shows the locations they have
been reserved from.
.. image:: batch_transfers/batch_transfers_05.png
@ -77,12 +77,12 @@ too.
:align: center
:alt: View of an in progress batch transfer
In case all the products cannot be picked, you can create backorders for each individual transfer
In case all the products cannot be picked, you can create backorders for each individual transfer
which couldnt be completely processed.
.. image:: batch_transfers/batch_transfers_09.png
:align: center
:alt: How to handle batch transfers with unavailable products. Creation of a backorder inside
:alt: How to handle batch transfers with unavailable products. Creation of a backorder inside
of a batch transfer
.. image:: batch_transfers/batch_transfers_10.png

View File

@ -25,7 +25,7 @@ options available. Each of them is explained in detail below.
.. rst-class:: alternatives doc-aside
Standard Price
Standard Price
.. rst-class:: values-table
.. list-table::
@ -110,7 +110,7 @@ Average Price
- +2*€6
- €36
In **AVCO (Average Cost)**, each product has the same value and this
In **AVCO (Average Cost)**, each product has the same value and this
value is the average purchase cost of the product. With this costing method, the
cost of the product is recomputed as each receipt.
@ -157,14 +157,14 @@ FIFO
- €44
In **FIFO (First In First Out)**, the products are valued at their
purchase cost. When a product leaves the stock, thats the “First in,
purchase cost. When a product leaves the stock, thats the “First in,
first out” rule that applies.
Pay attention, that this is a financial FIFO. The first value “in”
Pay attention, that this is a financial FIFO. The first value “in”
is the first value “out”, no matter the storage location, warehouse
or serial number.
FIFO is advised if you manage all your workflows into Odoo (Sales,
FIFO is advised if you manage all your workflows into Odoo (Sales,
Purchases, Inventory). It suits any kind of users.
Inventory Valuation: Manual or Automated
@ -179,7 +179,7 @@ your accounting mode: it can be continental or anglo-saxon. In
continental accounting, the cost of a good is taken into account as soon
as the product is received in stock. In anglo-saxon accounting, the cost
of a good is only recorded as an expense when this good is invoiced to a
final customer. In the tables below, you can easily compare those two
final customer. In the tables below, you can easily compare those two
accounting modes.
Usually, based on your country, the correct accounting mode will be
@ -195,8 +195,8 @@ on your accounting books. Periodically, you create a manual journal
entry representing the value of what you have in stock. To know that
value, go in :menuselection:`Inventory --> Reporting --> Inventory Valuation`.
This is the default configuration in Odoo and it works
out-of-the-box. Check following operations and find out how
This is the default configuration in Odoo and it works
out-of-the-box. Check following operations and find out how
Odoo is managing the accounting postings.
Continental Accounting
@ -248,11 +248,11 @@ Manufacturing Orders
<hr style="float: none; visibility: hidden; margin: 0;">
At the end of the month/year, your company does a physical inventory
At the end of the month/year, your company does a physical inventory
or just relies on the inventory in Odoo to value the stock into your books.
Create a journal entry to move the stock variation value from your
Profit&Loss section to your assets.
Create a journal entry to move the stock variation value from your
Profit&Loss section to your assets.
.. h:div:: doc-aside
@ -261,13 +261,13 @@ Profit&Loss section to your assets.
===================================== ===== ======
\ Debit Credit
===================================== ===== ======
Assets: Inventory X
Expenses: Inventory Variations X
Assets: Inventory X
Expenses: Inventory Variations X
===================================== ===== ======
If the stock value decreased, the **Inventory** account is credited
and the **Inventory Variations** debited.
.. raw:: html
<hr style="float: none; visibility: hidden; margin: 0;">
@ -289,7 +289,7 @@ Vendor Bill
============================= ===== ======
Configuration:
* Purchased Goods: defined on the product or on the internal category of related product
* Purchased Goods: defined on the product or on the internal category of related product
(Expense Account field)
* Deferred Tax Assets: defined on the tax used on the purchase order line
* Accounts Payable: defined on the vendor related to the bill
@ -307,7 +307,7 @@ Customer Invoice
===================================== ===== ======
Configuration:
* Revenues: defined on the product or on the internal category of related
* Revenues: defined on the product or on the internal category of related
product (Income Account field)
* Deferred Tax Liabilities: defined on the tax used on the invoice line
* Accounts Receivable: defined on the customer (Receivable Account)
@ -322,11 +322,11 @@ Manufacturing Orders
.. raw:: html
<hr style="float: none; visibility: hidden; margin: 0;">
At the end of the month/year, your company does a physical inventory
At the end of the month/year, your company does a physical inventory
or just relies on the inventory in Odoo to value the stock into your books.
Then you need to break down the purchase balance into both the inventory and
Then you need to break down the purchase balance into both the inventory and
the cost of goods sold using the following formula:
Cost of goods sold (COGS) = Starting inventory value + Purchases Closing inventory value
@ -340,10 +340,10 @@ To update the stock valuation in your books, record such an entry:
===================================== ===== ======
\ Debit Credit
===================================== ===== ======
Assets: Inventory (closing value) X
Assets: Inventory (closing value) X
Expenses: Cost of Good Sold X
Expenses: Purchased Goods X
Assets: Inventory (starting value) X
Assets: Inventory (starting value) X
===================================== ===== ======
Automated Inventory Valuation
@ -370,19 +370,19 @@ Continental Accounting
<hr style="float: none; visibility: hidden; margin: 0;">
.. h:div:: doc-aside
**Configuration:**
- Accounts Receivable/Payable: defined on the partner (Accounting tab)
- Deferred Tax Assets/Liabilities: defined on the tax used on the invoice line
- Revenues/Expenses: defined by default on product's internal category; can be
- Revenues/Expenses: defined by default on product's internal category; can be
also set in product form (Accounting tab) as a replacement value.
- Inventory Variations: to set as Stock Input/Output Account in product's internal
- Inventory Variations: to set as Stock Input/Output Account in product's internal
category
- Inventory: to set as Stock Valuation Account in product's internal category
Anglo-Saxon Accounting
@ -402,7 +402,7 @@ Anglo-Saxon Accounting
- Accounts Receivable/Payable: defined on the partner (Accounting tab)
- Deferred Tax Assets/Liabilities: defined on the tax used on the
- Deferred Tax Assets/Liabilities: defined on the tax used on the
invoice line
- Revenues: defined on the product category as a default, or specifically
@ -412,13 +412,13 @@ Anglo-Saxon Accounting
Defined on the product category as a default value, or specifically on
the product form.
- Goods Received Not Purchased: to set as Stock Input Account in product's
- Goods Received Not Purchased: to set as Stock Input Account in product's
internal category
- Goods Issued Not Invoiced: to set as Stock Output Account in product's
- Goods Issued Not Invoiced: to set as Stock Output Account in product's
internal category
- Inventory: to set as Stock Valuation Account in product's internal category
- Price Difference: to set in product's internal category or in product
- Price Difference: to set in product's internal category or in product
form as a specific replacement value

View File

@ -23,7 +23,7 @@ Now, you have to make sure that the main stock locations of warehouse A and ware
Sell a product from the virtual warehouse
==========================================
Lets say you have two products, one stored in warehouse A and one stored in warehouse B. Now, you can create a new quotation for one of each product. Go to other information and choose Warehouse A+B in the shipping information.
Lets say you have two products, one stored in warehouse A and one stored in warehouse B. Now, you can create a new quotation for one of each product. Go to other information and choose Warehouse A+B in the shipping information.
.. image:: stock_warehouses/ware3.png
:align: center

View File

@ -14,7 +14,7 @@ the destination.
You can easily cancel the request made to the carrier system.
How to cancel a shipping request?
How to cancel a shipping request?
=================================
- If the delivery order is not **Validated**, then the request hasn't been
@ -36,7 +36,7 @@ You will now see that the shipment has been cancelled.
You can now change the carrier if you wish.
How to send a shipping request after cancelling one?
How to send a shipping request after cancelling one?
====================================================
After cancelling the shipping request, you can change the carrier you

View File

@ -81,7 +81,7 @@ Open the products you want to ship and set a weight on it.
Don't forget to do the conversion if you are used to the imperial
measurement system.
How to print shipping labels ?
How to print shipping labels ?
===============================
The delivery order created from the sale order will take the shipping

View File

@ -13,7 +13,7 @@ Configuration
=============
To configure the use of packages, go to the menu
:menuselection:`Inventory --> Configuration --> Settings`.
:menuselection:`Inventory --> Configuration --> Settings`.
Locate the **Packages** section and tick **Record
packages used on packing: pallets, boxes,...**

View File

@ -1,5 +1,5 @@
===============================
How to setup a delivery method?
How to setup a delivery method?
===============================
Overview
@ -33,7 +33,7 @@ order to see it :
Configure the delivery method
-----------------------------
To configure your delivery methods, go to the **Inventory** module,
To configure your delivery methods, go to the **Inventory** module,
click on :menuselection:`Configuration --> Delivery Methods`.
First set a name and a transporter company.
@ -65,9 +65,9 @@ feature limits the list of countries on your e-commerce.
.. image:: delivery_method/setup02.png
:align: center
.. note::
.. note::
You can integrate Odoo with external shippers in order to compute the
real price and packagings, and handle the printing the shipping labels.
real price and packagings, and handle the printing the shipping labels.
See :doc:`third_party_shipper`
Delivery process

View File

@ -16,7 +16,7 @@ Configuration
Install the shipper company connector module
--------------------------------------------
In the inventory module, click on :menuselection:`Configuration --> Settings`.
In the inventory module, click on :menuselection:`Configuration --> Settings`.
Under **Shipping Connectors**, flag the transportation companies you want to
integrate :
@ -26,7 +26,7 @@ integrate :
Then click on **Apply**.
.. note::
If you want to integrate delivery methods in your e-commerce,
If you want to integrate delivery methods in your e-commerce,
you'll have to install the **eCommerce Delivery** module.
Configure the delivery method

View File

@ -16,15 +16,15 @@ the UPS Developer Kit API Development and Production servers.
Create a UPS Account
=====================
Note that only customers located in the US can open a UPS account online.
If you are located outside the US, you will need to contact UPS Customer
Note that only customers located in the US can open a UPS account online.
If you are located outside the US, you will need to contact UPS Customer
Service in order to to open an account.
You can read additional information about opening a UPS account on the
their website, on the page,
`How to Open a UPS Account Online <https://www.ups.com/content/us/en/resources/sri/openaccountonline.html?srch_pos=2&srch_phr=open+ups+account>`_
You can read additional information about opening a UPS account on the
their website, on the page,
`How to Open a UPS Account Online <https://www.ups.com/content/us/en/resources/sri/openaccountonline.html?srch_pos=2&srch_phr=open+ups+account>`_
If you don't already have a UPS account, you can create one along with
If you don't already have a UPS account, you can create one along with
your online profile by following these steps:
1. Access the UPS.com web site at
@ -34,7 +34,7 @@ at the top of the page.
2. Click the **Register for MyUPS** button, and follow the prompts to
complete the registration process.
If you already have a UPS account, you can add it to your online profile as follows:
If you already have a UPS account, you can add it to your online profile as follows:
1. Log in to the `UPS.com website <http://www.ups.com/>`_) using your UPS.com User ID and Password.
@ -45,7 +45,7 @@ If you already have a UPS account, you can add it to your online profile as foll
4. Click the **Add an Existing UPS Account** link in the **UPS Account Details**
section of the page.
5. In the **Add New Account** screen, enter the **UPS Account Number**,
5. In the **Add New Account** screen, enter the **UPS Account Number**,
**Account Name**, and **Postal Code** fields. The country defaults to
United States.q

View File

@ -3,17 +3,17 @@ Kits
=====
A *kit* is a set of components that are not pre-assembled or mixed. This is useful for
selling but also for creating cleaner and more effective *BOMs*. To use kits, you need
both the Manufacturing and Inventory apps to be installed.
selling but also for creating cleaner and more effective *BOMs*. To use kits, you need
both the Manufacturing and Inventory apps to be installed.
Manage Stock of Component Products
==================================
If you want to assemble kits as they are ordered, managing stock of the kit components only,
you will use a *Kit BoM* Type without any manufacturing operations.
If you want to assemble kits as they are ordered, managing stock of the kit components only,
you will use a *Kit BoM* Type without any manufacturing operations.
A product using a *Kit BoM* will appear as a single line item on a quotation and a sales order,
but will generate a delivery order with one line item for each of the components of the kit. In
but will generate a delivery order with one line item for each of the components of the kit. In
the examples below, the first image shows a sales order for the kit *Custom Computer Kit*,
while the second image shows the corresponding delivery order.
@ -26,16 +26,16 @@ while the second image shows the corresponding delivery order.
Configuration
=============
From the *Products menu* in either the *Inventory* or *Manufacturing* app, create each component
From the *Products menu* in either the *Inventory* or *Manufacturing* app, create each component
product (as you would with any other product), then create the top-level, or kit product. Because
you cannot track the stock of kit products, the *Product Type* should be set to *Consumable*.
However, if you are using Anglo-Saxon accounting, and you would like COGS to be posted when
invoicing your kits (and only for this reason), the storable product type should selected instead.
you cannot track the stock of kit products, the *Product Type* should be set to *Consumable*.
However, if you are using Anglo-Saxon accounting, and you would like COGS to be posted when
invoicing your kits (and only for this reason), the storable product type should selected instead.
Because a kit product cannot be purchased, *Can be Purchased* should be unchecked. The route of the
kit product in the *Inventory* Tab does not really matter, as, for replenishment, only the route of
the components that will be taken into account only.
kit product in the *Inventory* Tab does not really matter, as, for replenishment, only the route of
the components that will be taken into account only.
All other parameters on the kit product may be modified according to your preference. The component
All other parameters on the kit product may be modified according to your preference. The component
products require no particular configuration.
Once the products are configured, create a *bill of materials* for the kit product. Add each component
@ -47,11 +47,11 @@ and its quantity. Select the *BoM Type* Kit. All other options may be left with
Manage Stock of Kit Product and Component Products
==================================================
If you want to manage the stock of the *top-level kit product*, you will use a standard *BoM Type*
If you want to manage the stock of the *top-level kit product*, you will use a standard *BoM Type*
manufacture or subcontracting instead. In this case you will either buy the final product from your
subcontractor, or make it yourself through a manufacturing order.
subcontractor, or make it yourself through a manufacturing order.
In that case the product type will be storable, and the BOM type either 'Manufacture this product'
In that case the product type will be storable, and the BOM type either 'Manufacture this product'
or 'Subcontracting' as shown below.
.. image:: kit_shipping/kit-storable.png
@ -59,29 +59,29 @@ or 'Subcontracting' as shown below.
Build a cleaner BOM
====================
====================
As suggested above, a kit BOM can also simply be used to manage a more complex BOM.
As suggested above, a kit BOM can also simply be used to manage a more complex BOM.
Imagine the Custom Computer parts above were part of another final product. It would be much
clearer and simpler if the BOMs were added together (as shown below) instead of adding all
Imagine the Custom Computer parts above were part of another final product. It would be much
clearer and simpler if the BOMs were added together (as shown below) instead of adding all
the individual parts one by one.
.. image:: kit_shipping/kit-bom4.png
:align: center
This is even better illustrated when looking at the BOM Structure Report, where it is
easy to expand and hide specific kit level or sub-assembly type BOMs.
This is even better illustrated when looking at the BOM Structure Report, where it is
easy to expand and hide specific kit level or sub-assembly type BOMs.
.. image:: kit_shipping/kit-bom5.png
:align: center
On the creation of the manufacturing order, the BOM will automatically expand to show all
top level and kit level components. You can go back to the BOM at any point though as it
remains available on the form view of your manufacturing order.
top level and kit level components. You can go back to the BOM at any point though as it
remains available on the form view of your manufacturing order.
.. image:: kit_shipping/kit-bom6.png
:align: center
Finally, note that if there were any Operations in the Kit BOM, these would also simply be added
in to the work order list of the main component.
Finally, note that if there were any Operations in the Kit BOM, these would also simply be added
in to the work order list of the main component.

View File

@ -7,7 +7,7 @@ of your subcontractor, before registering the products into your stock, you can
rely on Odoo's Quality module.
To control the quality of your production, you need to set a *Quality Control Point*
To control the quality of your production, you need to set a *Quality Control Point*
on the Manufacturing Operation Type, as shown below. To create it, Go to :menuselection:`Quality
--> Quality Control --> Control Points`, and click **Create**.
If the check only applies to specific products, or product categories, you can specify these during
@ -16,13 +16,13 @@ the setup as well.
.. image:: quality_control/qc_1.png
:align: center
Regarding the reception of subcontracted products, instead of the Manufacturing Operation Type,
you need to select the 'Receipts' Operation type. For the rest, the same principles apply.
Regarding the reception of subcontracted products, instead of the Manufacturing Operation Type,
you need to select the 'Receipts' Operation type. For the rest, the same principles apply.
.. image:: quality_control/qc_2.png
:align: center
By doing so, a quality check is automatically created each time a
finished product is made and/or received. Note that several Quality Check
finished product is made and/or received. Note that several Quality Check
*Types* can be chosen from the dropdown. Note also that several Quality
Check Points can be set up for the same Operation Type.
Check Points can be set up for the same Operation Type.

View File

@ -7,17 +7,17 @@ of Materials* or to represent your manufacturing flow more accurately.
A *semi-finished product* is a manufactured product that is used as a
component in a Bill of Material.
A *BoM* that employs *semi-finished products* is referred to as
A *BoM* that employs *semi-finished products* is referred to as
a multi-level BoM, where we distinguish between the *top level Product*
and the *sub-assemblies*.
and the *sub-assemblies*.
Configure a Multi Level BoM
============================
To configure a *multi-level BoM*, you will need the top-level product
and its sub-assemblies. Therefore, you must first create the sub-assembly
products and their respective Bill of Materials. Please refer to
:doc:`bill_configuration` for more details on how to create a BOM.
products and their respective Bill of Materials. Please refer to
:doc:`bill_configuration` for more details on how to create a BOM.
.. image:: sub_assemblies/sf_1.png
:align: center
@ -25,33 +25,33 @@ products and their respective Bill of Materials. Please refer to
Configure the Main BoM
======================
Then on the final product form, simply add your semi-finished
products to the Bill of Material.
Then on the final product form, simply add your semi-finished
products to the Bill of Material.
.. image:: sub_assemblies/sf_2.png
:align: center
Manage your production planning
Manage your production planning
=================================
There are several methods to manage the triggering of the various manufacturing orders.
There are several methods to manage the triggering of the various manufacturing orders.
If every time a manufacturing order is confirmed for the main product, you'd like one for
the semi-finished products as well, you have two options:
If every time a manufacturing order is confirmed for the main product, you'd like one for
the semi-finished products as well, you have two options:
Option 1 : Create re-ordering rules for the semi-finished products, with both the minimum
and maximum desired stock quantities at 0.
Option 1 : Create re-ordering rules for the semi-finished products, with both the minimum
and maximum desired stock quantities at 0.
.. image:: sub_assemblies/sf_3.png
:align: center
Option 2 : Use the Replenish on Order (MTO) route on the semi-finished product, as well as
the manufacturing one.
Option 2 : Use the Replenish on Order (MTO) route on the semi-finished product, as well as
the manufacturing one.
Note that Option 1 is usually recommended over Option 2 as it is more flexible. The MTO route
creates a unique link between the semi-finished and the top level product, whereas the
Note that Option 1 is usually recommended over Option 2 as it is more flexible. The MTO route
creates a unique link between the semi-finished and the top level product, whereas the
re-ordering rule allows you to simply unreserve that production from the top level product
production and redirect it to another, more pressing demand, for example.
production and redirect it to another, more pressing demand, for example.
In any case, as soon as the semi-finished product is produced, it will become
available in the manufacturing order of the final product, as shown below.

View File

@ -6,7 +6,7 @@ Outsourcing a portion or all of your companys manufacturing needs
is not easy. To make it work correctly, you have to:
- Manage the inventory of raw materials at your subcontractor
- Ship raw material to your subcontractors, at the right time
- Ship raw material to your subcontractors, at the right time
- Control incoming goods quality
- Control subcontractors bills
@ -15,7 +15,7 @@ produced out of raw materials “A” and “B”.
.. image:: subcontracting/subcontracting_01.png
:align: center
:alt:
:alt:
With its MRP subcontracting feature, Odoo helps you handle this flow easily.
@ -27,12 +27,12 @@ To use the subcontracting feature, go to :menuselection:`Manufacturing
.. image:: subcontracting/sbc_1.png
:align: center
:alt:
:alt:
To define if a product must be subcontracted, use a *Bill of Materials
(BoM)* of type *Subcontracting*.
To create a new *BoM*, go to :menuselection:`Manufacturing --> Products -->
To create a new *BoM*, go to :menuselection:`Manufacturing --> Products -->
Bill of Materials` and hit create. Then, list the components
your subcontractor needs to manufacture the product. For costing
purposes, you might want to register all the components, even the ones
@ -43,7 +43,7 @@ several subcontractors.
.. image:: subcontracting/sbc_2.png
:align: center
:alt:
:alt:
Basic Subcontracting Flow
=========================
@ -55,7 +55,7 @@ defined as a subcontractor on the *BoM* of these products.
.. image:: subcontracting/subcontracting_04.png
:align: center
:alt:
:alt:
Once the *PO* is validated (1), a pending receipt is created. When the
products are received, validate the receipt (2), with the actual
@ -71,7 +71,7 @@ quantity received. As a result, Odoo does the following things for you:
.. note::
The *PO* is optional. If you create a receipt manually, with the right
subcontractor, Odoo still performs all the moves. This can be useful if
subcontractor, Odoo still performs all the moves. This can be useful if
the subcontractor does not bill a fixed price per item, but rather the time
and materials used.
@ -93,15 +93,15 @@ With:
Sending raw materials to your subcontractors (**A**) does not impact
the inventory valuation, as the components are still valued as part of
your stock. This is managed by making the *Subcontracting Location* an
*Internal Location*.
your stock. This is managed by making the *Subcontracting Location* an
*Internal Location*.
Then, the vendor price set on the product C form has to be what has to
be paid to the subcontractor for his parts and service time: **B +
s**. The product cost has to be: **A + B + s**, how much the
product is valued in the accounting.
Finally, the subcontractor bill then matches the purchase order, with
Finally, the subcontractor bill then matches the purchase order, with
the proposed price coming from the finished products C.
.. note::
@ -115,99 +115,99 @@ Traceability
In case the received products from the subcontractor contain tracked
components, their serial or lot numbers need to be specified during the
receipt.
receipt.
In that case, on the receipt of the subcontracted product, a *Record Components*
button appears. Click on it to open a dialog box and record the serial/lot numbers of
button appears. Click on it to open a dialog box and record the serial/lot numbers of
the components. If the finished product is also tracked, its serial/lot number can
be registered here too.
.. image:: subcontracting/sbc_3.png
:align: center
:alt:
:alt:
For audit purposes, it is possible to check the lot numbers recorded on
a receipt by using the icon on the right of the finished products:
.. image:: subcontracting/sbc_4.png
:align: center
:alt:
:alt:
Also note that in case flexible consumption has been selected on the subcontracted
BOM for a non-tracked product, the record components option will also appear
optionally on each move line, if you want to register more or less component consumption
at your subcontracting location, when receiving your final product.
Also note that in case flexible consumption has been selected on the subcontracted
BOM for a non-tracked product, the record components option will also appear
optionally on each move line, if you want to register more or less component consumption
at your subcontracting location, when receiving your final product.
.. image:: subcontracting/sbc_5.png
:align: center
:alt:
:alt:
As you can see, the reception of both of these non-tracked products can either be executed
by selecting the 'Set Quantities' Option or via the move line hamburger menus.
As you can see, the reception of both of these non-tracked products can either be executed
by selecting the 'Set Quantities' Option or via the move line hamburger menus.
Automate Replenishment of Subcontractors
========================================
There are two ways to automate the supply of raw materials to your
There are two ways to automate the supply of raw materials to your
subcontractors when purchasing the final product. The chosen method
depends on whether or not you want the materials to transit through your
warehouse. Both of these methods are described as pull style mechanisms as
their trigger is the inital PO to the subcontractor, which creates a need
at the subcontracting location, for raw material.
warehouse. Both of these methods are described as pull style mechanisms as
their trigger is the inital PO to the subcontractor, which creates a need
at the subcontracting location, for raw material.
If you are supplying your subcontractor with raw material from your own warehouse,
you must activate the 'Resupply Subcontractor on Order' route as shown
you must activate the 'Resupply Subcontractor on Order' route as shown
below. If this is a component that you buy from a vendor, the buy route
should also be activated.
should also be activated.
.. image:: subcontracting/sbc_6.png
:align: center
:alt:
:alt:
Now, if you want your vendor to resupply your subcontractor directly, you
must choose the 'Dropship Subcontractor on Order' option instead. In order
for this option to be active on the product form, you must first activate the
Now, if you want your vendor to resupply your subcontractor directly, you
must choose the 'Dropship Subcontractor on Order' option instead. In order
for this option to be active on the product form, you must first activate the
dropship option from :menuselection:`Purchase --> Configuration --> Settings -->
Dropshipping`.
Once the PO to the subcontractor is validated, this route will create a dropship
RFQ from your vendor to that subcontractor. You then just need to review and validate it.
Once the PO to the subcontractor is validated, this route will create a dropship
RFQ from your vendor to that subcontractor. You then just need to review and validate it.
.. image:: subcontracting/sbc_7.png
:align: center
:alt:
:alt:
Note that the buy route is not selected in this case, as the dropship route is
a buy route already.
Note that the buy route is not selected in this case, as the dropship route is
a buy route already.
Finally, if you want to track the stock of these raw materials at your subcontracting
location(s), then you must activate *Multi-locations* in :menuselection:`Inventory -->
Configuration --> Settings --> Storage locations`.
Configuration --> Settings --> Storage locations`.
From the location form, you are then able to access the Current Stock.
From the location form, you are then able to access the Current Stock.
.. image:: subcontracting/sbc_8.png
:align: center
:alt:
:alt:
Manual Replenishment
--------------------------------
You can also choose to replenish your subcontractors manually.
You can also choose to replenish your subcontractors manually.
If you want to send components to your subcontractor at your own convenience,
select the 'Resupply Subcontractor' Operation Type from the *Inventory* Module,
and create a picking, specifying to which subcontractor you are delivering to.
If you want to send components to your subcontractor at your own convenience,
select the 'Resupply Subcontractor' Operation Type from the *Inventory* Module,
and create a picking, specifying to which subcontractor you are delivering to.
.. image:: subcontracting/sbc_9.png
:align: center
:alt:
:alt:
Alternatively, you can also manually ask your vendor to resupply your subcontractor
Alternatively, you can also manually ask your vendor to resupply your subcontractor
by creating a dropship type PO, with your subcontractor set as the delivery address.
.. image:: subcontracting/sbc_10.png

View File

@ -8,11 +8,11 @@ production based on your demand forecast.
Configuration
=============
Go to the :menuselection:`Manufacturing app --> Configuration --> Settings` and
Go to the :menuselection:`Manufacturing app --> Configuration --> Settings` and
activate the Master Production Schedule feature before hitting save.
.. tip::
In the MPS settings, you can define the time range of your MPS (month/week/day)
In the MPS settings, you can define the time range of your MPS (month/week/day)
and the number of periods you want to display at all times.
Now, go to :menuselection:`Planning --> Master Production Schedule` and click on *add a
@ -24,7 +24,7 @@ maximum quantities that must or can be replenished in each period.
:align: center
In the MPS view, you can decide which information you would like to display
by clicking on *rows*. For instance, the *Actual demand* will show you which
by clicking on *rows*. For instance, the *Actual demand* will show you which
quantity of products has already been ordered for the period, or *Available to Promise*,
what can still be sold during that same period (what you plan to replenish - what
is already sold during the period). You can also decide to hide rows if you like.
@ -35,15 +35,15 @@ is already sold during the period). You can also decide to hide rows if you like
Estimate your demand and launch replenishment
=============================================
The next step is to estimate the demand for the chosen period. This is done
The next step is to estimate the demand for the chosen period. This is done
in the *Forecasted Demand* Row. You can easily, at any time, compare the demand
forecast with the actual demand (= confirmed sales). The demand forecast for a
forecast with the actual demand (= confirmed sales). The demand forecast for a
finished product will impact the indirect demand for its components.
.. image:: use_mps/mps_3.png
:align: center
Once the forecasted demand has been set, the quantity to replenish for the
Once the forecasted demand has been set, the quantity to replenish for the
different periods will automatically be computed. The replenishments you are supposed
to launch based on your lead times (vendor lead time or manufacturing lead time)
are then displayed in green. You can now launch the replenishment by clicking

View File

@ -16,7 +16,7 @@ will be saved.
.. note::
This process can take more than 30 minutes. Do not turn off or unplug
the IoT Box as it would leave it in an inconsistent state.
the IoT Box as it would leave it in an inconsistent state.
.. image:: flash_sdcard/flash_sdcard01.png
:align: center

View File

@ -26,7 +26,7 @@ Before starting, make sure you have the following:
The list of supported hardware can be found on the `POS Hardware
page <https://www.odoo.com/page/point-of-sale-hardware>`__
Set Up
Set Up
~~~~~~~
To connect hardware to the PoS, the first step is to connect an IoT Box

View File

@ -8,7 +8,7 @@ connected, the screen can be used to display a :abbr:`PoS (Point of Sale)` order
.. image:: screen/screen-pos-client-display.png
:align: center
:alt: An example of a PoS (point of sale) order on a screen display.
.. note::
Access the customer display from any other computer by going to the :abbr:`IoT (Internet of Things)`
Box homepage and clicking on the :guilabel:`POS Display` button.
@ -47,21 +47,21 @@ screen.
:align: center
:alt: The default "POS Client Display" screen that appears when a screen display is successfully
connected to an IoT Box.
The screen should also appear in the list of :guilabel:`Displays` on the :abbr:`IoT (Internet of
Things)` Box homepage.
.. image:: screen/screen-screen-name-example.png
:align: center
:alt: An example of a screen display name shown on the IoT Box homepage.
.. note::
If no screen is detected, a default display named :guilabel:`Distant Display` will be used instead.
.. image:: screen/screen-no-screen.png
:align: center
:alt: The "Distant Display" screen name will be used if no screen is detected.
Usage
=====
@ -78,7 +78,7 @@ Now, select :guilabel:`IoT Box` in the drop-down menu and choose the screen in t
.. image:: screen/screen-pos-screen-config.png
:align: center
:alt: Connect the screen display to the Point of Sale app.
The screen is now available for :abbr:`PoS (Point of Sale)` sessions. A "screen" icon will appear
in the top bar to inform the connection status with the screen.

View File

@ -4,7 +4,7 @@ Convert leads into opportunities
The system can generate leads instead of opportunities, in order to add
a qualification step before converting a *Lead* into an
*Opportunity* and assigning to the right sales people.
*Opportunity* and assigning to the right sales people.
You can activate this mode from the CRM Settings. It applies to all your sales
channels by default. But you can make it specific for specific channels
@ -46,7 +46,7 @@ Merge opportunities
Odoo will also automatically propose to merge opportunities if they have
the same email address. When merging opportunities, Odoo merges the
information into the opportunity which was created first, giving
priority to the information present on the first opportunity.
priority to the information present on the first opportunity.
No information is lost: data from the other opportunity is logged in the
chatter and the information fields for easy access.

View File

@ -8,7 +8,7 @@ Configuration
==============
For this feature to work, go to :menuselection:`CRM --> Configuration --> Settings` and activate the **Lead Mining** feature.
.. image:: lead_mining/LM1.png
:align: center
@ -31,16 +31,16 @@ From there, click on the **Generate Leads** button, a window where you will be a
:align: center
When choosing to target Companies and their contacts you can choose the contacts you are getting based on Role or Seniority.
When choosing to target Companies and their contacts you can choose the contacts you are getting based on Role or Seniority.
When getting contact information make sure to be aware of the latest EU regulation, get more information about General Data Protection Regulation on
`Odoo GDPR <http://odoo.com/gdpr>`__,
`Odoo GDPR <http://odoo.com/gdpr>`__,
You can decide to filter the leads you are getting depending on the size (number of employees) of the companies.
You can pick the countries your leads are coming from. It is possible to pick multiple countries.
You can pick the industries your leads are coming from. It is possible to pick multiple industries.
You can choose the salesperson and the Salesteam the lead will be assigned to.
You can choose the salesperson and the Salesteam the lead will be assigned to.
You can also add tags to track your generated leads.
.. tip::
@ -50,7 +50,7 @@ Pricing
==================
This is an In-App Purchase feature, each generated lead will cost you one credit.
If you choose to get contact information each contact will also cost you one additional credit.
Here is the pricing for this `feature <https://iap.odoo.com/iap/in-app-services/167?>`__,
Here is the pricing for this `feature <https://iap.odoo.com/iap/in-app-services/167?>`__,
To buy credits you can either go to :menuselection:`CRM --> Configuration --> Settings --> Buy
Credits`; or go to :menuselection:`Settings --> Contacts --> Odoo IAP --> View my Services`.
@ -70,4 +70,3 @@ Credits`; or go to :menuselection:`Settings --> Contacts --> Odoo IAP --> View m
.. seealso::
* :doc:`In-App Purchases (IAP) </applications/general/in_app_purchase>`

View File

@ -1,7 +1,7 @@
:nosearch:
===================
Analyze performance
Analyze performance
===================
.. toctree::

View File

@ -16,15 +16,15 @@ convenient.
Set up Pricelists
=================
To set up a *Pricelist*, go to :menuselection:`Point of Sale --> Configuration --> Configuration`
and enable the *Pricelist* feature. Then, go to :menuselection:`Point of Sale --> Configuration
To set up a *Pricelist*, go to :menuselection:`Point of Sale --> Configuration --> Configuration`
and enable the *Pricelist* feature. Then, go to :menuselection:`Point of Sale --> Configuration
--> Point of Sale` and enable *Pricelist* for the *PoS*.
.. image:: pricelists/pricelists_01.png
:align: center
Now, you can create *Pricelists* by clicking on the *Pricelists* link.
Then, set it up by choosing the product category you want to include in your happy hour
Now, you can create *Pricelists* by clicking on the *Pricelists* link.
Then, set it up by choosing the product category you want to include in your happy hour
and the discount.
.. image:: pricelists/pricelists_02.png

View File

@ -6,7 +6,7 @@ When working with a Point of Sale application, employees want a
simple, and user-friendly solution. A solution that works online or
offline and with any device.
A Point of Sale system is a fully integrated application that allows any transaction,
A Point of Sale system is a fully integrated application that allows any transaction,
automatically registers product moves in your stock, and gives you
real-time statistics and consolidations across all shops.
@ -84,10 +84,10 @@ payment.
Return and refund products
--------------------------
Having a well-thought-out return policy is key to keep customers satisfied and make the process
Having a well-thought-out return policy is key to keep customers satisfied and make the process
of accepting returns and refunds easy for you.
To do that, from the PoS interface, select the product and quantity (with the +/- button) that the
To do that, from the PoS interface, select the product and quantity (with the +/- button) that the
customer wants to return. For multiple products, repeat the process individually.
.. image:: getting_started/getting_started_06.png
@ -104,7 +104,7 @@ process the payment and validate it.
Close the PoS session
---------------------
To close your session at the end of the day, click on the close button on the upper right corner
To close your session at the end of the day, click on the close button on the upper right corner
of your screen and confirm. Now, close the session on the dashboard view.
.. image:: getting_started/getting_started_08.png
@ -114,8 +114,8 @@ of your screen and confirm. Now, close the session on the dashboard view.
.. tip::
Its strongly advised to close your PoS session at the end of each day.
Once a session is closed, you can see a summary of all transactions per payment method.
Then, click on a line to see all orders that were paid during your PoS session.
Once a session is closed, you can see a summary of all transactions per payment method.
Then, click on a line to see all orders that were paid during your PoS session.
If everything is correct, validate the session and post the closing entries.
.. image:: getting_started/getting_started_09.png

View File

@ -10,7 +10,7 @@ takes away.
Set up fiscal positions for PoS
===============================
To enable this feature, go to :menuselection:`Point of Sale --> Configuration --> Point of Sale`
To enable this feature, go to :menuselection:`Point of Sale --> Configuration --> Point of Sale`
and check *Fiscal Position per Order*. Now, you can choose the fiscal positions
you want for your *PoS*.
@ -32,8 +32,8 @@ Now, choose the fiscal position you need for the current order.
Set up a default fiscal position
================================
If you want to use a default fiscal position, meaning that a preexisting value is always
automatically assigned, go to :menuselection:`Point of Sale --> Configuration
If you want to use a default fiscal position, meaning that a preexisting value is always
automatically assigned, go to :menuselection:`Point of Sale --> Configuration
--> Point of Sale` and enable *Fiscal Position*. Now, choose one to set as the default one.
.. image:: fiscal_position/fiscal_position_03.png

View File

@ -96,7 +96,7 @@ customer.
.. image:: restaurant/restaurant_09.png
:align: center
:alt: View of the pos interface and transfer button. How to transfer customers from one table
:alt: View of the pos interface and transfer button. How to transfer customers from one table
to another
Register an additional order

View File

@ -2,12 +2,12 @@
Cash Rounding
=============
**Cash rounding** is required when the lowest physical denomination
of currency, or the smallest coin, is higher than the minimum unit
**Cash rounding** is required when the lowest physical denomination
of currency, or the smallest coin, is higher than the minimum unit
of account.
For example, some countries require their companies to round up or
down the total amount of an invoice to the nearest five cents, when
For example, some countries require their companies to round up or
down the total amount of an invoice to the nearest five cents, when
the payment is made in cash.
Each point of sale in Odoo can be configured to apply cash rounding
@ -16,20 +16,20 @@ to the totals of its bills or receipts.
Configuration
=============
Go to :menuselection:`Point of Sale --> Configuration --> Settings`
Go to :menuselection:`Point of Sale --> Configuration --> Settings`
and enable *Cash Rounding*, then click on *Save*.
.. image:: cash_rounding/cash_rounding01.png
:align: center
Go to :menuselection:`Point of Sale --> Configuration --> Point of
Go to :menuselection:`Point of Sale --> Configuration --> Point of
Sale`, open the point of sale you want to configure, and enable the
*Cash Rounding* option.
To define the **Rounding Method**, open the drop-down list and click
on *Create and Edit...*.
Define here your *Rounding Precision*, *Profit Account*, and
Define here your *Rounding Precision*, *Profit Account*, and
*Loss Account*, then save both the Rounding Method and your Point
of Sale settings.
@ -43,5 +43,5 @@ rounding according to your settings.
:align: center
.. note::
Odoo Point of Sale only support the *Add a rounding line*
Odoo Point of Sale only support the *Add a rounding line*
rounding strategies and *Half-up* rounding methods.

View File

@ -19,14 +19,14 @@ Choose your pricing strategy from :menuselection:`Sales --> Settings`.
* *Different prices per customer segment :* you will set several prices per products ;
* *Advanced pricing based on formula :* will let you apply discounts, margins and roundings.
Several prices per product
Several prices per product
==========================
To apply several prices per product, select *Different prices per customer
segment* in :menuselection:`Sales --> Settings`. Then open the *Sales* tab
in the product detail form. You can settle following strategies.
Prices per customer segment
Prices per customer segment
---------------------------
Create pricelists for your customer segments: e.g. registered, premium, etc.
@ -88,10 +88,10 @@ Each pricelist item can be associated to either all products, to a product inter
.. note::
* Once again the system is smart. If a rule is set for a particular item and another one for its category, Odoo will take the rule of the item.
* Once again the system is smart. If a rule is set for a particular item and another one for its category, Odoo will take the rule of the item.
* Make sure at least one pricelist item covers all your products.
There are 3 modes of computation: fix price, discount & formula.
.. image:: pricing/price_computation.png
@ -122,7 +122,7 @@ Any new customer recorded in Odoo gets a default pricelist, i.e. the first one i
The default pricelist can be replaced when creating a sales order.
.. tip:: You can change the pricelists sequence by drag & drop in list view.
.. tip:: You can change the pricelists sequence by drag & drop in list view.
Compute and show discount % to customers
========================================

View File

@ -4,7 +4,7 @@ How to import Products with Categories and Variants
Import templates are provided in the **Import Tool** of the most common data to
import (contacts, products, bank statements, etc.).
You can open them with any spreadsheet software (Microsoft Office,
You can open them with any spreadsheet software (Microsoft Office,
OpenOffice, Google Drive, etc.).
How to customize the file

View File

@ -2,9 +2,9 @@
Automatically get product images with Google Images
===================================================
The product images are very useful in Odoo, for example, to quickly find a product or check if you
scanned the right one, but it can be a bit painful to set up especially if you have a lot of
products. **Google Custom Search** allows finding images automatically for your product, based on
The product images are very useful in Odoo, for example, to quickly find a product or check if you
scanned the right one, but it can be a bit painful to set up especially if you have a lot of
products. **Google Custom Search** allows finding images automatically for your product, based on
their barcode, keeping your focus on what matters in your business.
.. _product_images/configuration:
@ -14,7 +14,7 @@ Configuration
This functionnality requires configuration both on Google and on Odoo.
With a free Google account, you can get up to 100 free images per day. If you need a higher rate,
With a free Google account, you can get up to 100 free images per day. If you need a higher rate,
you'll have to upgrade to a billing account.
.. _product_images/google-api-dashboard:
@ -25,7 +25,7 @@ Google API dashboard
#. Go to the `Google Cloud Platform API & Services <https://console.developers.google.com/>`_ page
to generate Google Custom Search API credentials. Log in with your Google account.
#. Select or create an API project to store the credentials. Give it an explicit name
#. Select or create an API project to store the credentials. Give it an explicit name
(e.g. Odoo Images).
#. In the credentials section, click on **Create Credentials** and select **API Keys**.
@ -73,11 +73,11 @@ Google Programmable Search dashboard
that you created (either by clicking on **Control Panel** on the confirmation page or by
clicking on the name of your Search Engine on the Home page).
#. In the **basics** tab, make sure to enable **Image search**, **SafeSearch** and
#. In the **basics** tab, make sure to enable **Image search**, **SafeSearch** and
**Search the entire web**.
.. note::
Once **Search the entire web** is enabled, you can safely delete the site that you put at the
Once **Search the entire web** is enabled, you can safely delete the site that you put at the
previous step.
#. Save your **Search Engine Id**. Youll need it for the next step in Odoo!
@ -101,7 +101,7 @@ Automatically get your product images in Odoo
The action to automatically get your product images in Odoo appears in any Products or Product
Variants list view. Here is a step-by-step guide from the Inventory app.
#. Go to the Products menu (:menuselection:`Products --> Products` or :menuselection:`Products -->
#. Go to the Products menu (:menuselection:`Products --> Products` or :menuselection:`Products -->
Product Variants`) from any application that uses products like Inventory or Sales.
#. On the list view, select the products that needs an image.
@ -114,7 +114,7 @@ Variants list view. Here is a step-by-step guide from the Inventory app.
- If you select a product that has one or more variants from the Products view, each variant
matching the previous criteria will be processed.
#. In the action menu, select **Get Pictures from Google Images** and validate by clicking on
#. In the action menu, select **Get Pictures from Google Images** and validate by clicking on
**Get picture**.
#. You should see your images appearing incrementally.
@ -124,7 +124,7 @@ Variants list view. Here is a step-by-step guide from the Inventory app.
be fetched as a background job.
- The background job process about 100 images in a minute. If you reach the quota authorized
by Google (either with a free or a paid plan), the background job will put itself on hold
for 24 hours and continue where it stopped the day before.
for 24 hours and continue where it stopped the day before.
.. seealso::
- `Create, modify, or close your Google Cloud Billing account

View File

@ -22,7 +22,7 @@ Go to :menuselection:`Accounting --> Configuration --> Settings` and activate
:align: center
:class: img-thumbnail
:alt: How to enable Default Terms & Conditions on Odoo Sales?
.. note::
Please note that this feature is activated via the settings of the **Invoicing App** and **not**
via the settings of the **Sales App**. Moreover, you don't need to install the invoicing
@ -55,7 +55,7 @@ templates. This is interesting if you have different terms and conditions within
.. important::
Be sure to check out our documentation about quotation templates: :doc:`quote_template`,
to master each step of this amazing feature.
General Terms & Conditions
==========================

View File

@ -11,7 +11,7 @@ Run a modern open-source online store with Odoo eCommerce. Learn how to sell onl
products and increase your average cart sizes.
.. important::
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
databases for one year. Visitors can then access your website with an address such as
``www.example.com`` rather than the default ``example.odoo.com``.

View File

@ -1,5 +1,5 @@
==================================
How to customize my catalog page
How to customize my catalog page
==================================
Product Catalog

View File

@ -15,5 +15,5 @@ If you like to show your products under several angles, you can turn the image i
.. image:: multi_images/multi_images02.png
:align: center
.. note::
.. note::
Such extra image are common to all the product variants (if any).

View File

@ -46,7 +46,7 @@ You can easily moderate by using the chatter, either in the product detail form
or on the web page.
To unpublish the post, open the product web page and click the *Published* button
to turn it red (*Unpublished*).
to turn it red (*Unpublished*).
.. image:: reviews/comment_unpublish.png
:align: center

View File

@ -2,10 +2,10 @@
How customers can access their customer account
=================================================
It has never been so easy for your customers to access their
customer account. Forget endless signup forms,
Odoo makes it as easy as ABC.
They are suggested to sign up (name, email, password) when the order
It has never been so easy for your customers to access their
customer account. Forget endless signup forms,
Odoo makes it as easy as ABC.
They are suggested to sign up (name, email, password) when the order
is placed, and not before.
Indeed, nothing is more annoying than going through a signup process
before buying something.

View File

@ -11,7 +11,7 @@ Discover the best **Open-Source Website Builder** and learn how to build beautif
convert visitors into leads or revenues.
.. important::
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
databases for one year. Visitors can then access your website with an address such as
``www.example.com`` rather than the default ``example.odoo.com``.

View File

@ -4,10 +4,10 @@ How to track your website's traffic in Google Analytics
To follow your website's traffic with Google Analytics:
- `Create a Google Analytics account <https://www.google.com/analytics/>`__ if
- `Create a Google Analytics account <https://www.google.com/analytics/>`__ if
you don't have any.
- Go through the creation form and accept the conditions to get the tracking ID.
- Go through the creation form and accept the conditions to get the tracking ID.
.. image:: google_analytics/google_analytics_account.png
:align: center

View File

@ -29,7 +29,7 @@ Title, Description
Every web page should define the ``<title>`` and ``<description>`` meta data.
These information elements are used by search engines to promote your website.
They are automatically generated based on page title & content, but you can
finetune them. Make sure they fit the content of the page, otherwise you will
finetune them. Make sure they fit the content of the page, otherwise you will
be downgraded by search engines.
.. image:: seo/seo01.png
@ -40,15 +40,15 @@ Keywords
In order to write quality content and boost your traffic, Odoo provides
a ``<keyword>`` finder. Those keywords are the searches you want to head
towards your website. For each keyword, you see how it is used in the content
(H1, H2, page title, page description, page content) and what are the related
(H1, H2, page title, page description, page content) and what are the related
searches in Google. The more keywords are used the better.
.. image:: seo/seo02.png
:align: center
.. note::
.. note::
If your website is in multiple languages, you can use the Promote
tool for every language of a single page and set specific title,
tool for every language of a single page and set specific title,
description and search tags.
Content is King
@ -80,8 +80,8 @@ modules to help you build your website content:
Use Social Networks
===================
Social media is built for mass sharing. If lots of people share your content
on social media, then it's likely more people will link to it,
Social media is built for mass sharing. If lots of people share your content
on social media, then it's likely more people will link to it,
and links are a huge factor for SEO ranking.
Odoo embeds several tools to share content through social media:
@ -94,7 +94,7 @@ All you have to do is to refer all your accounts in your company settings.
.. image:: seo/seo03.png
:align: center
Social Share
------------
@ -106,17 +106,17 @@ wall.
:align: center
Most social media use a picture of the picture to decorate the share post.
Odoo uses the website logo by default but you can choose any other image
Odoo uses the website logo by default but you can choose any other image
of your page in the Promote tool.
.. image:: seo/seo05.png
:align: center
Facebook Page
-------------
Drop the building block *Facebook Page* to display a widget of your Facebook
business page and encourage visitors to follow it.
Drop the building block *Facebook Page* to display a widget of your Facebook
business page and encourage visitors to follow it.
You can display the timeline, the next events and the messages.
Twitter Scroller
@ -179,7 +179,7 @@ an example, the following URLs all do a 301 redirect to the above URL:
product name)
Some URLs have several dynamic parts, like this one (a blog category and
a post):
a post):
- https://www.odoo.com/blog/company-news-5/post/the-odoo-story-56
@ -191,7 +191,7 @@ In the above example:
When an Odoo page has a pager, the page number is set directly in the
URL (does not have a GET argument). This allows every page to be indexed
by search engines. Example:
by search engines. Example:
- https://www.odoo.com/blog/page/3
@ -222,7 +222,7 @@ maintaining the SEO link juice.
HTTPS
-----
Search engines boost ranking of secure HTTPS/SSL websites.
Search engines boost ranking of secure HTTPS/SSL websites.
So, by default all Odoo Online instances are fully
based on HTTPS. If the visitor accesses your website through a non HTTPS
url, it gets a 301 redirect to its HTTPS equivalent.
@ -230,7 +230,7 @@ url, it gets a 301 redirect to its HTTPS equivalent.
Links: Nofollow Strategy
------------------------
The more a page is linked from external and quality websites,
The more a page is linked from external and quality websites,
the better it is for your SEO.
Here are Odoo strategies to manage links:
@ -296,7 +296,7 @@ yourwebsite.com/shop), they may automatically be redirected to a
translated version according to their browser language preference (e.g.
yourwebsite.com/fr\_FR/shop).
Next time, it keeps a cookie of the current language to
Next time, it keeps a cookie of the current language to
avoid any redirection.
To force a visitor to stick to the default language, you can use the
@ -409,18 +409,18 @@ CSS is shared amongst all pages, when the visitor clicks on another
page, the browser does not even have to load a new CSS file!
================================= =============================================
**Both files in the <head>** **What the visitor gets (only one file)**
**Both files in the <head>** **What the visitor gets (only one file)**
================================= =============================================
/\* From bootstrap.css \*/ .text-muted {
.text-muted { color: #666;
color: #777; background: yellow
background: yellow; }
/\* From bootstrap.css \*/ .text-muted {
.text-muted { color: #666;
color: #777; background: yellow
background: yellow; }
}
/\* From my-theme.css \*/
.text-muted {
color: #666;
}
/\* From my-theme.css \*/
.text-muted {
color: #666;
}
================================= =============================================
The CSS sent by Odoo includes all CSS / Less / Sass of all pages /
@ -432,28 +432,28 @@ into a second bundle that is loaded only when the page using it is
requested. An example of this is the backend that is only loaded when
the visitor logs in and accesses the backend (/web).
.. note::
.. note::
If the CSS file is very big, Odoo will split it into two smaller
files to avoid the 4095 selectors limit per sheet of Internet Explorer.
files to avoid the 4095 selectors limit per sheet of Internet Explorer.
But most themes fit below this limit.
**Minified:** After being pre-processed and concatenated, the resulting
CSS is minified to reduce its size.
============================ ==============================
**Before minification** **After minification**
**Before minification** **After minification**
============================ ==============================
/\* some comments \*/ .text-muted {color: #666}
.text-muted {
color: #666;
}
/\* some comments \*/ .text-muted {color: #666}
.text-muted {
color: #666;
}
============================ ==============================
The final result is then compressed, before being delivered to the
browser.
Then, a cached version is stored server-side (so we do not have
to pre-process, concatenate, minify at every request) and browser-side
to pre-process, concatenate, minify at every request) and browser-side
(so the same visitor will load the CSS only once for all pages they
visit).

View File

@ -185,7 +185,7 @@ Publish a page in all websites
------------------------------
A new static page is created and only made available in the current
website. You can duplicate it to other websites from
website. You can duplicate it to other websites from
:menuselection:`Website --> Configuration --> Pages`. To do so, leave the *Website* field empty.
If you want to duplicate it in just one other website, duplicate the
@ -198,7 +198,7 @@ When you edit the page again, the change only affects the current
website. A new page is duplicated and tied up to the website.
The original page still being linked to all websites.
.. tip::
.. tip::
By grouping pages by URL in the page manager, you quickly find
the original page behind each edited page.

View File

@ -950,7 +950,7 @@ The convention is to organize the code according to the following structure:
- *static/src/js*
- *static/src/js/tours*: end user tour files (tutorials, not tests)
- *static/src/scss*: scss files
- *static/src/xml*: all qweb templates that will be rendered in JS

View File

@ -370,7 +370,7 @@ Some good examples:
* `l10n_ch_reports/data/account_financial_html_report_data.xml <{GITHUB_ENT_PATH}/l10n_ch_reports/data/account_financial_html_report_data.xml>`_
* `l10n_be_reports/data/account_financial_html_report_data.xml <{GITHUB_ENT_PATH}/l10n_be_reports/data/account_financial_html_report_data.xml>`_
You can check the meaning of the fields here:
You can check the meaning of the fields here:
* :doc:`/developer/reference/standard_modules/account/account_report`
* :doc:`/developer/reference/standard_modules/account/account_report_line`

View File

@ -239,7 +239,7 @@ An example of a view inheritance extension can be found
Add the ``property_ids`` field to the ``base.view_users_form`` in a new notebook page.
Tip: an example an inheritance of the users' view can be found
`here <https://github.com/odoo/odoo/blob/691d1f087040f1ec7066e485d19ce3662dfc6501/addons/gamification/views/res_users_views.xml#L5-L14>`__.
`here <https://github.com/odoo/odoo/blob/691d1f087040f1ec7066e485d19ce3662dfc6501/addons/gamification/views/res_users_views.xml#L5-L14>`__.
Inheritance is extensively used in Odoo due to its modular concept. Do not hesitate to read
the corresponding documentation for more info!

View File

@ -8,8 +8,8 @@ Every day we hear about data leaks and attacks in the newspapers.
We expect you to be aware and careful about how to avoid security breaches in your future
developments.
You already defined new models in your training. Did you check the access rights and define record
rules on it ? Are you sure your module is not an open door to SQL injections ? Did you use getattr
You already defined new models in your training. Did you check the access rights and define record
rules on it ? Are you sure your module is not an open door to SQL injections ? Did you use getattr
or t-raw in your code?
- No or wrong access rules on models.

View File

@ -277,7 +277,7 @@ the template, such as data from additional models:
Custom fonts
============
If you want to use custom fonts you will need to add your custom font and the related less/CSS to the ``web.reports_assets_common`` assets bundle.
If you want to use custom fonts you will need to add your custom font and the related less/CSS to the ``web.reports_assets_common`` assets bundle.
Adding your custom font(s) to ``web.assets_common`` or ``web.assets_backend`` will not make your font available in QWeb reports.
Example::

View File

@ -422,7 +422,7 @@ Calendar
--------
Calendar views display records as events in a daily, weekly, monthly or yearly
calendar.
calendar.
.. note:: By default the calendar view will be centered around the current date
(today). You can pass a specific initial date to the context of the action in

View File

@ -53,10 +53,10 @@ Bundles
=======
Odoo assets are grouped by *bundles*. Each bundle (a *list of file paths*
of specific types: `xml`, `js`, `css` or `scss`) is listed in the
of specific types: `xml`, `js`, `css` or `scss`) is listed in the
:ref:`module manifest <reference/module/manifest>`. Files can be declared using
`glob <https://en.wikipedia.org/wiki/Glob_(programming)>`_ syntax, meaning that
you can declare several asset files using a single line.
you can declare several asset files using a single line.
The bundles are defined in each module's :file:`__manifest__.py`,
with a dedicated `assets` key which contains a dictionary. The dictionary maps

View File

@ -44,11 +44,11 @@ on the web client.
Code structure
==============
The ``web/static/src`` folder contains all the ``web/`` javascript (and css and
The ``web/static/src`` folder contains all the ``web/`` javascript (and css and
templates) codebase. Here is a list of the most important folders:
- ``core/`` most of the low level features
- ``fields/`` all field components
- ``fields/`` all field components
- ``views/`` all javascript views components (``form``, ``list``, ...)
- ``search/`` control panel, search bar, search panel, ...
- ``webclient/`` the web client specific code: navbar, user menu, action service, ...
@ -57,7 +57,7 @@ The ``web/static/src`` is the root folder. Everything inside can simply be
imported by using the ``@web`` prefix. For example, here is how one can import
the ``memoize`` function located in ``web/static/src/core/utils/functions``:
.. code-block:: javascript
.. code-block:: javascript
import { memoize } from "@web/core/utils/functions";
@ -86,7 +86,7 @@ all active actions (represented in the breadcrumbs), and coordinates each
change.
Another interesting thing to note is the ``MainComponentsContainer``: it is
simply a component that displays all components registered in the
simply a component that displays all components registered in the
``main_components`` registry. This is how other parts of the system can extend
the web client.
@ -197,14 +197,14 @@ Components and Hooks
:ref:`Components <frontend/components>` and :ref:`hooks <frontend/hooks>` are ideas coming from the
`Owl component system <https://github.com/odoo/owl/blob/master/doc/readme.md>`_.
Odoo components are simply owl components that are part of the web client.
Odoo components are simply owl components that are part of the web client.
`Hooks <https://github.com/odoo/owl/blob/master/doc/reference/hooks.md>`_ are a
way to factorize code, even if it depends on lifecycle. This is a
composable/functional way to inject a feature in a component. They can be seen
as a kind of mixin.
as a kind of mixin.
.. code-block:: javascript
.. code-block:: javascript
function useCurrentTime() {
const state = useState({ now: new Date() });
@ -222,7 +222,7 @@ An important concept in the Odoo javascript is the *context*: it provides a way
for code to give more context to a function call or a rpc, so other parts of the
system can properly react to that information. In some way, it is like a bag of
information that is propagated everywhere. It is useful in some situations, such
as letting the Odoo server know that a model rpc comes from a specific form view,
as letting the Odoo server know that a model rpc comes from a specific form view,
or activating/disabling some features in a component.
There are two different contexts in the Odoo web client: the *user context* and
@ -258,7 +258,7 @@ It contains the following information:
:widths: 20 20 60
:header-rows: 1
* - Name
* - Name
- Type
- Description
* - `allowed_company_ids`
@ -269,7 +269,7 @@ It contains the following information:
- the user language code (such as "en_us")
* - `tz`
- `string`
- the user current timezone (for example "Europe/Brussels")
- the user current timezone (for example "Europe/Brussels")
In practice, the `orm` service automatically adds the user context to each of
its requests. This is why it is usually not necessary to import it directly in
@ -405,11 +405,11 @@ class:
domain.contains({ a: -1, b: 2, c: 3 }); // false
// next expression returns ["|", ("a", "=", 1), ("b", "<=", 3)]
Domain.or([[["a", "=", 1]], "[('b', '<=', 3)]"]).toString();
Domain.or([[["a", "=", 1]], "[('b', '<=', 3)]"]).toString();
Here is the `Domain` class description:
.. js:class:: Domain([descr])
.. js:class:: Domain([descr])
:param descr: a domain description
:type descr: string | any[] | Domain
@ -568,7 +568,7 @@ It is mostly interesting for testing purposes: all code using the browser object
can be tested easily by mocking the relevant functions for the duration of the
test.
It contains the following content:
It contains the following content:
.. list-table::
@ -617,7 +617,7 @@ The `debug` mode current value can be read in the :ref:`environment<frontend/fra
To show menus, fields or view elements only in debug mode, you should target
the group `base.group_no_one`:
.. code-block:: xml
<field name="fname" groups="base.group_no_one"/>

View File

@ -6,7 +6,7 @@ Hooks
`Owl hooks <https://github.com/odoo/owl/blob/master/doc/reference/hooks.md>`_ are a
way to factorize code, even if it depends on some component lifecycle. Most hooks
provided by Owl are related to the lifecycle of a component, but some of them (such as
provided by Owl are related to the lifecycle of a component, but some of them (such as
`useComponent <https://github.com/odoo/owl/blob/master/doc/reference/hooks.md#usecomponent>`_)
provide a way to build specific hooks.

View File

@ -37,11 +37,11 @@ Plain javascript files can contain arbitrary content. It is advised to use the
})();
The advantages of such files is that we avoid leaking local variables to the
global scope.
global scope.
Clearly, plain javascript files do not offer the benefits of a module system, so
one needs to be careful about the order in the bundle (since the browser will
execute them precisely in that order).
execute them precisely in that order).
.. note::
In Odoo, all external libraries are loaded as plain javascript files.

View File

@ -9,7 +9,7 @@ Introduction
============
In Odoo 10.0 we released a mobile app which allows you to access all **Odoo apps**
(even your customized modules).
(even your customized modules).
The application is a combination of **Odoo Web** and **Native Mobile
components**. In other words it is a Odoo Web instance loaded inside a native, mobile, WebView container.
@ -21,7 +21,7 @@ access all available mobile features.
.. warning:: These features work with **Odoo Enterprise 10.0+** only
How does it work?
How does it work?
=================
Internal workings of the mobile application:
@ -53,7 +53,7 @@ Just like the Odoo Web Framework, the Mobile API can be used anywhere by getting
.. image:: mobile/odoo_mobile_api.png
The mobile RPC object provides a list of methods that are available (this only works with the mobile
app).
app).
Check if the method is available and then execute it.
@ -136,7 +136,7 @@ area and the notification drawer are system-controlled areas that the user can
view at any time.
.. code-block:: javascript
mobile.showNotification({'title': 'Simple Notification', 'message': 'This is a test for a simple notification'})
.. image:: mobile/mobile_notification.png
@ -152,7 +152,7 @@ Create contact in device
Create a new device contact with the given contact details.
.. code-block:: javascript
var contact = {
'name': 'Michel Fletcher',
'mobile': '9999999999',
@ -205,7 +205,7 @@ Switching account in device
Use switchAccount to switch from one account to another on the device.
.. code-block:: javascript
mobile.methods.switchAccount();
.. image:: mobile/mobile_switch_account.png

View File

@ -7,7 +7,7 @@ Owl Components
The Odoo Javascript framework uses a custom component framework called Owl. It
is a declarative component system, loosely inspired by Vue and React. Components
are defined using :doc:`QWeb templates <qweb>`, enriched with some Owl
specific directives. The official
specific directives. The official
`Owl documentation <https://github.com/odoo/owl/blob/master/doc/readme.md>`_
contains a complete reference and a tutorial.
@ -28,7 +28,7 @@ page will only provide Odoo specific information. But first, let us see how we
can make a simple component in Odoo.
.. code-block:: javascript
const { useState } = owl.hooks;
const { xml } = owl.tags;
@ -66,7 +66,7 @@ loading the javascript/css files, and loading the templates into Owl.
Here is how the component above should be defined:
.. code-block:: javascript
const { useState } = owl.hooks;
class MyComponent extends Component {
@ -133,7 +133,7 @@ in Odoo directly uses the constructor method. Instead, components should use the
}
}
Another good practice is to use a consistent convention for template names:
Another good practice is to use a consistent convention for template names:
`addon_name.ComponentName`. This prevents name collision between odoo addons.
Reference List
@ -175,7 +175,7 @@ Description
~~~~~~~~~~~
This is a component that can perform actions when an element is swiped
horizontally. The swiper is wrapping a target element to add actions to it.
horizontally. The swiper is wrapping a target element to add actions to it.
The action is executed once the user has released the swiper passed
half of its width.
@ -191,7 +191,7 @@ and would not want to duplicate the template. It is possible to do just that.
If you want to extend the behavior of an existing element, you must place the element
inside, by wrapping it directly. Also, you can conditionnally add props to manage when the
element might be swipable or not.
element might be swipable or not.
You can use the component to interact easily with records, messages, items in lists and much more.
@ -200,18 +200,18 @@ You can use the component to interact easily with records, messages, items in li
:alt: Example of ActionSwiper usage
:align: center
The following example creates a basic ActionSwiper component.
The following example creates a basic ActionSwiper component.
Here, the swipe is enabled in both directions.
.. code-block:: xml
<ActionSwiper
<ActionSwiper
onRightSwipe="
{
action: '() => Delete item',
icon: 'fa-delete',
bgColor: 'bg-danger',
}"
}"
onLeftSwipe="
{
action: '() => Star item',
@ -233,7 +233,7 @@ Props
:widths: 20 20 60
:header-rows: 1
* - Name
* - Name
- Type
- Description
* - `onLeftSwipe`
@ -246,7 +246,7 @@ Props
You can use both `onLeftSwipe` and `onRightSwipe` props at the same time.
Those `Object`'s must contain:
- `action`, which is the callable `Function` serving as a callback.
Once the swipe has been completed in the given direction, that action
is performed.
@ -258,7 +258,7 @@ Those `Object`'s must contain:
`info`, `secondary`, `success` or `warning`).
Those values must be given to define the behavior and the visual aspect
of the swiper.
of the swiper.
Example: Extending existing components
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -268,7 +268,7 @@ in the ActionSwiper component. Here, a swiper has been added to mark
a message as read in mail.
.. code-block:: xml
<xpath expr="//*[hasclass('o_Message')]" position="after">
<ActionSwiper
onRightSwipe="messaging.device.isMobile and messageView.message.isNeedaction ?
@ -312,7 +312,7 @@ Props
:widths: 20 20 60
:header-rows: 1
* - Name
* - Name
- Type
- Description
* - `value`
@ -330,7 +330,7 @@ Dropdown
Location
~~~~~~~~
`@web/core/dropdown/dropdown` and `@web/core/dropdown/dropdown_item`
`@web/core/dropdown/dropdown` and `@web/core/dropdown/dropdown_item`
Description
~~~~~~~~~~~

View File

@ -33,7 +33,7 @@ The patch function is located in `@web/core/utils/patch`:
Most patch operations provide access to the parent value by using the
`_super` property (see below in the examples). To do that, the `patch` method
wraps each pair key/value in a getter that dynamically binds `_super`.
The only option is `pure (boolean)`. If set to `true`, the patch operation
does not bind the `_super` property.

View File

@ -231,7 +231,7 @@ exists in 3 different forms:
.. tip::
There are two equivalent syntaxes for format strings: ``"plain_text {{code}}"`` (aka
jinja-style) and ``"plain_text #{code}"`` (aka ruby-style).
:samp:`t-att=mapping`
if the parameter is a mapping, each (key, value) pair generates a new
attribute and its value::

View File

@ -10,7 +10,7 @@ into a registry whenever it needs a definition for some object (such as fields,
views, client actions or services). Customizing the web client is then simply
done by adding specific values in the correct registry.
.. code-block:: javascript
.. code-block:: javascript
import { Registry } from "@web/core/registry";
@ -25,7 +25,7 @@ obtained by the `category` method. If the sub registry does not exist yet, it
is created on the fly. All registries used by the web client are obtained
in such a way from one root registry, exported in `@web/core/registry`.
.. code-block:: javascript
.. code-block:: javascript
import { registry } from "@web/core/registry";
@ -58,7 +58,7 @@ Registry API
also triggers an `UPDATE` event.
Returns the same registry, so `add` method calls can be chained.
.. js:method:: get(key[, defaultValue])
:param string key: key for the entry
@ -67,7 +67,7 @@ Registry API
Returns the value corresponding to the `key` argument. If the registry does
not contain that key, this method returns `defaultValue` if given, or throws
an error otherwise.
.. js:method:: contains(key)
:param string key: key for the entry
@ -78,21 +78,21 @@ Registry API
.. js:method:: getAll()
:returns: any[]
Returns the list of all elements in the registry. It is ordered
according to the sequence numbers.
.. js:method:: remove(key)
:param string key: the key for the entry that should be removed
Removes a key/value pair from the registry. This operation triggers an
`UPDATE` event.
.. js:method:: category(subcategory)
:param string subcategory: the name for the sub category
:returns: Registry
:returns: Registry
Returns the sub registry associated with the `subcategory`. If it does not
exist yet, the sub registry is created on the fly.
@ -135,7 +135,7 @@ for more details.
Formatter registry
------------------
The `formatters` registry contains functions to format values. Each formatter
The `formatters` registry contains functions to format values. Each formatter
has the following API:
.. js:function:: format(value[, options])
@ -166,7 +166,7 @@ API
interface {
Component: Owl Component class
props?: any
}
}
For example, the `LoadingIndicator` component can be added in the registry like
@ -183,7 +183,7 @@ this:
Parser registry
---------------
The `parsers` registry contains functions to parse values. Each parser
The `parsers` registry contains functions to parse values. Each parser
has the following API:
.. js:function:: parse(value[, options])
@ -192,7 +192,7 @@ has the following API:
:param value: a string representing a value
:type value: string
:param Object options: various options (parser specific)
:returns: T a valid value
:returns: T a valid value
Parses a string and returns a value. If the string does not represent a valid
value, parsers can fail and throw errors.

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