parent
968ed0a17a
commit
c367974170
@ -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;
|
||||
|
@ -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``.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 don’t have one already.
|
||||
if you don’t 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 don’t 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 don’t 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 it’s important to have into consideration the next requirements:
|
||||
@ -435,77 +435,77 @@ For these transactions it’s 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 it’s 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 can’t
|
||||
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 can’t
|
||||
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, it’s 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, it’s 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 it’s 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 it’s 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 it’s not a valid AFIP authorization the value “Rejected” will be
|
||||
In case it’s 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
|
||||
=======
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 don’t need to buy testing credits
|
||||
When using the testing environment and the IAP signature, you don’t 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
|
||||
~~~~~~~~~~~
|
||||
|
||||
Odoo’s 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.
|
||||
Odoo’s 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.
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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*.
|
||||
|
@ -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. Don’t forget to
|
||||
Issuing a credit note is the only legal way to cancel,
|
||||
refund or modify a validated invoice. Don’t 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 Note’s 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 Note’s form
|
||||
works the same way as the Invoice’s 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 invoice’s journal entry:
|
||||
|
||||
.. image:: credit_notes/credit_notes03.png
|
||||
:align: center
|
||||
|
||||
And here is the credit note’s journal entry generated to reverse
|
||||
And here is the credit note’s journal entry generated to reverse
|
||||
the original invoice above:
|
||||
|
||||
.. image:: credit_notes/credit_notes04.png
|
||||
|
@ -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`_).
|
||||
|
@ -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 Account’s 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 customer’s payment as Odoo uses this field to generate
|
||||
Make sure that the account indicated is the one you want to use to
|
||||
receive your customer’s 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::
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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`
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
@ -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.
|
||||
|
||||
|
@ -14,4 +14,3 @@ Miscellaneous
|
||||
general/digest_emails
|
||||
general/in_app_purchase
|
||||
general/developer_mode
|
||||
|
||||
|
@ -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*.
|
||||
|
@ -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
|
||||
|
@ -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` |
|
||||
+-----------------------+-------------------------------------------+
|
||||
+-----------------------+-------------------------------------------+
|
||||
|
@ -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 -->
|
||||
|
@ -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 don’t have to edit code.
|
||||
making customizations more robust as you don’t 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.
|
||||
|
||||
It’s 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
|
||||
It’s 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 shouldn’t be necessary.
|
||||
Email templates are automatically translated. Changing the translations shouldn’t be necessary.
|
||||
However, if for a specific reason you’d like to change some of the translations, this can be done.
|
||||
|
||||
Like any modification in the code, keep in mind that modifications that aren’t 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.
|
||||
|
||||
|
@ -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 Odoo’s mail limit (please refer
|
||||
- Use your own outgoing email server to be independent of Odoo’s 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 won’t 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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).
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 couldn’t 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
|
||||
|
@ -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, that’s the “First in,
|
||||
purchase cost. When a product leaves the stock, that’s 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
|
||||
|
@ -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
|
||||
==========================================
|
||||
|
||||
Let’s 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.
|
||||
Let’s 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,...**
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -6,7 +6,7 @@ Outsourcing a portion or all of your company’s 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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>`
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
:nosearch:
|
||||
|
||||
===================
|
||||
Analyze performance
|
||||
Analyze performance
|
||||
===================
|
||||
|
||||
.. toctree::
|
||||
|
@ -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
|
||||
|
@ -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::
|
||||
It’s 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
========================================
|
||||
|
@ -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
|
||||
|
@ -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**. You’ll 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
|
||||
|
@ -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
|
||||
==========================
|
||||
|
||||
|
@ -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``.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
==================================
|
||||
How to customize my catalog page
|
||||
How to customize my catalog page
|
||||
==================================
|
||||
|
||||
Product Catalog
|
||||
|
@ -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).
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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``.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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`
|
||||
|
@ -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!
|
||||
|
@ -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.
|
||||
|
@ -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::
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"/>
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
~~~~~~~~~~~
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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::
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user