Compare commits

...

15 Commits

Author SHA1 Message Date
lejeune quentin
5b917505dc [IMP] point_of_sale: Configure https in the POS
The default protocol int the POS with "other device"
is on HTTP.

This doc explain how to activate the HTTPS in the POS
2021-10-11 17:01:42 +02:00
Xavier
debe8cb393 [IMP] mail plugins: add gmail plugin + update and move outlook plugin
Task ID: 2662764

closes odoo/documentation#1167

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-10-07 18:23:02 +00:00
Demesmaeker
3a2bbc028b [IMP] payment_acquirers: revamp online payment providers' documentation
task-2654702

closes odoo/documentation#1061

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-10-05 17:24:43 +00:00
Antoine Vandevenne (anv)
b28e34b357 [REL] supported_versions: update list of versions and add end of support
closes odoo/documentation#1162

X-original-commit: e0c70eb5ff
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-10-05 15:17:53 +00:00
Antoine Vandevenne (anv)
c107d76086 [IMP] contributing: adapt the GitHub workflow to the new doc theme
closes odoo/documentation#1159

X-original-commit: 8043d92b24
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-10-05 14:23:56 +00:00
Antoine Vandevenne (anv)
b118669860 [REL] freeze 15.0 branch 2021-10-05 13:50:03 +02:00
Denis Ledoux
3218d318fe [FIX] maintain: upgrade command line link
closes odoo/documentation#1150

X-original-commit: 7276929071
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2021-09-22 10:37:59 +00:00
Tiffany Chang (tic)
bb3996b936 [IMP] developer/{howtos,reference}: update training to match v15 changes
- Reference v15 training solutions
- Refer to Command namespace instead of triplets (e.g.
  Command.create(values) instead of (0, 0, values)
- Add notice about OWL transition
- Add reference to @api.ondelete (instead of override unlink())
- Remove references to SavepointCase (now only TransactionCase) from
  unit test topic

- Also add missing reference documentation for ondelete

closes odoo/documentation#1146

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-09-20 11:47:42 +00:00
Tiffany Chang (tic)
b3845ae0d8 [IMP] developer/howtos: proofread adv topics
- Cleaned up the language a tiny bit
- Fixed small errors/typos
- Add some missing info for dashboard topic
- Updated unit test exercise to match what's in the solutions repo

Part-of: odoo/documentation#1146
2021-09-20 11:47:42 +00:00
Tiffany Chang (tic)
85410bd8dc [IMP] developer/howtos: encourage linters more
There have been complaints of newbies not setting up their linters
therefore let's emphasize their use/setup more in the tutorial and hope
for the best.

Part-of: odoo/documentation#1146
2021-09-20 11:47:42 +00:00
Jonathan Castillo (jcs)
248135a48e [IMP] maintain: update test doc link in versions upgrade
closes odoo/documentation#1141

X-original-commit: 0842b682fc
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-09-14 16:23:07 +00:00
Raf Geens
6833379ad3 [FIX] app/accounting: Fix outdated Colombian test server url
The test server url for Carvajal T&S was out of date and has been
updated with the correct one. Carvajal has also split into 2
different companies, with new customers using the new company (CSC)
by default but the older company (CTS) still being available for
existing customers. See task 2508208. So the documentation was
updated to include both of them.

CTS (Carvajal T&S) was being used to refer to Carvajal in general,
so to avoid confusion those mentions have been changed to just
"Carvajal" since it can refer to either CTS or CSC.

closes odoo/documentation#1138

X-original-commit: 396df2abdd
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-09-14 16:18:51 +00:00
Jonathan Castillo (jcs)
00046cb690 [FIX] subscriptions: wrong Odoo Tutorials link
task-2636416

closes odoo/documentation#1136

X-original-commit: ebf216cc8e
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2021-09-14 12:31:13 +00:00
Antoine Vandevenne (anv)
ac40d2008c [IMP] conf: hide saas branches from the version switcher 2021-09-09 17:22:27 +02:00
Antoine Vandevenne (anv)
5cef86f181 [REL] freeze saas-14.5 branch 2021-09-09 16:25:46 +02:00
102 changed files with 1150 additions and 751 deletions

View File

@ -24,7 +24,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/15.0
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)

View File

@ -4,11 +4,11 @@
### Requirements
- [Git](https://www.odoo.com/documentation/master/contributing/documentation.html#install-git)
- [Python 3.6, 3.7, or 3.8](https://www.odoo.com/documentation/master/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/master/requirements.txt).
- [Make](https://www.odoo.com/documentation/master/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in master](https://github.com/odoo/odoo/tree/master) (Optional)
- [Git](https://www.odoo.com/documentation/15.0/contributing/documentation.html#install-git)
- [Python 3.6, 3.7, or 3.8](https://www.odoo.com/documentation/15.0/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/15.0/requirements.txt).
- [Make](https://www.odoo.com/documentation/15.0/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in 15.0](https://github.com/odoo/odoo/tree/15.0) (Optional)
### Instructions
@ -23,7 +23,7 @@
2. Open the file `documentation/_build/html/index.html` in your web browser to display the render.
3. See [this guide](https://www.odoo.com/documentation/master/contributing/documentation.html#preview-your-changes)
3. See [this guide](https://www.odoo.com/documentation/15.0/contributing/documentation.html#preview-your-changes)
for more detailed instructions.
Optional: to fully build the developer documentation with inline docstrings for documented Python
@ -34,7 +34,7 @@ be shown.
## Contribute to the documentation
For contributions to the content of the documentation, please refer to the
[Introduction Guide](https://www.odoo.com/documentation/master/contributing/documentation.html).
[Introduction Guide](https://www.odoo.com/documentation/15.0/contributing/documentation.html).
To **report a content issue**, **request new content** or **ask a question**, use the
[repository's issue tracker](https://github.com/odoo/documentation-user/issues) as usual.

13
conf.py
View File

@ -19,7 +19,7 @@ copyright = 'Odoo S.A.'
# `version` if the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = '15.0'
# The minimal Sphinx version required to build the documentation.
needs_sphinx = '3.0.0'
@ -70,19 +70,20 @@ if not odoo_dir.is_dir():
f"Could not find Odoo sources directory at {odoo_dir.absolute()}.\n"
f"The 'Developer' documentation will be built but autodoc directives will be skipped.\n"
f"In order to fully build the 'Developer' documentation, clone the repository with "
f"`git clone https://github.com/odoo/odoo` or create a symbolink link."
f"`git clone https://github.com/odoo/odoo` or create a symbolic link."
)
else:
sys.path.insert(0, str(odoo_dir.absolute()))
from odoo import release as odoo_release # Don't collide with Sphinx's 'release' config option
odoo_version = odoo_release.version if 'alpha' not in odoo_release.version else 'master'
odoo_version = odoo_release.version.replace('~', '-') \
if 'alpha' not in odoo_release.version else 'master'
if release != odoo_version:
_logger.warning(
f"Found Odoo sources directory but with version '{odoo_version}' incompatible with "
f"documentation version '{version}'.\n"
f"The 'Developer' documentation will be built but autodoc directives will be skipped.\n"
f"In order to fully build the 'Developer' documentation, checkout the matching branch"
f" with `cd odoo && git checkout {version}`."
f"In order to fully build the 'Developer' documentation, checkout the matching branch "
f"with `cd odoo && git checkout {version}`."
)
else:
_logger.info(f"Found Odoo sources directory matching documentation version {release}.")
@ -290,7 +291,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
for _alternate_version in sorted(_alternate_versions, reverse=True)
if _alternate_version != version and (
_alternate_version != 'master' or pagename.startswith('developer')
)
) and not _alternate_version.startswith('saas')
]
def _localize():

View File

@ -128,7 +128,7 @@ There are two possibilities:
#. Via the interface of our `website form <https://upgrade.odoo.com>`_
#. | For technically-advanced users and partners, via the following command line (to be used on the
machine where your database is hosted):
| ``python <(curl -s beta.upgrade.odoo.com/upgrade) test -d <your db name> -t 14.0``
| ``python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t 14.0``
What does it do?
~~~~~~~~~~~~~~~~
@ -190,8 +190,8 @@ Test guidance
Every business and organization has its own operational needs and will have to test its specific
Odoo instance respectively. However, we recommend you look at `the test scenario
<https://drive.google.com/open?id=1Lm4JqbsHBirB1wMi14UChoz_YHLjx5ec>`_ we created, a high-level idea
of what you should test and look out for.
<https://docs.google.com/document/d/1ypNs7JKPOsjNbKpdiKFH7Al6g6whZ9jr7f7duAQ5E1w/>`_ we created, a
high-level idea of what you should test and look out for.
.. todo:: change link "test scenario" once the related doc is published

View File

@ -20,37 +20,37 @@ This matrix shows the support status of every version.
**Major releases are in bold type.**
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| | Odoo Online | Odoo.sh | On-Premise | Release date | |
+====================+=============+==========+==============+================+==============================================+
| **Odoo 14.0** | |green| | |green| | |green| | October 2020 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 13.saas~4 | |green| | N/A | N/A | August 2019 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 13.0** | |green| | |green| | |green| | October 2019 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 12.saas~3 | |green| | N/A | N/A | August 2019 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 12.0** | |green| | |green| | |green| | October 2018 | *End-of-support is planned for October 2021* |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 11.saas~3 | |orange| | N/A | N/A | April 2018 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 11.0** | |orange| | |orange| | |red| | October 2017 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 10.saas~15 | |orange| | N/A | N/A | March 2017 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 10.saas~14 | |orange| | N/A | N/A | January 2017 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 10.0** | |orange| | |orange| | |red| | October 2016 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 9.saas~11 | |orange| | N/A | N/A | May 2016 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 9.0** | |orange| | N/A | |red| | October 2015 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| Odoo 8.saas~6 | |orange| | N/A | N/A | February 2015 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
| **Odoo 8.0** | |orange| | N/A | |red| | September 2014 | |
+--------------------+-------------+----------+--------------+----------------+----------------------------------------------+
+-----------------+-------------+----------+-------------+----------------+------------------------+
| | Odoo Online | Odoo.sh | On-Premise | Release date | End of support |
+=================+=============+==========+=============+================+========================+
| **Odoo 15.0** | |green| | |green| | |green| | October 2021 | October 2024 (planned) |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 14.0** | |green| | |green| | |green| | October 2020 | October 2023 (planned) |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 13.0** | |green| | |green| | |green| | October 2019 | October 2022 (planned) |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 12.saas~3 | |orange| | N/A | N/A | August 2019 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 12.0** | |orange| | |orange| | |red| | October 2018 | October 2021 |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 11.saas~3 | |orange| | N/A | N/A | April 2018 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 11.0** | |orange| | |orange| | |red| | October 2017 | October 2020 |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 10.saas~15 | |orange| | N/A | N/A | March 2017 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 10.saas~14 | |orange| | N/A | N/A | January 2017 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 10.0** | |orange| | |orange| | |red| | October 2016 | October 2019 |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 9.saas~11 | |orange| | N/A | N/A | May 2016 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 9.0** | |orange| | N/A | |red| | October 2015 | October 2018 |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| Odoo 8.saas~6 | |orange| | N/A | N/A | February 2015 | |
+-----------------+-------------+----------+-------------+----------------+------------------------+
| **Odoo 8.0** | |orange| | N/A | |red| | September 2014 | October 2017 |
+-----------------+-------------+----------+-------------+----------------+------------------------+
.. note::
@ -66,6 +66,9 @@ This matrix shows the support status of every version.
🏁 Future version, not released yet
.. This is an awful way to display colored circles but "Large Green Circle Emoji" was only released
in 2019 (see https://unicode-table.com/en/1F7E2/). Let's wait a few more years...
.. |green| image:: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMzIuMTkgMjMyLjE5Ij48Y2lyY2xlIGN4PSIxMTYuMDkiIGN5PSIxMTYuMDkiIHI9IjExNi4wOSIgc3R5bGU9ImZpbGw6IzAwYTcwMCIvPjwvc3ZnPg==
:width: 15

View File

@ -19,7 +19,7 @@ requires the next modules:
contains the default setup for: chart of accounts, taxes,
retentions, identification document types
#. **l10n_co_edi**: This module includes all the extra fields that are
required for the Integration with Carvajal T&S and generate the
required for the Integration with Carvajal and generate the
electronic invoice, based on the DIAN legal requirements.
@ -43,12 +43,12 @@ filter and search for "Colombia". Then click on *Install* for the first two modu
:align: center
Configure credentials for Carvajal T&S web service
--------------------------------------------------
Configure credentials for Carvajal web service
----------------------------------------------
Once that the modules are installed, in order to be able to connect
with Carvajal T&S Web Service, it's necessary to configure the user
and credentials, this information will be provided by Carvajal T&S.
with Carvajal Web Service, it's necessary to configure the user
and credentials, this information will be provided by Carvajal.
Go to :menuselection:`Accounting --> Configuration --> Settings` and
look for the *Colombian Electronic Invoice* section.
@ -56,12 +56,20 @@ look for the *Colombian Electronic Invoice* section.
.. image:: media/colombia03.png
:align: center
Using the Testing mode it is possible to connect with a Carvajal T&S
Using the Testing mode it is possible to connect with a Carvajal
testing environment. This allows users to test the complete workflow
and integration with the CEN Financiero portal, which is accessible
here: https://cenfinancierolab.cen.biz
here:
Once that Odoo and Carvajal T&S is fully configured and ready for
CTS (Carvajal T&S)
https://cenflab.cen.biz/site/
CSC (Carvajal Servicios de Comunicación)
https://web-stage.facturacarvajal.com/
CSC is the default for new databases.
Once that Odoo and Carvajal are fully configured and ready for
production the testing environment can be disabled.

View File

@ -18,7 +18,7 @@ requiere los siguientes Módulos:
- Tipos de Documentos de Identificación
#. **l10n_co_edi**: Este módulo incluye todos los campos adicionales que son
requeridos para la Integración entre Carvajal T&S y la generación de la
requeridos para la Integración entre Carvajal y la generación de la
Factura Electrónica, basado en los requisitos legales de la DIAN.
@ -42,12 +42,12 @@ Instalar a los primeros dos módulos:
:align: center
Configuración de las credenciales del Servicio Web de Carvajal T&S
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Configuración de las credenciales del Servicio Web de Carvajal
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Una vez que los módulos están instalados, para poderte conectar con el
Servicio Web de Carvajal T&S, es necesario configurar el Usuario y las
Credenciales. Esta información será provista por Carvajal T&S.
Servicio Web de Carvajal, es necesario configurar el Usuario y las
Credenciales. Esta información será provista por Carvajal.
| Ve a :menuselection:`Facturación --> Configuración --> Configuración` y busca la sección
**Facturación Electrónica Colombiana**
@ -55,14 +55,21 @@ Configuración de las credenciales del Servicio Web de Carvajal T&S
:align: center
La funcionalidad de pruebas le permite conectarse e interactuar con el
ambiente piloto de Carvajal T&S, esto permite a los usuarios probar el
ambiente piloto de Carvajal, esto permite a los usuarios probar el
flujo completo y la integración con el Portal Financiero CEN, al cual
se accede a través de la siguiente liga: `Cenfinanciero <https://cenfinancierolab.cen.biz>`_.
se accede a través de la siguiente liga:
CTS (Carvajal T&S)
https://cenflab.cen.biz/site/
CSC (Carvajal Servicios de Comunicación)
https://web-stage.facturacarvajal.com/
CSC es el predeterminado para nuevas bases de datos.
Una vez que el ambiente de producción está listo en Odoo y en Carvajal
T&S el ambiente de pruebas debe ser deshabilitado para poder enviar la
información al ambiente de producción de Carvajal, para el cual es
utilizada la siguiente URL: `Cenfinanciero <https://cenfinancierolab.cen.biz>`_.
el ambiente de pruebas debe ser deshabilitado para poder enviar la
información al ambiente de producción de Carvajal.
Configuración de Información para PDF

View File

@ -100,5 +100,5 @@ The synchronization is a two-way process, meaning that events are reconciled in
to manage a specific instance of Microsoft cloud services for your internal and external users.
.. seealso::
- :doc:`../../../sales/crm/optimize/outlook_extension`
- :doc:`../../../productivity/mail_plugins/outlook`
- :doc:`../google/google_calendar_credentials`

View File

@ -1,19 +1,25 @@
:show-content:
================================================
Payment Acquirers (Credit Cards, Online Payment)
================================================
=================================================
Payment acquirers (credit cards, online payments)
=================================================
.. toctree::
:titlesonly:
payment_acquirers/wire_transfer
payment_acquirers/adyen
payment_acquirers/alipay
payment_acquirers/authorize
payment_acquirers/buckaroo
payment_acquirers/mollie
payment_acquirers/ogone
payment_acquirers/paypal
payment_acquirers/sips
payment_acquirers/stripe
Odoo embeds several **payment acquirers** that allow your customers to pay on their *Customer
Portals* or your *eCommerce website*. They can pay Sales Orders, invoices, or subscriptions with
Portals* or your *eCommerce website*. They can pay sales orders, invoices, or subscriptions with
recurring payments with their favorite payment methods such as **Credit Cards**.
Offering several payment methods increases the chances of getting paid in time, or even immediately,
@ -28,13 +34,13 @@ trust.
Odoo apps delegate the handling of sensitive information to the certified payment acquirer so
that you don't ever have to worry about PCI compliance.
This means that no sensitive information (such as credit card numbers or credentials) is stored
on Odoo servers or Odoo databases hosted elsewhere. Instead, Odoo apps use a unique reference
number to the data stored safely in the payment acquirers' systems.
This means that no sensitive information (such as credit card numbers) is stored on Odoo servers
or Odoo databases hosted elsewhere. Instead, Odoo apps use a unique reference number to the data
stored safely in the payment acquirers' systems.
.. _payment_acquirers/acquirers:
Payment Acquirers
Payment acquirers
=================
From an accounting perspective, we can distinguish two types of payment acquirers: the payments that
@ -43,7 +49,7 @@ acquirers that are third-party services and require you to follow another accoun
.. _payment_acquirers/bank_payments:
Bank Payments
Bank payments
-------------
- | :doc:`Wire Transfer <payment_acquirers/wire_transfer>`
@ -51,43 +57,58 @@ Bank Payments
approve the payment manually once you have received it on your bank account.
- | SEPA Direct Debit
| Your customers can sign a SEPA Direct Debit mandate online and get their bank account charged
directly. :doc:`Click here <../finance/accounting/receivables/customer_payments/batch_sdd>` for more
information about this payment method.
directly. :doc:`Click here <../finance/accounting/receivables/customer_payments/batch_sdd>` for
more information about this payment method.
.. _payment_acquirers/online_providers:
Online Payment Providers
Online payment providers
------------------------
+-------------------------------------+----------------------+-----------+------------+-----------------+
| | Redirection to | Payment | Save Cards | Capture Amount |
| | the acquirer website | from Odoo | | Manually |
+=====================================+======================+===========+============+=================+
| Adyen | ✔ | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| Alipay | ✔ | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| :doc:`Authorize.Net | ✔ | ✔ | ✔ | ✔ |
| <payment_acquirers/authorize>` | | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| Buckaroo | ✔ | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| Ingenico | ✔ | ✔ | ✔ | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| :doc:`PayPal | ✔ | | | |
| <payment_acquirers/paypal>` | | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| PayUMoney | ✔ | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| SIPS | ✔ | | | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
| Stripe | ✔ | ✔ | ✔ | |
+-------------------------------------+----------------------+-----------+------------+-----------------+
+-------------------------------+----------------------+------------+-----------------+-----------+
| | Payment flow | Save cards | Capture amount | Refund |
| | | | manually | from Odoo |
+===============================+======================+============+=================+===========+
| :doc:`Adyen | Payment from Odoo | |V| | | |V| |
| <payment_acquirers/adyen>` | | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Alipay | Redirection to the | | | |
| <payment_acquirers/alipay>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Authorize.Net | Payment from Odoo | |V| | |V| | |
| <payment_acquirers/authorize>`| | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Buckaroo | Redirection to the | | | |
| <payment_acquirers/buckaroo>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Mollie | Redirection to the | | | |
| <payment_acquirers/mollie>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Ogone | Redirection to the | |V| | | |
| <payment_acquirers/ogone>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`PayPal | Redirection to the | | | |
| <payment_acquirers/paypal>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| PayU Latam | Redirection to the | | | |
| | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| PayUMoney | Redirection to the | | | |
| | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`SIPS | Redirection to the | | | |
| <payment_acquirers/sips>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
| :doc:`Stripe | Redirection to the | |V| | | |
| <payment_acquirers/stripe>` | acquirer website | | | |
+-------------------------------+----------------------+------------+-----------------+-----------+
.. |V| replace::
.. note::
Some of these Online Payment Providers can also be added as :doc:`Bank Accounts
<../finance/accounting/bank/setup/bank_accounts>`, but this is **not** the same process as adding them
as Payment Acquirers. Payment Acquirers allow customers to pay online, and Bank Accounts are
Some of these online payment providers can also be added as :doc:`bank accounts
<../finance/accounting/bank/setup/bank_accounts>`, but this is **not** the same process as adding
them as payment acquirers. Payment acquirers allow customers to pay online, and bank accounts are
added and configured on your Accounting app to do a bank reconciliation, which is an accounting
control process.
@ -96,15 +117,15 @@ Online Payment Providers
Configuration
=============
Some of the features described in this section are available only with some Payment Acquirers. Refer
Some of the features described in this section are available only with some payment acquirers. Refer
to :ref:`the table above <payment_acquirers/online_providers>` for more details.
.. _payment_acquirers/add_new:
Add a new Payment Acquirer
Add a new payment acquirer
--------------------------
To add a new Payment acquirer and make it available to your customers, go to
To add a new payment acquirer and make it available to your customers, go to
:menuselection:`Accounting --> Configuration --> Payment Acquirers`, look for your payment acquirer,
install the related module, and activate it. To do so, open the payment acquirer and change its
state from *Disabled* to *Enabled*.
@ -124,11 +145,11 @@ state from *Disabled* to *Enabled*.
Credentials tab
~~~~~~~~~~~~~~~
If not done yet, go to the **Online Payment Provider**'s website, create an account, and make sure
to have the credentials required for third-party use. Odoo requires these credentials to communicate
with the Payment Acquirer and get the confirmation of the *payment authentication*.
If not done yet, go to the online payment provider website, create an account, and make sure to have
the credentials required for third-party use. Odoo requires these credentials to communicate with
the payment acquirer.
The form in this section is specific to the Payment Acquirer you are configuring. Please refer to
The form in this section is specific to the payment acquirer you are configuring. Please refer to
the related documentation for more information.
.. _payment_acquirers/configuration_tab:
@ -136,66 +157,66 @@ the related documentation for more information.
Configuration tab
~~~~~~~~~~~~~~~~~
You can change the Payment Acquirer front-end appearance by modifying its name under the **Displayed
as** field and which credit card icons to display under the **Supported Payment Icons** field.
You can change the payment acquirer's front-end appearance by modifying its name under the
**Displayed as** field and which credit card icons to display under the **Supported Payment Icons**
field.
.. _payment_acquirers/save_cards:
Save and reuse Credit Cards
Save and reuse credit cards
***************************
With the **Save Cards** feature, Odoo can store **Payment Tokens** in your database, which can be
used for subsequent payments, without having to reenter the payment details. This is particularly
useful for subscriptions' recurring payments.
useful for the eCommerce conversion rate and subscriptions' recurring payments.
.. _payment_acquirers/capture_amount:
Place a hold on a card
**********************
If the **Capture Amount Manually** field is enabled, the funds are reserved for a few days on the
customer's card, but not charged yet. You must then go to the related Sales Order and manually
If you wish to manually capture an amount instead of having an immediate capture, you can enable the
manual capture. Capturing payments manually has many advantages:
- Receive the payment confirmation and wait until the order is shipped to capture the payment.
- Review and verify that orders are legitimate before the payment is completed and the fulfillment
process starts.
- Avoid potentially high credit card fees in the event of overselling or cancelled orders.
The **Capture Amount Manually** field is under the **Configuration** tab. If enabled, the funds are
reserved for a few days on the customer's card, but not charged yet. Please refer to your acquirer's
documentation for the exact reservation duration.
.. image:: payment_acquirers/media/capture_manually.png
:align: center
:alt: Configuration tab on Odoo
To capture the payment, you must then go to the related sales order or invoice and manually
*capture* the funds before its automatic cancellation, or *void the transaction* to unlock the funds
from the customer's card.
.. _payment_acquirers/payment_flow:
Payment Flow
************
Choose in the **Payment Flow** field if to redirect the user to the payment acquirer's portal to
authenticate the payment, or if to stay on the current page and authenticate the payment from Odoo.
.. image:: payment_acquirers/media/capture.png
:align: center
:alt: Hold the credit card payment until you capture or revoke it on Odoo
.. note::
Some features are available only if you select *Redirection to the acquirer website*.
Odoo may not yet support the manual capture for all acquirers, but some acquirers allow managing
the capture from their interfaces.
.. _payment_acquirers/countries:
Countries
*********
Restrict the use of the Payment Acquirer to a selection of countries. Leave this field blank to make
the Payment Acquirer available to all countries.
Restrict the use of the payment acquirer to a selection of countries. Leave this field blank to make
the payment acquirer available to all countries.
.. _payment_acquirers/journal:
Payment Journal
Payment journal
***************
The **Payment Journal** selected for your Payment Acquirer must be a *Bank* journal.
.. important::
In many cases, Odoo automatically creates a new **Journal** and a new **Account** when you
activate a new Payment Acquirer. Both of them are preset to work out-of-the-box, but we strongly
recommend you to make sure these fields are correctly set according to your accounting needs, and
adapt them if necessary.
.. _payment_acquirers/messages:
Messages tab
~~~~~~~~~~~~
Change here the messages displayed by Odoo after a payment's confirmation or failure.
The **Payment journal** selected for your payment acquirer must be a *Bank* journal.
.. _payment_acquirers/accounting:
@ -207,33 +228,30 @@ reconciliation workflows. However, payments recorded with **Online Payment Provi
to consider how you want to record your payments' journal entries. We recommend you to ask your
accountant for advice.
Odoo default method is to record the payments on a *Current Assets Account*, on a dedicated *Bank
Journal*, once the *Payment Authentication* is confirmed. At some point, you transfer the funds from
the *Payment Acquirer* to your *Bank Account*.
You need to select a *Payment Journal* on your acquirer configuration to record the payments,
on a **Outstanding Account**. The Journal's **type** must be *Bank Journal*.
Here are the requirements for this to work:
You can use a single journal for many payment methods. And for each payment method, you can either:
- Bank Journal
- Define an **Accounting Account** to separate these payments from another payment method.
- Leave blank to fallback on the default account, which you can see or change in the settings.
- The Journal's **type** must be *Bank Journal*.
- Select the right **Default Debit Account** and **Default Credit Account**.
- | Under the *Advanced Settings* tab, make sure that **Posting** is set as *Post At Payment
Validation*.
| This implies that the Journal Entry is recorded directly when your Odoo database receives the
confirmation of the *Payment Authentication* from the Online Payment Provider.
.. image:: payment_acquirers/media/bank_journal.png
:align: center
:alt: A bank journal in the "Incoming Payments Tab".
- Current Asset Account
- The Account's **type** is *Current Assets*
- The Account must **Allow Reconciliation**
.. note::
In many cases, Odoo automatically creates a new **Journal** and a new **Current Asset Account**
when you activate a new Payment Acquirer. You can modify them if necessary.
You can have the same bank account for the whole company, or for some journals only, or a single
payment method... What best suit your needs.
.. seealso::
- :doc:`../finance/accounting/receivables/customer_payments/recording`
- :doc:`payment_acquirers/wire_transfer`
- :doc:`payment_acquirers/adyen`
- :doc:`payment_acquirers/alipay`
- :doc:`payment_acquirers/authorize`
- :doc:`payment_acquirers/paypal`
- :doc:`payment_acquirers/buckaroo`
- :doc:`payment_acquirers/mollie`
- :doc:`payment_acquirers/ogone`
- :doc:`payment_acquirers/paypal`
- :doc:`payment_acquirers/sips`
- :doc:`payment_acquirers/stripe`
- :doc:`../websites/ecommerce/shopper_experience/payment_acquirer`

View File

@ -0,0 +1,103 @@
=====
Adyen
=====
`Adyen <https://www.adyen.com/>`_ is a Dutch-based company that offers several online payment
possibilities.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your Adyen account, which comprise:
- **Merchant Account**: The code of the merchant account to use with Adyen.
- :ref:`API Key <adyen/api_and_client_keys>`: The API key of the webservice user.
- :ref:`Client Key <adyen/api_and_client_keys>`: The client key of the webservice user.
- :ref:`HMAC Key <adyen/hmac_key>`: The HMAC key of the webhook.
- :ref:`Checkout API URL <adyen/urls>`: The base URL for the Checkout API endpoints.
- :ref:`Recurring API URL <adyen/urls>`: The base URL for the Recurring API endpoints.
You can copy your credentials from your Adyen account, and paste them in the related fields under
the **Credentials** tab.
.. important::
If you are trying Adyen as a test, with a *test account*, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
.. _adyen/api_and_client_keys:
API Key and Client Key
~~~~~~~~~~~~~~~~~~~~~~
In order to retrieve the API Key and the Client Key, log into your Adyen account, go to
:menuselection:`Developers --> API Credentials`.
- If you already have an API user, open it.
- If you don't have an API user yet, click on **Create new credential**.
Go to :menuselection:`Authentication` and get or generate your **API Key** and **Client Key**. Be
careful to copy your API key as you'll not be allowed to get it later without generating a new one.
This is also the place where you'll :ref:`allow payments to be made from your website
<adyen/allowed_origins>`.
.. _adyen/hmac_key:
HMAC key
~~~~~~~~
In order to retrieve the HMAC Key, you'll need to configure a `Standard Notification` webhook. For
this, log into your Adyen account then go to :menuselection:`Developers --> Webhooks --> Add webhook
--> Add Standard notification`.
.. image:: media/adyen_add_webhook.png
:align: center
:alt: Configure a webhook.
There, in :menuselection:`Transport --> URL`, enter your server address followed by
`/payment/adyen/notification`.
.. image:: media/adyen_webhook_url.png
:align: center
:alt: Enter the notification URL.
Then continue in :menuselection:`Additional Settings --> HMAC Key --> Generate new HMAC key`. Be
careful to copy it as you'll not be allowed to get it later without generating a new one.
You have to save the webhook to finalize its creation.
.. _adyen/urls:
URLs
~~~~
To retrieve the URLs, log into your Adyen account, go to :menuselection:`Developers --> API URLs`.
Pick one of the URLs listed next to **Recurring** as your **Recurring API URL** and one of the URLs
listed next to **Checkout API** as your **Checkout API URL**.
.. image:: media/adyen_api_urls.png
:align: center
:alt: Get the links for the different API.
Adyen Account
-------------
.. _adyen/allowed_origins:
Allow payments from a specific origin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To allow payment originated from your website, follow the steps in :ref:`adyen/api_and_client_keys`
to navigate to your API user and go to :menuselection:`Allowed Origins`, then add the URLs from
where payments will be made (the URLs of the servers hosting your Odoo instances).
.. image:: media/adyen_allowed_origins.png
:align: center
:alt: Allows payments originated from a specific domain.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -0,0 +1,36 @@
======
Alipay
======
`Alipay <https://www.alipay.com/>`_ is an online payments platform established in China by Alibaba
Group.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your Alipay account, which comprise:
- **Account**: Depending on where you are situated
- `Express Checkout` if your are a Chinese Merchant.
- `Cross-border` if you are not.
- **Alipay Seller Email**: Your public Alipay partner email (for express checkout only).
- **Merchant Partner ID**: The public partner ID solely used to identify the account with Alipay.
- **MD5 Signature Key**: The signature key.
You can copy your credentials from your Alipay account, and paste them in the related fields under
the **Credentials** tab.
To retrieve them, log into your Alipay account, they are on the front page.
.. important::
If you are trying Alipay as a test, in the *sandbox*, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -2,116 +2,46 @@
Authorize.Net
=============
`Authorize.Net <https://www.authorize.net>`__ is a United States-based online payment solution
`Authorize.Net <https://www.authorize.net>`_ is a United States-based online payment solution
provider, allowing businesses to accept **credit cards**.
.. image:: media/authorize-net.png
:align: center
:alt: Authorize.Net logo
Configuration
=============
This Payment Acquirer offers additional options that are not available for other :doc:`Payment
Acquirers <../payment_acquirers>`, such as the ability to process your customer's payment after
delivery.
.. seealso::
- :ref:`payment_acquirers/add_new`
Authorize.Net account
=====================
If not done yet, choose a plan and `Sign Up for an Authorize.Net account
<https://www.authorize.net/sign-up.html>`__.
Credentials tab
---------------
Odoo needs your **API Credentials & Keys** to connect with your Authorize.Net account, which
comprise:
- API Login ID
- Transaction Key
- Signature Key
- **API Login ID**: The ID solely used to identify the account with Authorize.Net.
- **API Transaction Key**
- **API Signature Key**
- **API Client Key**
To retrieve them, log into your Authorize.Net account, go to :menuselection:`Account --> Security
Settings --> General Security Settings --> API Credentials & Keys`, and generate your **Transaction
Key** and **Signature Key**.
.. image:: media/authorize-api-keys.png
:align: center
:alt: Generate your Transaction Key and Signature Key on your Authorize.Net account
.. seealso::
- `Authorize.Net: Getting Started Guide
<https://support.authorize.net/s/article/Authorize-Net-Getting-Started-Guide>`__
Payment Acquirer Configuration
==============================
To configure Authorize.Net as Payment Acquirer in Odoo, go to :menuselection:`Accounting -->
Configuration --> Payment Acquirers`, open **Authorize.Net**, and change the **State** to *Enabled*.
Don't forget to click on *Save* once you've set everything up.
.. note::
Please refer to the :doc:`Payment Acquirers documentation <../payment_acquirers>` to read how to
configure this payment acquirer.
Credentials
-----------
Copy your credentials from your Authorize.Net account (API Login Id, API Transaction Key, and API
Signature Key), paste them in the related fields under the **Credentials** tab, then click on
**Generate Client Key**.
.. note::
The **API Client Key** is necessary only if you select *Payment from Odoo* option as
:ref:`Payment Flow <payment_acquirers/payment_flow>`.
To retrieve them, log into your Authorize.Net account, go to :menuselection:`Account --> Settings
--> Security Settings --> API Credentials & Keys`, generate your **Transaction Key** and
**Signature Key**, and paste them on the related fields in Odoo. Then, click on **Generate Client
Key**.
.. important::
If you are trying Authorize.Net as a test, with a *sandbox account*, change the **State** to
*Test Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
Payment Flow
------------
Configuration tab
-----------------
The **Payment Flow** lets you decide if to redirect the user to the payment acquirer's portal to
authenticate the payment, or if to stay on the current page and authenticate the payment from Odoo.
This field is under the **Configuration** tab.
Place a hold on a card
~~~~~~~~~~~~~~~~~~~~~~
If you select *Redirection to the acquirer website*, make sure you add a **Default Receipt URL** and
a **Default Relay Response URL** to your Authorize.net account.
To do so, log into your Authorize.Net account, go to :menuselection:`Account --> Transaction Format
Settings --> Transaction Response Settings --> Response/Receipt URLs`, and set the default links:
- | Default Receipt URL:
| *https://[yourcompany.odoo.com]*/**payment/authorize/return**
- | Default Relay Response URL:
| *https://[yourcompany.odoo.com]*/**shop/confirmation**
.. note::
| Failing to complete this step results in the following error:
| *The referrer, relay response or receipt link URL is invalid.*
Capture the payment after the delivery
--------------------------------------
The **Capture Amount Manually** field is under the **Configuration** tab. If enabled, the funds are
reserved for 30 days on the customer's card, but not charged yet.
.. image:: media/authorize-configuration.png
:align: center
:alt: Authorize.Net Configuration tab on Odoo
To capture the payment, go to the related Sales Order and click on *Capture Transaction*. If the
order is canceled, you can click on *Void Transaction* to unlock the funds from the customer's card.
.. image:: media/authorize-capture.png
:align: center
:alt: Hold the credit card payment until you capture or revoke it on Odoo
With Authorize.net, you can enable the :ref:`manual capture <payment_acquirers/capture_amount>`. If
enabled, the funds are reserved for 30 days on the customer's card, but not charged yet.
.. warning::
After **30 days**, the transaction is **voided automatically** by Authorize.net.
.. note::
With other payment acquirers, you can manage the capture in their own interfaces, not from Odoo.
.. seealso::
- `Authorize.Net: Getting Started Guide
<https://support.authorize.net/s/article/Authorize-Net-Getting-Started-Guide>`__
- :doc:`../payment_acquirers`
- :doc:`../../websites/ecommerce/shopper_experience/payment_acquirer`

View File

@ -0,0 +1,47 @@
========
Buckaroo
========
`Buckaroo <https://www.buckaroo.eu/>`_ is a Dutch-based company that offers several online payment
possibilities.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your Buckaroo account, which comprise:
- :ref:`Website Key <buckaroo/website_key>`: The key solely used to identify the website with
Buckaroo.
- :ref:`Secret Key <buckaroo/secret_key>`: The secret key you entered on Buckaroo.
You can copy your credentials from your Buckaroo account, and paste them in the related fields under
the **Credentials** tab.
.. _buckaroo/website_key:
Website Key
~~~~~~~~~~~
In order to retrieve the Website Key, log into your Buckaroo account, go to
:menuselection:`Configuration --> Templates --> Your Website`.
.. _buckaroo/secret_key:
Secret Key
~~~~~~~~~~
In order to retrieve the Website Key, log into your Buckaroo account, go to
:menuselection:`Configuration --> Security --> Secret Key`.
.. important::
If you are trying Buckaroo in a test account, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_acquirers`

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,31 @@
======
Mollie
======
`Mollie <https://www.mollie.com/>`_ is an online payments platform established in the Netherlands.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your Mollie account, which comprise:
- **API Key**: The test or live API Key depending on the configuration of the acquirer.
You can copy your credentials from your Mollie account, and paste them in the related fields under
the **Credentials** tab.
To retrieve your API key, log into your Mollie account, go to
:menuselection:`Developers --> API keys`, and copy your Test or Live **API Key**.
.. important::
If you are trying Mollie as a test, with the Test API key, change the **State** to *Test Mode*.
We recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -0,0 +1,69 @@
=====
Ogone
=====
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
company that provides the technology involved in secure electronic transactions.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your Ogone account, which comprise:
- **PSPID**: The ID solely used to identify the account with Ogone. You chose it when you opened
your account.
- :ref:`API User ID <ogone/api_user>`: The ID solely used to identify the user with Ogone.
- :ref:`API User Password <ogone/api_user>`: Value used to identify the user with Ogone.
- :ref:`SHA Key IN <ogone/sha_key_in>`: Key used in the signature Odoo send to Ogone.
- :ref:`SHA Key OUT <ogone/sha_key_out>`: Key used in the signature Ogone send to Odoo.
You can copy your credentials from your Ogone account, and paste them in the related fields under
the **Credentials** tab.
.. _ogone/api_user:
API User ID and Password
~~~~~~~~~~~~~~~~~~~~~~~~
If you already created a user and have both its ID and password, just copy them. You can also
generate a new password from :menuselection:`Configuration --> Users --> Your chosen user --> change
password`.
If you don't have a user, create one by going to :menuselection:`Configuration --> Users -->
New User`. Set your **User ID** to get your **password** when you save your new user.
.. image:: media/ogone_new_user.png
:align: center
:alt: Get your password when you save the new user.
.. _ogone/sha_key_in:
SHA Key IN
~~~~~~~~~~
In order to retrieve the SHA Key IN, log into your ogone account, go to
:menuselection:`Configuration --> Technical Information --> Data and origin verification -->
Checks for e-Commerce & Alias Gateway`, and retrieve **SHA Key IN**.
.. _ogone/sha_key_out:
SHA Key OUT
~~~~~~~~~~~
In order to retrieve the API Key and the Client Key, log into your ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All transaction
submission modes`, and get or generate your **API Key** and **Client Key**. Be careful to copy your
API key as you'll not be allowed to get it later without generating a new one.
.. important::
If you are trying Ogone as a test, with the Test Account, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -1,185 +1,123 @@
=============================
Configure your Paypal account
=============================
======
Paypal
======
Paypal is available and popular worldwide. It doesnt charge any
subscription fee and creating an account is very easy. Thats why we
definitely recommend it for starters in Odoo. It works as a seamless
flow where the customer is routed to Paypal website to register the
payment.
Paypal account
==============
A business account is needed to get paid with Paypal. Create a
`Paypal Business Account <https://www.paypal.com/us/merchantsignup/
applicationChecklist?signupType=CREATE_NEW_ACCOUNT&productIntentId=wp_standard>`_
or upgrade your Personal account to a Business account. Go to the Paypal
settings and click on *Upgrade to a Business account*.
Then follow the few configuration steps.
Settings in Paypal
==================
| First, lets see how to set up your Paypal account in order to build a
seamless customer experience with Odoo.
| Log in and open the settings. Go to :menuselection:`Products & Services -->
Website payments` and click **Update** on **Website preferences**.
.. image:: media/paypal01.png
:align: center
Auto Return
-----------
*Auto Return* automatically redirects your customers to Odoo once the
payment is processed. Check *Auto Return* and enter your domain name
with the suffix ``/shop/confirmation`` as *Return URL*
(e.g. ``https://yourcompany.odoo.com/shop/confirmation``).
This URL is requested in Paypal but not used in practice as Odoo
transmits it at each transaction. Dont worry if you manage several
sales channels or Odoo databases.
.. image:: media/paypal02.png
:align: center
Payment Data Transfer (PDT)
---------------------------
*Payment Data Transfer* delivers the payment confirmation to Odoo as
soon as it is processed. Without it, Odoo cannot end the sales flow.
This setting must be activated as well. When saving, an *Identity
Token* is generated. You will be later requested to enter it in Odoo.
.. image:: media/paypal03.png
:align: center
Paypal Account Optional
We advise you to not prompt customers to log in with a Paypal account
when they get to pay. Let them pay with debit/credit cards as well, or you might lose some deals. Make sure this setting is turned on.
.. image:: media/paypal04.png
:align: center
Instant Payment Notification (IPN)
----------------------------------
PDT sends order confirmations once and only once. As a result, your site
must be running when it happens; otherwise, it will never receive the
message. Thats why we advise to activate the *Instant Payment
Notification* (IPN) on top. With IPN, delivery of order confirmations
is virtually guaranteed since IPN resends a confirmation until your site acknowledges receipt.
| To activate IPN, get back to *Website payments* menu and click
*Update* in *Instant Payment Notification*.
| The *Notification URL* to set is your domain name +
“payment/paypal/ipn” (e.g. ``https://yourcompany.odoo.com/payment/paypal/ipn``).
.. image:: media/paypal05.png
:align: center
Payment Messages Format
-----------------------
If you use accented characters (or anything else than basic Latin characters)
for your customer names, addresses... you MUST configure the encoding format of
the payment request sent by Odoo to Paypal.
.. danger::
If you don't configure this setting, some transactions fail without notice.
To do so, open:
* `this page for a test account <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`__
* `this page for a production account <https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`__
Then, click *More Options* and set the two default encoding formats as **UTF-8**.
.. image:: media/paypal07.png
:align: center
.. image:: media/paypal08.png
:align: center
Your Paypal account is ready!
.. tip::
If you want your customers to pay without creating a Paypal account,
*Paypal Account Optional* needs to be turned on.
.. image:: media/paypal_account_optional.png
.. tip::
For Encrypted Website Payments & EWP_SETTINGS error,
please check the `Paypal documentation <https://developer.paypal.com/docs/
classic/paypal-payments-standard/integration-guide/encryptedwebpayments/
#encrypted-website-payments-ewp>`_.
`Paypal <https://www.paypal.com//>` is available and popular worldwide. It doesn't charge any
subscription fee and creating an account is very easy. That's why we definitely recommend it for
starters in Odoo. It works as a seamless flow where the customer is routed to Paypal website to
register the payment.
Settings in Odoo
================
Activation
----------
.. seealso::
- :ref:`payment_acquirers/add_new`
Activate *Paypal* from the config bar of Sales, Invoicing and
eCommerce apps, or from the configuration menu of *Payment Acquirers*.
Credentials tab
---------------
Credentials
-----------
Odoo needs your **API Credentials** to connect with your PayPal account, which comprise:
Odoo requires three Paypal credentials:
- **Email ID**: your login email address in Paypal.
- **Merchant ID**: the code of the merchant account used to identify your Paypal account.
- **Use IPN**: either you want to use Instant Payment Notification. Already checked, you don't have
to change it.
- *Email ID* is your login email address in Paypal.
- *Merchant ID* can be found in the settings of your Paypal account, in
:menuselection:`Account Settings --> Business information`.
- *Paypal PDT Token* is given in *Website payments* configuration as explained here above.
You can copy your credentials from your Paypal account, and paste them in the related fields under
the **Credentials** tab.
.. image:: media/paypal09.png
:align: center
To retrieve them, log into your Paypal account, and go to :menuselection:`Your account menu -->
Account settings --> Business Profile --> Business Information`
Transaction fees
----------------
.. important::
If you are trying Paypal as a test, with a *sandbox account*, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
Configuration tab
-----------------
You can charge extra fees to your customers for paying with Paypal;
This to cover the transaction fees Paypal charges you. Once redirected to Paypal, your customer sees an extra applied to the order amount.
This to cover the transaction fees Paypal charges you. Once redirected to Paypal, your customer sees
an extra applied to the order amount.
To activate this, go to the Configuration tab of Paypal configuration in
Odoo and check *Add Extra Fees*.
To activate this, go to the Configuration tab of Paypal configuration in Odoo and check *Add Extra
Fees*.
.. image:: media/paypal10.png
:align: center
You can refer to `Paypal Fees <https://www.paypal.com/webapps/mpp/paypal-fees>`__ to set up
fees.
You can refer to `Paypal Fees <https://www.paypal.com/webapps/mpp/paypal-fees>`_ to set up fees.
.. note::
`Traders in the EU <https://europa.eu/youreurope/citizens/consumers/shopping/pricing-payments/
index_en.htm>`_ are not allowed to charge extra fees for paying with credit cards.
Go live!
========
Settings in Paypal
==================
Your configuration is ready to roll. Make sure *Production* mode is
on. Then publish the payment method by clicking the *Published* button right next to it.
First, lets see how to set up your Paypal account in order to build a seamless customer experience
with Odoo.
.. image:: media/paypal11.png
:align: center
Log in and open the settings. Go to :menuselection:`Your account menu --> Account settings -->
Product & Services --> Website payments` and click **Update** on **Website preferences**.
.. image:: media/paypal12.png
:align: Center
Auto Return
-----------
Paypal is now available in your payment form available in eCommerce,
Sales and Invoicing apps. Customers are redirected to Paypal website
when hitting *Pay Now*. They get back to a confirmation page in Odoo
once the payment is processed.
*Auto Return* automatically redirects your customers to Odoo once the payment is processed. Check
*Auto Return* and enter your domain name with the suffix ``/shop/confirmation`` as *Return URL*
(e.g. `https://yourcompany.odoo.com/shop/confirmation`).
.. image:: media/paypal13.png
:align: center
This URL is requested in Paypal but not used in practice as Odoo transmits it at each transaction.
Dont worry if you manage several sales channels or Odoo databases.
Payment Data Transfer (PDT)
---------------------------
*Payment Data Transfer* delivers the payment confirmation to Odoo as soon as it is processed.
Without it, Odoo cannot end the sales flow. This setting must be activated as well. When saving, an
*Identity Token* is generated. You will be later requested to enter it in Odoo.
Paypal Account Optional
-----------------------
We advise you to not prompt customers to log in with a Paypal account when they get to pay. Let them
pay with debit/credit cards as well, or you might lose some deals. Make sure this setting is turned
on.
Instant Payment Notification (IPN)
----------------------------------
PDT sends order confirmations once and only once. As a result, your site must be running when it
happens; otherwise, it will never receive the message. Thats why we advise to activate the *Instant
Payment Notification* (IPN) on top. With IPN, delivery of order confirmations is virtually
guaranteed since IPN resends a confirmation until your site acknowledges receipt.
| To activate IPN, get back to *Website payments* menu and click *Update* in *Instant Payment
Notification*.
| The *Notification URL* to set is your domain name + “payment/paypal/ipn” (e.g.
`https://yourcompany.odoo.com/payment/paypal/ipn`).
Payment Messages Format
-----------------------
If you use accented characters (or anything else than basic Latin characters) for your customer
names, addresses... you MUST configure the encoding format of the payment request sent by Odoo to
Paypal.
.. danger::
If you don't configure this setting, some transactions fail without notice.
To do so, open:
- `this page for a test account <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
- `this page for a production account <https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
Then, click *More Options* and set the two default encoding formats as **UTF-8**.
Your Paypal account is ready!
.. tip::
For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
<https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/
encryptedwebpayments#encrypted-website-payments-ewp>`_.
Test environment
================
@ -195,13 +133,10 @@ This will create two sandbox accounts:
- A default personal account (to use as shopper, e.g. `pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`__).
Log in to Paypal Sandbox with the merchant account and follow the same configuration instructions.
Enter your sandbox credentials in Odoo and make sure Paypal is still
set on *Test Environment*. Also, make sure the automatic invoicing
is not activated in your eCommerce settings, to not generate invoices
when a fictitious transaction is completed.
Enter your sandbox credentials in Odoo and make sure Paypal is still set on *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
Run a test transaction from Odoo using the sandbox personal account.
.. seealso::
- :doc:`../payment_acquirers`
- :doc:`../../websites/ecommerce/shopper_experience/payment_acquirer`

View File

@ -0,0 +1,32 @@
====
SIPS
====
`SIPS <https://sips.worldline.com/>`_ is an online payments solution from the multinational
Worldline.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your SIPS account, which comprise:
- **Merchant ID**: The ID solely used to identify the merchant account with SIPS.
- **Secret Key**: The key to sign the merchant account with SIPS.
- **Secret Key Version**: The version of the key, pre-filled.
- **Interface Version**: Pre-filled, don't change it.
You can copy your credentials from your SIPS environment info documentation, in the section
**PROD**, and paste them in the related fields under the **Credentials** tab.
.. important::
If you are trying SIPS as a test, with the *TEST* credentials, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -2,31 +2,48 @@
Stripe
======
`Stripe <https://stripe.com/>`_ is a United States-based online payment solution
provider, allowing businesses to accept **credit cards** and other payment methods.
`Stripe <https://stripe.com/>`_ is a United States-based online payment solution provider, allowing
businesses to accept **credit cards** and other payment methods.
Enable Local Payment Methods
============================
Configuration
=============
Local payment methods are payment methods that are only available for certain merchants
and customers countries and currencies.
.. seealso::
- :ref:`payment_acquirers/add_new`
The Stripe connector in Odoo supports the following local payment methods:
Credentials tab
---------------
- Bancontact
- EPS
- Giropay
- iDeal:
- Przelewy24 (P24)
Odoo needs your **API Credentials** to connect with your Stripe account, which comprise:
To enable specific Local Payment Methods with Stripe, list them as supported payment icons.
To do so, go to :menuselection:`Payment Acquirers --> Stripe --> Configuration` and add the desired payment methods in
the **Supported Payment Icons** field. If the desired payment method is already listed, you don't have anything to do.
- Publishable Key: The key solely used to identify the account with Stripe.
- Secret Key: The key to sign the merchant account with Stripe.
- Webhook Signing Secret: If a webhook is enabled on your Stripe account
(:menuselection:`Developers --> webhooks`), this signing secret must be set to authenticate the
messages sent from Stripe to Odoo.
To retrieve the publishable and secret keys, log into your Stripe dashboard and go to
:menuselection:`Developers --> API Keys --> Standard Keys`
.. important::
If you are trying Stripe as a test, in the **test mode**, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
Enable local payment methods
****************************
Local payment methods are payment methods that are only available for certain merchants and
customers countries and currencies.
To enable specific local payment methods with Stripe, list them as supported payment icons. To do
so, go to :menuselection:`Payment Acquirers --> Stripe --> Configuration` and add the desired
payment methods in the **Supported Payment Icons** field. If the desired payment method is already
listed, you don't have anything to do. If a payment icon record doesn't exist in the database, its
related payment method is considered enabled with Stripe.
.. image:: media/stripe_enable_local_payment_method.png
:align: center
:alt: Select and add icons of payment methods you want to enable
:alt: Select and add icons of the payment methods you want to enable
.. note::
If a payment method icon doesn't exist at all in the database, the corresponding local payment method is always offered
to customers.
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -2,41 +2,38 @@
How to get paid with wire transfers
=======================================
**Wire Transfer** is the default payment method available.
The aim is providing your customers with your bank details
so they can pay on their own.
This is very easy to start with but slow and inefficient process-wise.
Opt for payment acquirers as soon as you can!
**Wire Transfer** is the default payment method available. The aim is providing your customers with
your bank details so they can pay on their own. This is very easy to start with but slow and
inefficient process-wise. Opt for payment acquirers as soon as you can!
How to provide customers with payment instructions
==================================================
Put your payment instructions in the **Thanks Message** of your payment method.
.. image:: media/payment_instructions.png
:align: center
:align: center
They will appear to the customers when they place an order.
.. image:: media/payment_customer_instructions.png
:align: center
:align: center
How to manage an order once you get paid
========================================
Whenever a customer pays by wire transfer, the order stays in an
intermediary stage **Quotation Sent** (i.e. unpaid order).
When you get paid,
you confirm the order manually to launch the delivery.
Whenever a customer pays by wire transfer, the order stays in an intermediary stage **Quotation
Sent** (i.e. unpaid order). When you get paid, you confirm the order manually to launch the
delivery.
How to create other manual payment methods
==========================================
If you manage a B2B business, you can create other manually-processed
payment methods like paying by check.
To do so, just rename *Wire Transfer* or duplicate it.
If you manage a B2B business, you can create other manually-processed payment methods like paying by
check. To do so, just rename *Wire Transfer* or duplicate it.
.. image:: media/payment_check.png
:align: center
:align: center
.. seealso::
- :doc:`../payment_acquirers`

View File

@ -9,4 +9,5 @@ Productivity
productivity/discuss
productivity/iot
productivity/mail_plugins
productivity/studio

View File

@ -0,0 +1,54 @@
:show-content:
============
Mail Plugins
============
.. toctree::
:titlesonly:
mail_plugins/outlook
mail_plugins/gmail
Mail Plugins are connectors that bridge your mailbox with your Odoo database. With them, you can
interact with your Odoo database directly from your mailbox by:
- Creating leads and centralizing prospects' emails into the CRM app.
- Generating tasks in any Odoo project.
- Creating tickets in the Helpdesk app.
- Searching and storing insights on your contacts.
.. _mail_plugins/pricing:
Pricing
=======
Mail Plugins are **free** to install and use.
However, they can provide **Lead Enrichment**, which is part of a paid service known as **Lead
Generation**.
Mail plugins allow you to test Lead Enrichment for free, whether you connect the plugins to a
database or not. After a while, the plugins ask you to buy :doc:`../general/in_app_purchase`
credits if you would like to keep using this service.
.. _mail_plugins/lead-generation:
Lead Generation IAP service
---------------------------
Lead Enrichment uses the *Lead Generation IAP service*. Each request consumes one *Lead Generation
credit*.
To buy credits, go to :menuselection:`Settings --> CRM --> Lead Enrichment --> Buy credits` and
select a package.
.. note::
- If you are out of credits, the only information populated when clicking on the suggested
company is its website link and logo.
- Check out the `Lead Generation IAP service Privacy Policy
<https://iap.odoo.com/privacy#header_3>`_.
.. seealso::
- :doc:`../general/in_app_purchase`
- `Odoo Tutorials: Lead Enrichment <https://www.odoo.com/r/p73>`_

View File

@ -0,0 +1,95 @@
============
Gmail Plugin
============
Configuration
=============
The Odoo-Gmail :doc:`Mail Plugin <../mail_plugins>` needs to be configured both on Odoo and Gmail.
.. _mail-plugin/gmail/enable-mail-plugin:
Enable Mail Plugin
------------------
First, you need to enable the *Mail Plugin* feature in your database. Go to :menuselection:`Settings
--> General Settings --> Integrations`, enable *Mail Plugin*, and *Save* the configuration.
.. _mail-plugin/gmail/install-plugin:
Install the Odoo-Gmail Plugin
-----------------------------
#. Open the `Gmail Plugin Apps Script project
<https://script.google.com/d/1n7cxtaR4fGXKcP0RwinNQmL8S4FhVqpo-ZZ_cUAhYuuDpZAP_CnHE_7q/edit>`_.
#. Verify you are logged in using the Google account you want to install the plugin on.
#. Click on *Publish* then *Deploy from manifest...*
.. image:: gmail/deploy-from-manifest.png
:align: center
:alt: Deploying from manifest the Gmail Plugin from the Apps Script project
.. important::
Make sure you are using the legacy editor, otherwise the *Deploy from manifest* functionality
may not be available.
.. image:: gmail/legacy-editor.png
:align: center
:alt: Using the legacy editor in the Gmail Plugin Apps Script project
#. Click on *Install add-on*. A "Deployment installed" notification should appear. You can then
click on *Close*.
.. image:: gmail/install-add-on.png
:align: center
:alt: Installing the Gmail Plugin from the Apps Script project
.. _mail-plugin/gmail/configure-mailbox:
Configure your Gmail mailbox
----------------------------
#. Open any email in your Gmail mailbox. On the right-side panel, click on the Odoo icon and then
*Authorize Access*.
.. image:: gmail/authorize-access.png
:align: center
:alt: Authorizing access to the Gmail Plugin
#. Choose the right Google account.
.. image:: gmail/choose-account.png
:align: center
:alt: Choosing your Google account
#. Allow the Gmail Plugin to access some of your data.
.. image:: gmail/allow-permissions.png
:align: center
:alt: Allowing the Gmail Plugin to access Google data
#. The right-side panel can now display **Company Insights**. At the bottom, click on *Login*.
.. image:: gmail/panel-login.png
:align: center
:alt: Logging in your Odoo database
.. note::
Only a limited amount of *Company Insights* (*Lead Enrichment*) requests are available as a
trial. This feature requires :ref:`prepaid credits <mail_plugins/pricing>`.
#. Enter your Odoo database URL and click on *Login*.
.. image:: gmail/database-url.png
:align: center
:alt: Entering your Odoo database URL
#. If you aren't logged into your database, enter your credentials.
#. Click on *Allow* to let the Odoo-Gmail Plugin connect to your database.
.. image:: gmail/odoo-permission.png
:align: center
:alt: Allowing the Gmail Plugin to connect to a database

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,123 @@
==============
Outlook Plugin
==============
Configuration
=============
The Odoo-Outlook :doc:`Mail Plugin <../mail_plugins>` needs to be configured both on Odoo and
Outlook.
.. _mail-plugin/outlook/enable-mail-plugin:
Enable Mail Plugin
------------------
First, you need to enable the *Mail Plugin* feature in your database. Go to :menuselection:`Settings
--> General Settings --> Integrations`, enable *Mail Plugin*, and *Save* the configuration.
.. _mail-plugin/outlook/install-plugin:
Install the Outlook Plugin
--------------------------
#. Open your Outlook mailbox and select any email.
#. Click on the *More actions* button and select *Get Add-ins*.
.. image:: outlook/more-actions.png
:align: center
:alt: More actions button in Outlook
#. Select the *My add-ins* tab.
.. image:: outlook/my-add-ins.png
:align: center
:alt: My add-ins in Outlook
#. Under *Custom add-ins*, click on *+ Add a custom add-in*, and then on *Add from URL...*
.. image:: outlook/custom-add-ins.png
:align: center
:alt: Custom add-ins in Outlook
#. Enter the following URL `https://download.odoo.com/plugins/outlook/manifest.xml` and press
*OK*.
.. image:: outlook/enter-add-in-url.png
:align: center
:alt: Entering the add-in URL in Outlook
#. Read the warning and click on *Install*.
.. image:: outlook/add-in-warning.png
:align: center
:alt: Custom add-in installation warning in Outlook
.. _mail-plugin/outlook/connect-database:
Connect your database
---------------------
#. Open any email in your Outlook mailbox, click on the *More actions* button, and select *Odoo for
Outlook*.
.. image:: outlook/odoo-for-outlook.png
:align: center
:alt: Odoo for Outlook add-in button
#. The right-side panel can now display **Company Insights**. At the bottom, click on *Login*.
.. image:: outlook/panel-login.png
:align: center
:alt: Logging in your Odoo database
.. note::
Only a limited amount of *Company Insights* (*Lead Enrichment*) requests are available as a
trial. This feature requires :ref:`prepaid credits <mail_plugins/pricing>`.
#. Enter your Odoo database URL and click on *Login*.
.. image:: outlook/enter-database-url.png
:align: center
:alt: Entering your Odoo database URL
#. Click on *Allow* to open the pop-up window.
.. image:: outlook/new-window-warning.png
:align: center
:alt: New window pop-up warning
#. If you aren't logged into your database, enter your credentials.
#. Click on *Allow* to let the Outlook Plugin connect to your database.
.. image:: outlook/odoo-permission.png
:align: center
:alt: Allowing the Outlook Plugin to connect to a database
.. _mail-plugin/outlook/add-shortcut:
Add a shortcut to the plugin
----------------------------
By default, the Outlook Plugin can be opened from the *More actions* menu. However, to save
time, it's possible to add it next to the other default actions.
#. In your Outlook mailbox, click on *Settings*, then on *View all Outlook settings*.
.. image:: outlook/all-outlook-settings.png
:align: center
:alt: Viewing all Outlook settings
#. Select *Customize actions* under *Mail*, click on *Odoo for Outlook*, and then *Save*.
.. image:: outlook/customize-actions.png
:align: center
:alt: Odoo for Outlook customized action
#. Open any email and the shortcut should be displayed.
.. image:: outlook/odoo-outlook-shortcut.png
:align: center
:alt: Odoo for Outlook customized action

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -8,5 +8,4 @@ Optimize your Day-to-Day work
:titlesonly:
optimize/partner_autocomplete
optimize/outlook_extension
optimize/gamification

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,175 +0,0 @@
=================
Outlook Extension
=================
The **Odoo CRM Extension** is a connector that bridges your Outlook mailbox with your Odoo database.
This extension allows you to:
- Create leads from emails sent to your mailbox.
- Centralize Prospects' emails into a CRM.
- Search and store insights on your contacts.
.. image:: media/outlook-extension-overview.png
:align: center
:alt: Overview of the Outlook Extension in Outlook
.. note::
This extension is compatible with the Web version of Outlook as well as the desktop apps.
.. important::
The Outlook Extension uses *Partner Autocomplete IAP credits* to search and store insights on
your contacts. See the :ref:`Pricing section <outlook_extension/pricing>` below for more
information.
.. _outlook_extension/configuration:
Configuration
=============
The Outlook Extension requires to be configured both in Odoo and in Outlook.
.. _outlook_extension/enable-feature:
Enable the feature on your database
-----------------------------------
To enable this feature on your Odoo database, go to :menuselection:`CRM --> Configuration --> Lead
Generation`, enable **Outlook CRM Extension**, and click on *Save*.
.. _outlook_extension/add-in-installation:
Install the add-in on Outlook
-----------------------------
You can install the Outlook Extension as a **Custom Add-in**. To do so, follow these steps:
.. important::
| URL of the **Odoo for Outlook** add-in's manifest file:
| ``https://download.odoo.com/plugins/outlook/manifest.xml``
.. todo:: add copy button when the feature is added to the doc
#. Connect to your Outlook mailbox, open any email, and click on the *More actions* button,
displayed as three little dots.
.. image:: media/outlook-extension-more-actions.png
:align: center
:alt: The button "More actions" in Outlook
#. Click on *Get add-ins*.
.. image:: media/outlook-extension-get-add-ins.png
:align: center
:alt: List of actions in Outlook, including the installation of new add-ins
#. In the new window, select the tab named *My add-ins*, click on *+ Add a custom add-in*, and then
on *Add from URL...*
.. image:: media/outlook-extension-custom-add-ins.png
:align: center
:alt: Installation of a custom add-in in Outlook
#. | Outlook prompts you to **enter the URL of the add-in's manifest file**. To do so, copy the
following URL, paste it in the box, and click on *OK*.
| ``https://download.odoo.com/plugins/outlook/manifest.xml``
.. image:: media/outlook-extension-add-in-url.png
:align: center
:alt: Getting a custom add-in in Outlook by providing the manifest file's URL
#. Outlook warns you that Microsoft hasnt verified the add-in. Click on *Install* to complete the
installation.
.. note::
The *Odoo for Outlook* add-in is not listed yet on Outlook's add-ins list. This is why it is
currently necessary to install it as a *custom add-in*.
.. _outlook_extension/connection:
Add a shortcut to open the extension
------------------------------------
By default, you can open the **Odoo for Outlook** extension from the *More actions* menu. This
section explains how to move the launcher next to the other default actions.
.. image:: media/outlook-extension-default-actions.png
:align: center
:alt: Odoo for Outlook extension as a default action in the mailbox
#. In your Outlook mailbox, click on *Settings*, then on *View all Outlook settings*.
#. Go to :menuselection:`Settings --> Mail --> Customize actions --> Message surface`, select
*Odoo for Outlook*, and click on *Save*.
.. image:: media/outlook-extension-customize-actions.png
:align: center
:alt: add Odoo for Outlook extension as a default action in the message surface
Connect to your database
------------------------
#. Open **Odoo for Outlook** from any email. This opens the extension as a panel on the right side of
your screen.
#. Click on *login* at the bottom of the extension.
#. Insert your database's URL then click on *Login*.
.. image:: media/outlook-extension-database-url.png
:align: center
:alt: Connection to an Odoo database from the Outlook extension
#. Log into your database by entering your credentials. Skip this step if you are already logged in
with this browser.
#. A message asks you if you want to let Outlook access your Odoo database. Click on *Allow* to
complete the connection.
.. important::
Make sure first to :ref:`enable the feature on your database
<outlook_extension/enable-feature>`. Failing to do so would result in an *error 404 message*.
.. note::
The extension displays some information, even if you do not connect it to any Odoo database.
Note that only a limited amount of contact enrichment requests are available as a trial, as this
feature requires prepaid credits. See the :ref:`Pricing section <outlook_extension/pricing>`
below for more information.
.. _outlook_extension/pricing:
Pricing
=======
The extension is **free** and doesn't require any purchase to be installed and used.
However, this extension provides you with *Lead Enrichment* in the **Company Insights** section.
This service is part of a paid service known as **Lead Generation**.
The extension allows you to test this service for free, whether you connect the extension to a
database or not. After a while, the extension asks you to buy credits to keep using this additional
service.
.. image:: media/outlook-extension-credits-message.png
:align: center
:alt: "Could not auto-complete the company: not enough credits!" warning message in the Outlook
extension
.. tip::
You can buy more *Lead Generation* credits to keep using this service or disregard this message
and keep using the extension for free without *Lead Enrichment*.
In-App Purchase
---------------
| *Lead Generation* is an *In-App Purchase (IAP)* service, which requires prepaid credits to be
used. Each request consumes one credit.
| To buy credits, go to :menuselection:`Settings --> Contacts --> Partner Autocomplete or Odoo IAP -->
View My Services` and select a package.
.. note::
- If you run out of credits, the only information populated when clicking on the suggested
company is the website link and logo.
- If you are on Odoo Online (SAAS) and have the Enterprise version, you benefit from free
trial credits to test the feature.
- Learn about our *Privacy Policy* `here <https://iap.odoo.com/privacy#header_2>`_.
.. seealso::
- :doc:`../../../general/in_app_purchase`
- `Odoo Tutorials: Lead Enrichment <https://www.odoo.com/r/p73>`_

View File

@ -9,3 +9,4 @@ Overview
overview/getting_started
overview/register
overview/https

View File

@ -0,0 +1,30 @@
===========
Using HTTPS
===========
By default, POS loading is done in HTTP
if "direct devices" are selected. (ePos printer or six terminal)
Create a system key to force the POS in HTTPS
=============================================
Load you domain in debug mode to allow you to edit system parameter
Please refer to the :doc:`Developer Mode </applications/general/developer_mode>`.
To add a key for the system, go to :menuselection:`Settings --> Technical --> Parameters --> System Parameters`
.. image:: media/https01.png
:align: center
Create a new key:
**Key**: ``point_of_sale.enforce_https``
**Value**: ``True``
and save it.
.. image:: media/https02.png
:align: center
Now your POS will be loaded in HTTPS.

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -12,7 +12,7 @@ keep the churn under control and have reporting on the main KPIs: MRR, ARR, rete
upselling, etc.
.. seealso::
- `Odoo Tutorials: Subscriptions <https://www.odoo.com/slides/subscription-28>`_
- `Odoo Tutorials: Subscriptions <https://www.odoo.com/slides/subscription-20>`_
.. toctree::
:titlesonly:

View File

@ -70,12 +70,8 @@ Use the GitHub interface
#. Verify that you are browsing the documentation in the version that you intend to change. The
version can be selected from the dropdown in the top menu.
.. image:: documentation/version-selector.png
#. Head over to the page that you want to change and click on the **Edit on GitHub** button in the
bottom of the left menu.
.. image:: documentation/edit-on-github.png
top right corner of the page.
#. If you do not have edit rights on the repository (`odoo/documentation
<https://github.com/odoo/documentation>`_), you need to fork it by clicking on the appropriate
@ -224,7 +220,7 @@ Python comes with its own package manager: `pip
a single command.
#. Download and install the recommended release (`see README file
<https://github.com/odoo/documentation/tree/master/README.md>`_) of **Python 3** on your machine.
<https://github.com/odoo/documentation/tree/15.0/README.md>`_) of **Python 3** on your machine.
#. Make sure to have **pip** installed on your machine (on Windows, you can install pip alongside
Python).
#. Execute the following commands in a terminal to verify that both installations finished

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -36,8 +36,8 @@ A reference to the rendered :file:`prices.html` and :file:`variants.html` could
#. Absolute:
- ``https://odoo.com/documentation/master/applications/sales/sales/products_prices/prices.html``
- ``https://odoo.com/documentation/master/applications/sales/sales/products_prices/products/variants.html``
- ``https://odoo.com/documentation/15.0/applications/sales/sales/products_prices/prices.html``
- ``https://odoo.com/documentation/15.0/applications/sales/sales/products_prices/products/variants.html``
#. Relative:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -29,6 +29,12 @@ on your background.
For reference this is the official `Python tutorial`_.
.. note::
Since version 15.0, Odoo is actively transitioning to using its own in-house developed `OWL
framework <https://odoo.github.io/owl/>`_ as part of its presentation tier. The legacy JavaScript
framework is still supported but will be depreciated over time. This will be discussed further in
advanced topics.
Odoo modules
============

View File

@ -337,6 +337,18 @@ For Python, we use PEP8 with these options ignored:
For JavaScript, we use ESLint and you can find a `configuration file example here`_.
If you do not know how to set up a linter:
- `Here is an explanation of how to set up a Python linter in VSCode <https://code.visualstudio.com/docs/python/linting>`_. There are multiple
linter options you are free to choose from, but `Flake8 <https://pypi.org/project/flake8/>`_ is a popular choice.
- To setup ESLint in VSCode, you must download the `ESLint extension`_ and follow its instructions
for installing ESLint. Don't forget to create and set up the `.eslintrc` file to follow the
configuration file mentioned above.
- Another useful VSCode plugin is `Trailing Spaces`_ to quickly notice trailing spaces while
you're working.
.. _Trailing Spaces: https://marketplace.visualstudio.com/items?itemName=shardulm94.trailing-spaces
.. _ESLint extension: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
.. _configuration file example here: https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter
.. _VSCode: https://code.visualstudio.com/
.. _VSCodium: https://vscodium.com/

View File

@ -71,6 +71,12 @@ The decorator :func:`~odoo.api.model` is necessary for the :meth:`~odoo.models.M
method because the content of the recordset ``self`` is not relevant in the context of creation,
but it is not necessary for the other CRUD methods.
It is also important to note that even though we can directly override the
:meth:`~odoo.models.Model.unlink` method, you will almost always want to write a new method with
the decorator :func:`~odoo.api.ondelete` instead. Methods marked with this decorator will be
called during :meth:`~odoo.models.Model.unlink` and avoids some issues that can occur during
uninstalling the model's module when :meth:`~odoo.models.Model.unlink` is directly overridden.
In Python 3, ``super()`` is equivalent to ``super(TestModel, self)``. The latter may be necessary
when you need to call the parent method with a modified recordset.
@ -85,8 +91,8 @@ when you need to call the parent method with a modified recordset.
- Prevent deletion of a property if its state is not 'New' or 'Canceled'
Tip: override :meth:`~odoo.models.Model.unlink` and remember that ``self`` can be a recordset
with more than one record.
Tip: create a new method with the :func:`~odoo.api.ondelete` decorator and remember that
``self`` can be a recordset with more than one record.
- At offer creation, set the property state to 'Offer Received'. Also raise an error if the user
tries to create an offer with a lower amount than an existing offer.

View File

@ -133,24 +133,24 @@ information:
Moreover, an invoice line needs to be linked to an invoice. The easiest and most efficient way
to link a line to an invoice is to include all lines at invoice creation. To do this, the
``invoice_line_ids`` field is included in the ``account.move`` creation, which is a
:class:`~odoo.fields.One2many`. One2many and Many2many use special 'commands' described in
:ref:`reference/orm/models/crud`. This format is a list of triplets executed sequentially, where
each triplet is a command to execute on the set of records. Here is a simple example to include
a One2many field ``line_ids`` at creation of a ``test.model``::
:class:`~odoo.fields.One2many`. One2many and Many2many use special 'commands' which have been
made human readable with the :class:`~odoo.fields.Command` namespace. This namespace represents
a triplet command to execute on a set of records. The triplet was originally the only option to
do these commands, but it is now standard to use the namespace instead. The format is to place
them in a list which is executed sequentially. Here is a simple example to include a One2many
field ``line_ids`` at creation of a ``test.model``::
from odoo import Command
def inherited_action(self):
self.env["test.model"].create(
{
"name": "Test",
"line_ids": [
(
0,
0,
{
"field_1": "value_1",
"field_2": "value_2",
},
)
Command.create({
"field_1": "value_1",
"field_2": "value_2",
})
],
}
)

View File

@ -18,9 +18,9 @@ to improve the quality of the Odoo Apps code.
.. exercise:: Polish your code.
Refactor your code to respect the coding guidelines. Don't forget to respect the module
structure, the variable names, the method name convention, the model attribute order and the
xml ids.
Refactor your code to respect the coding guidelines. Don't forget to run your linter and
respect the module structure, the variable names, the method name convention, the model
attribute order and the xml ids.
Your first Pull Request (PR)
============================

View File

@ -10,8 +10,9 @@ Advanced B: ACL and Record Rules
<howto/rdtraining>`.
To follow the exercise, it is recommended that you fetch the branch
14.0-core from the repository XXX, it
contains a version of the module created during the core training we can use
15.0-core from the
`technical training solutions <https://github.com/odoo/technical-training-solutions/tree/15.0-core>`__ repository.
It contains a version of the module created during the core training we can use
as a starting point.
So far we have mostly concerned ourselves with implementing useful features.
@ -33,7 +34,7 @@ However:
* Real-estate agents don't need or get to decide what property types or tags are
*available*.
* Real-estate agents can have *exclusive* properties, we do not want one agent
to be able to manage another's exclusivities.
to be able to manage another's exclusives.
* All real-estate agents should be able to confirm the sale of a property they
can manage, but we do not want them to be able to validate or mark as paid
any invoice in the system.
@ -44,7 +45,7 @@ However:
Because it's easier for users to disable unnecessary security rules than it
is to create them from nothing, it's better to err on the side of caution
and limiting access: users can relax that access if necessary or convenient.
and limit access: users can relax that access if necessary or convenient.
Groups
======
@ -223,7 +224,7 @@ individual records:
<field name="name">A description of the rule's role</field>
<field name="model_id" ref="model_to_manage"/>
<field name="perm_read" eval="False"/>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="groups" eval="[Command.link(ref('base.group_user'))]"/>
<field name="domain_force">[
'|', ('user_id', '=', user.id),
('user_id', '=', False)
@ -294,7 +295,7 @@ do so.
There are two main ways to bypass existing security checks in Odoo, either
wilfully or as a side-effect:
* The ``sudo()`` method will create a new recorset in "sudo mode", this ignores
* The ``sudo()`` method will create a new recordset in "sudo mode", this ignores
all access rules and access rights (although hard-coded group and user checks
may still apply).
* Performing raw SQL queries will bypass access rules and access rights as a
@ -366,9 +367,9 @@ Explicit security checks can be performed by:
specific models or records.
* Checking that the current user has specific groups hard-coded to allow or deny
an operation (``self.env.user.has_group``).
* Calling the ``check_access_rights(operation)`` method on a recorset, this
* Calling the ``check_access_rights(operation)`` method on a recordset, this
verifies whether the current user has access to the model itself.
* Calling ``check_access_rule(operations)`` on a non-empty recorset, this
* Calling ``check_access_rule(operations)`` on a non-empty recordset, this
verifies that the current user is allowed to perform the operation on *every*
record of the set.
@ -380,7 +381,7 @@ Explicit security checks can be performed by:
Before creating the invoice, use ``check_access_rights`` and
``check_access_rule`` to ensure that the current user can update properties
in general, and this specific property in particular.
in general as well as the specific property the invoice is for.
Re-run the bypass script, check that the error occurs before the print.
@ -393,7 +394,7 @@ Multi-company security
:ref:`reference/howtos/company` for an overview of multi-company facilities
in general, and :ref:`multi-company security rules <howto/company/security>`
this in particular.
in particular.
Documentation on rules in general can, again, be found at
:ref:`reference/security/rules`.
@ -403,15 +404,15 @@ Multi-company security
At the end of this section, agents should only have access to properties
of their agency (or agencies).
For one reason or an other we might need to manage our real-estate business
as multiple companies e.g. we might have largely autonomous agencies, or a
For one reason or another we might need to manage our real-estate business
as multiple companies e.g. we might have largely autonomous agencies, a
franchise setup, or multiple brands (possibly from having acquired other
real-estate businesses) which remain legally or financially separate from one
another.
Odoo can be used to manage multiple companies inside the same system, however
the actual handling is up to individual modules: Odoo itself provides the tools
to manage the issue like company-dependent fields and *multi-company rules*,
to manage the issue of company-dependent fields and *multi-company rules*,
which is what we're going to concern ourselves with.
We want different agencies to be "siloed" from one another, with properties
@ -447,7 +448,7 @@ associated with *one* of the companies the user has access to:
Multi-company rules are usually :ref:`global <reference/security/rules/global>`,
otherwise there is a high risk that additional rules would allow bypassing
the muti-company rules.
the multi-company rules.
.. exercise::
@ -472,7 +473,7 @@ Visibility != security
.. admonition:: **Goal**
At the end of this section, real-estate agents should not see the Settings
menu of the rea-estate application, but should still be able to set the
menu of the real-estate application, but should still be able to set the
property type or tags.
Specific Odoo models can be associated directly with groups (or companies, or
@ -480,7 +481,7 @@ users). It is important to figure out whether this association is a *security*
or a *visibility* feature before using it:
* *Visibility* features mean a user can still access the model or record
otherwise, either through an other part of the interface or by :doc:`perform
otherwise, either through another part of the interface or by :doc:`performing
operations remotely using RPC <../../misc/api/odoo>`, things might just not be
visible in the web interface in some contexts.
* *Security* features mean a user can not access records, fields or operations.
@ -507,10 +508,10 @@ Here are some examples:
.. exercise::
Real Estate agents can not add property types or tags, and can see their
Real Estate agents can not add property types or tags, but can see their
options from the Property form view when creating it.
The Settings menu just adds noise to their interface, it should only be
The Settings menu just adds noise to their interface, make it only
visible to managers.
Despite not having access to the Property Types and Property Tags menus anymore,

View File

@ -6,7 +6,8 @@ Advanced C: Master and Demo Data
.. tip:: This tutorial assumes you followed the Core Training.
To do the exercise, fetch the branch 14.0-core from the repository XXX.
To do the exercise, fetch the branch 15.0-core from the
`technical training solutions <https://github.com/odoo/technical-training-solutions/tree/15.0-core>`__ repository.
It contains a basic module we will use as a starting point
Data Types
@ -23,23 +24,23 @@ We already met technical data previously since we have defined
:ref:`security rules<howto/rdtraining/N_security>`, :ref:`views<reference/views>` and
:ref:`actions<reference/actions>`. Those are one kind of master data.
On top of technical data, business data can be defined: countries, currencies, units of measure but
also complete country localization (legal reports, tax definitions, chart of account), and much
On top of technical data, business data can be defined, e.g. countries, currencies, units of measure,
as well as complete country localization (legal reports, tax definitions, chart of account), and much
more...
Demo Data
---------
Next to master data which are requirements for the modules to work properly, we also like having
data for demonstration purpose setups:
In additional to master data, which are requirements for a module to work properly, we also like
having data for demonstration purposes:
* Help the sales representatives to make their demos quickly.
* Have a set of working data for developers to test the new features and see what it looks like
with something they might not have created without it.
* Help the sales representatives make their demos quickly.
* Have a set of working data for developers to test new features and see how these new features look
with data they might not have added themselves.
* Test that the data is loaded correctly, without raising an error.
* Be ready to use most of the features quickly when creating a new database.
* Setup most of the features to be used quickly when creating a new database.
Demo data is automatically loaded when you start the server if you didn't say explicitly you don't
Demo data is automatically loaded when you start the server if you don't explicitly say you don't
want it. This can be done in the database manager or with the command line.
.. code-block:: console
@ -70,15 +71,15 @@ Manifest
**Reference**: the documentation related to this topic can be found in
:ref:`Module Manifests<reference/module/manifest>`.
The data is declared either in CSV either in XML.
Data is declared either in CSV or in XML.
Each file containing data must be added in the manifest for them to be loaded.
The keys to use in the manifest to add new data are ``data`` for the master data and ``demo`` for
the demo data. Both values should be a list of strings representing the relative path to the files
the demo data. Both values should be a list of strings representing the relative paths to the files
declaring the data.
Usually, the demo data is set in a ``demo`` folder, the views and actions are put in a ``views``
folder, the security related data is put in a ``security`` folder, and the other data is set in a
Usually, demo data is in a ``demo`` folder, views and actions are in a ``views``
folder, security related data is in a ``security`` folder, and other data is in a
``data`` folder.
If your work tree looks like this:
@ -129,7 +130,7 @@ CSV
:ref:`CSV data files<reference/data/csvdatafiles>`.
The easiest way to declare simple data is by using the CSV format. This is however limited in terms
of features: use it for long lists of simple models, but prefer XML in the other cases.
of features: use it for long lists of simple models, but prefer XML otherwise.
.. code-block:: text
@ -153,7 +154,7 @@ XML
**Reference**: the documentation related to this topic can be found in
:ref:`Data Files<reference/data>`.
When the data to create is a bit more complex it can be useful, or even needed, to do it in XML.
When the data to create is more complex it can be useful, or even necessary, to do it in XML.
.. code-block:: xml
@ -243,7 +244,7 @@ works too if you are in the module declaring it).
Deco Addict Big Villa 1500001 14
============== ========= ======= ========
.. exercise:: Both properties should be Residential properties.
.. exercise:: Ensure both of your demo properties are created with their Property Type set to Residential.
``eval``
~~~~~~~~
@ -279,13 +280,13 @@ Sometimes, you need to call the ORM to do a ``search``. This is not feasible wit
</record>
</odoo>
In this code snippet, it is needed because the master data actually depends on the localization
In this code snippet, it is needed because the master data depends on the localization
installed.
``function``
~~~~~~~~~~~~
You might also need to execute python code when loading the data.
You might also need to execute python code when loading data.
.. code-block:: xml
@ -303,36 +304,29 @@ Add X2many fields
-----------------
**Reference**: the documentation related to this topic can be found in
:ref:`Common ORM methods<reference/orm/models/crud>`.
:class:`~odoo.fields.Command`.
If you need to add related data in a One2many or a Many2many field, you can do so by using the
common ORM methods.
:class:`~odoo.fields.Command` methods.
.. code-block:: xml
<odoo>
<record id="id1" model="tutorial.example">
<field name="related_ids" eval="[
(0, 0, {
Command.create({
'name': 'My name',
}),
(0, 0, {
Command.create({
'name': 'Your name',
}),
(4, ref('model.xml_id')),
Command.link(ref('model.xml_id')),
]"/>
</record>
</odoo>
.. code-block:: text
id,parent_id:id,name
"child1","module.parent","Name1"
"child2","module.parent","Name2"
"child3","module.parent","Name3"
.. exercise:: Create one new Property, but this time with some offers created directly inside the
One2many field linking to the Offers.
One2many field linked to the Offers.
Accessing the data
==================

View File

@ -6,7 +6,8 @@ Advanced E: Python Unit Tests
.. tip:: This tutorial assumes you followed the Core Training.
To do the exercise, fetch the branch 14.0-core from the repository XXX.
To do the exercise, fetch the branch 15.0-core from the
`technical training solutions <https://github.com/odoo/technical-training-solutions/tree/15.0-core>`__ repository.
It contains a basic module we will use as a starting point
**Reference**:
@ -15,11 +16,11 @@ Advanced E: Python Unit Tests
Writing tests is a necessity for multiple reasons. Here is a non exhaustive list:
* Ensure it will not be broken in the future
* Ensure code will not be broken in the future
* Define the scope of your code
* Give examples of use cases
* It is one way to technically document the code
* Help you develop by defining your goal before working towards it
* Help your coding by defining your goal before working towards it
Running Tests
=============
@ -79,7 +80,7 @@ Integration Bots
================
.. note:: This section is only for Odoo employees and people that are contributing to
`github.com/odoo`. We highly recommend having your own CI if it is not the case.
`github.com/odoo`. We highly recommend having your own CI otherwise.
When a test is written, it is important to make sure it always passes when modifications are
applied to the source code. To automate this task, we use a development practice called
@ -100,7 +101,7 @@ GitHub.
You can see the state of a commit/branch by filtering on the runbot dashboard.
A **bundle** is created for each branch. A bundle consists of a configuration and contains the
A **bundle** is created for each branch. A bundle consists of a configuration and
batches.
A **batch** is a set of builds, depending on the parameters of the bundle.
@ -116,17 +117,17 @@ process. Generally it is used to split the post install tests in 4 parallel inst
A sub-build is green if all the tests are passing and there are no errors/warnings logged.
.. note::
* All tests are run whatever the modifications done. Correcting a typo in an error message or
refactoring a whole module triggers the same tests. It will install all the modules. This means
something might not work if Runbot green but your changes depend on something you don't depend
on.
* All tests are run regardless of the modifications done. Correcting a typo in an error message or
refactoring a whole module triggers the same tests. All modules will be installed as well. This means
something might not work even if the Runbot is green, i.e. your changes depend on a module that the
module the changes are in doesn't depend on.
* The localization modules (i.e. country-specific modules) are not installed on Runbot (except
the generic one), some modules with external dependencies can be excluded also.
* There is a nightly build running additional tests, like module operations, localization, single
the generic one). Some modules with external dependencies can also be excluded.
* There is a nightly build running additional tests: module operations, localization, single
module installs, multi-builds for nondeterministic bugs, etc.
These are not kept in the standard CI to shorten the time of execution.
You can also login on a build built by Runbot. There are 3 users usable: `admin`, `demo` and
You can also login to a build built by Runbot. There are 3 users usable: `admin`, `demo` and
`portal`. The password is the same as the login. This is useful to quickly test things on different
versions without having to build it locally. The full logs are also available; these are used for
monitoring.
@ -138,9 +139,9 @@ You will most likely have to gain a little bit more experience before having the
robodoo, but here are a few remarks anyways.
Robodoo is the guy spamming the CI status as tags on your PRs, but he is also the guy that kindly
integrates your commits on the main repositories.
integrates your commits into the main repositories.
When the last batch is green, the reviewer can ask robodoo to merge your PR (actually it is more
When the last batch is green, the reviewer can ask robodoo to merge your PR (it is more
a `rebase` than a `merge`). It will then go to the mergebot.
Mergebot
@ -166,8 +167,8 @@ your branch on the target and rerun the tests locally.
Modules
=======
Because Odoo is modular, the tests need to be modular also. This means the modules are defined in
the module that adds the functionality you add; and that tests cannot depend on functionality
Because Odoo is modular, the tests need to be also modular. This means tests are defined in
the module that adds the functionality you are adding in and tests cannot depend on functionality
coming from modules your module doesn't depend on.
**Reference**: the documentation related to this topic can be found in
@ -175,25 +176,25 @@ coming from modules your module doesn't depend on.
.. code-block:: python
from odoo.tests.common import SavepointCase
from odoo.tests.common import TransactionCase
from odoo.tests import tagged
# The CI will run these tests after all the modules are installed,
# not right after installing the one defining it.
@tagged('post_install', '-at_install') # add `post_install` and remove `at_install`
class PostInstallTestCase(SavepointCase):
class PostInstallTestCase(TransactionCase):
def test_01(self):
...
@tagged('at_install') # this is the default
class AtInstallTestCase(SavepointCase):
class AtInstallTestCase(TransactionCase):
def test_01(self):
...
If the behavior you want to test can be changed by the installation of another module, you need to
ensure that the tag `at_install` is set; otherwise you can use the tag `post_install` to speed up
the CI, and ensure it is not changed if it shouldn't.
the CI and ensure it is not changed if it shouldn't.
Writing a test
==============
@ -233,27 +234,22 @@ import the test folder/module in the ``__init__.py`` of the module.
├── __init__.py
└── __manifest__.py
.. note:: Some older tests are extending ``odoo.tests.common.TransactionCase``, but they are less
scalable. The difference is that the setup is done per test method and not per test class.
The data changed are rollbacked between each test in `SavepointCase` to have the same behavior as
in `TransactionCase`.
All the tests should extend ``odoo.tests.common.SavepointCase``. You usually define a
``setUpClass``, and the tests. After doing the `setUpClass`, you have an `env` available on the
All the tests should extend ``odoo.tests.common.TransactionCase``. You usually define a
``setUpClass`` and the tests. After writing the `setUpClass`, you have an `env` available in the
class and can start interacting with the ORM.
These test classes are built on top of the ``unittest`` python module.
.. code-block:: python
from odoo.tests.common import SavepointCase
from odoo.tests.common import TransactionCase
from odoo.exceptions import UserError
from odoo.tests import tagged
# The CI will run these tests after all the modules are installed,
# not right after installing the one defining it.
@tagged('post_install', '-at_install')
class EstateTestCase(SavepointCase):
class EstateTestCase(TransactionCase):
@classmethod
def setUpClass(cls):
@ -285,12 +281,18 @@ These test classes are built on top of the ``unittest`` python module.
with self.assertRaises(UserError):
self.properties.forbidden_action_on_sold_property()
.. note:: For more readability, split your tests into multiple files depending on the scope of the
tests. You can also have a Common class that most of the tests should inherit from; that common
.. note:: For better readability, split your tests into multiple files depending on the scope of the
tests. You can also have a Common class that most of the tests should inherit from; this common
class can define the whole set up for the module. For instance in
`account <https://github.com/odoo/odoo/blob/14.0/addons/account/tests/common.py>`__.
.. exercise:: Ensure no one can create an offer for a sold Property, and create a test for it.
.. exercise:: Update the code so no one can:
- Create an offer for a sold property
- Sell a property with no accepted offers on it
and create tests for both of these cases. Additionally check that selling a property that can
be sold is correctly marked as sold after selling it.
.. exercise:: Someone keeps breaking the reset of Garden Area and Orientation when you uncheck the

View File

@ -10,8 +10,9 @@ Advanced J: PDF Reports
and have installed :ref:`wkhtmltopdf <howto/rdtraining/02_setup/install-wkhtmltopdf>`.
To follow the exercise, it is recommended that you fetch the branch
14.0-core from the repository XXX, it
contains a version of the module created during the core training we can use
15.0-core from the
`technical training solutions <https://github.com/odoo/technical-training-solutions/tree/15.0-core>`__ repository.
It contains a version of the module created during the core training we can use
as a starting point.
We were previously :ref:`introduced to QWeb <howto/rdtraining/15_qwebintro>`
@ -95,9 +96,9 @@ If you don't have a set of data like this already, you can either:
* Complete :ref:`howto/rdtraining/C_data` (if you haven't done so already) and add the extra
cases to your demo data (you may need to create a new database to load in the demo data).
* Manually create the data in your database.
* Copy this `data file <https://github.com/odoo/technical-training-solutions/blob/14.0-J_reports/estate/data/estate_demo.xml>`__
* Copy this `data file <https://github.com/odoo/technical-training-solutions/blob/15.0-J_reports/estate/data/estate_demo.xml>`__
into a new directory (data) in your estate module and copy
`these lines <https://github.com/odoo/technical-training-solutions/blob/14.0-J_reports/estate/__manifest__.py#L21-L23>`__
`these lines <https://github.com/odoo/technical-training-solutions/blob/15.0-J_reports/estate/__manifest__.py#L21-L23>`__
into your __manifest__.py file (you may need to create a new database to load in the demo data).
Before continuing, click through your data in your database and make sure your data is as expected.

View File

@ -10,8 +10,9 @@ Advanced K: Dashboards
access to Odoo Enterprise features.
To follow the exercise, it is recommended that you fetch the branch
14.0-core from the repository XXX, it
contains a version of the module created during the core training we can use
15.0-core from the
`technical training solutions <https://github.com/odoo/technical-training-solutions/tree/15.0-core>`__ repository.
It contains a version of the module created during the core training we can use
as a starting point.
The term "Dashboard" is used in Odoo for objects that display data, but involves different
@ -118,9 +119,9 @@ If you don't have a set of data like this already, you can either:
* Complete :ref:`howto/rdtraining/C_data` (if you haven't done so already) and add the extra
cases to your demo data (you may need to create a new database to load in the demo data).
* Manually create the data in your database.
* Copy this `data file <https://github.com/odoo/technical-training-solutions/blob/14.0-K_dashboard/estate/data/estate_demo.xml>`__
* Copy this `data file <https://github.com/odoo/technical-training-solutions/blob/15.0-K_dashboard/estate/data/estate_demo.xml>`__
into a new directory called ``data`` in your estate module and copy
`these lines <https://github.com/odoo/technical-training-solutions/blob/14.0-K_dashboard/estate/__manifest__.py#L21-L23>`__
`these lines <https://github.com/odoo/technical-training-solutions/blob/15.0-K_dashboard/estate/__manifest__.py#L21-L23>`__
into your __manifest__.py file (you may need to create a new database to load in the demo data).
Click through your database data and make sure it is what you expect. Of course you can add the
@ -208,7 +209,7 @@ no xml id is provided for a graph or pivot view then the default view will be us
The cohort view will not work in the dashboard without a specific xml id. If you have already
created some of these views then you are welcome to add them to your dashboard! Sample graph and
pivot views are included in the
`solution code <https://github.com/odoo/technical-training-solutions/blob/14.0-K_dashboard/estate/views/estate_property_views.xml#L169-L191>`__
`solution code <https://github.com/odoo/technical-training-solutions/blob/15.0-K_dashboard/estate/views/estate_property_views.xml#L169-L191>`__
that you are welcome to use as well.
.. exercise:: Add subviews.
@ -319,7 +320,7 @@ View
Now that we have our model, we can make its dashboard view. There is no difference to how its made
except that its file is located in the ``report`` folder. Since it is a new model not linked to
any other model, we will also have to add a new menuitem to view our dashboard. Typically SQL views
are added under a first level menu called ``Reporting` (because it's a report, surprise!). Do you
are added under a first level menu called *Reporting* (because it's a report, surprise!). Do you
remember how to add a ``menuitem``? If not, revisit :ref:`howto/rdtraining/06_firstui`) again.
.. exercise:: Create report view.
@ -352,3 +353,17 @@ from this report.
**Tip 2** If you have a field that you do not want as a measure (i.e. in your pivot or
graph views), then you can add ``store=False`` to it and it will not show.
**Tip 3** If you have a SQL View that depends on context then instead of overriding
``BaseModel.init()`` set the ``_table_query`` property::
@property
def _table_query(self):
return 'SELECT %s FROM %s' % (self._select(), self._from())
The *select* and *from* methods remain the same.
`Here is an example <https://github.com/odoo/odoo/blob/14.0/addons/account/report/account_invoice_report.py>`__
of a report that depends on the currently selected companies (in a multi-company environment) context to
determine the currency exchange rates to use for accurately displaying amounts when the selected companies
have different currencies.

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