diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index a1b2445af..5e8a2f8d8 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo saas-16.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 06:38+0000\n" +"POT-Creation-Date: 2023-04-13 08:42+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,71 +33,115 @@ msgid "Install" msgstr "" #: ../../content/administration/install/cdn.rst:3 -msgid "Setting up a Content Delivery Network (CDN)" +msgid "Set up a content delivery network (CDN)" msgstr "" #: ../../content/administration/install/cdn.rst:8 -msgid "Deploying with KeyCDN_" +msgid "Deploying with KeyCDN" msgstr "" -#: ../../content/administration/install/cdn.rst:12 -msgid "This document will guide you through the setup of a KeyCDN_ account with your Odoo powered website." +#: ../../content/administration/install/cdn.rst:10 +msgid "A :abbr:`CDN (Content Delivery Network)` or *content distribution network*, is a geographically distributed network of servers that provides high speed internet content. The :abbr:`CDN (Content Delivery Network)` provides quick, high-quality content delivery for content-heavy websites." msgstr "" -#: ../../content/administration/install/cdn.rst:16 -msgid "Step 1: Create a pull zone in the KeyCDN dashboard" +#: ../../content/administration/install/cdn.rst:14 +msgid "This document will guide you through the setup of a KeyCDN_ account with an Odoo powered website." msgstr "" -#: ../../content/administration/install/cdn.rst:21 -msgid "When creating the zone, enable the CORS option in the :guilabel:`advanced features` submenu. (more on that later)" +#: ../../content/administration/install/cdn.rst:17 +msgid "Create a pull zone in the KeyCDN dashboard" msgstr "" -#: ../../content/administration/install/cdn.rst:27 -msgid "Once done, you'll have to wait a bit while KeyCDN_ is crawling your website." +#: ../../content/administration/install/cdn.rst:19 +msgid "On the KeyCDN dashboard, start by navigating to the :menuselection:`Zones` menu item on the left. On the form, give a value to the :guilabel:`Zone Name`, which will appear as part of the :abbr:`CDN (Content Delivery Network)`'s :abbr:`URL (Uniform Resource Locator)`. Then, set the :guilabel:`Zone Status` to :guilabel:`active` to engage the zone. For the :guilabel:`Zone Type` set the value to :guilabel:`Pull`, and then, finally, under the :guilabel:`Pull Settings`, enter the :guilabel:`Origin URL`— this address should be the full Odoo database :abbr:`URL (Uniform Resource Locator)`." msgstr "" -#: ../../content/administration/install/cdn.rst:32 -msgid "a new URL has been generated for your Zone, in this case it is ``http://pulltest-b49.kxcdn.com``" +#: ../../content/administration/install/cdn.rst:28 +msgid "Use ``https://yourdatabase.odoo.com`` and replace the *yourdatabase* subdomain prefix with the actual name of the database. A custom :abbr:`URL (Uniform Resource Locator)` can be used, as well, in place of the Odoo subdomain that was provided to the database." +msgstr "" + +#: ../../content/administration/install/cdn.rst:-1 +msgid "KeyCDN's Zone configuration page." msgstr "" #: ../../content/administration/install/cdn.rst:36 -msgid "Step 2: Configure the odoo instance with your zone" +msgid "Under the :guilabel:`General Settings` heading below the zone form, click the :guilabel:`Show all settings` button to expand the zone options. This should be the last option on the page. After expanding the :guilabel:`General Settings` ensure that the :guilabel:`CORS` option is :guilabel:`enabled`." msgstr "" -#: ../../content/administration/install/cdn.rst:38 -msgid "In the Odoo back end, go to the :guilabel:`Website Settings`: menu, then activate the CDN support and copy/paste your zone URL in the :guilabel:`CDN Base URL` field. This field is only visible and configurable if you have developer mode activated." +#: ../../content/administration/install/cdn.rst:41 +msgid "Next, scroll to the bottom of the zone configuration page and :guilabel:`Save` the changes. KeyCDN will indicate that the new zone will be deployed. This can take about 10 minutes." msgstr "" -#: ../../content/administration/install/cdn.rst:46 -msgid "Now your website is using the CDN for the resources matching the :guilabel:`CDN filters` regular expressions." +#: ../../content/administration/install/cdn.rst:-1 +msgid "KeyCDN deploying the new Zone." msgstr "" #: ../../content/administration/install/cdn.rst:49 -msgid "You can have a look to the HTML of your website in order to check if the CDN integration is properly working." +msgid "A new :guilabel:`Zone URL` has been generated for your Zone, in this example it is ``pulltest-xxxxx.kxcdn.com``. This value will differ for each database." +msgstr "" + +#: ../../content/administration/install/cdn.rst:52 +msgid "Copy this :guilabel:`Zone URL` to a text editor for later, as it will be used in the next steps." +msgstr "" + +#: ../../content/administration/install/cdn.rst:55 +msgid "Configure the Odoo instance with the new zone" msgstr "" #: ../../content/administration/install/cdn.rst:57 -msgid "Why should I activate CORS?" -msgstr "" - -#: ../../content/administration/install/cdn.rst:59 -msgid "A security restriction in some browsers (Firefox and Chrome at time of writing) prevents a remotely linked CSS file to fetch relative resources on this same external server." +msgid "In the Odoo :guilabel:`Website` app, go to the :menuselection:`Settings` and then activate the :guilabel:`Content Delivery Network (CDN)` setting and copy/paste the :guilabel:`Zone URL` value from the earlier step into the :guilabel:`CDN Base URL` field. This field is only visible and configurable when :doc:`Developer Mode <../../applications/general/developer_mode>` is activated." msgstr "" #: ../../content/administration/install/cdn.rst:63 -msgid "If you don't activate the CORS option in the CDN zone, the more obvious resulting problem on a default Odoo website will be the lack of font-awesome icons because the font file declared in the font-awesome CSS won't be loaded on the remote server." +msgid "Ensure that there are two *forward slashes* (`//`) before the :guilabel:`CDN Base URL` and one forward slash (`/`) after the :guilabel:`CDN Base URL`." msgstr "" -#: ../../content/administration/install/cdn.rst:68 -msgid "Here's what you would see on your homepage in such a case:" +#: ../../content/administration/install/cdn.rst:66 +msgid ":guilabel:`Save` the settings when complete." msgstr "" -#: ../../content/administration/install/cdn.rst:73 -msgid "A security error message will also appear in the browser's console:" +#: ../../content/administration/install/cdn.rst:-1 +msgid "Activate the CDN setting in Odoo." msgstr "" -#: ../../content/administration/install/cdn.rst:78 -msgid "Enabling the CORS option in the CDN fixes this issue." +#: ../../content/administration/install/cdn.rst:72 +msgid "Now the website is using the CDN for the resources matching the :guilabel:`CDN filters` regular expressions." +msgstr "" + +#: ../../content/administration/install/cdn.rst:75 +msgid "In the HTML of the Odoo website, the :abbr:`CDN (content delivery network)` integration is evidenced as working properly by checking the :abbr:`URL (Uniform Resource Locators)` of images. The *CDN Base URL* value can be seen by using your web browser's :guilabel:`Inspect` feature on the Odoo website. Look for it's record by searching within the :guilabel:`Network` tab inside of devtools." +msgstr "" + +#: ../../content/administration/install/cdn.rst:-1 +msgid "The CDN Base URL can be seen using the inspect function on the Odoo website." +msgstr "" + +#: ../../content/administration/install/cdn.rst:85 +msgid "Prevent security issues by activating cross-origin resource sharing (CORS)" +msgstr "" + +#: ../../content/administration/install/cdn.rst:87 +msgid "A security restriction in some browsers (such as Mozilla Firefox and Google Chrome) prevents a remotely linked CSS file to fetch relative resources on this same external server." +msgstr "" + +#: ../../content/administration/install/cdn.rst:90 +msgid "If the :abbr:`CORS (Cross-Origin Resource Sharing)` option isn't enabled in the :guilabel:`CDN Zone`, the more obvious resulting problem on a standard Odoo website will be the lack of *Font Awesome* icons because the font file declared in the *Font Awesome* CSS won't be loaded from the remote server." +msgstr "" + +#: ../../content/administration/install/cdn.rst:95 +msgid "When these cross-origin resource issues occur, a security error message similar to the output below will appear in the web browser's developer console:" +msgstr "" + +#: ../../content/administration/install/cdn.rst:98 +msgid "``Font from origin 'http://pulltest-xxxxx.kxcdn.com' has been blocked from loading /shop:1 by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://yourdatabase.odoo.com' is therefore not allowed access.``" +msgstr "" + +#: ../../content/administration/install/cdn.rst:-1 +msgid "Error message populated in the browser console." +msgstr "" + +#: ../../content/administration/install/cdn.rst:106 +msgid "Enabling the :abbr:`CORS (Cross-Origin Resource Sharing)` option in the :abbr:`CDN (Content Delivery Network)` settings fixes this issue." msgstr "" #: ../../content/administration/install/deploy.rst:3 @@ -477,251 +521,251 @@ msgid "Say Odoo has been installed via the **debian packages** for Community and msgstr "" #: ../../content/administration/install/deploy.rst:420 -#: ../../content/administration/install/deploy.rst:447 +#: ../../content/administration/install/deploy.rst:442 msgid "Using the above NGINX (https) configuration, the following location block should be added to serve static files via NGINX." msgstr "" -#: ../../content/administration/install/deploy.rst:442 -msgid "Say Odoo has been installed via the **source**. The two git repositories for Community and Enterprise have been cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise` respectively and the :option:`--addons-path ` is ``'/opt/odoo/community/odoo/addons,/opt/community/addons,/opt/odoo/enterprise'``." +#: ../../content/administration/install/deploy.rst:437 +msgid "Say Odoo has been installed via the **source**. The two git repositories for Community and Enterprise have been cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise` respectively and the :option:`--addons-path ` is ``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``." msgstr "" -#: ../../content/administration/install/deploy.rst:464 +#: ../../content/administration/install/deploy.rst:459 msgid "The actual NGINX configuration you need is highly dependent on your own installation. The two above snippets only highlight two possible configurations and may not be used as-is." msgstr "" -#: ../../content/administration/install/deploy.rst:468 +#: ../../content/administration/install/deploy.rst:463 msgid "Serving attachments" msgstr "" -#: ../../content/administration/install/deploy.rst:470 +#: ../../content/administration/install/deploy.rst:465 msgid "Attachments are files stored in the filestore which access is regulated by Odoo. They cannot be directly accessed via a static web server as accessing them requires multiple lookups in the database to determine where the files are stored and whether the current user can access them or not." msgstr "" -#: ../../content/administration/install/deploy.rst:475 +#: ../../content/administration/install/deploy.rst:470 msgid "Nevertheless, once the file has been located and the access rights verified by Odoo, it is a good idea to serve the file using the static web server instead of Odoo. For Odoo to delegate serving files to the static web server, the `X-Sendfile `_ (apache) or `X-Accel `_ (nginx) extensions must be enabled and configured on the static web server. Once it is set up, start Odoo with the :option:`--x-sendfile ` CLI flag (this unique flag is used for both X-Sendfile and X-Accel)." msgstr "" -#: ../../content/administration/install/deploy.rst:485 +#: ../../content/administration/install/deploy.rst:480 msgid "The X-Sendfile extension for apache (and compatible web servers) does not require any supplementary configuration." msgstr "" -#: ../../content/administration/install/deploy.rst:487 +#: ../../content/administration/install/deploy.rst:482 msgid "The X-Accel extension for NGINX **does** require the following additionnal configuration:" msgstr "" -#: ../../content/administration/install/deploy.rst:496 +#: ../../content/administration/install/deploy.rst:491 msgid "In case you don't know what is the path to your filestore, start Odoo with the :option:`--x-sendfile ` option and navigate to the ``/web/filestore`` URL directly via Odoo (don't navigate to the URL via NGINX). This logs a warnings, the message contains the configuration you need." msgstr "" -#: ../../content/administration/install/deploy.rst:505 +#: ../../content/administration/install/deploy.rst:500 msgid "Security" msgstr "" -#: ../../content/administration/install/deploy.rst:507 +#: ../../content/administration/install/deploy.rst:502 msgid "For starters, keep in mind that securing an information system is a continuous process, not a one-shot operation. At any moment, you will only be as secure as the weakest link in your environment." msgstr "" -#: ../../content/administration/install/deploy.rst:511 +#: ../../content/administration/install/deploy.rst:506 msgid "So please do not take this section as the ultimate list of measures that will prevent all security problems. It's only intended as a summary of the first important things you should be sure to include in your security action plan. The rest will come from best security practices for your operating system and distribution, best practices in terms of users, passwords, and access control management, etc." msgstr "" -#: ../../content/administration/install/deploy.rst:517 +#: ../../content/administration/install/deploy.rst:512 msgid "When deploying an internet-facing server, please be sure to consider the following security-related topics:" msgstr "" -#: ../../content/administration/install/deploy.rst:520 +#: ../../content/administration/install/deploy.rst:515 msgid "Always set a strong super-admin admin password, and restrict access to the database management pages as soon as the system is set up. See :ref:`db_manager_security`." msgstr "" -#: ../../content/administration/install/deploy.rst:523 +#: ../../content/administration/install/deploy.rst:518 msgid "Choose unique logins and strong passwords for all administrator accounts on all databases. Do not use 'admin' as the login. Do not use those logins for day-to-day operations, only for controlling/managing the installation. *Never* use any default passwords like admin/admin, even for test/staging databases." msgstr "" -#: ../../content/administration/install/deploy.rst:528 +#: ../../content/administration/install/deploy.rst:523 msgid "Do **not** install demo data on internet-facing servers. Databases with demo data contain default logins and passwords that can be used to get into your systems and cause significant trouble, even on staging/dev systems." msgstr "" -#: ../../content/administration/install/deploy.rst:532 +#: ../../content/administration/install/deploy.rst:527 msgid "Use appropriate database filters ( :option:`--db-filter `) to restrict the visibility of your databases according to the hostname. See :ref:`db_filter`. You may also use :option:`-d ` to provide your own (comma-separated) list of available databases to filter from, instead of letting the system fetch them all from the database backend." msgstr "" -#: ../../content/administration/install/deploy.rst:539 +#: ../../content/administration/install/deploy.rst:534 msgid "Once your ``db_name`` and ``db_filter`` are configured and only match a single database per hostname, you should set ``list_db`` configuration option to ``False``, to prevent listing databases entirely, and to block access to the database management screens (this is also exposed as the :option:`--no-database-list ` command-line option)" msgstr "" -#: ../../content/administration/install/deploy.rst:545 +#: ../../content/administration/install/deploy.rst:540 msgid "Make sure the PostgreSQL user (:option:`--db_user `) is *not* a super-user, and that your databases are owned by a different user. For example they could be owned by the ``postgres`` super-user if you are using a dedicated non-privileged ``db_user``. See also :ref:`setup/deploy/odoo`." msgstr "" -#: ../../content/administration/install/deploy.rst:550 +#: ../../content/administration/install/deploy.rst:545 msgid "Keep installations updated by regularly installing the latest builds, either via GitHub or by downloading the latest version from https://www.odoo.com/page/download or http://nightly.odoo.com" msgstr "" -#: ../../content/administration/install/deploy.rst:554 +#: ../../content/administration/install/deploy.rst:549 msgid "Configure your server in multi-process mode with proper limits matching your typical usage (memory/CPU/timeouts). See also :ref:`builtin_server`." msgstr "" -#: ../../content/administration/install/deploy.rst:557 +#: ../../content/administration/install/deploy.rst:552 msgid "Run Odoo behind a web server providing HTTPS termination with a valid SSL certificate, in order to prevent eavesdropping on cleartext communications. SSL certificates are cheap, and many free options exist. Configure the web proxy to limit the size of requests, set appropriate timeouts, and then enable the :option:`proxy mode ` option. See also :ref:`https_proxy`." msgstr "" -#: ../../content/administration/install/deploy.rst:564 +#: ../../content/administration/install/deploy.rst:559 msgid "If you need to allow remote SSH access to your servers, make sure to set a strong password for **all** accounts, not just `root`. It is strongly recommended to entirely disable password-based authentication, and only allow public key authentication. Also consider restricting access via a VPN, allowing only trusted IPs in the firewall, and/or running a brute-force detection system such as `fail2ban` or equivalent." msgstr "" -#: ../../content/administration/install/deploy.rst:570 +#: ../../content/administration/install/deploy.rst:565 msgid "Consider installing appropriate rate-limiting on your proxy or firewall, to prevent brute-force attacks and denial of service attacks. See also :ref:`login_brute_force` for specific measures." msgstr "" -#: ../../content/administration/install/deploy.rst:574 +#: ../../content/administration/install/deploy.rst:569 msgid "Many network providers provide automatic mitigation for Distributed Denial of Service attacks (DDOS), but this is often an optional service, so you should consult with them." msgstr "" -#: ../../content/administration/install/deploy.rst:578 +#: ../../content/administration/install/deploy.rst:573 msgid "Whenever possible, host your public-facing demo/test/staging instances on different machines than the production ones. And apply the same security precautions as for production." msgstr "" -#: ../../content/administration/install/deploy.rst:582 +#: ../../content/administration/install/deploy.rst:577 msgid "If your public-facing Odoo server has access to sensitive internal network resources or services (e.g. via a private VLAN), implement appropriate firewall rules to protect those internal resources. This will ensure that the Odoo server cannot be used accidentally (or as a result of malicious user actions) to access or disrupt those internal resources. Typically this can be done by applying an outbound default DENY rule on the firewall, then only explicitly authorizing access to internal resources that the Odoo server needs to access. `Systemd IP traffic access control `_ may also be useful to implement per-process network access control." msgstr "" -#: ../../content/administration/install/deploy.rst:593 +#: ../../content/administration/install/deploy.rst:588 msgid "If your public-facing Odoo server is behind a Web Application Firewall, a load-balancer, a transparent DDoS protection service (like CloudFlare) or a similar network-level device, you may wish to avoid direct access to the Odoo system. It is generally difficult to keep the endpoint IP addresses of your Odoo servers secret. For example they can appear in web server logs when querying public systems, or in the headers of emails posted from Odoo. In such a situation you may want to configure your firewall so that the endpoints are not accessible publicly except from the specific IP addresses of your WAF, load-balancer or proxy service. Service providers like CloudFlare usually maintain a public list of their IP address ranges for this purpose." msgstr "" -#: ../../content/administration/install/deploy.rst:604 +#: ../../content/administration/install/deploy.rst:599 msgid "If you are hosting multiple customers, isolate customer data and files from each other using containers or appropriate \"jail\" techniques." msgstr "" -#: ../../content/administration/install/deploy.rst:607 +#: ../../content/administration/install/deploy.rst:602 msgid "Setup daily backups of your databases and filestore data, and copy them to a remote archiving server that is not accessible from the server itself." msgstr "" -#: ../../content/administration/install/deploy.rst:614 +#: ../../content/administration/install/deploy.rst:609 msgid "Blocking Brute Force Attacks" msgstr "" -#: ../../content/administration/install/deploy.rst:616 +#: ../../content/administration/install/deploy.rst:611 msgid "For internet-facing deployments, brute force attacks on user passwords are very common, and this threat should not be neglected for Odoo servers. Odoo emits a log entry whenever a login attempt is performed, and reports the result: success or failure, along with the target login and source IP." msgstr "" -#: ../../content/administration/install/deploy.rst:620 +#: ../../content/administration/install/deploy.rst:615 msgid "The log entries will have the following form." msgstr "" -#: ../../content/administration/install/deploy.rst:622 +#: ../../content/administration/install/deploy.rst:617 msgid "Failed login::" msgstr "" -#: ../../content/administration/install/deploy.rst:626 +#: ../../content/administration/install/deploy.rst:621 msgid "Successful login::" msgstr "" -#: ../../content/administration/install/deploy.rst:631 +#: ../../content/administration/install/deploy.rst:626 msgid "These logs can be easily analyzed by an intrusion prevention system such as `fail2ban`." msgstr "" -#: ../../content/administration/install/deploy.rst:633 +#: ../../content/administration/install/deploy.rst:628 msgid "For example, the following fail2ban filter definition should match a failed login::" msgstr "" -#: ../../content/administration/install/deploy.rst:640 +#: ../../content/administration/install/deploy.rst:635 msgid "This could be used with a jail definition to block the attacking IP on HTTP(S)." msgstr "" -#: ../../content/administration/install/deploy.rst:642 +#: ../../content/administration/install/deploy.rst:637 msgid "Here is what it could look like for blocking the IP for 15 minutes when 10 failed login attempts are detected from the same IP within 1 minute::" msgstr "" -#: ../../content/administration/install/deploy.rst:656 +#: ../../content/administration/install/deploy.rst:651 msgid "Database Manager Security" msgstr "" -#: ../../content/administration/install/deploy.rst:658 +#: ../../content/administration/install/deploy.rst:653 msgid ":ref:`setup/deploy/odoo` mentioned ``admin_passwd`` in passing." msgstr "" -#: ../../content/administration/install/deploy.rst:660 +#: ../../content/administration/install/deploy.rst:655 msgid "This setting is used on all database management screens (to create, delete, dump or restore databases)." msgstr "" -#: ../../content/administration/install/deploy.rst:663 +#: ../../content/administration/install/deploy.rst:658 msgid "If the management screens must not be accessible at all, you should set ``list_db`` configuration option to ``False``, to block access to all the database selection and management screens." msgstr "" -#: ../../content/administration/install/deploy.rst:669 +#: ../../content/administration/install/deploy.rst:664 msgid "It is strongly recommended to disable the Database Manager for any internet-facing system! It is meant as a development/demo tool, to make it easy to quickly create and manage databases. It is not designed for use in production, and may even expose dangerous features to attackers. It is also not designed to handle large databases, and may trigger memory limits." msgstr "" -#: ../../content/administration/install/deploy.rst:675 +#: ../../content/administration/install/deploy.rst:670 msgid "On production systems, database management operations should always be performed by the system administrator, including provisioning of new databases and automated backups." msgstr "" -#: ../../content/administration/install/deploy.rst:678 +#: ../../content/administration/install/deploy.rst:673 msgid "Be sure to setup an appropriate ``db_name`` parameter (and optionally, ``db_filter`` too) so that the system can determine the target database for each request, otherwise users will be blocked as they won't be allowed to choose the database themselves." msgstr "" -#: ../../content/administration/install/deploy.rst:683 +#: ../../content/administration/install/deploy.rst:678 msgid "If the management screens must only be accessible from a selected set of machines, use the proxy server's features to block access to all routes starting with ``/web/database`` except (maybe) ``/web/database/selector`` which displays the database-selection screen." msgstr "" -#: ../../content/administration/install/deploy.rst:687 +#: ../../content/administration/install/deploy.rst:682 msgid "If the database-management screen should be left accessible, the ``admin_passwd`` setting must be changed from its ``admin`` default: this password is checked before allowing database-alteration operations." msgstr "" -#: ../../content/administration/install/deploy.rst:691 +#: ../../content/administration/install/deploy.rst:686 msgid "It should be stored securely, and should be generated randomly e.g." msgstr "" -#: ../../content/administration/install/deploy.rst:697 +#: ../../content/administration/install/deploy.rst:692 msgid "which will generate a 32 characters pseudorandom printable string." msgstr "" -#: ../../content/administration/install/deploy.rst:700 +#: ../../content/administration/install/deploy.rst:695 msgid "Supported Browsers" msgstr "" -#: ../../content/administration/install/deploy.rst:702 +#: ../../content/administration/install/deploy.rst:697 msgid "Odoo supports all the major desktop and mobile browsers available on the market, as long as they are supported by their publishers." msgstr "" -#: ../../content/administration/install/deploy.rst:705 +#: ../../content/administration/install/deploy.rst:700 msgid "Here are the supported browsers:" msgstr "" -#: ../../content/administration/install/deploy.rst:707 +#: ../../content/administration/install/deploy.rst:702 msgid "Google Chrome" msgstr "" -#: ../../content/administration/install/deploy.rst:708 +#: ../../content/administration/install/deploy.rst:703 msgid "Mozilla Firefox" msgstr "" -#: ../../content/administration/install/deploy.rst:709 +#: ../../content/administration/install/deploy.rst:704 msgid "Microsoft Edge" msgstr "" -#: ../../content/administration/install/deploy.rst:710 +#: ../../content/administration/install/deploy.rst:705 msgid "Apple Safari" msgstr "" -#: ../../content/administration/install/deploy.rst:712 +#: ../../content/administration/install/deploy.rst:707 msgid "Please make sure your browser is up-to-date and still supported by its publisher before filing a bug report." msgstr "" -#: ../../content/administration/install/deploy.rst:717 +#: ../../content/administration/install/deploy.rst:712 msgid "Since Odoo 13.0, ES6 is supported. Therefore, IE support is dropped." msgstr "" -#: ../../content/administration/install/deploy.rst:720 +#: ../../content/administration/install/deploy.rst:715 msgid "to have multiple Odoo installations use the same PostgreSQL database, or to provide more computing resources to both software." msgstr "" -#: ../../content/administration/install/deploy.rst:723 +#: ../../content/administration/install/deploy.rst:718 msgid "technically a tool like socat_ can be used to proxy UNIX sockets across networks, but that is mostly for software which can only be used over UNIX sockets" msgstr "" -#: ../../content/administration/install/deploy.rst:727 +#: ../../content/administration/install/deploy.rst:722 msgid "or be accessible only over an internal packet-switched network, but that requires secured switches, protections against `ARP spoofing`_ and precludes usage of WiFi. Even over secure packet-switched networks, deployment over HTTPS is recommended, and possible costs are lowered as \"self-signed\" certificates are easier to deploy on a controlled environment than over the internet." msgstr "" @@ -1429,230 +1473,238 @@ msgid "`Microsoft Learn: Register an application with the Microsoft identity pla msgstr "" #: ../../content/administration/maintain/azure_oauth.rst:15 +msgid ":doc:`/applications/general/auth/azure`" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:16 +msgid ":doc:`/applications/productivity/calendar/outlook`" +msgstr "" + +#: ../../content/administration/maintain/azure_oauth.rst:19 msgid "Setup in Microsoft Azure Portal" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:18 +#: ../../content/administration/maintain/azure_oauth.rst:22 msgid "Create a new application" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:20 +#: ../../content/administration/maintain/azure_oauth.rst:24 msgid "To get started, go to `Microsoft's Azure Portal `_. Log in with the :guilabel:`Microsoft Outlook Office 365` account if there is one, otherwise log in with the personal :guilabel:`Microsoft account`. A user with administrative access to the Azure Settings will need to connect and perform the following configuration. Next, navigate to the section labeled :guilabel:`Manage Azure Active Directory`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:26 +#: ../../content/administration/maintain/azure_oauth.rst:30 msgid "Now, click on :guilabel:`Add (+)`, located in the top menu, and then select :guilabel:`App registration`. On the :guilabel:`Register an application` screen, rename the :guilabel:`Name` to `Odoo` or something recognizable. Under the :guilabel:`Supported account types` section select :guilabel:`Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:32 +#: ../../content/administration/maintain/azure_oauth.rst:36 msgid "Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input `https:///microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL is the canonical domain at which your Odoo instance can be reached in the URL field." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:37 +#: ../../content/administration/maintain/azure_oauth.rst:41 msgid "*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain, assuming it's hosted on Odoo.com" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:40 +#: ../../content/administration/maintain/azure_oauth.rst:44 msgid "After the URL has been added to the field, :guilabel:`Register` the application so it is created." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:43 +#: ../../content/administration/maintain/azure_oauth.rst:47 msgid "API permissions" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:45 +#: ../../content/administration/maintain/azure_oauth.rst:49 msgid "The :guilabel:`API permissions` should be set next. Odoo will need specific API permissions to be able to read (IMAP) and send (IMAP) emails in the Microsoft 365 setup. First, click the :guilabel:`API permissions` link, located in the left menu bar. Next, click on the :guilabel:`(+) Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:51 +#: ../../content/administration/maintain/azure_oauth.rst:55 msgid "In the search bar, search for the following :guilabel:`Deregulated permissions` and click :guilabel:`Add permissions` for each one:" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:54 +#: ../../content/administration/maintain/azure_oauth.rst:58 msgid ":guilabel:`SMTP.Send`" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:55 +#: ../../content/administration/maintain/azure_oauth.rst:59 msgid ":guilabel:`IMAP.AccessAsUser.All`" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:58 +#: ../../content/administration/maintain/azure_oauth.rst:62 msgid "The :guilabel:`User.Read` permission will be added by default." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "API permissions needed for Odoo integration are listed under the Microsoft Graph." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:65 +#: ../../content/administration/maintain/azure_oauth.rst:69 msgid "Assign users and groups" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:67 +#: ../../content/administration/maintain/azure_oauth.rst:71 msgid "After adding the API permissions, navigate back to the :guilabel:`Overview` of the :guilabel:`Application` in the top of the left sidebar menu." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:70 +#: ../../content/administration/maintain/azure_oauth.rst:74 msgid "Now, add users to this application. Under the :guilabel:`Essentials` overview table, click on the link labeled :guilabel:`Managed Application in Local Directory`, or the last option on the bottom right-hand side of the table." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Add users/groups by clicking the Managed application in local directory link for the\n" "created application." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:79 +#: ../../content/administration/maintain/azure_oauth.rst:83 msgid "In the left sidebar menu, select :guilabel:`Users and Groups`. Next, click on :guilabel:`(+) Add User/Group`. Depending on the account, either a :guilabel:`Group` and a :guilabel:`User` can be added, or only :guilabel:`Users`. Personal accounts will only allow for :guilabel:`Users` to be added." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:84 +#: ../../content/administration/maintain/azure_oauth.rst:88 msgid "Under :guilabel:`Users` or :guilabel:`Groups`, click on :guilabel:`None Selected` and add the users or group of users that will be sending emails from the :guilabel:`Microsoft account` in Odoo. :guilabel:`Add` the users/groups, click :guilabel:`Select`, and then :guilabel:`Assign` them to the application." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:90 +#: ../../content/administration/maintain/azure_oauth.rst:94 msgid "Create credentials" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:92 +#: ../../content/administration/maintain/azure_oauth.rst:96 msgid "Now that the Microsoft Azure app is set up, credentials need to be created for the Odoo setup. These include the :guilabel:`Client ID` and :guilabel:`Client Secret`. To start, the :guilabel:`Client ID` can be copied from the :guilabel:`Overview` page of the app. The :guilabel:`Client ID` or :guilabel:`Application ID` is located under the :guilabel:`Display Name` in the :guilabel:`Essentials` overview of the app." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Application/Client ID located in the Overview of the app." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:102 +#: ../../content/administration/maintain/azure_oauth.rst:106 msgid "Next, the :guilabel:`Client Secret Value` needs to be retrieved. To get this value, click on :guilabel:`Certificates & Secrets` in the left sidebar menu. Then, a :guilabel:`Client Secret` needs to be produced. In order to do this, click on the :guilabel:`(+) New Client Secret` button." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:106 +#: ../../content/administration/maintain/azure_oauth.rst:110 msgid "A window on the right will populate with a button labeled :guilabel:`Add a client secret`. Under :guilabel:`Description`, type in `Odoo Fetchmail` or something recognizable, and then set the :guilabel:`expiration date`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:111 +#: ../../content/administration/maintain/azure_oauth.rst:115 msgid "A new :guilabel:`Client Secret` will need to be produced and configured if the first one expires. In this event, there could be an interruption of service, so the expiration date should be noted and set to the furthest possible date." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:115 +#: ../../content/administration/maintain/azure_oauth.rst:119 msgid "Next, click on :guilabel:`Add` when these two values are entered. A :guilabel:`Client Secret Value` and :guilabel:`Secret ID` will be created. It is important to copy the :guilabel:`Value` or :guilabel:`Client Secret Value` into a notepad as it will become encrypted after leaving this page. The :guilabel:`Secret ID` is not needed." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Client Secret Value or Value in the app's credentials." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:124 +#: ../../content/administration/maintain/azure_oauth.rst:128 msgid "After these steps, the following items should be ready to be set up in Odoo:" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:126 +#: ../../content/administration/maintain/azure_oauth.rst:130 msgid "A client ID (:guilabel:`Client ID` or :guilabel:`Application ID`)" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:127 +#: ../../content/administration/maintain/azure_oauth.rst:131 msgid "A client secret (:guilabel:`Value` or :guilabel:`Client Secret Value`)" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:129 +#: ../../content/administration/maintain/azure_oauth.rst:133 msgid "This completes the setup on the :guilabel:`Microsoft Azure Portal` side." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:132 -#: ../../content/administration/maintain/google_oauth.rst:84 +#: ../../content/administration/maintain/azure_oauth.rst:136 +#: ../../content/administration/maintain/google_oauth.rst:88 msgid "Setup in Odoo" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:135 +#: ../../content/administration/maintain/azure_oauth.rst:139 msgid "Enter Microsoft Outlook credentials" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:137 +#: ../../content/administration/maintain/azure_oauth.rst:141 msgid "First, open the Odoo database and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps` filter from the search bar and type in `Outlook`. After that, install the module called :guilabel:`Microsoft Outlook`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:141 +#: ../../content/administration/maintain/azure_oauth.rst:145 msgid "Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss` section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a new option for :guilabel:`Outlook Credentials`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:145 +#: ../../content/administration/maintain/azure_oauth.rst:149 msgid ":guilabel:`Save` the progress." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:147 +#: ../../content/administration/maintain/azure_oauth.rst:151 msgid "Then, copy and paste the :guilabel:`Client ID` (Application ID) and :guilabel:`Client Secret (Client Secret Value)` into the respective fields and :guilabel:`Save` the settings." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Outlook Credentials in Odoo General Settings." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:155 -#: ../../content/administration/maintain/google_oauth.rst:98 +#: ../../content/administration/maintain/azure_oauth.rst:159 +#: ../../content/administration/maintain/google_oauth.rst:102 msgid "Configure outgoing email server" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:157 +#: ../../content/administration/maintain/azure_oauth.rst:161 msgid "On the :guilabel:`General Settings` page, under the :guilabel:`Custom Email Servers` setting, click the :guilabel:`Outgoing Email Servers` link to configure the Microsoft account." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:160 +#: ../../content/administration/maintain/azure_oauth.rst:164 msgid "Then, create a new email server and check the box for :guilabel:`Outlook`. Next, fill in the :guilabel:`Name` (it can be anything) and the Microsoft Outlook email :guilabel:`Username`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:163 -msgid "If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address `." +#: ../../content/administration/maintain/azure_oauth.rst:167 +msgid "If the :guilabel:`From Filter` field is empty, enter either a :ref:`domain or email address `." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:166 -msgid "Then, cick on :guilabel:`Connect your Outlook account`." +#: ../../content/administration/maintain/azure_oauth.rst:170 +msgid "Then, click on :guilabel:`Connect your Outlook account`." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:168 +#: ../../content/administration/maintain/azure_oauth.rst:172 msgid "A new window from Microsoft opens to complete the :guilabel:`authorization process`. Select the appropriate email address that is being configured in Odoo." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Permission page to grant access between newly created app and Odoo." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:175 +#: ../../content/administration/maintain/azure_oauth.rst:179 msgid "Then, allow Odoo to access the Microsoft account by clicking on :guilabel:`Yes`. After this, the page will navigate back to the newly configured :guilabel:`Outgoing Mail Server` in Odoo. The configuration automatically loads the :guilabel:`token` in Odoo, and a tag stating :guilabel:`Outlook Token Valid` appears in green." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:None +#: ../../content/administration/maintain/azure_oauth.rst:-1 msgid "Valid Outlook Token indicator." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:184 +#: ../../content/administration/maintain/azure_oauth.rst:188 msgid "Finally, click :guilabel:`Test Connection`. A confirmation message should appear. The Odoo database can now send safe, secure emails through Microsoft Outlook using OAuth authentication." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:188 +#: ../../content/administration/maintain/azure_oauth.rst:192 msgid "Multiple user configuration" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:190 +#: ../../content/administration/maintain/azure_oauth.rst:194 msgid "Each user should have a separate server set up. The :guilabel:`from-filter` should be set so that only the user's email is sent from that server. In other words, only a user with an email address that matches the set :guilabel:`from-filter` is able to use this server." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:194 +#: ../../content/administration/maintain/azure_oauth.rst:198 msgid "After setting the :guilabel:`from-filter`, set up a fallback email account to allow for the sending of :guilabel:`notifications`. The fallback email must be configured as a :guilabel:`general transactional server`. The :guilabel:`mail.default.from` system parameter must be set to the :guilabel:`username` of the general transactional server account. For more information see :ref:`Use a default email address `." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:201 +#: ../../content/administration/maintain/azure_oauth.rst:205 #: ../../content/administration/maintain/mailjet_api.rst:213 msgid "The :guilabel:`System Parameters` can be accessed by activating :doc:`../../applications/general/developer_mode` in the :menuselection:`Settings --> Technical --> Parameters --> System Parameters` menu." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:206 +#: ../../content/administration/maintain/azure_oauth.rst:210 msgid "Configure incoming email server" msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:208 +#: ../../content/administration/maintain/azure_oauth.rst:212 msgid "The incoming account should be configured in a similar way to the outgoing email account. Navigate to the :guilabel:`Incoming Mail Servers` in the :guilabel:`Technical Menu` and :guilabel:`Create` a new configuration. Check or Select the button next to :guilabel:`Outlook Oauth Authentication` and enter the :guilabel:`Microsoft Outlook username`. Click on :guilabel:`Connect your Outlook account`. Odoo will state: :guilabel:`Outlook Token Valid` Now :guilabel:`Test and Confirm` the account. The account should be ready to receive email to the Odoo database." msgstr "" -#: ../../content/administration/maintain/azure_oauth.rst:216 +#: ../../content/administration/maintain/azure_oauth.rst:220 msgid ":doc:`../../applications/general/email_communication/email_servers`" msgstr "" @@ -1729,7 +1781,7 @@ msgid "Some search engines provide tools for web admins, such as `Google Search msgstr "" #: ../../content/administration/maintain/domain_names.rst:74 -msgid ":doc:`/applications/websites/website/optimize/seo`" +msgid ":doc:`/applications/websites/website/pages/seo`" msgstr "" #: ../../content/administration/maintain/domain_names.rst:75 @@ -1772,7 +1824,7 @@ msgstr "" msgid "To do so, go to :menuselection:`Website --> Domain Name`. Alternatively, open your `database manager `_, click on the :guilabel:`settings` button next to your database, then on :guilabel:`Domain names`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:None +#: ../../content/administration/maintain/domain_names.rst:-1 msgid "Clicking on Domain Names from an Odoo website" msgstr "" @@ -1780,7 +1832,7 @@ msgstr "" msgid "Search for the domain name of your choice to check its availability, then select the one you want to register for your website." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:None +#: ../../content/administration/maintain/domain_names.rst:-1 msgid "The search of the domain name example.com shows which associated domains are available." msgstr "" @@ -1808,7 +1860,7 @@ msgstr "" msgid "To manage the DNS records of your domain name registered with Odoo or to visualize the contacts associated with it, open your `database manager `_, click on the :guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on :guilabel:`Contacts` or :guilabel:`DNS`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:None +#: ../../content/administration/maintain/domain_names.rst:-1 msgid "Management of the domain names linked to an Odoo database" msgstr "" @@ -2085,7 +2137,7 @@ msgstr "" msgid "In the :guilabel:`Domain` field, fill in the web address of your website (e.g., ``https://www.example.com``) and click on :guilabel:`Save`." msgstr "" -#: ../../content/administration/maintain/domain_names.rst:None +#: ../../content/administration/maintain/domain_names.rst:-1 msgid "Configuring https://www.example.com as the Domain of the website" msgstr "" @@ -2214,207 +2266,214 @@ msgid "For more information, visit `Google's documentation `_. Log in with your *Google Workspace* account if you have one, otherwise log in with your personal Gmail account (this should match the email address you want to configure in Odoo)." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:25 +#: ../../content/administration/maintain/google_oauth.rst:29 msgid "After that, click on :guilabel:`Create Project`, located on the far right of the OAuth consent screen. If a project has already been created in this account, then the :guilabel:`New Project` option will be located on the top left under the :guilabel:`Select a project` drop-down menu." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:29 +#: ../../content/administration/maintain/google_oauth.rst:33 msgid "On the :guilabel:`New Project` screen, rename the :guilabel:`Project name` to `Odoo` and browse for the :guilabel:`Location`. Set the :guilabel:`Location` as the `Google Workspace` organization. If you are using a personal Gmail account, then leave the :guilabel:`Location` as `No Organization`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "Project Name and Location for Google Oauth." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:37 +#: ../../content/administration/maintain/google_oauth.rst:41 msgid "Click on :guilabel:`Create` to finish this step. On the next screen, :guilabel:`User Type` options, select the :guilabel:`External` option, and then click on :guilabel:`Create` again, which will finally navigate to the :guilabel:`Edit app registration` page." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:42 +#: ../../content/administration/maintain/google_oauth.rst:46 msgid "Edit app registration" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:44 +#: ../../content/administration/maintain/google_oauth.rst:48 msgid "On the :guilabel:`Oauth consent screen` step, under the :guilabel:`App information` section, enter `Odoo` in the :guilabel:`App name` field. Select the organization's email address under the :guilabel:`User support` email field." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:47 +#: ../../content/administration/maintain/google_oauth.rst:51 msgid "Next, under :menuselection:`App Domain --> Authorized domains`, click on :guilabel:`Add Domain` and enter `odoo.com`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:49 +#: ../../content/administration/maintain/google_oauth.rst:53 msgid "After that, under the :guilabel:`Developer contact information` section, enter the organization's email address. Google uses this email address to notify the organization about any changes to your project." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:52 +#: ../../content/administration/maintain/google_oauth.rst:56 msgid "Next, click on the :guilabel:`Save and Continue` button." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:53 +#: ../../content/administration/maintain/google_oauth.rst:57 msgid "Then, skip the :guilabel:`Scopes` page by scrolling to the bottom and clicking on :guilabel:`Save and Continue`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:55 +#: ../../content/administration/maintain/google_oauth.rst:59 msgid "Next, add the email being configured under the :guilabel:`Test users` step by clicking on :guilabel:`Add Users` and then the :guilabel:`Save and Continue` button. A summary of the :guilabel:`App registration` appears." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:58 +#: ../../content/administration/maintain/google_oauth.rst:62 msgid "Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:61 +#: ../../content/administration/maintain/google_oauth.rst:65 msgid "Create Credentials" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:63 +#: ../../content/administration/maintain/google_oauth.rst:67 msgid "Now that you have set up the project, you need to create credentials, which includes the :guilabel:`Client ID` and :guilabel:`Client Secret`. First, click on :guilabel:`Credentials` in the left sidebar menu." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:67 +#: ../../content/administration/maintain/google_oauth.rst:71 msgid "Then, click on :guilabel:`Create Credentials` in the top menu and select :guilabel:`OAuth client ID` from the dropdown menu." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:70 +#: ../../content/administration/maintain/google_oauth.rst:74 msgid "Under :guilabel:`Application Type`, select :guilabel:`Web Application` from the dropdown menu." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:71 +#: ../../content/administration/maintain/google_oauth.rst:75 msgid "In the :guilabel:`Client ID` field, enter `Odoo`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:72 +#: ../../content/administration/maintain/google_oauth.rst:76 msgid "Under the :guilabel:`Authorized redirect URIs` label, click the button :guilabel:`ADD URI`, and then input `https://yourdbname.odoo.com/google_gmail/confirm` in the :guilabel:`URIs 1` field. Be sure to replace the *yourdbname* part of the URL with your actual Odoo database name." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:75 +#: ../../content/administration/maintain/google_oauth.rst:79 msgid "Next, click on :guilabel:`Create` to generate an OAuth :guilabel:`Client ID` and :guilabel:`Client Secret`. Finally, copy each generated value for later use when configuring in Odoo, and then navigate to the Odoo database." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "Client ID and Client Secret for Google OAuth." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:87 +#: ../../content/administration/maintain/google_oauth.rst:91 msgid "Enter Google Credentials" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:89 +#: ../../content/administration/maintain/google_oauth.rst:93 msgid "First, open Odoo and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps` filter from the search bar and type in `Google`. Install the module called :guilabel:`Google Gmail`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:92 +#: ../../content/administration/maintain/google_oauth.rst:96 msgid "Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss` section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and :guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:100 +#: ../../content/administration/maintain/google_oauth.rst:104 msgid "After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click :guilabel:`Outgoing Email Servers` to configure the external Gmail account." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "Configure Outgoing Email Servers in Odoo." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:107 +#: ../../content/administration/maintain/google_oauth.rst:111 msgid "Then, :guilabel:`Create` a new email server and select the option for :guilabel:`Gmail`. Next, fill in the :guilabel:`Description` (can be anything) and the email :guilabel:`Username` and click on :guilabel:`Connect your Gmail account`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:111 +#: ../../content/administration/maintain/google_oauth.rst:115 msgid "A new window from :guilabel:`Google` opens to complete the authorization process. Select the appropriate email address that is being configured in Odoo." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:114 +#: ../../content/administration/maintain/google_oauth.rst:118 msgid "If the email address is a personal account, an extra step pops up, click :guilabel:`Continue` to allow the verification and connect the Gmail account to Odoo." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:117 +#: ../../content/administration/maintain/google_oauth.rst:121 msgid "Then, allow Odoo to access the Google account by clicking on :guilabel:`Continue` or :guilabel:`Allow`. After that, the page navigates back to the newly configured outgoing email server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating :guilabel:`Gmail Token Valid` appears in green." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:126 +#: ../../content/administration/maintain/google_oauth.rst:130 msgid "Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should appear. The Odoo database can now send safe, secure emails through Google using OAuth authentication." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:131 +#: ../../content/administration/maintain/google_oauth.rst:135 msgid "Google OAuth FAQ" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:134 +#: ../../content/administration/maintain/google_oauth.rst:138 msgid "Production VS Testing Publishing Status" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:136 +#: ../../content/administration/maintain/google_oauth.rst:140 msgid "Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of Testing) will display the following warning message:" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "OAuth is Limited to 100 Sensitive Scope Logins." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:143 +#: ../../content/administration/maintain/google_oauth.rst:147 msgid "To correct this warning, navigate to the `Google API Platform `_. If the :guilabel:`Publishing status` is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:148 +#: ../../content/administration/maintain/google_oauth.rst:152 msgid "No Test Users Added" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:150 +#: ../../content/administration/maintain/google_oauth.rst:154 msgid "If no test users are added to the OAuth consent screen, then a 403 access denied error will populate." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "403 Access Denied Error." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:157 +#: ../../content/administration/maintain/google_oauth.rst:161 msgid "To correct this error, return to the :guilabel:`OAuth consent screen` under :guilabel:`APIs & Services` and add test user(s) to the app. Add the email that you are configuring in Odoo." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:162 +#: ../../content/administration/maintain/google_oauth.rst:166 msgid "Gmail Module not updated" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:164 +#: ../../content/administration/maintain/google_oauth.rst:168 msgid "If the :guilabel:`Gmail Module` in Odoo has not been updated to the latest version, then a :guilabel:`Forbidden` error message populates." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "Forbidden you don't have the permission to access the requested resource." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:171 +#: ../../content/administration/maintain/google_oauth.rst:175 msgid "To correct this error, go to the :guilabel:`Apps` module and clear out the search terms. Then, search for `Gmail` or `Google` and upgrade the :guilabel:`Google Gmail` module. Finally, click on the three dots on the upper right of the module and select :guilabel:`Upgrade`." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:176 +#: ../../content/administration/maintain/google_oauth.rst:180 msgid "Application Type" msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:178 +#: ../../content/administration/maintain/google_oauth.rst:182 msgid "When creating the :guilabel:`Credentials` (OAuth Client ID and Client Secret), if :guilabel:`Desktop App` is selected for the :guilabel:`Application Type`, an :guilabel:`Authorization Error` appears." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:None +#: ../../content/administration/maintain/google_oauth.rst:-1 msgid "Error 400 Redirect URI Mismatch." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:186 +#: ../../content/administration/maintain/google_oauth.rst:190 msgid "To correct this error, delete the credentials already created and create new credentials, selecting :guilabel:`Web Application` for the :guilabel:`Application Type`. Then, under :guilabel:`Authorized redirect URIs`, click :guilabel:`ADD URI` and type: `https://yourdbname.odoo.com/google_gmail/confirm` in the field." msgstr "" -#: ../../content/administration/maintain/google_oauth.rst:192 +#: ../../content/administration/maintain/google_oauth.rst:196 msgid "Replace *yourdbname* in the URL with the Odoo database name." msgstr "" @@ -2612,7 +2671,7 @@ msgstr "" msgid "To get started, sign in to the `Mailjet Account Information `_ page. Next, navigate to the :guilabel:`Senders & Domains` section and click on :guilabel:`SMTP and SEND API Settings`." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "SMTP and Send API Settings link in the Senders & Domains section of Mailjet." msgstr "" @@ -2628,7 +2687,7 @@ msgstr "" msgid "Odoo blocks `port 25` on Odoo Online and Odoo.sh databases. :ref:`See reference here `." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "SMTP configuration from Mailjet." msgstr "" @@ -2648,7 +2707,7 @@ msgstr "" msgid "The next step is to add a sender address or a domain to the Mailjet account settings so that the email address or domain is approved to send emails using Mailjet's servers. First, navigate to the `Mailjet Account Information `_ page. Next, click on the :guilabel:`Add a Sender Domain or Address` link under the :guilabel:`Senders & Domains` section." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "Add a sender domain or address in the Mailjet interface." msgstr "" @@ -2721,7 +2780,7 @@ msgstr "" msgid "After adding the domain, a validation page will populate. Unless the Odoo database is on-premise (in which case, choose :guilabel:`Option 1`), choose :guilabel:`Option 2: Create a DNS Record`. Copy the TXT record information to a notepad and then navigate to the domain's :abbr:`DNS (Domain Name System)` provider to complete validation." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "The TXT record information to input on the domain's DNS." msgstr "" @@ -2749,7 +2808,7 @@ msgstr "" msgid "Next, click :guilabel:`Check Now` to validate the TXT record that was added on the domain. A success screen will appear if the domain is configured correctly." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "Check DNS record in Mailjet." msgstr "" @@ -2757,7 +2816,7 @@ msgstr "" msgid "After successfully setting up the domain, there is an option to :guilabel:`Authenticate this domain (SPF/DKIM)`. This button populates :abbr:`SPF (Sender Policy Framework)` & :abbr:`DKIM (DomainKeys Identified Mail) records to input into the :abbr:`DNS (Domain Name System)` provider." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "Authenticate the domain with SPF/DKIM records in Mailjet." msgstr "" @@ -2781,7 +2840,7 @@ msgstr "" msgid "Then, if the Mailjet server is used for mass emailing, set the :guilabel:`Priority` value higher than that of any transactional email server(s). Finally, save the settings and :guilabel:`Test the Connection`." msgstr "" -#: ../../content/administration/maintain/mailjet_api.rst:None +#: ../../content/administration/maintain/mailjet_api.rst:-1 msgid "Odoo outgoing email server settings." msgstr "" @@ -2790,7 +2849,7 @@ msgid "In order for the notifications feature to work using Mailjet, there are t msgstr "" #: ../../content/administration/maintain/mailjet_api.rst:201 -msgid "The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended to set it as a domain and not a full email address. It should match the domain in the two proceeding steps. More information can be referenced :ref:`here `." +msgid "The :guilabel:`From Filter` needs to be set on the server configuration. It is recommended to set it as a domain and not a full email address. It should match the domain in the two proceeding steps. More information can be referenced :ref:`here `." msgstr "" #: ../../content/administration/maintain/mailjet_api.rst:205 @@ -2814,224 +2873,224 @@ msgid "Odoo Online database management" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:5 -msgid "To manage a database, sign in to https://www.odoo.com and access the `database management page `_ by clicking on the user icon, then on *My Databases*." +msgid "To manage a database, sign in to https://www.odoo.com and access the `database management page `_ by clicking on the user icon, then on :guilabel:`My Databases`." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:None +#: ../../content/administration/maintain/odoo_online.rst:-1 msgid "Clicking on the user icon opens a drop-down menu. \"My databases\" button is highlighted." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:13 -msgid "Make sure you are connected as the administrator of the database you want to manage." +#: ../../content/administration/maintain/odoo_online.rst:14 +msgid "Make sure to connect as the administrator of the database that changes will be made on." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:None +#: ../../content/administration/maintain/odoo_online.rst:-1 msgid "Clicking on the gear icon opens the drop-down menu." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:19 -msgid "Open the drop-down menu next to the database you want to manage by clicking on the gear icon." -msgstr "" - -#: ../../content/administration/maintain/odoo_online.rst:21 -msgid "Several actions are available:" +#: ../../content/administration/maintain/odoo_online.rst:20 +msgid "Open the drop-down menu next to the database that changes will be made on by clicking on the gear icon." msgstr "" #: ../../content/administration/maintain/odoo_online.rst:23 -msgid ":ref:`odoo_online/upgrade`" -msgstr "" - -#: ../../content/administration/maintain/odoo_online.rst:24 -msgid ":ref:`odoo_online/duplicate`" +msgid "Several actions are available:" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:25 -msgid ":ref:`odoo_online/rename`" +msgid ":ref:`odoo_online/upgrade`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:26 -msgid ":ref:`odoo_online/download`" +msgid ":ref:`odoo_online/duplicate`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:27 -msgid ":ref:`odoo_online/domains`" +msgid ":ref:`odoo_online/rename`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:28 -msgid ":ref:`odoo_online/tags`" +msgid ":ref:`odoo_online/download`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:29 -msgid ":ref:`odoo_online/delete`" +msgid ":ref:`odoo_online/domains`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:30 -msgid ":ref:`odoo_online/contact-support`" +msgid ":ref:`odoo_online/tags`" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:31 +msgid ":ref:`odoo_online/delete`" +msgstr "" + +#: ../../content/administration/maintain/odoo_online.rst:32 +msgid ":ref:`odoo_online/contact-support`" +msgstr "" + +#: ../../content/administration/maintain/odoo_online.rst:33 msgid ":ref:`odoo_online/users`" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:36 +#: ../../content/administration/maintain/odoo_online.rst:38 #: ../../content/administration/odoo_sh/getting_started/branches.rst:293 #: ../../content/administration/upgrade.rst:10 msgid "Upgrade" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:38 -msgid "If you are *not* on the latest **Online version**, you should receive an invitation to :doc:`upgrade <../upgrade>` your database. A **Rolling Release button** on your database's main screen proposes an upgrade to the latest version (e.g., 13.0 to 15.1)." +#: ../../content/administration/maintain/odoo_online.rst:40 +msgid "If the database is *not* on the latest **Online version**, the administrator should receive an invitation to :doc:`upgrade <../upgrade>` the database. A :guilabel:`Rolling Release`` button on the database's main screen proposes an upgrade to the latest version (e.g., 14.0 to 16.1)." msgstr "" #: ../../content/administration/maintain/odoo_online.rst:0 -msgid "**If your Odoo database's version is lower than the latest major release:**" +msgid "**If the Odoo database's version is lower than the latest major release:**" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:0 -msgid "You must upgrade your database within two months. After these two months, an automatic upgrade is initiated." +msgid "The database must be upgraded within two months. After these two months, an automatic upgrade is initiated." msgstr "" #: ../../content/administration/maintain/odoo_online.rst:0 -msgid "**If your Odoo database's version is equal to or higher than the latest major release:**" +msgid "**If the Odoo database's version is equal to or higher than the latest major release:**" msgstr "" #: ../../content/administration/maintain/odoo_online.rst:0 -msgid "You can disregard the invitation to upgrade as you probably wouldn't benefit from new features every two months." +msgid "Disregard the invitation to upgrade as the database probably wouldn't benefit from new features every two months." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:51 -msgid "Versions that are not supported anymore become deprecated and need to be updated to avoid security issues. We recommend you initiate the upgrade of the database yourself, as this method allows you to request a test upgrade of your database to check for any discrepancies." +#: ../../content/administration/maintain/odoo_online.rst:53 +msgid "Versions that are not supported anymore become deprecated and need to be updated to avoid security issues. Odoo recommends that the company initiate the upgrade, as this method allows for the company to request a test upgrade of the database to check for any discrepancies." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:56 +#: ../../content/administration/maintain/odoo_online.rst:58 msgid ":doc:`../upgrade`" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:57 +#: ../../content/administration/maintain/odoo_online.rst:59 msgid ":doc:`supported_versions`" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:62 +#: ../../content/administration/maintain/odoo_online.rst:64 msgid "Duplicate" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:64 -msgid "Make an exact copy of the database to be able to perform testing without compromising the daily operations." -msgstr "" - -#: ../../content/administration/maintain/odoo_online.rst:68 -msgid "By checking *For testing purposes*, all external communication (emails, payments, delivery orders, etc.) are disabled by default on the duplicated database." +#: ../../content/administration/maintain/odoo_online.rst:66 +msgid "This allows to make an exact copy of the database to be able to perform testing without compromising the daily operations." msgstr "" #: ../../content/administration/maintain/odoo_online.rst:70 +msgid "By checking :guilabel:`For testing purposes`, all external communication (emails, payments, delivery orders, etc.) are disabled by default on the duplicated database." +msgstr "" + +#: ../../content/administration/maintain/odoo_online.rst:72 msgid "Duplicate databases expire automatically after 15 days." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:75 +#: ../../content/administration/maintain/odoo_online.rst:77 msgid "Rename" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:77 +#: ../../content/administration/maintain/odoo_online.rst:79 msgid "Rename the database and its URL." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:82 +#: ../../content/administration/maintain/odoo_online.rst:84 msgid "Download" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:84 -msgid "Download instantly a ZIP file with a backup of the database." +#: ../../content/administration/maintain/odoo_online.rst:86 +msgid "Instantly download a ZIP file with a backup of the database." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:87 +#: ../../content/administration/maintain/odoo_online.rst:89 msgid "Databases are backed up daily according to the `Odoo Cloud SLA `_." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:93 +#: ../../content/administration/maintain/odoo_online.rst:95 msgid "Domains" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:95 +#: ../../content/administration/maintain/odoo_online.rst:97 msgid "Configure custom domains to access the database via another URL." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:98 +#: ../../content/administration/maintain/odoo_online.rst:100 msgid ":doc:`domain_names`" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:103 +#: ../../content/administration/maintain/odoo_online.rst:105 msgid "Tags" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:105 +#: ../../content/administration/maintain/odoo_online.rst:107 msgid "Add tags to sort your databases out. You can search the tags in the search bar." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:110 +#: ../../content/administration/maintain/odoo_online.rst:112 #: ../../content/administration/odoo_sh/getting_started/branches.rst:550 msgid "Delete" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:112 +#: ../../content/administration/maintain/odoo_online.rst:114 msgid "Delete a database instantly." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:115 +#: ../../content/administration/maintain/odoo_online.rst:117 msgid "Deleting a database means that all data is permanently lost. The deletion is instant and for all users. It is recommended to create a backup of the database before deleting it." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:118 -msgid "Read carefully the warning message that pops up and proceed only if you fully understand the implications of deleting a database:" +#: ../../content/administration/maintain/odoo_online.rst:120 +msgid "Carefully read the warning message that pops up and proceed only if the implications of deleting a database are fully understood:" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:None +#: ../../content/administration/maintain/odoo_online.rst:-1 msgid "A warning message is prompted before deleting a database." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:126 +#: ../../content/administration/maintain/odoo_online.rst:128 msgid "Only an administrator can delete a database." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:127 +#: ../../content/administration/maintain/odoo_online.rst:129 msgid "The database name is immediately available for a new database." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:128 +#: ../../content/administration/maintain/odoo_online.rst:130 msgid "It is not possible to delete a database if it is expired or linked to a subscription. If needed, please get in touch with `Odoo Support `_." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:130 -msgid "To delete your account, please get in touch with `Odoo Support `_." -msgstr "" - -#: ../../content/administration/maintain/odoo_online.rst:135 +#: ../../content/administration/maintain/odoo_online.rst:136 msgid "Contact Support" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:137 +#: ../../content/administration/maintain/odoo_online.rst:138 msgid "Access the Odoo `support page `_ with your database's details already pre-filled." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:143 +#: ../../content/administration/maintain/odoo_online.rst:144 msgid "Invite / Remove Users" msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:145 -msgid "To invite users, fill out the email address of the new user and click on *Invite*. To add multiple users, click on *Add more users*." +#: ../../content/administration/maintain/odoo_online.rst:146 +msgid "To invite users, fill out the email address of the new user and click on :guilabel:`Invite`. To add multiple users, click on :guilabel:`Add more users`." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:None +#: ../../content/administration/maintain/odoo_online.rst:-1 msgid "Clicking on \"Add more users\" adds additional email fields." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:152 -msgid "To remove users, select the users to remove and click on *Remove*." +#: ../../content/administration/maintain/odoo_online.rst:153 +msgid "To remove users, select the users to remove and click on :guilabel:`Remove`." msgstr "" -#: ../../content/administration/maintain/odoo_online.rst:155 +#: ../../content/administration/maintain/odoo_online.rst:156 msgid ":doc:`/applications/general/users/manage_users`" msgstr "" +#: ../../content/administration/maintain/odoo_online.rst:157 +msgid ":doc:`/applications/general/users/delete_account`" +msgstr "" + #: ../../content/administration/maintain/on_premise.rst:3 msgid "On-premise database management" msgstr "" @@ -3052,7 +3111,7 @@ msgstr "" msgid "If you are unable to register your database, you will likely encounter this message:" msgstr "" -#: ../../content/administration/maintain/on_premise.rst:None +#: ../../content/administration/maintain/on_premise.rst:-1 msgid "Something went wrong while registering your database, you can try again or contact Odoo\n" "Help" msgstr "" @@ -3136,7 +3195,7 @@ msgstr "" msgid "If you have more users in your local database than provisionned in your Odoo Enterprise subscription, you may encounter this message:" msgstr "" -#: ../../content/administration/maintain/on_premise.rst:None +#: ../../content/administration/maintain/on_premise.rst:-1 msgid "This database will expire in X days, you have more users than your subscription allows" msgstr "" @@ -3164,7 +3223,7 @@ msgstr "" msgid "If your database reaches its expiration date before your renew your subscription, you will encounter this message:" msgstr "" -#: ../../content/administration/maintain/on_premise.rst:None +#: ../../content/administration/maintain/on_premise.rst:-1 msgid "This database has expired." msgstr "" @@ -3255,256 +3314,260 @@ msgid "End of support" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:29 -msgid "**Odoo 16.0**" +msgid "Odoo saas~16.2" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:29 -#: ../../content/administration/maintain/supported_versions.rst:29 #: ../../content/administration/maintain/supported_versions.rst:29 #: ../../content/administration/maintain/supported_versions.rst:31 -#: ../../content/administration/maintain/supported_versions.rst:35 -#: ../../content/administration/maintain/supported_versions.rst:35 -#: ../../content/administration/maintain/supported_versions.rst:35 -#: ../../content/administration/maintain/supported_versions.rst:37 -#: ../../content/administration/maintain/supported_versions.rst:37 -#: ../../content/administration/maintain/supported_versions.rst:37 +#: ../../content/administration/maintain/supported_versions.rst:33 +#: ../../content/administration/maintain/supported_versions.rst:39 +#: ../../content/administration/maintain/supported_versions.rst:41 msgid "|green|" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:29 -#: ../../content/administration/maintain/supported_versions.rst:39 -msgid "October 2022" -msgstr "" - -#: ../../content/administration/maintain/supported_versions.rst:29 -msgid "October 2025 (planned)" -msgstr "" - #: ../../content/administration/maintain/supported_versions.rst:31 -msgid "Odoo saas~15.2" -msgstr "" - -#: ../../content/administration/maintain/supported_versions.rst:31 -#: ../../content/administration/maintain/supported_versions.rst:31 -#: ../../content/administration/maintain/supported_versions.rst:33 -#: ../../content/administration/maintain/supported_versions.rst:33 -#: ../../content/administration/maintain/supported_versions.rst:41 -#: ../../content/administration/maintain/supported_versions.rst:41 -#: ../../content/administration/maintain/supported_versions.rst:45 +#: ../../content/administration/maintain/supported_versions.rst:35 +#: ../../content/administration/maintain/supported_versions.rst:37 #: ../../content/administration/maintain/supported_versions.rst:45 #: ../../content/administration/maintain/supported_versions.rst:49 -#: ../../content/administration/maintain/supported_versions.rst:49 -#: ../../content/administration/maintain/supported_versions.rst:51 -#: ../../content/administration/maintain/supported_versions.rst:51 +#: ../../content/administration/maintain/supported_versions.rst:53 #: ../../content/administration/maintain/supported_versions.rst:55 -#: ../../content/administration/maintain/supported_versions.rst:55 -#: ../../content/administration/maintain/supported_versions.rst:57 -#: ../../content/administration/maintain/supported_versions.rst:59 #: ../../content/administration/maintain/supported_versions.rst:59 #: ../../content/administration/maintain/supported_versions.rst:61 +#: ../../content/administration/maintain/supported_versions.rst:63 +#: ../../content/administration/maintain/supported_versions.rst:65 msgid "N/A" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:31 -msgid "March 2022" +#: ../../content/administration/maintain/supported_versions.rst:29 +msgid "March 2023" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:29 +msgid "June 2023 (planned)" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:31 -msgid "January 2023" +msgid "Odoo saas~16.1" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:31 +msgid "February 2023" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:31 +msgid "April 2023" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:33 -msgid "Odoo saas~15.1" +msgid "**Odoo 16.0**" msgstr "" #: ../../content/administration/maintain/supported_versions.rst:33 -#: ../../content/administration/maintain/supported_versions.rst:39 -#: ../../content/administration/maintain/supported_versions.rst:39 -#: ../../content/administration/maintain/supported_versions.rst:39 -#: ../../content/administration/maintain/supported_versions.rst:41 -#: ../../content/administration/maintain/supported_versions.rst:43 #: ../../content/administration/maintain/supported_versions.rst:43 +msgid "October 2022" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:33 +msgid "October 2025 (planned)" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:35 +msgid "Odoo saas~15.2" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:35 +#: ../../content/administration/maintain/supported_versions.rst:37 #: ../../content/administration/maintain/supported_versions.rst:43 #: ../../content/administration/maintain/supported_versions.rst:45 #: ../../content/administration/maintain/supported_versions.rst:47 -#: ../../content/administration/maintain/supported_versions.rst:47 -#: ../../content/administration/maintain/supported_versions.rst:47 #: ../../content/administration/maintain/supported_versions.rst:49 #: ../../content/administration/maintain/supported_versions.rst:51 #: ../../content/administration/maintain/supported_versions.rst:53 -#: ../../content/administration/maintain/supported_versions.rst:53 -#: ../../content/administration/maintain/supported_versions.rst:53 #: ../../content/administration/maintain/supported_versions.rst:55 #: ../../content/administration/maintain/supported_versions.rst:57 -#: ../../content/administration/maintain/supported_versions.rst:57 #: ../../content/administration/maintain/supported_versions.rst:59 #: ../../content/administration/maintain/supported_versions.rst:61 -#: ../../content/administration/maintain/supported_versions.rst:61 +#: ../../content/administration/maintain/supported_versions.rst:63 +#: ../../content/administration/maintain/supported_versions.rst:65 msgid "|red|" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:33 +#: ../../content/administration/maintain/supported_versions.rst:35 +msgid "March 2022" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:35 +msgid "January 2023" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:37 +msgid "Odoo saas~15.1" +msgstr "" + +#: ../../content/administration/maintain/supported_versions.rst:37 msgid "February 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:33 +#: ../../content/administration/maintain/supported_versions.rst:37 msgid "July 2022" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:35 +#: ../../content/administration/maintain/supported_versions.rst:39 msgid "**Odoo 15.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:35 -#: ../../content/administration/maintain/supported_versions.rst:43 +#: ../../content/administration/maintain/supported_versions.rst:39 +#: ../../content/administration/maintain/supported_versions.rst:47 msgid "October 2021" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:35 +#: ../../content/administration/maintain/supported_versions.rst:39 msgid "October 2024 (planned)" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:37 +#: ../../content/administration/maintain/supported_versions.rst:41 msgid "**Odoo 14.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:37 -#: ../../content/administration/maintain/supported_versions.rst:47 +#: ../../content/administration/maintain/supported_versions.rst:41 +#: ../../content/administration/maintain/supported_versions.rst:51 msgid "October 2020" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:37 +#: ../../content/administration/maintain/supported_versions.rst:41 msgid "October 2023 (planned)" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:39 +#: ../../content/administration/maintain/supported_versions.rst:43 msgid "**Odoo 13.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:39 -#: ../../content/administration/maintain/supported_versions.rst:53 +#: ../../content/administration/maintain/supported_versions.rst:43 +#: ../../content/administration/maintain/supported_versions.rst:57 msgid "October 2019" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:41 +#: ../../content/administration/maintain/supported_versions.rst:45 msgid "Odoo saas~12.3" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:41 +#: ../../content/administration/maintain/supported_versions.rst:45 msgid "August 2019" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:43 +#: ../../content/administration/maintain/supported_versions.rst:47 msgid "**Odoo 12.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:43 -#: ../../content/administration/maintain/supported_versions.rst:57 +#: ../../content/administration/maintain/supported_versions.rst:47 +#: ../../content/administration/maintain/supported_versions.rst:61 msgid "October 2018" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:45 +#: ../../content/administration/maintain/supported_versions.rst:49 msgid "Odoo saas~11.3" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:45 +#: ../../content/administration/maintain/supported_versions.rst:49 msgid "April 2018" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:47 +#: ../../content/administration/maintain/supported_versions.rst:51 msgid "**Odoo 11.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:47 -#: ../../content/administration/maintain/supported_versions.rst:61 +#: ../../content/administration/maintain/supported_versions.rst:51 +#: ../../content/administration/maintain/supported_versions.rst:65 msgid "October 2017" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:49 +#: ../../content/administration/maintain/supported_versions.rst:53 msgid "Odoo 10.saas~15" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:49 +#: ../../content/administration/maintain/supported_versions.rst:53 msgid "March 2017" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:51 +#: ../../content/administration/maintain/supported_versions.rst:55 msgid "Odoo 10.saas~14" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:51 +#: ../../content/administration/maintain/supported_versions.rst:55 msgid "January 2017" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:53 +#: ../../content/administration/maintain/supported_versions.rst:57 msgid "**Odoo 10.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:53 +#: ../../content/administration/maintain/supported_versions.rst:57 msgid "October 2016" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:55 +#: ../../content/administration/maintain/supported_versions.rst:59 msgid "Odoo 9.saas~11" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:55 +#: ../../content/administration/maintain/supported_versions.rst:59 msgid "May 2016" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:57 +#: ../../content/administration/maintain/supported_versions.rst:61 msgid "**Odoo 9.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:57 +#: ../../content/administration/maintain/supported_versions.rst:61 msgid "October 2015" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:59 +#: ../../content/administration/maintain/supported_versions.rst:63 msgid "Odoo 8.saas~6" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:59 +#: ../../content/administration/maintain/supported_versions.rst:63 msgid "February 2015" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:61 +#: ../../content/administration/maintain/supported_versions.rst:65 msgid "**Odoo 8.0**" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:61 +#: ../../content/administration/maintain/supported_versions.rst:65 msgid "September 2014" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:66 +#: ../../content/administration/maintain/supported_versions.rst:70 msgid "|green| Supported version" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:68 +#: ../../content/administration/maintain/supported_versions.rst:72 msgid "|red| End-of-support" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:70 +#: ../../content/administration/maintain/supported_versions.rst:74 msgid "N/A Never released for this platform" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:72 +#: ../../content/administration/maintain/supported_versions.rst:76 msgid "🏁 Future version, not released yet" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:83 +#: ../../content/administration/maintain/supported_versions.rst:87 msgid "I run an older version of Odoo/OpenERP/TinyERP" msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:85 +#: ../../content/administration/maintain/supported_versions.rst:89 msgid "OpenERP 7.0, 6.1, 6.0 and 5.0 is not supported anymore, on any platform." msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:87 +#: ../../content/administration/maintain/supported_versions.rst:91 msgid "TinyERP 4.0, 3.0, 2.0 and 1.0 is not supported anymore, on any platform." msgstr "" -#: ../../content/administration/maintain/supported_versions.rst:89 +#: ../../content/administration/maintain/supported_versions.rst:93 msgid "Even though we don't support older versions, you can always `upgrade from any version `_." msgstr "" @@ -3849,7 +3912,7 @@ msgstr "" msgid "Finally, *via* the Odoo Shell, you can trigger the piece of code/function/method you want to debug." msgstr "" -#: ../../content/administration/odoo_sh/advanced/containers.rst:None +#: ../../content/administration/odoo_sh/advanced/containers.rst:-1 msgid "Console screenshot showing ``pdb`` running in an Odoo.sh shell." msgstr "" @@ -5088,12 +5151,10 @@ msgstr "" msgid "|pic1| |pic2|" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:40 #: ../../content/administration/odoo_sh/getting_started/first_module.rst:40 msgid "pic1" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:43 #: ../../content/administration/odoo_sh/getting_started/first_module.rst:43 msgid "pic2" msgstr "" @@ -5730,18 +5791,11 @@ msgid "Admin" msgstr "" #: ../../content/administration/odoo_sh/getting_started/settings.rst:51 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:51 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:53 #: ../../content/administration/odoo_sh/getting_started/settings.rst:53 #: ../../content/administration/odoo_sh/getting_started/settings.rst:55 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:55 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:57 #: ../../content/administration/odoo_sh/getting_started/settings.rst:57 #: ../../content/administration/odoo_sh/getting_started/settings.rst:59 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:59 #: ../../content/administration/odoo_sh/getting_started/settings.rst:61 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:61 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:63 #: ../../content/administration/odoo_sh/getting_started/settings.rst:63 #: ../../content/administration/odoo_sh/getting_started/settings.rst:65 #: ../../content/administration/odoo_sh/getting_started/settings.rst:67 @@ -5750,8 +5804,6 @@ msgstr "" #: ../../content/administration/odoo_sh/getting_started/settings.rst:73 #: ../../content/administration/odoo_sh/getting_started/settings.rst:75 #: ../../content/administration/odoo_sh/getting_started/settings.rst:77 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:77 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:79 #: ../../content/administration/odoo_sh/getting_started/settings.rst:79 #: ../../content/administration/odoo_sh/getting_started/settings.rst:81 msgid "X" @@ -6081,7 +6133,7 @@ msgstr "" msgid "Follow the instructions available per hosting type on the `website form `_ and select *Testing* purpose." msgstr "" -#: ../../content/administration/upgrade.rst:None +#: ../../content/administration/upgrade.rst:-1 msgid "Selection of the \"Testing\" purpose in the upgrade form on Odoo" msgstr "" @@ -6580,7 +6632,7 @@ msgstr "" msgid "The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid projects with a valid production build." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:None +#: ../../content/administration/upgrade/odoo_sh.rst:-1 msgid "Click on the upgrade menu" msgstr "" @@ -6636,7 +6688,7 @@ msgstr "" msgid "Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on :guilabel:`Test Upgrade`." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:None +#: ../../content/administration/upgrade/odoo_sh.rst:-1 msgid "Odoo.sh project and tabs" msgstr "" @@ -6685,7 +6737,7 @@ msgstr "" msgid "On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the :guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:None +#: ../../content/administration/upgrade/odoo_sh.rst:-1 msgid "View from the upgrade tab" msgstr "" @@ -6697,7 +6749,7 @@ msgstr "" msgid "You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main branch." msgstr "" -#: ../../content/administration/upgrade/odoo_sh.rst:None +#: ../../content/administration/upgrade/odoo_sh.rst:-1 msgid "View showing the progress of the upgrade" msgstr "" diff --git a/locale/sources/contributing.pot b/locale/sources/contributing.pot index 16f32383f..dc5081355 100644 --- a/locale/sources/contributing.pot +++ b/locale/sources/contributing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo saas-16.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 06:38+0000\n" +"POT-Creation-Date: 2023-04-13 08:42+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -153,28 +153,21 @@ msgstr "" msgid "It is mainly Odoo employees who develop new features for the codebase and write new content for the documentation. Be sure to discuss any idea for a new feature or page with the Odoo team so they can give you the green light before you begin working on it. Some features may already be in development on their side, and only approved features can be merged." msgstr "" -#: ../../content/contributing/check_mergeability_status.rst:1 -#: ../../content/contributing/check_mergeability_status.rst:1 -#: ../../content/contributing/check_mergeability_status.rst:1 -#: ../../content/contributing/check_mergeability_status.rst:1 #: ../../content/contributing/check_mergeability_status.rst:1 #: ../../content/contributing/check_mergeability_status.rst:1 msgid "At the bottom of the page, check the mergeability status and address any issues." msgstr "" -#: ../../content/contributing/configure_git_authorship.rst:1 #: ../../content/contributing/configure_git_authorship.rst:1 #: ../../content/contributing/configure_git_authorship.rst:1 msgid "Configure Git to identify yourself as the author of your future contributions. Enter the same email address you used to register on GitHub." msgstr "" -#: ../../content/contributing/configure_github_account.rst:1 #: ../../content/contributing/configure_github_account.rst:1 #: ../../content/contributing/configure_github_account.rst:1 msgid "`Generate a new SSH key and register it on your GitHub account `_." msgstr "" -#: ../../content/contributing/create_github_account.rst:1 #: ../../content/contributing/create_github_account.rst:1 #: ../../content/contributing/create_github_account.rst:1 msgid "First, you need to `create a GitHub account `_. Odoo uses GitHub to manage the source code of its products, and this is where you will make your changes and submit them for review." @@ -210,43 +203,37 @@ msgstr "" msgid "Go to `github.com/odoo/odoo `_ and click on the :guilabel:`Fork` button in the top right corner to create a fork (:dfn:`your own copy`) of the repository on your account. Do the same with `github.com/odoo/enterprise `_ if you have access to it. This creates a copy of the codebase to which you can make changes without affecting the main codebase. Skip this step if you work at Odoo." msgstr "" -#: ../../content/contributing/install_git.rst:1 #: ../../content/contributing/install_git.rst:1 #: ../../content/contributing/install_git.rst:1 msgid "`Install Git `_. It is a command-line (:dfn:`a text interface`) tool that allows tracking the history of changes made to a file and, more importantly, working on different versions of that file simultaneously. It means you do not need to worry about overwriting someone else’s pending work when making changes." msgstr "" -#: ../../content/contributing/install_git.rst:6 #: ../../content/contributing/install_git.rst:6 #: ../../content/contributing/install_git.rst:6 msgid "Verify that the installation directory of Git is included in your system's `PATH` variable." msgstr "" -#: ../../content/contributing/install_git.rst:10 -#: ../../content/contributing/install_git.rst:10 #: ../../content/contributing/documentation.rst:97 #: ../../content/contributing/documentation.rst:124 #: ../../content/contributing/documentation.rst:140 #: ../../content/contributing/install_git.rst:10 +#: ../../content/contributing/install_git.rst:10 msgid "Linux and macOS" msgstr "" -#: ../../content/contributing/install_git.rst:12 #: ../../content/contributing/install_git.rst:12 #: ../../content/contributing/install_git.rst:12 msgid "Follow the `guide to update the PATH variable on Linux and macOS `_ with the installation path of Git (by default :file:`/usr/bin/git`)." msgstr "" -#: ../../content/contributing/install_git.rst:16 -#: ../../content/contributing/install_git.rst:16 #: ../../content/contributing/documentation.rst:104 #: ../../content/contributing/documentation.rst:130 #: ../../content/contributing/documentation.rst:146 #: ../../content/contributing/install_git.rst:16 +#: ../../content/contributing/install_git.rst:16 msgid "Windows" msgstr "" -#: ../../content/contributing/install_git.rst:18 #: ../../content/contributing/install_git.rst:18 #: ../../content/contributing/install_git.rst:18 msgid "Follow the `guide to update the PATH variable on Windows `_ with the installation path of Git (by default :file:`C:\\\\Program Files\\\\Git`)." @@ -381,10 +368,6 @@ msgstr "" msgid "Complete the description and click on the :guilabel:`Create pull request` button again." msgstr "" -#: ../../content/contributing/handle_reviews.rst:1 -#: ../../content/contributing/handle_reviews.rst:1 -#: ../../content/contributing/handle_reviews.rst:1 -#: ../../content/contributing/handle_reviews.rst:1 #: ../../content/contributing/handle_reviews.rst:1 #: ../../content/contributing/handle_reviews.rst:1 msgid "As soon as your :abbr:`PR (Pull Request)` is ready for merging, a member of the Odoo team will be automatically assigned for review. If the reviewer has questions or remarks, they will post them as comments and you will be notified by email. Those comments must be resolved for the contribution to go forward." @@ -487,857 +470,857 @@ msgid "Record rules are defined in :file:`_security.xml`." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:87 -msgid "Concerning *views*, backend views should be split like models and suffixed by ``_views.xml``. Backend views are list, form, kanban, activity, graph, pivot, .. views. To ease split by model in views main menus not linked to specific actions may be extracted into an optional ``_menus.xml`` file. Templates (QWeb pages used notably for portal / website display) and bundles (import of JS and CSS assets) are put in separate files. Those are respectively ``_templates.xml`` and ``assets.xml`` files." +msgid "Concerning *views*, backend views should be split like models and suffixed by ``_views.xml``. Backend views are list, form, kanban, activity, graph, pivot, .. views. To ease split by model in views main menus not linked to specific actions may be extracted into an optional ``_menus.xml`` file. Templates (QWeb pages used notably for portal / website display) are put in separate files named ``_templates.xml``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:107 +#: ../../content/contributing/development/coding_guidelines.rst:105 msgid "Concerning *data*, split them by purpose (demo or data) and main model. Filenames will be the main_model name suffixed by ``_demo.xml`` or ``_data.xml``. For instance for an application having demo and data for its main model as well as subtypes, activities and mail templates all related to mail module:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:120 +#: ../../content/contributing/development/coding_guidelines.rst:118 msgid "Concerning *controllers*, generally all controllers belong to a single controller contained in a file named ``.py``. An old convention in Odoo is to name this file ``main.py`` but it is considered as outdated. If you need to inherit an existing controller from another module do it in ``.py``. For example adding portal controller in an application is done in ``portal.py``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:134 +#: ../../content/contributing/development/coding_guidelines.rst:132 msgid "Concerning *static files*, Javascript files follow globally the same logic as python models. Each component should be in its own file with a meaningful name. For instance, the activity widgets are located in ``activity.js`` of mail module. Subdirectories can also be created to structure the 'package' (see web module for more details). The same logic should be applied for the templates of JS widgets (static XML files) and for their styles (scss files). Don't link data (image, libraries) outside Odoo: do not use an URL to an image but copy it in the codebase instead." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:143 +#: ../../content/contributing/development/coding_guidelines.rst:141 msgid "Concerning *wizards*, naming convention is the same of for python models: ``.py`` and ``_views.xml``. Both are put in the wizard directory. This naming comes from old odoo applications using the wizard keyword for transient models." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:155 +#: ../../content/contributing/development/coding_guidelines.rst:153 msgid "Concerning *statistics reports* done with python / SQL views and classic views naming is the following :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:165 +#: ../../content/contributing/development/coding_guidelines.rst:163 msgid "Concerning *printable reports* which contain mainly data preparation and Qweb templates naming is the following :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:175 +#: ../../content/contributing/development/coding_guidelines.rst:173 msgid "The complete tree of our Odoo module therefore looks like" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:234 +#: ../../content/contributing/development/coding_guidelines.rst:231 msgid "File names should only contain ``[a-z0-9_]`` (lowercase alphanumerics and ``_``)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:237 +#: ../../content/contributing/development/coding_guidelines.rst:234 msgid "Use correct file permissions : folder 755 and file 644." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:242 +#: ../../content/contributing/development/coding_guidelines.rst:239 msgid "XML files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:245 +#: ../../content/contributing/development/coding_guidelines.rst:242 msgid "Format" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:247 +#: ../../content/contributing/development/coding_guidelines.rst:244 msgid "To declare a record in XML, the **record** notation (using **) is recommended:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:249 +#: ../../content/contributing/development/coding_guidelines.rst:246 msgid "Place ``id`` attribute before ``model``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:250 +#: ../../content/contributing/development/coding_guidelines.rst:247 msgid "For field declaration, ``name`` attribute is first. Then place the *value* either in the ``field`` tag, either in the ``eval`` attribute, and finally other attributes (widget, options, ...) ordered by importance." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:255 +#: ../../content/contributing/development/coding_guidelines.rst:252 msgid "Try to group the record by model. In case of dependencies between action/menu/views, this convention may not be applicable." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:257 +#: ../../content/contributing/development/coding_guidelines.rst:254 msgid "Use naming convention defined at the next point" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:258 +#: ../../content/contributing/development/coding_guidelines.rst:255 msgid "The tag ** is only used to set not-updatable data with ``noupdate=1``. If there is only not-updatable data in the file, the ``noupdate=1`` can be set on the ```` tag and do not set a ```` tag." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:276 +#: ../../content/contributing/development/coding_guidelines.rst:273 msgid "Odoo supports custom tags acting as syntactic sugar:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:278 +#: ../../content/contributing/development/coding_guidelines.rst:275 msgid "menuitem: use it as a shortcut to declare a ``ir.ui.menu``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:279 +#: ../../content/contributing/development/coding_guidelines.rst:276 msgid "template: use it to declare a QWeb View requiring only the ``arch`` section of the view." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:281 +#: ../../content/contributing/development/coding_guidelines.rst:278 msgid "These tags are preferred over the *record* notation." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:285 +#: ../../content/contributing/development/coding_guidelines.rst:282 msgid "XML IDs and naming" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:288 +#: ../../content/contributing/development/coding_guidelines.rst:285 msgid "Security, View and Action" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:290 +#: ../../content/contributing/development/coding_guidelines.rst:287 msgid "Use the following pattern :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:292 +#: ../../content/contributing/development/coding_guidelines.rst:289 msgid "For a menu: :samp:`{}_menu`, or :samp:`{}_menu_{do_stuff}` for submenus." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:293 +#: ../../content/contributing/development/coding_guidelines.rst:290 msgid "For a view: :samp:`{}_view_{}`, where *view_type* is ``kanban``, ``form``, ``tree``, ``search``, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:295 +#: ../../content/contributing/development/coding_guidelines.rst:292 msgid "For an action: the main action respects :samp:`{}_action`. Others are suffixed with :samp:`_{}`, where *detail* is a lowercase string briefly explaining the action. This is used only if multiple actions are declared for the model." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:299 +#: ../../content/contributing/development/coding_guidelines.rst:296 msgid "For window actions: suffix the action name by the specific view information like :samp:`{}_action_view_{}`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:301 +#: ../../content/contributing/development/coding_guidelines.rst:298 msgid "For a group: :samp:`{}_group_{}` where *group_name* is the name of the group, generally 'user', 'manager', ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:303 +#: ../../content/contributing/development/coding_guidelines.rst:300 msgid "For a rule: :samp:`{}_rule_{}` where *concerned_group* is the short name of the concerned group ('user' for the 'model_name_group_user', 'public' for public user, 'company' for multi-company rules, ...)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:308 +#: ../../content/contributing/development/coding_guidelines.rst:305 msgid "Name should be identical to xml id with dots replacing underscores. Actions should have a real naming as it is used as display name." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:362 +#: ../../content/contributing/development/coding_guidelines.rst:359 msgid "Inheriting XML" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:364 +#: ../../content/contributing/development/coding_guidelines.rst:361 msgid "Xml Ids of inheriting views should use the same ID as the original record. It helps finding all inheritance at a glance. As final Xml Ids are prefixed by the module that creates them there is no overlap." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:368 +#: ../../content/contributing/development/coding_guidelines.rst:365 msgid "Naming should contain an ``.inherit.{details}`` suffix to ease understanding the override purpose when looking at its name." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:379 +#: ../../content/contributing/development/coding_guidelines.rst:376 msgid "New primary views do not require the inherit suffix as those are new records based upon the first one." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:394 +#: ../../content/contributing/development/coding_guidelines.rst:391 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:879 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:881 #: ../../content/contributing/documentation/rst_cheat_sheet.rst:897 msgid "Python" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:398 +#: ../../content/contributing/development/coding_guidelines.rst:395 msgid "Do not forget to read the :ref:`Security Pitfalls ` section as well to write secure code." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:402 +#: ../../content/contributing/development/coding_guidelines.rst:399 msgid "PEP8 options" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:404 +#: ../../content/contributing/development/coding_guidelines.rst:401 msgid "Using a linter can help show syntax and semantic warnings or errors. Odoo source code tries to respect Python standard, but some of them can be ignored." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:407 +#: ../../content/contributing/development/coding_guidelines.rst:404 msgid "E501: line too long" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:408 +#: ../../content/contributing/development/coding_guidelines.rst:405 msgid "E301: expected 1 blank line, found 0" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:409 +#: ../../content/contributing/development/coding_guidelines.rst:406 msgid "E302: expected 2 blank lines, found 1" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:412 +#: ../../content/contributing/development/coding_guidelines.rst:409 msgid "Imports" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:414 +#: ../../content/contributing/development/coding_guidelines.rst:411 msgid "The imports are ordered as" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:416 +#: ../../content/contributing/development/coding_guidelines.rst:413 msgid "External libraries (one per line sorted and split in python stdlib)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:417 +#: ../../content/contributing/development/coding_guidelines.rst:414 msgid "Imports of ``odoo``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:418 +#: ../../content/contributing/development/coding_guidelines.rst:415 msgid "Imports from Odoo modules (rarely, and only if necessary)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:420 +#: ../../content/contributing/development/coding_guidelines.rst:417 msgid "Inside these 3 groups, the imported lines are alphabetically sorted." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:438 +#: ../../content/contributing/development/coding_guidelines.rst:435 msgid "Idiomatics of Programming (Python)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:440 +#: ../../content/contributing/development/coding_guidelines.rst:437 msgid "Always favor *readability* over *conciseness* or using the language features or idioms." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:441 +#: ../../content/contributing/development/coding_guidelines.rst:438 msgid "Don't use ``.clone()``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:452 +#: ../../content/contributing/development/coding_guidelines.rst:449 msgid "Python dictionary : creation and update" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:477 +#: ../../content/contributing/development/coding_guidelines.rst:474 msgid "Use meaningful variable/class/method names" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:478 +#: ../../content/contributing/development/coding_guidelines.rst:475 msgid "Useless variable : Temporary variables can make the code clearer by giving names to objects, but that doesn't mean you should create temporary variables all the time:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:490 +#: ../../content/contributing/development/coding_guidelines.rst:487 msgid "Multiple return points are OK, when they're simpler" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:510 +#: ../../content/contributing/development/coding_guidelines.rst:507 msgid "Know your builtins : You should at least have a basic understanding of all the Python builtins (http://docs.python.org/library/functions.html)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:518 +#: ../../content/contributing/development/coding_guidelines.rst:515 msgid "Also, ``if 'key' in my_dict`` and ``if my_dict.get('key')`` have very different meaning, be sure that you're using the right one." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:521 +#: ../../content/contributing/development/coding_guidelines.rst:518 msgid "Learn list comprehensions : Use list comprehension, dict comprehension, and basic manipulation using ``map``, ``filter``, ``sum``, ... They make the code easier to read." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:534 +#: ../../content/contributing/development/coding_guidelines.rst:531 msgid "Collections are booleans too : In python, many objects have \"boolean-ish\" value when evaluated in a boolean context (such as an if). Among these are collections (lists, dicts, sets, ...) which are \"falsy\" when empty and \"truthy\" when containing items:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:545 +#: ../../content/contributing/development/coding_guidelines.rst:542 msgid "So, you can write ``if some_collection:`` instead of ``if len(some_collection):``." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:548 +#: ../../content/contributing/development/coding_guidelines.rst:545 msgid "Iterate on iterables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:562 +#: ../../content/contributing/development/coding_guidelines.rst:559 msgid "Use dict.setdefault" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:578 +#: ../../content/contributing/development/coding_guidelines.rst:575 msgid "As a good developer, document your code (docstring on methods, simple comments for tricky part of code)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:580 +#: ../../content/contributing/development/coding_guidelines.rst:577 msgid "In additions to these guidelines, you may also find the following link interesting: http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html (a little bit outdated, but quite relevant)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:585 +#: ../../content/contributing/development/coding_guidelines.rst:582 msgid "Programming in Odoo" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:587 +#: ../../content/contributing/development/coding_guidelines.rst:584 msgid "Avoid to create generators and decorators: only use the ones provided by the Odoo API." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:589 +#: ../../content/contributing/development/coding_guidelines.rst:586 msgid "As in python, use ``filtered``, ``mapped``, ``sorted``, ... methods to ease code reading and performance." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:593 +#: ../../content/contributing/development/coding_guidelines.rst:590 msgid "Propagate the context" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:595 +#: ../../content/contributing/development/coding_guidelines.rst:592 msgid "The context is a ``frozendict`` that cannot be modified. To call a method with a different context, the ``with_context`` method should be used :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:604 +#: ../../content/contributing/development/coding_guidelines.rst:601 msgid "Passing parameter in context can have dangerous side-effects." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:606 +#: ../../content/contributing/development/coding_guidelines.rst:603 msgid "Since the values are propagated automatically, some unexpected behavior may appear. Calling ``create()`` method of a model with *default_my_field* key in context will set the default value of *my_field* for the concerned model. But if during this creation, other objects (such as sale.order.line, on sale.order creation) having a field name *my_field* are created, their default value will be set too." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:612 +#: ../../content/contributing/development/coding_guidelines.rst:609 msgid "If you need to create a key context influencing the behavior of some object, choose a good name, and eventually prefix it by the name of the module to isolate its impact. A good example are the keys of ``mail`` module : *mail_create_nosubscribe*, *mail_notrack*, *mail_notify_user_signature*, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:618 +#: ../../content/contributing/development/coding_guidelines.rst:615 msgid "Think extendable" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:620 +#: ../../content/contributing/development/coding_guidelines.rst:617 msgid "Functions and methods should not contain too much logic: having a lot of small and simple methods is more advisable than having few large and complex methods. A good rule of thumb is to split a method as soon as it has more than one responsibility (see http://en.wikipedia.org/wiki/Single_responsibility_principle)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:625 +#: ../../content/contributing/development/coding_guidelines.rst:622 msgid "Hardcoding a business logic in a method should be avoided as it prevents to be easily extended by a submodule." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:651 +#: ../../content/contributing/development/coding_guidelines.rst:648 msgid "The above code is over extendable for the sake of example but the readability must be taken into account and a tradeoff must be made." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:654 +#: ../../content/contributing/development/coding_guidelines.rst:651 msgid "Also, name your functions accordingly: small and properly named functions are the starting point of readable/maintainable code and tighter documentation." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:657 +#: ../../content/contributing/development/coding_guidelines.rst:654 msgid "This recommendation is also relevant for classes, files, modules and packages. (See also http://en.wikipedia.org/wiki/Cyclomatic_complexity)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:661 +#: ../../content/contributing/development/coding_guidelines.rst:658 msgid "Never commit the transaction" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:663 +#: ../../content/contributing/development/coding_guidelines.rst:660 msgid "The Odoo framework is in charge of providing the transactional context for all RPC calls. The principle is that a new database cursor is opened at the beginning of each RPC call, and committed when the call has returned, just before transmitting the answer to the RPC client, approximately like this:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:684 +#: ../../content/contributing/development/coding_guidelines.rst:681 msgid "If any error occurs during the execution of the RPC call, the transaction is rolled back atomically, preserving the state of the system." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:687 +#: ../../content/contributing/development/coding_guidelines.rst:684 msgid "Similarly, the system also provides a dedicated transaction during the execution of tests suites, so it can be rolled back or not depending on the server startup options." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:691 +#: ../../content/contributing/development/coding_guidelines.rst:688 msgid "The consequence is that if you manually call ``cr.commit()`` anywhere there is a very high chance that you will break the system in various ways, because you will cause partial commits, and thus partial and unclean rollbacks, causing among others:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:696 +#: ../../content/contributing/development/coding_guidelines.rst:693 msgid "inconsistent business data, usually data loss" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:697 +#: ../../content/contributing/development/coding_guidelines.rst:694 msgid "workflow desynchronization, documents stuck permanently" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:698 +#: ../../content/contributing/development/coding_guidelines.rst:695 msgid "tests that can't be rolled back cleanly, and will start polluting the database, and triggering error (this is true even if no error occurs during the transaction)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:709 +#: ../../content/contributing/development/coding_guidelines.rst:706 msgid "Here is the very simple rule:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:703 +#: ../../content/contributing/development/coding_guidelines.rst:700 msgid "You should **NEVER** call ``cr.commit()`` yourself, **UNLESS** you have created your own database cursor explicitly! And the situations where you need to do that are exceptional!" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:707 +#: ../../content/contributing/development/coding_guidelines.rst:704 msgid "And by the way if you did create your own cursor, then you need to handle error cases and proper rollback, as well as properly close the cursor when you're done with it." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:711 +#: ../../content/contributing/development/coding_guidelines.rst:708 msgid "And contrary to popular belief, you do not even need to call ``cr.commit()`` in the following situations: - in the ``_auto_init()`` method of an *models.Model* object: this is taken care of by the addons initialization method, or by the ORM transaction when creating custom models - in reports: the ``commit()`` is handled by the framework too, so you can update the database even from within a report - within *models.Transient* methods: these methods are called exactly like regular *models.Model* ones, within a transaction and with the corresponding ``cr.commit()/rollback()`` at the end - etc. (see general rule above if you are in doubt!)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:723 +#: ../../content/contributing/development/coding_guidelines.rst:720 msgid "All ``cr.commit()`` calls outside of the server framework from now on must have an **explicit comment** explaining why they are absolutely necessary, why they are indeed correct, and why they do not break the transactions. Otherwise they can and will be removed !" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:729 +#: ../../content/contributing/development/coding_guidelines.rst:726 msgid "Use translation method correctly" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:731 +#: ../../content/contributing/development/coding_guidelines.rst:728 msgid "Odoo uses a GetText-like method named \"underscore\" ``_( )`` to indicate that a static string used in the code needs to be translated at runtime using the language of the context. This pseudo-method is accessed within your code by importing as follows:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:740 +#: ../../content/contributing/development/coding_guidelines.rst:737 msgid "A few very important rules must be followed when using it, in order for it to work and to avoid filling the translations with useless junk." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:743 +#: ../../content/contributing/development/coding_guidelines.rst:740 msgid "Basically, this method should only be used for static strings written manually in the code, it will not work to translate field values, such as Product names, etc. This must be done instead using the translate flag on the corresponding field." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:748 +#: ../../content/contributing/development/coding_guidelines.rst:745 msgid "The method accepts optional positional or named parameter The rule is very simple: calls to the underscore method should always be in the form ``_('literal string')`` and nothing else:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:791 +#: ../../content/contributing/development/coding_guidelines.rst:788 msgid "Also, keep in mind that translators will have to work with the literal values that are passed to the underscore function, so please try to make them easy to understand and keep spurious characters and formatting to a minimum. Translators must be aware that formatting patterns such as ``%s`` or ``%d``, newlines, etc. need to be preserved, but it's important to use these in a sensible and obvious manner:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:811 +#: ../../content/contributing/development/coding_guidelines.rst:808 msgid "In general in Odoo, when manipulating strings, prefer ``%`` over ``.format()`` (when only one variable to replace in a string), and prefer ``%(varname)`` instead of position (when multiple variables have to be replaced). This makes the translation easier for the community translators." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:817 +#: ../../content/contributing/development/coding_guidelines.rst:814 msgid "Symbols and Conventions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:827 +#: ../../content/contributing/development/coding_guidelines.rst:824 msgid "Model name (using the dot notation, prefix by the module name) :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:820 +#: ../../content/contributing/development/coding_guidelines.rst:817 msgid "When defining an Odoo Model : use singular form of the name (*res.partner* and *sale.order* instead of *res.partnerS* and *saleS.orderS*)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:822 +#: ../../content/contributing/development/coding_guidelines.rst:819 msgid "When defining an Odoo Transient (wizard) : use ``.`` where *related_base_model* is the base model (defined in *models/*) related to the transient, and *action* is the short name of what the transient do. Avoid the *wizard* word. For instance : ``account.invoice.make``, ``project.task.delegate.batch``, ..." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:826 +#: ../../content/contributing/development/coding_guidelines.rst:823 msgid "When defining *report* model (SQL views e.i.) : use ``.report.``, based on the Transient convention." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:829 +#: ../../content/contributing/development/coding_guidelines.rst:826 msgid "Odoo Python Class : use camelcase (Object-oriented style)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:840 +#: ../../content/contributing/development/coding_guidelines.rst:837 msgid "Variable name :" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:838 +#: ../../content/contributing/development/coding_guidelines.rst:835 msgid "use camelcase for model variable" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:839 +#: ../../content/contributing/development/coding_guidelines.rst:836 msgid "use underscore lowercase notation for common variable." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:840 +#: ../../content/contributing/development/coding_guidelines.rst:837 msgid "suffix your variable name with *_id* or *_ids* if it contains a record id or list of id. Don't use ``partner_id`` to contain a record of res.partner" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:848 +#: ../../content/contributing/development/coding_guidelines.rst:845 msgid "``One2Many`` and ``Many2Many`` fields should always have *_ids* as suffix (example: sale_order_line_ids)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:849 +#: ../../content/contributing/development/coding_guidelines.rst:846 msgid "``Many2One`` fields should have *_id* as suffix (example : partner_id, user_id, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:859 +#: ../../content/contributing/development/coding_guidelines.rst:856 msgid "Method conventions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:851 +#: ../../content/contributing/development/coding_guidelines.rst:848 msgid "Compute Field : the compute method pattern is *_compute_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:852 +#: ../../content/contributing/development/coding_guidelines.rst:849 msgid "Search method : the search method pattern is *_search_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:853 +#: ../../content/contributing/development/coding_guidelines.rst:850 msgid "Default method : the default method pattern is *_default_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:854 +#: ../../content/contributing/development/coding_guidelines.rst:851 msgid "Selection method: the selection method pattern is *_selection_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:855 +#: ../../content/contributing/development/coding_guidelines.rst:852 msgid "Onchange method : the onchange method pattern is *_onchange_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:856 +#: ../../content/contributing/development/coding_guidelines.rst:853 msgid "Constraint method : the constraint method pattern is *_check_*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:857 +#: ../../content/contributing/development/coding_guidelines.rst:854 msgid "Action method : an object action method is prefix with *action_*. Since it uses only one record, add ``self.ensure_one()`` at the beginning of the method." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:870 +#: ../../content/contributing/development/coding_guidelines.rst:867 msgid "In a Model attribute order should be" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:862 +#: ../../content/contributing/development/coding_guidelines.rst:859 msgid "Private attributes (``_name``, ``_description``, ``_inherit``, ``_sql_constraints``, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:863 +#: ../../content/contributing/development/coding_guidelines.rst:860 msgid "Default method and ``default_get``" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:864 +#: ../../content/contributing/development/coding_guidelines.rst:861 msgid "Field declarations" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:865 +#: ../../content/contributing/development/coding_guidelines.rst:862 msgid "Compute, inverse and search methods in the same order as field declaration" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:866 +#: ../../content/contributing/development/coding_guidelines.rst:863 msgid "Selection method (methods used to return computed values for selection fields)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:867 +#: ../../content/contributing/development/coding_guidelines.rst:864 msgid "Constrains methods (``@api.constrains``) and onchange methods (``@api.onchange``)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:868 +#: ../../content/contributing/development/coding_guidelines.rst:865 msgid "CRUD methods (ORM overrides)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:869 +#: ../../content/contributing/development/coding_guidelines.rst:866 msgid "Action methods" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:870 +#: ../../content/contributing/development/coding_guidelines.rst:867 msgid "And finally, other business methods." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:926 +#: ../../content/contributing/development/coding_guidelines.rst:923 msgid "Javascript" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:929 +#: ../../content/contributing/development/coding_guidelines.rst:926 msgid "Static files organization" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:931 +#: ../../content/contributing/development/coding_guidelines.rst:928 msgid "Odoo addons have some conventions on how to structure various files. We explain here in more details how web assets are supposed to be organized." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:934 +#: ../../content/contributing/development/coding_guidelines.rst:931 msgid "The first thing to know is that the Odoo server will serve (statically) all files located in a *static/* folder, but prefixed with the addon name. So, for example, if a file is located in *addons/web/static/src/js/some_file.js*, then it will be statically available at the url *your-odoo-server.com/web/static/src/js/some_file.js*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:939 +#: ../../content/contributing/development/coding_guidelines.rst:936 msgid "The convention is to organize the code according to the following structure:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:941 +#: ../../content/contributing/development/coding_guidelines.rst:938 msgid "*static*: all static files in general" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:943 +#: ../../content/contributing/development/coding_guidelines.rst:940 msgid "*static/lib*: this is the place where js libs should be located, in a sub folder. So, for example, all files from the *jquery* library are in *addons/web/static/lib/jquery*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:945 +#: ../../content/contributing/development/coding_guidelines.rst:942 msgid "*static/src*: the generic static source code folder" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:947 +#: ../../content/contributing/development/coding_guidelines.rst:944 msgid "*static/src/css*: all css files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:948 +#: ../../content/contributing/development/coding_guidelines.rst:945 msgid "*static/fonts*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:949 +#: ../../content/contributing/development/coding_guidelines.rst:946 msgid "*static/img*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:950 +#: ../../content/contributing/development/coding_guidelines.rst:947 msgid "*static/src/js*" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:952 +#: ../../content/contributing/development/coding_guidelines.rst:949 msgid "*static/src/js/tours*: end user tour files (tutorials, not tests)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:954 +#: ../../content/contributing/development/coding_guidelines.rst:951 msgid "*static/src/scss*: scss files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:955 +#: ../../content/contributing/development/coding_guidelines.rst:952 msgid "*static/src/xml*: all qweb templates that will be rendered in JS" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:957 +#: ../../content/contributing/development/coding_guidelines.rst:954 msgid "*static/tests*: this is where we put all test related files." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:959 +#: ../../content/contributing/development/coding_guidelines.rst:956 msgid "*static/tests/tours*: this is where we put all tour test files (not tutorials)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:962 +#: ../../content/contributing/development/coding_guidelines.rst:959 msgid "Javascript coding guidelines" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:964 +#: ../../content/contributing/development/coding_guidelines.rst:961 msgid "``use strict;`` is recommended for all javascript files" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:965 +#: ../../content/contributing/development/coding_guidelines.rst:962 msgid "Use a linter (jshint, ...)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:966 +#: ../../content/contributing/development/coding_guidelines.rst:963 msgid "Never add minified Javascript Libraries" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:967 +#: ../../content/contributing/development/coding_guidelines.rst:964 msgid "Use camelcase for class declaration" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:969 +#: ../../content/contributing/development/coding_guidelines.rst:966 msgid "More precise JS guidelines are detailed in the `github wiki `_. You may also have a look at existing API in Javascript by looking Javascript References." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:976 +#: ../../content/contributing/development/coding_guidelines.rst:973 msgid "CSS and SCSS" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:981 +#: ../../content/contributing/development/coding_guidelines.rst:978 msgid "Syntax and Formatting" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1013 +#: ../../content/contributing/development/coding_guidelines.rst:1010 msgid "four (4) space indents, no tabs;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1014 +#: ../../content/contributing/development/coding_guidelines.rst:1011 msgid "columns of max. 80 characters wide;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1015 +#: ../../content/contributing/development/coding_guidelines.rst:1012 msgid "opening brace (`{`): empty space after the last selector;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1016 +#: ../../content/contributing/development/coding_guidelines.rst:1013 msgid "closing brace (`}`): on its own new line;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1017 +#: ../../content/contributing/development/coding_guidelines.rst:1014 msgid "one line for each declaration;" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1018 +#: ../../content/contributing/development/coding_guidelines.rst:1015 msgid "meaningful use of whitespace." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1061 +#: ../../content/contributing/development/coding_guidelines.rst:1058 msgid "Properties order" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1063 +#: ../../content/contributing/development/coding_guidelines.rst:1060 msgid "Order properties from the \"outside\" in, starting from `position` and ending with decorative rules (`font`, `filter`, etc.)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1066 +#: ../../content/contributing/development/coding_guidelines.rst:1063 msgid ":ref:`Scoped SCSS variables ` and :ref:`CSS variables ` must be placed at the very top, followed by an empty line separating them from other declarations." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1092 +#: ../../content/contributing/development/coding_guidelines.rst:1089 msgid "Naming Conventions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1094 +#: ../../content/contributing/development/coding_guidelines.rst:1091 msgid "Naming conventions in CSS are incredibly useful in making your code more strict, transparent and informative." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1099 +#: ../../content/contributing/development/coding_guidelines.rst:1096 msgid "Avoid `id` selectors, and prefix your classes with `o_`, where `` is the technical name of the module (`sale`, `im_chat`, ...) or the main route reserved by the module (for website modules mainly, i.e. : `o_forum` for the `website_forum` module)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1100 +#: ../../content/contributing/development/coding_guidelines.rst:1097 msgid "The only exception for this rule is the webclient: it simply uses the `o_` prefix." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1102 +#: ../../content/contributing/development/coding_guidelines.rst:1099 msgid "Avoid creating hyper-specific classes and variable names. When naming nested elements, opt for the \"Grandchild\" approach." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1110 +#: ../../content/contributing/development/coding_guidelines.rst:1107 msgid "Don't" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1124 +#: ../../content/contributing/development/coding_guidelines.rst:1121 msgid "Do" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1136 +#: ../../content/contributing/development/coding_guidelines.rst:1133 msgid "Besides being more compact, this approach eases maintenance because it limits the need of renaming when changes occur at the DOM." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1142 +#: ../../content/contributing/development/coding_guidelines.rst:1139 msgid "SCSS Variables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1144 +#: ../../content/contributing/development/coding_guidelines.rst:1141 msgid "Our standard convention is `$o-[root]-[element]-[property]-[modifier]`, with:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1146 +#: ../../content/contributing/development/coding_guidelines.rst:1143 msgid "`$o-`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1147 +#: ../../content/contributing/development/coding_guidelines.rst:1144 msgid "The prefix." msgstr "" +#: ../../content/contributing/development/coding_guidelines.rst:1145 +#: ../../content/contributing/development/coding_guidelines.rst:1229 +msgid "`[root]`" +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1146 +#: ../../content/contributing/development/coding_guidelines.rst:1230 +msgid "Either the component **or** the module name (components take priority)." +msgstr "" + +#: ../../content/contributing/development/coding_guidelines.rst:1147 +#: ../../content/contributing/development/coding_guidelines.rst:1231 +msgid "`[element]`" +msgstr "" + #: ../../content/contributing/development/coding_guidelines.rst:1148 #: ../../content/contributing/development/coding_guidelines.rst:1232 -msgid "`[root]`" +msgid "An optional identifier for inner elements." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1149 #: ../../content/contributing/development/coding_guidelines.rst:1233 -msgid "Either the component **or** the module name (components take priority)." +msgid "`[property]`" msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1150 #: ../../content/contributing/development/coding_guidelines.rst:1234 -msgid "`[element]`" -msgstr "" - -#: ../../content/contributing/development/coding_guidelines.rst:1151 -#: ../../content/contributing/development/coding_guidelines.rst:1235 -msgid "An optional identifier for inner elements." +msgid "The property/behavior defined by the variable." msgstr "" #: ../../content/contributing/development/coding_guidelines.rst:1152 #: ../../content/contributing/development/coding_guidelines.rst:1236 -msgid "`[property]`" -msgstr "" - -#: ../../content/contributing/development/coding_guidelines.rst:1153 -#: ../../content/contributing/development/coding_guidelines.rst:1237 -msgid "The property/behavior defined by the variable." -msgstr "" - -#: ../../content/contributing/development/coding_guidelines.rst:1155 -#: ../../content/contributing/development/coding_guidelines.rst:1239 msgid "`[modifier]`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1155 -#: ../../content/contributing/development/coding_guidelines.rst:1239 +#: ../../content/contributing/development/coding_guidelines.rst:1152 +#: ../../content/contributing/development/coding_guidelines.rst:1236 msgid "An optional modifier." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1168 +#: ../../content/contributing/development/coding_guidelines.rst:1165 msgid "SCSS Variables (scoped)" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1170 +#: ../../content/contributing/development/coding_guidelines.rst:1167 msgid "These variables are declared within blocks and are not accessible from the outside. Our standard convention is `$-[variable name]`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1188 +#: ../../content/contributing/development/coding_guidelines.rst:1185 msgid "`Variables scope on the SASS Documentation `_" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1194 +#: ../../content/contributing/development/coding_guidelines.rst:1191 msgid "SCSS Mixins and Functions" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1196 +#: ../../content/contributing/development/coding_guidelines.rst:1193 msgid "Our standard convention is `o-[name]`. Use descriptive names. When naming functions, use verbs in the imperative form (e.g.: `get`, `make`, `apply`...)." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1199 +#: ../../content/contributing/development/coding_guidelines.rst:1196 msgid "Name optional arguments in the :ref:`scoped variables form `, so `$-[argument]`." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1219 +#: ../../content/contributing/development/coding_guidelines.rst:1216 msgid "`Mixins on the SASS Documentation `_" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1220 +#: ../../content/contributing/development/coding_guidelines.rst:1217 msgid "`Functions on the SASS Documentation `_" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1225 +#: ../../content/contributing/development/coding_guidelines.rst:1222 msgid "CSS Variables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1227 +#: ../../content/contributing/development/coding_guidelines.rst:1224 msgid "In Odoo, the use of CSS variables is strictly DOM-related. Use them to **contextually** adapt the design and layout." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1230 +#: ../../content/contributing/development/coding_guidelines.rst:1227 msgid "Our standard convention is BEM, so `--[root]__[element]-[property]--[modifier]`, with:" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1261 +#: ../../content/contributing/development/coding_guidelines.rst:1258 msgid "Use of CSS Variables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1263 +#: ../../content/contributing/development/coding_guidelines.rst:1260 msgid "In Odoo, the use of CSS variables is strictly DOM-related, meaning that are used to **contextually** adapt the design and layout rather than to manage the global design-system. These are typically used when a component's properties can vary in specific contexts or in other circumstances." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1267 +#: ../../content/contributing/development/coding_guidelines.rst:1264 msgid "We define these properties inside the component's main block, providing default fallbacks." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1271 +#: ../../content/contributing/development/coding_guidelines.rst:1268 msgid ":file:`my_component.scss`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1278 +#: ../../content/contributing/development/coding_guidelines.rst:1275 msgid ":file:`my_dashboard.scss`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1287 +#: ../../content/contributing/development/coding_guidelines.rst:1284 msgid "`CSS variables on MDN web docs `_" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1293 +#: ../../content/contributing/development/coding_guidelines.rst:1290 msgid "CSS and SCSS Variables" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1295 +#: ../../content/contributing/development/coding_guidelines.rst:1292 msgid "Despite being apparently similar, `CSS` and `SCSS` variables behave very differently. The main difference is that, while `SCSS` variables are **imperative** and compiled away, `CSS` variables are **declarative** and included in the final output." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1300 +#: ../../content/contributing/development/coding_guidelines.rst:1297 msgid "`CSS/SCSS variables difference on the SASS Documentation `_" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1303 +#: ../../content/contributing/development/coding_guidelines.rst:1300 msgid "In Odoo, we take the best of both worlds: using the `SCSS` variables to define the design-system while opting for the `CSS` ones when it comes to contextual adaptations." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1306 +#: ../../content/contributing/development/coding_guidelines.rst:1303 msgid "The implementation of the previous example should be improved by adding SCSS variables in order to gain control at the top-level and ensure consistency with other components." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1311 +#: ../../content/contributing/development/coding_guidelines.rst:1308 msgid ":file:`secondary_variables.scss`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1318 +#: ../../content/contributing/development/coding_guidelines.rst:1315 msgid ":file:`component.scss`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1325 +#: ../../content/contributing/development/coding_guidelines.rst:1322 msgid ":file:`dashboard.scss`" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1335 +#: ../../content/contributing/development/coding_guidelines.rst:1332 msgid "The `:root` pseudo-class" msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1337 +#: ../../content/contributing/development/coding_guidelines.rst:1334 msgid "Defining CSS variables on the `:root` pseudo-class is a technique we normally **don't use** in Odoo's UI. The practice is commonly used to access and modify CSS variables globally. We perform this using SCSS instead." msgstr "" -#: ../../content/contributing/development/coding_guidelines.rst:1341 +#: ../../content/contributing/development/coding_guidelines.rst:1338 msgid "Exceptions to this rule should be fairly apparent, such as templates shared across bundles that require a certain level of contextual awareness in order to be rendered properly." msgstr "" @@ -1614,9 +1597,6 @@ msgstr "" msgid "Review the summary that you wrote about your changes and click on the :guilabel:`Create pull request` button again." msgstr "" -#: ../../content/contributing/documentation/changes_approved.rst:1 -#: ../../content/contributing/documentation/changes_approved.rst:1 -#: ../../content/contributing/documentation/changes_approved.rst:1 #: ../../content/contributing/documentation/changes_approved.rst:1 #: ../../content/contributing/documentation/changes_approved.rst:1 msgid "Once your changes are approved, the reviewer merges them and they appear online the next day!" @@ -1967,7 +1947,7 @@ msgstr "" msgid "If necessary, you can **edit** the screenshot to remove unnecessary fields and to narrow even more Odoo's display." msgstr "" -#: ../../content/contributing/documentation/content_guidelines.rst:None +#: ../../content/contributing/documentation/content_guidelines.rst:-1 msgid "Three tips to take good screenshots for the Odoo documentation." msgstr "" diff --git a/locale/sources/developer.pot b/locale/sources/developer.pot deleted file mode 100644 index efbec4368..000000000 --- a/locale/sources/developer.pot +++ /dev/null @@ -1,37915 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) Odoo S.A. -# This file is distributed under the same license as the Odoo package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: Odoo saas-16.1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 06:38+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../../content/developer.rst:9 -msgid "Developer" -msgstr "" - -#: ../../content/developer.rst:11 -msgid "Learn through tutorials and get help using reference guides." -msgstr "" - -#: ../../content/developer/glossary.rst:5 -msgid "Glossary" -msgstr "" - -#: ../../content/developer/glossary.rst:8 -msgid "external id" -msgstr "" - -#: ../../content/developer/glossary.rst:9 -msgid "external identifier" -msgstr "" - -#: ../../content/developer/glossary.rst:10 -msgid "external identifiers" -msgstr "" - -#: ../../content/developer/glossary.rst:12 -msgid "string identifier stored in ``ir.model.data``, can be used to refer to a record regardless of its database identifier during data imports or export/import roundtrips." -msgstr "" - -#: ../../content/developer/glossary.rst:16 -msgid "External identifiers are in the form :samp:`{module}.{id}` (e.g. ``account.invoice_graph``). From within a module, the :samp:`{module}.` prefix can be left out." -msgstr "" - -#: ../../content/developer/glossary.rst:20 -msgid "Sometimes referred to as \"xml id\" or ``xml_id`` as XML-based :ref:`reference/data` make extensive use of them." -msgstr "" - -#: ../../content/developer/glossary.rst:22 -msgid "format string" -msgstr "" - -#: ../../content/developer/glossary.rst:24 -msgid "inspired by `jinja variables`_, format strings allow more easily mixing literal content and computed content (expressions): content between ``{{`` and ``}}`` is interpreted as an expression and evaluated, other content is interpreted as literal strings and displayed as-is" -msgstr "" - -#: ../../content/developer/glossary.rst:29 -msgid "GIS" -msgstr "" - -#: ../../content/developer/glossary.rst:30 -msgid "Geographic Information System" -msgstr "" - -#: ../../content/developer/glossary.rst:32 -msgid "any computer system or subsystem to capture, store, manipulate, analyze, manage or present spatial and geographical data." -msgstr "" - -#: ../../content/developer/glossary.rst:34 -msgid "minified" -msgstr "" - -#: ../../content/developer/glossary.rst:35 -msgid "minification" -msgstr "" - -#: ../../content/developer/glossary.rst:37 -msgid "process of removing extraneous/non-necessary sections of files (comments, whitespace) and possibly recompiling them using equivalent but shorter structures (`ternary operator`_ instead of ``if/else``) in order to reduce network traffic" -msgstr "" - -#: ../../content/developer/howtos.rst:6 -msgid "How-to guides" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:4 -msgid "Accounting localization" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:8 -msgid "This tutorial requires knowledge about how to build a module in Odoo (see :doc:`../tutorials/getting_started`)." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:13 -msgid "Installation procedure" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:15 -msgid "On installing the `account `_ module, the localization module corresponding to the country code of the company is installed automatically. In case of no country code set or no localization module found, the `l10n_generic_coa `_ (US) localization module is installed by default. Check `post init hook `_ for details." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:19 -msgid "For example, `l10n_ch `_ will be installed if the company has ``Switzerland`` as country." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:22 -msgid "Building a localization module" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:24 -msgid "The structure of a basic ``l10n_XX`` module may be described with the following :file:`__manifest__.py` file:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:63 -msgid "In the first file :file:`data/account_chart_template_data.xml`, we set the name for the chart of accounts along with some basic fields." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:66 -msgid ":ref:`Chart Template References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:69 -msgid "`addons/l10n_ch/data/l10n_ch_chart_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:80 -msgid "Recommended **xmlid** for the record is `chart_template`. If you need many chart of accounts, you can add some suffixes, i.e. `chart_template_XXX`." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:85 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.chart_template_id:1 -msgid "Chart of Accounts" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:88 -msgid "Account tags" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:91 -msgid ":ref:`Account Tag References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:93 -msgid "Tags are a way to sort accounts. For example, imagine you want to create a financial report having multiple lines but you have no way to find a rule to dispatch the accounts according to their ``code``. The solution is the usage of tags, one for each report line, to filter accounts like you want." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:97 -msgid "Put the tags in the :file:`data/account_account_tag_data.xml` file." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:100 -msgid "`addons/l10n_lt/data/account.account.template.csv `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:108 -#: ../../content/developer/howtos/accounting_localization.rst:138 -msgid "`addons/l10n_at/data/account_account_template.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:119 -msgid "Accounts" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:122 -msgid ":ref:`Account References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:123 -msgid ":doc:`/applications/finance/accounting/getting_started/initial_configuration/chart_of_accounts`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:125 -msgid "Obviously, :guilabel:`Chart of Accounts` cannot exist without :guilabel:`Accounts`. You need to specify them in :file:`data/account.account.template.csv`." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:128 -msgid "`addons/l10n_ch/data/account.account.template.csv `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:135 -msgid "CSV is prefered but you may use XML format instead." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:148 -msgid "Avoid the usage of liquidity ``account.account.type``! Indeed, the bank & cash accounts are created directly at the installation of the localization module and then, are linked to an ``account.journal``." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:150 -msgid "Only one account of type payable/receivable is enough for the generic case. We need to define a PoS receivable account as well however. (linked in the CoA)" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:151 -msgid "Don't create too many accounts: 200-300 is enough. But mostly, we try to find a good balance where the CoA needs minimal adapting for most companies afterwards." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:153 -msgid "Next settings for the chart of accounts are set in a separate file, because we need to provide a :ref:`list of accounts ` first. In :file:`data/account_chart_post_data.xml`, we set some default accounts:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:158 -msgid "`addons/l10n_ch/data/l10n_ch_chart_post_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:168 -msgid "Account groups" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:171 -msgid ":ref:`Account Group References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:173 -msgid "Account groups allow describing the hierarchical structure of the chart of accounts. The filter needs to be activated in the report and then when you decollapse into journal entries it will show the parents of the account." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:175 -msgid "It works with the prefix *start*/*end*, so every account where the code starts with something between *start* and *end* will have this account.group as the parent group. Furthermore, the account groups can have a parent account group as well to form the hierarchy." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:179 -msgid "`addons/l10n_il/data/account.group.template.csv `_" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../content/developer/reference/backend/data/res.country.state.csv:1 -#: ../../content/developer/tutorials/dashboards.rst:302 -msgid "id" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "code_prefix_start" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "code_prefix_end" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../content/developer/reference/backend/data/res.country.state.csv:1 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.name:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.currency_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.code:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.account_type:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.reconcile:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.note:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.tax_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.nocreate:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.chart_template_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountAccountTemplate.tag_ids:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.name:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.applicability:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.color:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.active:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.tax_negate:0 -#: ../../../odoo/addons/account/models/account_account_tag.py:docstring of odoo.addons.account.models.account_account_tag.AccountAccountTag.country_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.name:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.parent_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.code_digits:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.visible:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.currency_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.country_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.use_anglo_saxon:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.bank_account_code_prefix:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.cash_account_code_prefix:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.transfer_account_code_prefix:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.account_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.income_currency_exchange_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.expense_currency_exchange_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.account_journal_suspense_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.account_journal_payment_debit_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.account_journal_payment_credit_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.default_cash_difference_income_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.default_cash_difference_expense_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.default_pos_receivable_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_receivable_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_payable_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_expense_categ_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_income_categ_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_expense_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_account_income_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_stock_account_input_categ_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_stock_account_output_categ_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_stock_valuation_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_tax_payable_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_tax_receivable_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_advance_tax_payment_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountChartTemplate.property_cash_basis_base_account_id:0 -#: ../../../odoo/addons/l10n_multilang/models/account.py:docstring of odoo.addons.l10n_multilang.models.account.AccountChartTemplate.spoken_languages:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.sequence:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.name:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.chart_template_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.account_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.tax_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.note:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.auto_apply:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.vat_required:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.country_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.country_group_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.state_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.zip_from:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountFiscalPositionTemplate.zip_to:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountGroupTemplate.parent_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountGroupTemplate.name:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountGroupTemplate.code_prefix_start:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountGroupTemplate.code_prefix_end:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountGroupTemplate.chart_template_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.name:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.line_ids:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.column_ids:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.root_report_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.chart_template_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.country_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.only_tax_exigible:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.availability_condition:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.load_more_limit:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.search_bar:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.default_opening_date_filter:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_multi_company:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_date_range:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_show_draft:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_unreconciled:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_unfold_all:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_period_comparison:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_growth_comparison:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_journals:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_analytic:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_hierarchy:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_account_type:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_partner:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReport.filter_fiscal_position:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.name:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.expression_ids:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.report_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.hierarchy_level:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.parent_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.children_ids:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.foldable:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.print_on_new_page:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.action_id:0 -#: ../../../odoo/addons/account/models/account_report.py:docstring of odoo.addons.account.models.account_report.AccountReportLine.hide_if_zero:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.chart_template_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.name:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.type_tax_use:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.tax_scope:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.amount_type:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.active:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.children_tax_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.sequence:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.amount:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.description:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.price_include:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.include_base_amount:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.is_base_affected:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.analytic:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.invoice_repartition_line_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.refund_repartition_line_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.tax_group_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.tax_exigibility:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxTemplate.cash_basis_transition_account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.factor_percent:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.repartition_type:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.account_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.invoice_tax_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.refund_tax_id:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.tag_ids:0 -#: ../../../odoo/addons/account/models/chart_template.py:docstring of odoo.addons.account.models.chart_template.AccountTaxRepartitionLineTemplate.use_in_tax_closing:0 -#: ../../content/developer/tutorials/define_module_data.rst:176 -#: ../../content/developer/tutorials/getting_started/04_basicmodel.rst:182 -#: ../../content/developer/tutorials/getting_started/04_basicmodel.rst:255 -#: ../../content/developer/tutorials/getting_started/08_relations.rst:73 -#: ../../content/developer/tutorials/getting_started/08_relations.rst:180 -msgid "name" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "chart_template_id/id" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_100100" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "100100" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "100499" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Fixed Assets" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "l10n_il.il_chart_template" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_101110" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "101110" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "101400" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Current Assets" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_101401" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "101401" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "101799" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Bank And Cash" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_111000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "111000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "111999" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Current Liabilities" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_112000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "112000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "112210" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Non-current Liabilities" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_200000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "200000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "200199" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Sales Income" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_200200" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "200200" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "200300" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Other Income" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_201000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "201000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "201299" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Cost of Goods" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_202000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "202000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "220900" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Expenses" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "il_group_300000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "300000" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "399999" -msgstr "" - -#: ../../../odoo/addons/l10n_il/data/account.group.template.csv:1 -msgid "Capital And Shares" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:188 -#: ../../content/developer/reference/standard_modules/account/account_tax.rst:5 -msgid "Taxes" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:191 -msgid ":ref:`Tax References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:192 -msgid ":doc:`/applications/finance/accounting/taxation/taxes/taxes`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:194 -msgid "To add taxes you first need to specify tax groups. You normally need just one tax group for every tax rate, except for the 0% as you need to often distinguish between exempt, 0%, not subject, ... taxes. This model only has two required fields: *name* and *country*. Create the file :file:`data/account_tax_group_data.xml` and list the groups:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:211 -msgid "`addons/l10n_ch/data/account_tax_group_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:220 -msgid "`addons/l10n_uk/data/account.tax.group.csv `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:227 -msgid "Now you can add the taxes via :file:`data/account_tax_template_data.xml` file. The first tax you define that is purchase/sale also becomes the default purchase/sale tax for your products." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:231 -msgid "`addons/l10n_ae/data/account_tax_template_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:239 -msgid "If some accounts should use default taxes, you can set them up in :file:`data/account_account_template_post_data.xml`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:242 -msgid "Tax Report" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:248 -msgid "The tax report is declared in the :guilabel:`Invoicing` (`account`) app, but the report is only accessible when :guilabel:`Accounting` (`account_accountant`) is installed." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:251 -#: ../../content/developer/howtos/accounting_localization.rst:376 -msgid ":doc:`/developer/reference/standard_modules/account/account_report_line`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:252 -msgid ":doc:`/applications/finance/accounting/reporting/declarations/tax_returns`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:254 -msgid "In the previous section, you noticed the fields `invoice_repartition_line_ids` or `refund_repartition_line_ids` and probably understood nothing about them. Good news: you are not alone on this incomprehension. Bad news: you have to figure it out a bit. The topic is complicated. Indeed:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:259 -msgid "The simple version is that, in the tax template, you indicate in the invoice/refund repartition lines whether the base or a percentage of the tax needs to be reported in which report line (through the *minus/plus_report_line_ids* fields). It becomes clear also when you check the tax configuration in the Odoo interface (or check the docs :ref:`Tax References `, :ref:`Tax Repartition References `)." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:262 -msgid "So, once you have properly configured taxes, you just need to add the :file:`data/account_tax_report_data.xml` file with a record for your `account.report`. For it to be considered as a tax report, you need to provide it with the right `root_report_id`." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:276 -msgid "... followed by the declaration of its lines, as `account.report.line` records." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:279 -msgid "`addons/l10n_au/data/account_tax_report_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:290 -msgid "Fiscal positions" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:293 -msgid ":ref:`Fiscal Position References `" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:294 -msgid ":doc:`/applications/finance/accounting/taxation/taxes/fiscal_positions`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:296 -msgid "Specify fiscal positions in the :file:`data/account_fiscal_position_template_data.xml` file." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:299 -msgid "`addons/l10n_es/data/account_fiscal_position_template_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:308 -msgid "Final steps" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:310 -msgid "The last step when installing a localization module is to try to apply its chart of accounts to the current company (if it does not already have one). The file :file:`data/account_chart_template_try_loading.xml` is responsible for that." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:314 -msgid "`addons/l10n_ch/data/account_chart_template_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:322 -msgid "Finally, you may add a demo company, so the localization can easily be tested in demo mode." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:325 -msgid "`addons/l10n_ch/demo/demo_company.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:334 -msgid "Accounting reports" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:341 -msgid ":doc:`/applications/finance/accounting/reporting/overview`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:343 -msgid "Accounting reports should be added via a separate module `l10n_XX_reports` that should go to the `enterprise repository `_." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:345 -msgid "Basic :file:`__manifest__.py` file for such a module looks as following:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:366 -msgid "Functional overview of financial reports is here: :doc:`/applications/finance/accounting/reporting/overview/main_reports`." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:368 -msgid "Some good examples:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:370 -msgid "`l10n_ch_reports/data/account_financial_html_report_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:371 -msgid "`l10n_be_reports/data/account_financial_html_report_data.xml `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:373 -msgid "You can check the meaning of the fields here:" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:375 -msgid ":doc:`/developer/reference/standard_modules/account/account_report`" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:378 -msgid "If you gave a `root_report_id` to your report, it is now available in its variant selector. If not, you still need to add a menu item for it. A default menu item can be created from the form view of the report by clicking on :menuselection:`Actions --> Create Menu Item`. You will then need to refresh the page to see it. Alternatively, to create a dedicated section for a totally new report in the :guilabel:`Reporting` menu, you need to create a new `ir.ui.menu` record (usually in the main `l10n_XX` module) and a new `ir.actions.client` (usually in the new report XML file) that calls the `account.report` with the new **report id**. Then, set the new menu as `parent_id` field in the action model." -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:388 -msgid "`ir.ui.menu creation `_" -msgstr "" - -#: ../../content/developer/howtos/accounting_localization.rst:389 -msgid "`ir.actions.client and menu item creation `_" -msgstr "" - -#: ../../content/developer/howtos/company.rst:6 -msgid "Multi-company Guidelines" -msgstr "" - -#: ../../content/developer/howtos/company.rst:10 -msgid "This tutorial requires good knowledge of Odoo. Please refer to the :doc:`../tutorials/getting_started` tutorial first if needed." -msgstr "" - -#: ../../content/developer/howtos/company.rst:13 -msgid "As of version 13.0, a user can be logged in multiple companies at once. This allows the user to access information from multiple companies but also to create/edit records in a multi-company environment." -msgstr "" - -#: ../../content/developer/howtos/company.rst:17 -msgid "If not handled correctly, it may be the source of a lot of inconsistent multi-company behaviors. For instance, a user logged in both companies A and B could create a sales order in company A and add products belonging to company B to it. It is only when the user will log out from company B that access errors will occur for the sales order." -msgstr "" - -#: ../../content/developer/howtos/company.rst:22 -msgid "To correctly manage multi-company behaviors, Odoo's ORM provides multiple features:" -msgstr "" - -#: ../../content/developer/howtos/company.rst:24 -msgid ":ref:`Company-dependent fields `" -msgstr "" - -#: ../../content/developer/howtos/company.rst:25 -msgid ":ref:`Multi-company consistency `" -msgstr "" - -#: ../../content/developer/howtos/company.rst:26 -msgid ":ref:`Default company `" -msgstr "" - -#: ../../content/developer/howtos/company.rst:27 -msgid ":ref:`Views `" -msgstr "" - -#: ../../content/developer/howtos/company.rst:28 -msgid ":ref:`Security rules `" -msgstr "" - -#: ../../content/developer/howtos/company.rst:33 -msgid "Company-dependent fields" -msgstr "" - -#: ../../content/developer/howtos/company.rst:35 -msgid "When a record is available from multiple companies, we must expect that different values will be assigned to a given field depending on the company from which the value is set." -msgstr "" - -#: ../../content/developer/howtos/company.rst:38 -msgid "For the field of a same record to support several values, it must be defined with the attribute `company_dependent` set to `True`." -msgstr "" - -#: ../../content/developer/howtos/company.rst:57 -msgid "The `_compute_display_info` method is decorated with `depends_context('company')` (see :attr:`~odoo.api.depends_context`) to ensure that the computed field is recomputed depending on the current company (`self.env.company`)." -msgstr "" - -#: ../../content/developer/howtos/company.rst:61 -msgid "When a company-dependent field is read, the current company is used to retrieve its value. In other words, if a user is logged in companies A and B with A as main company and creates a record for company B, the values of company-dependent fields will be that of company A." -msgstr "" - -#: ../../content/developer/howtos/company.rst:65 -msgid "To read the values of company-dependent fields set from another company than the current one, we need to ensure the company we are using is the correct one. This can be done with :meth:`~odoo.models.Model.with_company`, which updates the current company." -msgstr "" - -#: ../../content/developer/howtos/company.rst:80 -msgid "Whenever you are computing/creating/... things that may behave differently in different companies, you should make sure whatever you are doing is done in the right company. It doesn't cost much to always use `with_company` to avoid problems later on." -msgstr "" - -#: ../../content/developer/howtos/company.rst:101 -msgid "Multi-company consistency" -msgstr "" - -#: ../../content/developer/howtos/company.rst:103 -msgid "When a record is made shareable between several companies by the mean of a `company_id` field, we must take care that it cannot be linked to the record of another company through a relational field. For instance, we do not want to have a sales order and its invoice belonging to different companies." -msgstr "" - -#: ../../content/developer/howtos/company.rst:107 -msgid "To ensure this multi-company consistency, you must:" -msgstr "" - -#: ../../content/developer/howtos/company.rst:109 -msgid "Set the class attribute `_check_company_auto` to `True`." -msgstr "" - -#: ../../content/developer/howtos/company.rst:110 -msgid "Define relational fields with the attribute `check_company` set to `True` if their model has a `company_id` field." -msgstr "" - -#: ../../content/developer/howtos/company.rst:113 -msgid "On each :meth:`~odoo.models.Model.create` and :meth:`~odoo.models.Model.write`, automatic checks will be triggered to ensure the multi-company consistency of the record." -msgstr "" - -#: ../../content/developer/howtos/company.rst:127 -msgid "The field `company_id` must not be defined with `check_company=True`." -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:1 -msgid "Check the companies of the values of the given field names." -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.route:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.update_env:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.csrf_token:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.validate_csrf:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.make_response:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.make_json_response:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.render:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.JsonRPCDispatcher.handle_error:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpDispatcher.handle_error:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response.load:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response.set_cookie:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Field:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Char:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Float:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Binary:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Html:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Image:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Monetary:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Selection:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Text:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.context_today:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2one:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.One2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2many:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Many2oneReference:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.ondelete:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.returns:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.ref:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_company:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.with_env:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.flush_model:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.flush_recordset:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.invalidate_all:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.invalidate_model:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.invalidate_recordset:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.modified:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.write:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search_count:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered_domain:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.sorted:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.grouped:0 -#: ../../../odoo/odoo/exceptions.py:docstring of odoo.exceptions.RedirectWarning:0 -#: ../../../odoo/odoo/tools/profiler.py:docstring of odoo.tools.profiler.Profiler.__init__:0 -#: ../../../odoo/odoo/tools/profiler.py:docstring of odoo.tools.profiler.PeriodicCollector:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.Form:0 -#: ../../../odoo/odoo/addons/base/models/ir_ui_view.py:docstring of odoo.addons.base.models.ir_ui_view.Model.get_views:0 -#: ../../../odoo/odoo/addons/base/models/ir_ui_view.py:docstring of odoo.addons.base.models.ir_ui_view.Model.get_view:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/qweb.rst:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._compute_fees:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_compatible_providers:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_redirect_form_view:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._is_tokenization_required:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._should_build_inline_form:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken._build_display_name:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken._get_specific_create_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._compute_reference:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._compute_reference_prefix:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_create_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_processing_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_rendering_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_tx_from_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._handle_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._process_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._send_refund_request:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_authorized:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_canceled:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_done:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_error:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_pending:0 -msgid "Parameters" -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:3 -msgid "names of relational fields to check" -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response.load:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.company:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.companies:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.ref:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.write:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.unlink:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.ensure_one:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.Form.save:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.O2MProxy.edit:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.O2MProxy.new:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.O2MProxy.remove:0 -#: ../../../odoo/odoo/addons/base/models/ir_ui_view.py:docstring of odoo.addons.base.models.ir_ui_view.Model.get_view:0 -msgid "Raises" -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:4 -msgid "if the `company_id` of the value of any field is not in `[False, self.company_id]` (or `self` if :class:`~odoo.addons.base.models.res_company`)." -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:8 -msgid "For :class:`~odoo.addons.base.models.res_users` relational fields, verifies record company is in `company_ids` fields." -msgstr "" - -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._check_company:11 -msgid "User with main company A, having access to company A and B, could be assigned or linked to records in company B." -msgstr "" - -#: ../../content/developer/howtos/company.rst:132 -msgid "The `check_company` feature performs a strict check ! It means that if a record has no `company_id` (i.e. the field is not required), it cannot be linked to a record whose `company_id` is set." -msgstr "" - -#: ../../content/developer/howtos/company.rst:138 -msgid "When no domain is defined on the field and `check_company` is set to `True`, a default domain is added: `['|', '('company_id', '=', False), ('company_id', '=', company_id)]`" -msgstr "" - -#: ../../content/developer/howtos/company.rst:144 -msgid "Default company" -msgstr "" - -#: ../../content/developer/howtos/company.rst:146 -msgid "When the field `company_id` is made required on a model, a good practice is to set a default company. It eases the setup flow for the user or even guarantees its validity when the company is hidden from the view. Indeed, the company is usually hidden if the user does not have access to multiple companies (i.e. when the user does not have the group `base.group_multi_company`)." -msgstr "" - -#: ../../content/developer/howtos/company.rst:168 -#: ../../content/developer/reference/backend/views.rst:6 -#: ../../content/developer/reference/frontend/javascript_reference.rst:1196 -msgid "Views" -msgstr "" - -#: ../../content/developer/howtos/company.rst:170 -msgid "As stated in :ref:`above `, the company is usually hidden from the view if the user does not have access to multiple companies. This is tested with the group `base.group_multi_company`." -msgstr "" - -#: ../../content/developer/howtos/company.rst:197 -msgid "Security rules" -msgstr "" - -#: ../../content/developer/howtos/company.rst:199 -msgid "When working with records shared across companies or restricted to a single company, we must take care that a user does not have access to records belonging to other companies." -msgstr "" - -#: ../../content/developer/howtos/company.rst:202 -msgid "This is achieved with security rules based on `company_ids`, which contains the current companies of the user (the companies the user checked in the multi-company widget)." -msgstr "" - -#: ../../content/developer/howtos/company.rst:229 -#: ../../content/developer/howtos/provide_iap_services.rst:118 -#: ../../content/developer/howtos/provide_iap_services.rst:222 -#: ../../content/developer/howtos/provide_iap_services.rst:406 -#: ../../content/developer/howtos/provide_iap_services.rst:408 -#: ../../content/developer/howtos/provide_iap_services.rst:511 -#: ../../content/developer/howtos/translations.rst:19 -#: ../../content/developer/reference/backend/actions.rst:176 -#: ../../../odoo/odoo/api.py:docstring of odoo.api:3 -#: ../../content/developer/reference/backend/orm.rst:636 -#: ../../content/developer/reference/backend/orm.rst:638 -#: ../../content/developer/reference/backend/orm.rst:827 -#: ../../content/developer/reference/backend/orm.rst:980 -#: ../../content/developer/reference/backend/security.rst:28 -#: ../../content/developer/reference/backend/security.rst:186 -#: ../../content/developer/reference/backend/views.rst:13 -#: ../../content/developer/reference/backend/views.rst:70 -#: ../../content/developer/reference/backend/views.rst:81 -#: ../../content/developer/reference/backend/views.rst:179 -#: ../../content/developer/reference/backend/views.rst:241 -#: ../../content/developer/reference/backend/views.rst:890 -#: ../../content/developer/reference/backend/views.rst:1014 -#: ../../content/developer/reference/backend/views.rst:1016 -#: ../../content/developer/reference/backend/views.rst:1707 -#: ../../content/developer/reference/backend/views.rst:1807 -#: ../../content/developer/reference/backend/views.rst:1825 -#: ../../content/developer/reference/backend/views.rst:1963 -#: ../../content/developer/reference/frontend/qweb.rst:412 -#: ../../content/developer/reference/frontend/qweb.rst:413 -#: ../../content/developer/reference/frontend/qweb.rst:475 -#: ../../content/developer/reference/frontend/qweb.rst:792 -#: ../../content/developer/tutorials/discover_js_framework/01_components.rst:51 -#: ../../content/developer/tutorials/discover_js_framework/05_custom_kanban_view.rst:5 -#: ../../content/developer/tutorials/web.rst:134 -#: ../../content/developer/tutorials/web.rst:1872 -#: ../../content/developer/tutorials/website.rst:495 -msgid "Todo" -msgstr "" - -#: ../../content/developer/howtos/company.rst:229 -msgid "check_company on company_dependent fields." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:3 -msgid "Connect with a device" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:5 -msgid "IoT Drivers allow any Odoo module to communicate in real-time with any device connected to the IoT Box. Communication with the IoT Box goes both ways, so the Odoo client can send commands to and receive information from any of the supported devices." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:10 -msgid "To add support for a device, all we need is:" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:12 -msgid "an `Interface`, to detect connected devices of a specific type" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:13 -msgid "a `Driver`, to communicate with an individual device" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:15 -msgid "At each boot, the IoT Box will load all of the Interfaces and Drivers that can be located on the connected Odoo instance. Each module can contain an `iot_handlers` directory that will be copied to the IoT Box. The structure of this directory is the following" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:34 -msgid "Detect Devices" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:36 -msgid "Devices connected to the IoT Box are detected through `Interfaces`. There is an Interface for each supported connection type (USB, Bluetooth, Video, Printers, Serial, etc.). The interface maintains a list of detected devices and associates them with the right Driver." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:41 -msgid "Supported devices will appear both on the IoT Box Homepage that you can access through its IP address and in the IoT module of the connected Odoo instance." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:45 -msgid "Interface" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:47 -msgid "The role of the Interface is to maintain a list of devices connected through a determined connection type. Creating a new interface requires" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:50 -msgid "Extending the `Interface` class" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:51 -msgid "Setting the `connection_type` class attribute" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:52 -msgid "Implementing the `get_devices` method, that should return a dictionary containing data about each detected device. This data will be given as argument to the constructors and `supported` method of the Drivers." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:57 -msgid "Setting the `_loop_delay` attribute will modify the interval between calls to `get_devices`. By default, this interval is set to 3 seconds." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:74 -msgid "Driver" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:76 -msgid "Once the interface has retrieved the list of detected devices, it will loop through all of the Drivers that have the same `connection_type` attribute and test their respective `supported` method on all detected devices. If the supported method of a Driver returns `True`, an instance of this Driver will be created for the corresponding device." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:83 -msgid "`supported` methods of drivers are given a priority order. The `supported` method of a child class will always be tested before the one of its parent. This priority can be adjusted by modifying the `priority` attribute of the Driver." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:88 -msgid "Creating a new Driver requires:" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:90 -msgid "Extending `Driver`" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:91 -msgid "Setting the `connection_type` class attribute." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:92 -msgid "Setting the `device_type`, `device_connection` and `device_name` attributes." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:93 -msgid "Defining the `supported` method" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:113 -msgid "Communicate With Devices" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:115 -msgid "Once your new device is detected and appears in the IoT module, the next step is to communicate with it. Since the box only has a local IP address, it can only be reached from the same local network. Communication, therefore, needs to happen on the browser-side, in JavaScript." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:120 -msgid "The process depends on the direction of the communication: - From the browser to the box, through `Actions`_ - From the box to the browser, through `Longpolling`_" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:124 -msgid "Both channels are accessed from the same JS object, the `DeviceProxy`, which is instantiated using the IP of the IoT Box and the device identifier." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:137 -#: ../../content/developer/reference/backend/actions.rst:6 -#: ../../content/developer/tutorials/getting_started/06_firstui.rst:47 -msgid "Actions" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:139 -msgid "Actions are used to tell a selected device to execute a specific action, such as taking a picture, printing a receipt, etc." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:143 -msgid "It must be noted that no “answer” will be sent by the box on this route, only the request status. The answer to the action, if any, has to be retrieved via the longpolling." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:147 -msgid "An action can be performed on the DeviceProxy Object." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:153 -msgid "In your driver, define an `action` method that will be executed when called from an Odoo module. It takes the data given during the call as argument." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:162 -msgid "Longpolling" -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:164 -msgid "When any module in Odoo wants to read data from a specific device, it creates a listener identified by the IP/domain of the box and the device identifier and passes it a callback function to be called every time the device status changes. The callback is called with the new data as argument." -msgstr "" - -#: ../../content/developer/howtos/connect_device.rst:177 -msgid "In the Driver, an event is released by calling the `device_changed` function from the `event_manager`. All callbacks set on the listener will then be called with `self.data` as argument." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:3 -msgid "Provide IAP services" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:5 -msgid "In-App Purchase (IAP) allows providers of ongoing services through Odoo apps to be compensated for ongoing service use rather than — and possibly instead of — a sole initial purchase." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:9 -msgid "In that context, Odoo acts mostly as a *broker* between a client and an Odoo App Developer:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:12 -msgid "Users purchase service tokens from Odoo." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:13 -msgid "Service providers draw tokens from the user's Odoo account when service is requested." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:18 -msgid "This document is intended for *service providers* and presents the latter, which can be done either via direct JSON-RPC2_ or if you are using Odoo using the convenience helpers it provides." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:23 -#: ../../content/developer/reference/frontend/javascript_reference.rst:17 -#: ../../content/developer/reference/frontend/services.rst:144 -#: ../../content/developer/reference/frontend/services.rst:182 -#: ../../content/developer/reference/frontend/services.rst:362 -#: ../../content/developer/reference/frontend/services.rst:408 -#: ../../content/developer/reference/frontend/services.rst:522 -#: ../../content/developer/reference/frontend/services.rst:612 -#: ../../content/developer/reference/frontend/services.rst:708 -#: ../../content/developer/reference/frontend/services.rst:759 -#: ../../content/developer/reference/frontend/services.rst:834 -#: ../../content/developer/reference/user_interface/scss_inheritance.rst:6 -msgid "Overview" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:28 -msgid "The Players" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:30 -msgid "The Service Provider is (probably) you the reader, you will be providing value to the client in the form of a service paid per-use." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:32 -msgid "The Client installed your Odoo App, and from there will request services." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:33 -msgid "Odoo brokers crediting, the Client adds credit to their account, and you can draw credits from there to provide services." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:35 -msgid "The External Service is an optional player: *you* can either provide a service directly, or you can delegate the actual service acting as a bridge/translator between an Odoo system and the actual service." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:43 -msgid "The Credits" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:45 -msgid "The credits went from integer to float value starting **October 2018**. Integer values are still supported." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:48 -msgid "Every service provided through the IAP platform can be used by the clients with tokens or *credits*. The credits are an float unit and their monetary value depends on the service and is decided by the provider. This could be:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:53 -msgid "for an sms service: 1 credit = 1 sms;" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:54 -msgid "for an ad service: 1 credit = 1 ad; or" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:55 -msgid "for a postage service: 1 credit = 1 post stamp." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:57 -msgid "A credit can also simply be associated with a fixed amount of money to palliate the variations of price (e.g. the prices of sms and stamps may vary following the countries)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:61 -msgid "The value of the credits is fixed with the help of prepaid credit packs that the clients can buy on https://iap.odoo.com (see :ref:`Packs `)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:64 -msgid "In the following explanations we will ignore the External Service, they are just a detail of the service you provide." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:70 -msgid "'Normal' service flow" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:72 -msgid "If everything goes well, the normal flow is the following:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:74 -msgid "The Client requests a service of some sort." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:75 -msgid "The Service Provider asks Odoo if there are enough credits for the service in the Client's account, and creates a transaction over that amount." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:78 -msgid "The Service Provider provides the service (either on their own or calling to External Services)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:80 -msgid "The Service Provider goes back to Odoo to capture (if the service could be provided) or cancel (if the service could not be provided) the transaction created at step 2." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:83 -msgid "Finally, the Service Provider notifies the Client that the service has been rendered, possibly (depending on the service) displaying or storing its results in the client's system." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:90 -msgid "Insufficient credits" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:92 -msgid "However, if the Client's account lacks credits for the service, the flow will be as follows:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:94 -msgid "The Client requests a service as previously." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:95 -msgid "The Service Provider asks Odoo if there are enough credits on the Client's account and gets a negative reply." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:97 -msgid "This is signaled back to the Client." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:98 -msgid "Who is redirected to their Odoo account to credit it and re-try." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:102 -msgid "Building your service" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:104 -msgid "For this example, the service we will provide is ~~mining dogecoins~~ burning 10 seconds of CPU for a credit. For your own services, you could, for example:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:107 -msgid "provide an online service yourself (e.g. convert quotations to faxes for business in Japan);" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:109 -msgid "provide an *offline* service yourself (e.g. provide accountancy service); or" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:110 -msgid "act as intermediary to an other service provider (e.g. bridge to an MMS gateway)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:116 -msgid "Register the service on Odoo" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:118 -msgid "complete this part with screenshots" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:120 -msgid "The first step is to register your service on the IAP endpoint (production and/or test) before you can actually query user accounts. To create a service, go to your *Portal Account* on the IAP endpoint (https://iap.odoo.com for production, https://iap-sandbox.odoo.com for testing, the endpoints are *independent* and *not synchronized*). Alternatively, you can go to your portal on Odoo (https://iap.odoo.com/my/home) and select *In-App Services*." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:129 -msgid "On production, there is a manual validation step before the service can be used to manage real transactions. This step is automatically passed when on sandbox to ease the tests." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:133 -msgid "Log in then go to :menuselection:`My Account --> Your In-App Services`, click Create and provide the information of your service." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:137 -msgid "The service has *seven* important fields:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:139 -msgid ":samp:`name` - :class:`ServiceName`: This is the string you will need to provide inside the client's :ref:`app ` when requesting a transaction from Odoo. (e.g. `self.env['iap.account].get(name)`). As good practice, this should match the technical name of your app." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:144 -msgid ":samp:`label` - :class:`Label`: The name displayed on the shopping portal for the client." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:149 -msgid "Both the :class:`ServiceName` and :class:`Label` are unique. As good practice, the :class:`ServiceName` should usually match the name of your Odoo Client App." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:152 -msgid ":samp:`icon` - :class:`Icon`: A generic icon that will serve as default for your :ref:`packs `." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:155 -msgid ":samp:`key` - :class:`ServiceKey`: The developer key that identifies you in IAP (see :ref:`your service `) and allows to draw credits from the client's account. It will be shown only once upon creation of the service and can be regenerated at will." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:161 -msgid "Your :class:`ServiceKey` *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:165 -msgid ":samp:`trial credits` - :class:`Float`: This corresponds to the credits you are ready to offer upon first use to your app users. Note that such service will only be available to clients that have an active enterprise contract." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:169 -msgid ":samp:`privacy policy` - :class:`PrivacyPolicy`: This is an url to the privacy policy of your service. This should explicitly mention the **information you collect**, how you **use it, its relevance** to make your service work and inform the client on how they can **access, update or delete their personal information**." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:186 -msgid "You can then create *credit packs* which clients can purchase in order to use your service." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:192 -msgid "Packs" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:194 -msgid "A credit pack is essentially a product with five characteristics:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:196 -msgid "Name: name of the pack," -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:197 -msgid "Icon: specific icon for the pack (if not provided, it will fallback on the service icon)," -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:198 -msgid "Description: details on the pack that will appear on the shop page as well as the invoice," -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:200 -msgid "Amount: amount of credits the client is entitled to when buying the pack," -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:201 -msgid "Price: price in EUR (for the time being, USD support is planned)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:205 -msgid "Odoo takes a 25% commission on all pack sales. Adjust your selling price accordingly." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:210 -msgid "Depending on the strategy, the price per credit may vary from one pack to another." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:220 -msgid "Odoo App" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:222 -msgid "does this actually require apps?" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:224 -msgid "The second step is to develop an `Odoo App`_ which clients can install in their Odoo instance and through which they can *request* the services you provide. Our app will just add a button to the Partners form which lets a user request burning some CPU time on the server." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:229 -msgid "First, we will create an *odoo module* depending on ``iap``. IAP is a standard V11 module and the dependency ensures a local account is properly set up and we will have access to some necessary views and useful helpers." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:233 -#: ../../content/developer/howtos/provide_iap_services.rst:248 -msgid "`coalroller/__manifest__.py`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:243 -msgid "Second, the \"local\" side of the integration. Here we will only be adding an action button to the partners view, but you can of course provide significant local value via your application and additional parts via a remote service." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:261 -msgid "`coalroller/views/res_partner_views.xml`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:286 -msgid "We can now implement the action method/callback. This will *call our own server*." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:289 -msgid "There are no requirements when it comes to the server or the communication protocol between the app and our server, but ``iap`` provides a :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` helper to call a JSON-RPC2_ endpoint on an other Odoo instance and transparently re-raise relevant Odoo exceptions (:class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError`, :class:`odoo.exceptions.AccessError` and :class:`odoo.exceptions.UserError`)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:296 -msgid "In that call, we will need to provide:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:298 -msgid "any relevant client parameter (none here)," -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:299 -msgid "the :class:`token ` of the current client that is provided by the ``iap.account`` model's ``account_token`` field. You can retrieve the account for your service by calling :samp:`env['iap.account'].get({service_name})` where :class:`service_name ` is the name of the service registered on IAP endpoint." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:305 -msgid "`coalroller/models/res_partner.py`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:333 -msgid "``iap`` automatically handles :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` coming from the action and prompts the user to add credits to their account." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:337 -msgid ":func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` takes care of re-raising :class:`~odoo.addons.iap.models.iap.InsufficientCreditError` for you." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:342 -msgid "If you are not using :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc` you *must* be careful to re-raise :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` in your handler otherwise the user will not be prompted to credit their account, and the next call will fail the same way." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:351 -#: ../../content/developer/reference/frontend/javascript_reference.rst:876 -msgid "Service" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:353 -msgid "Though that is not *required*, since ``iap`` provides both a client helper for JSON-RPC2_ calls (:func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`) and a service helper for transactions (:class:`~odoo.addons.iap.tools.iap_tools.iap_charge`) we will also be implementing the service side as an Odoo module:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:358 -#: ../../content/developer/howtos/provide_iap_services.rst:448 -msgid "`coalroller_service/__manifest__.py`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:368 -msgid "Since the query from the client comes as JSON-RPC2_ we will need the corresponding controller which can call :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` and perform the service within:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:372 -#: ../../content/developer/howtos/provide_iap_services.rst:461 -msgid "`coalroller_service/controllers/main.py`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:406 -msgid "for the actual IAP will the \"portal\" page be on odoo.com or iap.odoo.com?" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:408 -msgid "\"My Account\" > \"Your InApp Services\"?" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:411 -msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper will:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:413 -msgid "authorize (create) a transaction with the specified number of credits, if the account does not have enough credits it will raise the relevant error" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:416 -msgid "execute the body of the ``with`` statement" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:417 -msgid "if the body of the ``with`` executes successfully, update the price of the transaction if needed" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:419 -msgid "capture (confirm) the transaction" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:420 -msgid "otherwise, if an error is raised from the body of the ``with``, cancel the transaction (and release the hold on the credits)" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:425 -msgid "By default, :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` contacts the *production* IAP endpoint, https://iap.odoo.com. While developing and testing your service you may want to point it towards the *development* IAP endpoint https://iap-sandbox.odoo.com." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:430 -msgid "To do so, set the ``iap.endpoint`` config parameter in your service Odoo: in debug/developer mode, :menuselection:`Setting --> Technical --> Parameters --> System Parameters`, just define an entry for the key ``iap.endpoint`` if none already exists)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:435 -msgid "The :class:`~odoo.addons.iap.tools.iap_tools.iap_charge` helper has two additional optional parameters we can use to make things clearer to the end-user." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:440 -#: ../../content/developer/reference/backend/reports.rst:198 -msgid "``description``" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:439 -msgid "is a message which will be associated with the transaction and will be displayed in the user's dashboard, it is useful to remind the user why the charge exists." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:446 -msgid "``credit_template``" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:443 -msgid "is the name of a :ref:`reference/qweb` template which will be rendered and shown to the user if their account has less credit available than the service provider is requesting, its purpose is to tell your users why they should be interested in your IAP offers." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:488 -msgid "`coalroller_service/views/no-credit.xml`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:511 -msgid "how do you test your service?" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:514 -msgid "JSON-RPC2_ Transaction API" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:519 -msgid "The IAP transaction API does not require using Odoo when implementing your server gateway, calls are standard JSON-RPC2_." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:521 -msgid "Calls use different *endpoints* but the same *method* on all endpoints (``call``)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:523 -msgid "Exceptions are returned as JSON-RPC2_ errors, the formal exception name is available on ``data.name`` for programmatic manipulation." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:526 -msgid "`iap.odoo.com documentation`_ for additional information." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:529 -#: ../../content/developer/howtos/provide_iap_services.rst:775 -msgid "Authorize" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:533 -msgid "Verifies that the user's account has at least as ``credit`` available *and creates a hold (pending transaction) on that amount*." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:536 -msgid "Any amount currently on hold by a pending transaction is considered unavailable to further authorize calls." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:539 -msgid "Returns a :class:`TransactionToken` identifying the pending transaction which can be used to capture (confirm) or cancel said transaction (`iap.odoo.com documentation`_)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:545 -msgid "optional, helps users identify the reason for charges on their account" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:547 -msgid "optional, allows the user to benefit from trial credits if his database is eligible (see :ref:`Service registration `)" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:549 -msgid "optional, transaction time to live in hours. If the credit are not captured when the transaction expires, the transaction is cancelled. The default value is set to 4320 hours (= 180 days)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.csrf_token:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.validate_csrf:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.default_lang:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.get_http_params:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Request.make_response:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.JsonRPCDispatcher.handle_error:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.HttpDispatcher.handle_error:0 -#: ../../../odoo/odoo/http.py:docstring of odoo.http.Response.load:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../content/developer/reference/backend/mixins.rst:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_date:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Date.to_string:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.add:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.context_timestamp:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.end_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.start_of:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.tools.date_utils.subtract:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_datetime:0 -#: ../../../odoo/odoo/fields.py:docstring of odoo.fields.Datetime.to_string:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.user:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.company:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.companies:0 -#: ../../../odoo/odoo/api.py:docstring of odoo.api.Environment.ref:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.copy:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.default_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_create:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.browse:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_search:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.read_group:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.fields_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.name_get:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.get_metadata:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.filtered:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel.mapped:0 -#: ../../../odoo/odoo/models.py:docstring of odoo.models.BaseModel._populate_factories:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.cartesian:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.compute:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.constant:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.iterate:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randint:0 -#: ../../../odoo/odoo/tools/populate.py:docstring of odoo.tools.populate.randomize:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.browse_ref:0 -#: ../../../odoo/odoo/tests/common.py:docstring of odoo.tests.common.BaseCase.ref:0 -#: ../../../odoo/odoo/addons/base/models/ir_ui_view.py:docstring of odoo.addons.base.models.ir_ui_view.Model.get_views:0 -#: ../../../odoo/odoo/addons/base/models/ir_ui_view.py:docstring of odoo.addons.base.models.ir_ui_view.Model.get_view:0 -#: ../../content/developer/reference/frontend/assets.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/framework_overview.rst:0 -#: ../../content/developer/reference/frontend/hooks.rst:0 -#: ../../content/developer/reference/frontend/javascript_reference.rst:0 -#: ../../content/developer/reference/frontend/javascript_reference.rst:0 -#: ../../content/developer/reference/frontend/javascript_reference.rst:0 -#: ../../content/developer/reference/frontend/mobile.rst:0 -#: ../../content/developer/reference/frontend/mobile.rst:0 -#: ../../content/developer/reference/frontend/qweb.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/registries.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../content/developer/reference/frontend/services.rst:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._compute_feature_support_fields:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._compute_fees:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._compute_view_configuration_fields:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_compatible_providers:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_redirect_form_view:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_validation_amount:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_validation_currency:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._is_tokenization_required:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._should_build_inline_form:0 -#: ../../../odoo/addons/payment/models/payment_provider.py:docstring of odoo.addons.payment.models.payment_provider.PaymentProvider._get_removal_values:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken._build_display_name:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken._get_specific_create_values:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken._handle_archiving:0 -#: ../../../odoo/addons/payment/models/payment_token.py:docstring of odoo.addons.payment.models.payment_token.PaymentToken.get_linked_records_info:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._compute_reference:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._compute_reference_prefix:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_post_processing_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_create_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_processing_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_specific_rendering_values:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._get_tx_from_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._handle_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._process_notification_data:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._send_capture_request:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._send_payment_request:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._send_refund_request:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._send_void_request:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_authorized:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_canceled:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_done:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_error:0 -#: ../../../odoo/addons/payment/models/payment_transaction.py:docstring of odoo.addons.payment.models.payment_transaction.PaymentTransaction._set_pending:0 -msgid "Returns" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:551 -msgid ":class:`TransactionToken` if the authorization succeeded" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -#: ../../content/developer/howtos/provide_iap_services.rst:0 -msgid "raises" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:552 -msgid ":class:`~odoo.exceptions.AccessError` if the service token is invalid" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:553 -msgid ":class:`~odoo.addons.iap.models.iap.InsufficientCreditError` if the account does not have enough credits" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:554 -msgid "``TypeError`` if the ``credit`` value is not an integer or a float" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:577 -#: ../../content/developer/howtos/provide_iap_services.rst:855 -msgid "Capture" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:581 -msgid "Confirms the specified transaction, transferring the reserved credits from the user's account to the service provider's." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:584 -msgid "Capture calls are idempotent: performing capture calls on an already captured transaction has no further effect." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:589 -msgid "optional parameter to capture a smaller amount of credits than authorized" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:590 -#: ../../content/developer/howtos/provide_iap_services.rst:622 -msgid ":class:`~odoo.exceptions.AccessError`" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:610 -#: ../../content/developer/howtos/provide_iap_services.rst:817 -msgid "Cancel" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:614 -msgid "Cancels the specified transaction, releasing the hold on the user's credits." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:617 -msgid "Cancel calls are idempotent: performing capture calls on an already cancelled transaction has no further effect." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:640 -#: ../../content/developer/tutorials/getting_started/04_basicmodel.rst:127 -msgid "Types" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:642 -msgid "Exceptions aside, these are *abstract types* used for clarity, you should not care how they are implemented." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:647 -msgid "String identifying your service on https://iap.odoo.com (production) as well as the account related to your service in the client's database." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:652 -msgid "Identifier generated for the provider's service. Each key (and service) matches a token of a fixed value, as generated by the service provide." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:655 -msgid "Multiple types of tokens correspond to multiple services. As an exampe, SMS and MMS could either be the same service (with an MMS being 'worth' multiple SMS) or could be separate services at separate price points." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:659 -msgid "Your service key *is a secret*, leaking your service key allows other application developers to draw credits bought for your service(s)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:665 -msgid "Identifier for a user account." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:669 -msgid "Transaction identifier, returned by the authorization process and consumed by either capturing or cancelling the transaction." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:674 -msgid "Raised during transaction authorization if the credits requested are not currently available on the account (either not enough credits or too many pending transactions/existing holds)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:681 -msgid "Raised by:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:683 -msgid "any operation to which a service token is required, if the service token is invalid; or" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:684 -msgid "any failure in an inter-server call. (typically, in :func:`~odoo.addons.iap.tools.iap_tools.iap_jsonrpc`)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:689 -msgid "Raised by any unexpected behaviour at the discretion of the App developer (*you*)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:693 -msgid "Test the API" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:695 -msgid "In order to test the developed app, we propose a sandbox platform that allows you to:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:697 -msgid "Test the whole flow from the client's point of view - Actual services and transactions that can be consulted. (again this requires to change the endpoint, see the danger note in :ref:`Service `)." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:700 -msgid "Test the API." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:702 -msgid "The latter consists in specific tokens that will work on **IAP-Sandbox only**." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:704 -msgid "Token ``000000``: Represents a non-existing account. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:706 -msgid "Token ``000111``: Represents an account without sufficient credits to perform any service. Returns an :class:`~odoo.addons.iap.tools.iap_tools.InsufficientCreditError` on authorize attempt." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:708 -msgid "Token ``111111``: Represents an account with enough credits to perform any service. An authorize attempt will return a dummy transaction token that is processed by the capture and cancel routes." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:714 -msgid "Those tokens are only active on the IAP-Sanbox server." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:715 -msgid "The service key is completely ignored with this flow, If you want to run a robust test of your service, you should ignore these tokens." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:719 -msgid "Odoo Helpers" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:721 -msgid "For convenience, if you are implementing your service using Odoo the ``iap`` module provides a few helpers to make IAP flow even simpler." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:727 -msgid "Charging" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:731 -msgid "A *context manager* for authorizing and automatically capturing or cancelling transactions for use in the backend/proxy." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:734 -msgid "Works much like e.g. a cursor context manager:" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:736 -msgid "immediately authorizes a transaction with the specified parameters;" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:737 -msgid "executes the ``with`` body;" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:738 -msgid "if the body executes in full without error, captures the transaction;" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:739 -msgid "otherwise cancels it." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:741 -#: ../../content/developer/howtos/provide_iap_services.rst:781 -#: ../../content/developer/howtos/provide_iap_services.rst:823 -#: ../../content/developer/howtos/provide_iap_services.rst:861 -msgid "used to retrieve the ``iap.endpoint`` configuration key" -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:779 -msgid "Will authorize everything." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:821 -msgid "Will cancel an authorized transaction." -msgstr "" - -#: ../../content/developer/howtos/provide_iap_services.rst:859 -msgid "Will capture the amount ``credit`` on the given transaction." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:3 -msgid "Write lean easy-to-maintain CSS" -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:5 -msgid "There are many ways to lean and simplify SCSS. The first step is to establish if custom code is needed at all." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:8 -msgid "Odoo's webclient has been designed to be modular, meaning that (potentially all) classes can be shared across views. Check the code before creating a new class. Chances are that there is already a class or an HTML tag doing exactly what you're looking for." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:12 -msgid "On top of that, Odoo relies on `Bootstrap `_ (BS), one of the most complete CSS frameworks available. The framework has been customized in order to match Odoo's design (both community and enterprise versions), meaning that you can use any BS class directly in Odoo and achieve a visual result that is consistent with our UI." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:19 -msgid "The fact that a class achieves the desired visual result doesn't necessarily mean that it's the right one for the job. Be aware of classes triggering JS behaviors, for example." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:21 -msgid "Be careful about class semantics. Applying a **button class** to a **title** is not only semantically wrong, it may also lead to migration issues and visual inconsistencies." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:24 -msgid "The following sections describe tips to strip-down SCSS lines **when custom-code is the only way to go**." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:30 -msgid "Browser defaults" -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:32 -msgid "By default, each browser renders content using a *user agent stylesheet*. To overcome inconsistencies between browsers, some of these rules are overridden by `Bootstrap Reboot `_." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:36 -msgid "At this stage all \"browser-specific-decoration\" rules have been stripped away, but a big chunk of rules defining basic layout information is maintained (or reinforced by *Reboot* for consistency reasons)." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:40 -msgid "You can rely on these rules." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:44 -msgid "Applying `display: block;` to a `
` is normally not necessary." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:55 -msgid "In this instance, you may opt to switching the HTML tag rather than adding a new CSS rule." -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:65 -msgid "Here's a non-comprehensive list of default rules:" -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:70 -msgid "Tag / Attribute" -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:71 -msgid "Defaults" -msgstr "" - -#: ../../content/developer/howtos/scss_tips.rst:72 -msgid "`
`, `
`, `
`, `