Compare commits

...

11 Commits

Author SHA1 Message Date
Michael (mcm) dc7681af00 [IMP] web: update documentation of patch function
This commit updates the documentation of the patch function
with the changes done in https://github.com/odoo/odoo/pull/125716.
2023-08-03 12:38:53 +02:00
tiku-odoo 7e29da60b9 [IMP] Misc: Oauth Azure
closes odoo/documentation#5041

closes odoo/documentation#5255

X-original-commit: 66b2a3d50e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-08-03 00:33:44 +02:00
John Holton (hojo) 8edb63948c [IMP] Inventory: Update Multi-package shipments doc
closes odoo/documentation#5246

X-original-commit: 7df2d749a8
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-08-02 11:16:53 +02:00
“Chiara 76c781226d [ADD] l10n: saudi arabia e-invoicing
task-3422500

closes odoo/documentation#5233

X-original-commit: 24ff6624bb
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-07-28 23:16:34 +02:00
Martin Trigaux fd4065b3c6 [I18N] *: export translations
closes odoo/documentation#5223

X-original-commit: 013da823cc
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-07-28 10:33:22 +02:00
Xavier (XPL) b755d0330e [IMP] payments: update ACH section content to match 16.0
closes odoo/documentation#5216

X-original-commit: 992fc9f4d6
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-07-27 03:50:48 +02:00
Xavier (XPL) b5dbf4779a [IMP] accounting: year-end closing
task-2823858

closes odoo/documentation#5211

X-original-commit: 8c03442791
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-07-26 16:11:49 +02:00
Victor Feyens db05d69be6 [IMP] accounting: new behavior of the sepa provider
Sepa mandates are not automatically confirmed anymore,
customers have to make one successful bank transfer
matching the expected payment details to confirm
their mandate.

See https://github.com/odoo/odoo/commit/fd2fb212c50952ca5a8e162ba5d82ce433cd5989
See https://github.com/odoo/enterprise/commit/9b729b157b6978e10fbbed45052226f150e5559f

closes odoo/documentation#5201

X-original-commit: bc1cf93455
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-07-26 13:22:07 +02:00
Donatienne Pirlot c795231f1c [ADD] elearning: creating a new elearning doc page
To add updated information related to the elearning app

closes odoo/documentation#5155

Id: 3251391
X-original-commit: 2e9c99c941
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-07-26 08:08:02 +02:00
Xavier (XPL) 5114140efe [IMP] payments: add section about ACH payments
task-3303591

closes odoo/documentation#5198

X-original-commit: 0155844ef5
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-07-25 21:22:56 +02:00
Levi Siuzdak (sile) dd7ab18b9e [IMP] developer: add notes on entity references & fix illegal XML
Using `<` inside XML elements will result in a parsing error,
an entity reference should be used instead: `&lt;`.

closes odoo/documentation#5184

X-original-commit: a7743d513b
Signed-off-by: Levi Siuzdak (sile) <sile@odoo.com>
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-07-24 23:04:05 +02:00
54 changed files with 1801 additions and 1049 deletions
@@ -85,6 +85,8 @@ You can edit the accounting information and bank account number according to you
- :doc:`get_started/multi_currency`
- :doc:`bank/transactions`
.. _bank_accounts/suspense:
Suspense account
----------------
@@ -91,7 +91,7 @@ Batch Payment`.
- :doc:`payments/batch`
- :doc:`payments/batch_sdd`
.. _payments-matching:
.. _payments/matching:
Payments matching
-----------------
@@ -50,17 +50,16 @@ SEPA Direct Debit as a payment method
-------------------------------------
SDD can be used as a payment method both on your **eCommerce** or on the **Customer Portal** by
activating SDD as a **Payment Provider**. With this method, your customers can create and sign their
mandates themselves.
activating SDD as a **Payment Provider**. With this method, your customers can create their mandates.
To ensure the validity of the information given by the customer, they will have to confirm each
mandate with one successful bank transfer of the expected amount.
To do so, go to :menuselection:`Accounting --> Configuration --> Payment Providers`, click on *SEPA
Direct Debit*, and set it up according to your needs.
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Acquirers`, click on
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Providers`, click on
:guilabel:`SEPA Direct Debit`.
.. important::
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled`, and to check
:guilabel:`Online Signature`, as this is necessary to let your customers sign their mandates.
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled` and set the provider as
"Published" so that it is available for your customers.
Customers using SDD as payment method get prompted to add their IBAN, email address, and to sign
their SEPA Direct Debit mandate.
@@ -30,6 +30,8 @@ you want to compare the chosen time period with. You can choose up to 12
periods back from the date of the report if you don't want to use the
default **Previous 1 Period** option.
.. _reporting/balance-sheet:
Balance Sheet
-------------
@@ -103,6 +105,8 @@ occurred during a certain period of time.
.. image:: reporting/main_reports05.png
.. _reporting/aged-payable:
Aged Payable
------------
@@ -112,6 +116,8 @@ have gone unpaid.
.. image:: reporting/main_reports02.png
.. _reporting/aged-receivable:
Aged Receivable
---------------
@@ -129,6 +135,8 @@ operating, investing and financing activities.
.. image:: reporting/main_reports03.png
.. _reporting/tax-report:
Tax Report
----------
@@ -2,115 +2,111 @@
Year-end closing
================
Before going ahead with closing a fiscal year, there are a few steps one
should typically take to ensure that your accounting is correct, up to
date, and accurate:
- Make sure you have fully reconciled your **bank account(s)** up to
year end and confirm that your ending book balances agree with
your bank statement balances.
- Verify that all **customer invoices** have been entered and approved.
- Confirm that you have entered and agreed all **vendor bills**.
- Validate all **expenses**, ensuring their accuracy.
- Corroborate that all **received payments** have been entered and
recorded accurately.
Year-end closing is vital for maintaining financial accuracy, complying with regulations, making
informed decisions, and ensuring transparency in reporting.
.. _year-end/fiscal-years:
Manage fiscal years
===================
Fiscal years
============
In most cases, the fiscal years last 12 months. If it is your case, you
just have to define what is the last day of your fiscal year in the
accounting settings. By default, it is set on the 31st December.
By default, the fiscal year is set to last 12 months and end on December 31st. However, its duration
and end date can vary due to cultural, administrative, and economic considerations.
However, there might be some exceptions. For example, if it is the first
fiscal year of your business, it could last more or less than 12 months.
In this case, some additional configuration is required.
To modify these values, go to :menuselection:`Accounting --> Configuration --> Settings`. Under the
:guilabel:`Fiscal Periods` section, change the :guilabel:`Last Day` field if necessary.
Go to :menuselection:`accounting --> configuration --> settings` and activate
the fiscal years.
You can then configure your fiscal years in
:menuselection:`accounting --> configuration --> fiscal years`.
If the period lasts *more* than or *less* than 12 months, enable :guilabel:`Fiscal Years` and
:guilabel:`Save`. Go back to the :guilabel:`Fiscal Periods` section and click :guilabel:`➜ Fiscal
Years`. From there, click :guilabel:`Create`, give it a :guilabel:`Name`, and both a
:guilabel:`Start Date` and :guilabel:`End Date`.
.. note::
You only have to create fiscal years if they last more or less
than 12 months.
Once the set fiscal period is over, Odoo automatically reverts to the default periodicity, taking
into account the value specified in the :guilabel:`Last Day` field.
.. _year-end/checklist:
Year-end checklist
==================
- Run a **Tax report**, and verify that your tax information is correct.
Before closure
--------------
- Reconcile all accounts on your **Balance Sheet**:
Before closing a fiscal year, ensure first everything is accurate and up-to-date:
- Agree your bank balances in Odoo against your actual bank balances
on your statements. Utilize the **Bank Reconciliation** report to
assist with this.
- Make sure all bank accounts are fully :doc:`reconciled <../bank/reconciliation>` up to year-end,
and confirm that the ending book balances match the bank statement balances.
- Verify that all :doc:`customer invoices <../customer_invoices>` have been entered and
approved and that there are no draft invoices.
- Confirm that all :doc:`vendor bills <../vendor_bills>` have been entered and agreed upon.
- Validate all :doc:`expenses <../../expenses>`, ensuring their accuracy.
- Corroborate that all :doc:`received payments <../payments>` have been encoded and recorded
accurately.
- Close all :ref:`suspense accounts <bank_accounts/suspense>`.
- Book all :doc:`depreciation <../vendor_bills/assets>` and :doc:`deferred revenue
<../customer_invoices/deferred_revenues>` entries.
- Reconcile all transactions in your cash and bank accounts by
running your **Aged Receivables** and **Aged Payables** reports.
Closing a fiscal year
---------------------
- Audit your accounts, being sure to fully understand the
transactions affecting them and the nature of the
transactions, making sure to include loans and fixed assets.
Then, to close the fiscal year:
- Run the optional **Payments Matching** feature, under the **More**
dropdown on the dashboard, validating any open **Vendor Bills** and
**Customer Invoices** with their payments. This step is optional,
however it may assist the year-end process if all outstanding
payments and invoices are reconciled, and could lead finding
errors or mistakes in the system.
- Run a :ref:`tax report <reporting/tax-report>`, and verify that all tax information is correct.
- Reconcile all accounts on the :ref:`balance sheet <reporting/balance-sheet>`:
- Your accountant/bookkeeper will likely verify your balance sheet
items and book entries for:
- Update the bank balances in Odoo according to the actual balances found on the bank statements.
- Reconcile all transactions in the cash and bank accounts by running the :ref:`aged receivables
<reporting/aged-receivable>` and :ref:`aged payables <reporting/aged-payable>` reports.
- Audit all accounts, being sure to fully understand all transactions and their nature, making
sure to include loans and fixed assets.
- Optionally, run :ref:`payments matching <payments/matching>` to validate any open vendor bills
and customer invoices with their payments. While this step is optional, it could assist the
year-end closing process if all outstanding payments and invoices are reconciled, potentially
finding errors or mistakes in the system.
- Year-end manual adjustments, using the **Adviser Journal Entries**
menu (For example, the **Current Year Earnings** and **Retained
Earnings** reports).
Next, the accountant likely verifies balance sheet items and book entries for:
- **Work in Progress**.
- year-end manual adjustments,
- work in progress,
- depreciation journal entries,
- loans,
- tax adjustments,
- etc.
- **Depreciation Journal Entries**.
If the accountant is going through the year-end audit, they may want to have paper copies of all
balance sheet items (such as loans, bank accounts, prepayments, sales tax statements, etc.) to
compare these with the balances in Odoo.
- **Loans**.
.. tip::
During this process, it is good practice to set a :guilabel:`Journal Entries Lock Date` to the
last day (inclusive) of the preceding fiscal year by going to :menuselection:`Accounting -->
Accounting --> Lock Dates`. This way, the accountant can be confident that nobody changes the
transactions while auditing the books. Users from the *accountant* access group can still create
and modify entries.
- **Tax adjustments**.
Current year's earnings
~~~~~~~~~~~~~~~~~~~~~~~
If your accountant/bookkeeper is going through end of the year auditing,
they may want to have paper copies of all balance sheet items (such as
loans, bank accounts, prepayments, sales tax statements, etc...) to
agree these against your Odoo balances.
Odoo uses a unique account type called **current year's earnings** to display the amount difference
between the **income** and **expenses** accounts.
During this process, it is good practice to set the **Lock date for
Non-Advisers** to the last day of the preceding financial year, which is
set under the accounting configuration. This way, the accountant can be
confident that nobody is changing the previous year transactions
while auditing the books.
.. note::
The chart of accounts can only contain one account of this type. By default, it is a 999999
account named :guilabel:`Undistributed Profits/Losses`.
.. image:: year_end/close_fiscal_year01.png
To allocate the current year's earnings, create a miscellaneous entry to book them to any equity
account. Once done, confirm whether or not the current year's earnings in the **balance sheet** is
correctly reporting a balance of zero. If that is the case, set an :guilabel:`All Users Lock Date`
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
Dates`.
.. _year-end/closing:
.. warning::
Setting an :guilabel:`All Users Lock Date` is **irreversible** and cannot be removed.
Closing the fiscal year
=======================
In Odoo there is no need to do a specific year end closing entry in order to
close out income statement accounts. The reports are created in
real-time, meaning that the **Income statement** corresponds directly with
the year-end date you specify in Odoo. Therefore, any time you generate
the **Income Statement**, the beginning date will correspond with the
beginning of the **Fiscal Year** and the account balances will all be 0.
Once the accountant/bookkeeper has created the journal entry to allocate
the **Current Year Earnings**, you should set the **Lock Date** to the last day
of the fiscal year. Making sure that before doing so, you confirm
whether or not the current year earnings in the **Balance Sheet** is
correctly reporting a 0 balance.
.. note::
A specific year-end closing entry is **optional** in order to close out the **profit and loss
statement**. The reports are created in real-time, meaning that the profit and loss statement
corresponds directly with the year-end date specified in Odoo. Therefore, any time the **income
statement** is generated, the beginning date corresponds with the beginning of the **fiscal
year** and all account balances should equal zero.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

@@ -37,7 +37,7 @@ appropriately completed:
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
information, previous purchase orders, or bills.
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
the :ref:`matching <payments-matching>` when you receive the products.
the :ref:`matching <payments/matching>` when you receive the products.
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
- :guilabel:`Bill Date`: is the issuance date of the document.
@@ -107,7 +107,7 @@ available on Odoo.
- Poland - Accounting
- Portugal - Accounting
- Romania - Accounting
- Saudi Arabia - Accounting
- :doc:`Saudi Arabia - Accounting <fiscal_localizations/saudi_arabia>`
- :doc:`Singapore - Accounting <fiscal_localizations/singapore>`
- Slovak - Accounting
- Slovenian - Accounting
@@ -148,6 +148,7 @@ available on Odoo.
fiscal_localizations/mexico
fiscal_localizations/netherlands
fiscal_localizations/peru
fiscal_localizations/saudi_arabia
fiscal_localizations/singapore
fiscal_localizations/spain
fiscal_localizations/switzerland
@@ -0,0 +1,142 @@
============
Saudi Arabia
============
Configuration
=============
:ref:`Install <general/install>` the following modules to get all the features of the Saudi Arabian
localization:
.. list-table::
:header-rows: 1
:stub-columns: 1
* - Name
- Technical name
- Description
* - Saudi Arabia - Accounting
- `l10n_sa`
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`
* - Saudi Arabia - E-invoicing
- `l10n_sa_edi`
- ZATCA e-invoices implementation
* - Saudi Arabia - Point of Sale
- `l10n_sa_pos`
- Point of Sale compliance
ZATCA e-invoices
================
The ZATCA e-invoicing system is designed to streamline and digitize the invoicing process for
businesses operating in Saudi Arabia.
.. seealso::
`ZATCA e-invoicing page <https://zatca.gov.sa/en/E-Invoicing/Pages/default.aspx>`_
Company information
-------------------
Go to :menuselection:`Settings --> General Settings --> Companies`, click :guilabel:`Update info`,
and ensure the following company information is complete and up-to-date.
- The full :guilabel:`Company Name`.
- All relevant :guilabel:`Address` fields, including the :guilabel:`Building Number` and
:guilabel:`Plot Identification` (four digits each).
- Select an enterprise :guilabel:`Identification Scheme`. It is recommended to use the
:guilabel:`Commercial Registration Number`.
- Enter the :guilabel:`Identification Number` for the selected :guilabel:`Identification Scheme`.
- The :guilabel:`VAT` number.
- Ensure the :guilabel:`Currency` is set to :guilabel:`SAR`.
.. note::
It is also necessary to fill out similar information for partner companies.
Simulation mode
---------------
.. important::
It is strongly recommended to thoroughly test all invoicing workflows using the Fatoora
**simulation** portal first, as **any** invoice submitted to the regular Fatoora portal will be
accounted for, which could lead to fines and penalties.
Fatoora simulation portal
~~~~~~~~~~~~~~~~~~~~~~~~~
Log in on the `Fatoora portal <https://fatoora.zatca.gov.sa/>`_ using the company's ZATCA
credentials. Then, click the :guilabel:`Fatoora Simulation Portal` button to switch to the
simulation portal.
.. seealso::
`ZACTA Fatoora portal user manual version 3 (May 2023) <https://zatca.gov.sa/en/E-Invoicing/Introduction/Guidelines/Documents/Fatoora_Portal_User_Manual_English.pdf>`_
.. _saudi-arabia/api-mode:
ZATCA API integration
~~~~~~~~~~~~~~~~~~~~~
On Odoo, go to :menuselection:`Accounting --> Configuration --> Settings`. Under :guilabel:`ZATCA
API Integration`, select the :guilabel:`Simulation (Pre-Production)` :guilabel:`API mode` and click
:guilabel:`Save`.
.. _saudi-arabia/journals:
Sales journals
~~~~~~~~~~~~~~
Each sales journal on Odoo needs to be configured. To do so, go to :menuselection:`Accounting -->
Configuration --> Journals`, open any sales journal (e.g., Customer Invoices), and go to the
:guilabel:`ZATCA` tab. Once there, enter any :guilabel:`Serial Number` to identify the journal.
.. note::
The same serial number can be used for all of the company's sales journals.
Next, click :guilabel:`Onboard Journal`. In the dialog box, providing an :abbr:`OTP (one-time
password)` code is required. To retrieve it, open the `Fatoora simulation portal
<https://fatoora.zatca.gov.sa/>`_, click :guilabel:`Onboard New Solution Unit/Device`, choose the
number of OTP codes to generate (one per journal to configure), and click :guilabel:`Generate OTP
Code`. Copy an OTP code, it into the dialog box on Odoo, and click :guilabel:`Request`.
.. note::
OTP codes expire after one hour.
.. tip::
If any issue occurs during onboarding, click :guilabel:`Regenerate CSR` to start again.
Testing
~~~~~~~
When confirming an invoice, there is now an option to process the invoice, sending it directly the
Fatoora simulation portal. Odoo displays the portal's response after each submission. Only rejected
invoices can be reset to draft and edited on Odoo. Furthermore, at the end of each day, Odoo sends
all unprocessed invoices to the portal.
.. tip::
- Testing all invoicing workflows, preferably with real invoices and for a reasonable amount of
time, is recommended.
- Compare the invoices received statistics page on the Fatoora simulation portal with the list of
invoices on Odoo to ensure both align.
Taxes
~~~~~
When using a **0% tax** in a customer invoice, it is necessary to specify the reason behind such a
rate. To configure taxes, go to :menuselection:`Accounting --> Configuration --> Settings -->
Taxes`, and open the tax to edit. Under the :guilabel:`Advanced Options`, select an
:guilabel:`Exemption Reason Code` and click :guilabel:`Save`.
When using **retention** or **withholding an amount** in a customer invoice, the tax used to retain
the amount needs to be specified.
Production mode
---------------
When ready for production, change the :ref:`API mode <saudi-arabia/api-mode>` to
:guilabel:`Production` and click :guilabel:`Save`.
.. warning::
Setting the :guilabel:`API mode` to :guilabel:`Production` is **irreversible**.
The sales journals initially linked to the simulation portal now needs to be linked to the regular
portal. To do so, :ref:`onboard the journals <saudi-arabia/journals>` again, ensuring to use the
regular `Fatoora portal <https://fatoora.zatca.gov.sa/>`_ this time.
@@ -179,8 +179,8 @@ Bank payments
| When selected, Odoo displays your payment information with a payment reference. You have to
approve the payment manually once you have received it on your bank account.
- | :doc:`SEPA Direct Debit <../finance/accounting/payments/batch_sdd>`
| Your customers can sign a SEPA Direct Debit mandate online and get their bank account charged
directly.
| Your customers can make a bank transfer to register a SEPA Direct Debit mandate and get their
bank account charged directly.
.. _payment_providers/features:
@@ -50,6 +50,28 @@ customer's card, but not charged yet.
.. seealso::
- :doc:`../payment_providers`
ACH payments (USA only)
=======================
:abbr:`ACH (automated clearing house)` is an electronic funds transfer system used between bank
accounts in the United States.
Configuration
-------------
To give customers the possibility to pay using ACH, `sign up for Authorize.Net eCheck's service
<https://www.authorize.net/payments/echeck.html>`_. Once eCheck is activated, duplicate the
previously configured Authorize.Net payment provider on Odoo by going to :menuselection:`Accounting
--> Configuration --> Payment Providers --> Authorize.net`. Then, click the cog icon
(:guilabel:`⛭`) and select :guilabel:`Duplicate`. Change the provider's name to differentiate both
versions (e.g., `Authorize.net - Banks`).
Open the :guilabel:`Configuration` tab, set the :guilabel:`Allow Payments From` field to
:guilabel:`Bank Account (USA only)`.
When ready, change the provider's :guilabel:`State` to :guilabel:`Enabled` for a regular account or
:guilabel:`Test Mode` for a sandbox account.
Import an Authorize.Net statement
=================================
+176 -2
View File
@@ -2,9 +2,183 @@
Microsoft Azure sign-in authentication
======================================
Due to specific requirements in Azure's OAuth implementation, Microsoft Azure OAuth identification
is NOT compatible with Odoo at the moment.
The Microsoft Azure OAuth sign-in authentication is a useful function that allows Odoo users to sign
in to their database with their Microsoft Azure account.
This is particularly helpful if the organization uses Azure Workspace, and wants employees within
the organization to connect to Odoo using their Microsoft Accounts.
.. warning::
Databases hosted on Odoo.com should not use OAuth login for the owner or administrator of the
database as it would unlink the database from their Odoo.com account. If OAuth is set up for that
user, the database will no longer be able to be duplicated, renamed, or otherwise managed from
the Odoo.com portal.
.. seealso::
- :doc:`../../productivity/calendar/outlook`
- :doc:`/administration/maintain/azure_oauth`
Configuration
=============
Integrating the Microsoft sign-in function requires configuration on Microsoft and Odoo.
Odoo System Parameter
---------------------
First activate the :ref:`developer mode <developer-mode>`, and then go to :menuselection:`Settings
--> Technical --> System Parameters`.
Click :guilabel:`Create` and on the new/blank form that appears, add the following system parameter
`auth_oauth.authorization_header` to the :guilabel:`Key` field, and set the :guilabel:`Value` to
`1`. Then click :guilabel:`Save` to finish.
Microsoft Azure dashboard
-------------------------
Create a new application
~~~~~~~~~~~~~~~~~~~~~~~~
Now that the system parameters in Odoo have been set up, it's time to create a corresponding
application inside of Microsoft Azure. To get started creating the new application, go to
`Microsoft's Azure Portal <https://portal.azure.com/>`_. Log in with the :guilabel:`Microsoft
Outlook Office 365` account if there is one, otherwise, log in with a personal :guilabel:`Microsoft
account`.
.. important::
A user with administrative access to the *Azure Settings* must connect and perform the following
configuration steps below.
Next, navigate to the section labeled :guilabel:`Manage Azure Active Directory`. The location of
this link is usually in the center of the page.
Now, click on the :guilabel:`Add (+)` icon, located in the top menu, and then select :guilabel:`App
registration` from the drop-down menu. On the :guilabel:`Register an application` screen, rename the
:guilabel:`Name` field to `Odoo Login OAuth` or a similarly recognizable title. Under the
:guilabel:`Supported account types` section select the option for :guilabel:`Accounts in this
organizational directory only (Default Directory only - Single tenant)`.
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
`https://<odoo base url>/auth_oauth/signin` in the :guilabel:`URL` field. The Odoo base :abbr:`URL
(Uniform Resource Locator)` is the canonical domain at which your Odoo instance can be reached (e.g.
*mydatabase.odoo.com* if you are hosted on Odoo.com) in the :guilabel:`URL` field. Then, click
:guilabel:`Register`, and the application is created.
Authentication
~~~~~~~~~~~~~~
Edit the new app's authentication by clicking on the :guilabel:`Authentication` menu item in the
left menu after being redirected to the application's settings from the previous step.
Next, the type of *tokens* needed for the OAuth authentication will be chosen. These are not
currency tokens but rather authentication tokens that are passed between Microsoft and Odoo.
Therefore, there is no cost for these tokens; they are used merely for authentication purposes
between two :abbr:`APIs (application programming interfaces)`. Select the tokens that should be
issued by the authorization endpoint by scrolling down the screen and check the boxes labeled:
:guilabel:`Access tokens (used for implicit flows)` and :guilabel:`ID tokens (used for implicit and
hybrid flows)`.
.. image:: azure/authentication-tokens.png
:align: center
:alt: Authentication settings and endpoint tokens.
Click :guilabel:`Save` to ensure these settings are saved.
Gather credentials
~~~~~~~~~~~~~~~~~~
With the application created and authenticated in the Microsoft Azure console, credentials will be
gathered next. To do so, click on the :guilabel:`Overview` menu item in the left-hand column. Select
and copy the :guilabel:`Application (client) ID` in the window that appears. Paste this credential
to a clipboard / notepad, as this credential will be used in the Odoo configuration later.
After finishing this step, click on :guilabel:`Endpoints` on the top menu and click the *copy icon*
next to :guilabel:`OAuth 2.0 authorization endpoint (v2)` field. Paste this value in the clipboard /
notepad.
The value should equal `https://login.microsoftonline.com/<directory_id>/oauth2/v2.0/authorize`.
Replace the `<directory_id>` with the :guilabel:`Directory (tenant) ID` under the
:guilabel:`Essentials` section of the *Overview* page if it is not already present in the :abbr:`URL
(uniform resource locator)`.
.. example::
Should the :guilabel:`Directory (tenant) ID` be equal to `6729e9df-afbb-4522-a876-f1408d416396`
then the new value of the :guilabel:`OAuth 2.0 authorization endpoint (v2)` :abbr:`URL (Uniform
Resource Locator)` should be:
`https://login.microsoftonline.com/6729e9df-afbb-4522-a876-f1408d416396/oauth2/v2.0/authorize`.
.. image:: azure/overview-azure-app.png
:align: center
:alt: Application ID and OAuth 2.0 authorization endpoint (v2) credentials.
Odoo setup
----------
Finally, the last step in the Microsoft Azure OAuth configuration is to configure some settings in
Odoo. Navigate to :menuselection:`Settings --> Integrations --> OAuth Authentication` and check the
box to activate the OAuth login feature. Click :guilabel:`Save` to ensure the progress is saved.
Then, sign in to the database once the login screen loads.
Once again, navigate to :menuselection:`Settings --> Integrations --> OAuth Authentication` and
click on :guilabel:`OAuth Providers`. Now, select :guilabel:`New` in the upper-left corner and name
the provider `Azure`.
Paste the :guilabel:`Application (client) ID` from the previous section into the :guilabel:`Client
ID` field. After completing this, paste the new :guilabel:`OAuth 2.0 authorization endpoint (v2)`
value into the :guilabel:`Authorization URL` field.
For the :guilabel:`UserInfo URL` field, paste the following :abbr:`URL (Uniform Resource Locator)`:
`https://graph.microsoft.com/oidc/userinfo`
In the :guilabel:`Scope` field, paste the following value: `openid profile email`. Next, the Windows
logo can be used as the CSS class on the login screen by entering the following value: `fa fa-fw
fa-windows`, in the :guilabel:`CSS class` field.
Check the box next to the :guilabel:`Allowed` field to enable the OAuth provider. Finally, add
`Microsoft Azure` to the :guilabel:`Login button label` field. This text will appear next to the
Windows logo on the login page.
.. image:: azure/odoo-provider-settings.png
:align: center
:alt: Odoo provider setup in the Settings application.
:guilabel:`Save` the changes to complete the OAuth authentication setup in Odoo.
User experience flows
---------------------
For a user to log in to Odoo using Microsoft Azure, the user must be on the :menuselection:`Odoo
password reset page`. This is the only way that Odoo is able to link the Microsoft Azure account and
allow the user to log in.
.. note::
Existing users must :ref:`reset their password <users/reset-password>` to access the
:menuselection:`Odoo password reset page`. New Odoo users must click the new user invitation link
that was sent via email, then click on :guilabel:`Microsoft Azure`. Users should not set a new
password.
To sign in to Odoo for the first time using the Microsoft Azure OAuth provider, navigate to the
:menuselection:`Odoo password reset page` (using the new user invitation link). A password reset
page should appear. Then, click on the option labeled :guilabel:`Microsoft Azure`. The page will
redirect to the Microsoft login page.
.. image:: azure/odoo-login.png
:align: center
:alt: Microsoft Outlook login page.
Enter the :guilabel:`Microsoft Email Address` and click :guilabel:`Next`. Follow the process to sign
in to the account. Should :abbr:`2FA (Two Factor Authentication)` be turned on, then an extra step
may be required.
.. image:: azure/login-next.png
:align: center
:alt: Enter Microsoft login credentials.
Finally, after logging in to the account, the page will redirect to a permissions page where the
user will be prompted to :guilabel:`Accept` the conditions that the Odoo application will access
their Microsoft information.
.. image:: azure/accept-access.png
:align: center
:alt: Accept Microsoft conditions for permission access to your account information.
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@@ -8,6 +8,12 @@ database with their Google account.
This is particularly helpful if the organization uses Google Workspace, and wants employees within
the organization to connect to Odoo using their Google Accounts.
.. warning::
Databases hosted on Odoo.com should not use Oauth login for the owner or administrator of the
database as it would unlink the database from their Odoo.com account. If Oauth is set up for that
user, the database will no longer be able to be duplicated, renamed or otherwise managed from
the Odoo.com portal.
.. seealso::
- :doc:`/applications/productivity/calendar/google`
- :doc:`/administration/maintain/google_oauth`
@@ -1,84 +1,117 @@
=========================================================
How to manage multiple packs for the same delivery order?
=========================================================
=======================
Multi-package shipments
=======================
Overview
========
By default, Odoo considers that your delivery is composed of one
package. But you can easily ship your deliveries with more than one
package. It is fully integrated with the third-party shippers.
In some cases, a delivery order with multiple items may need to be shipped in more than one package.
This may be necessary if the items are too large to ship in a single package, or if certain items
cannot be packaged together. Shipping a single delivery order in multiple packages provides
flexibility for how each item is packaged, without the need to create multiple delivery orders.
Configuration
=============
To configure the use of packages, go to the menu
:menuselection:`Inventory --> Configuration --> Settings`.
Locate the **Packages** section and tick **Record
packages used on packing: pallets, boxes,...**
In order to split a delivery order across multiple packages, the *Packages* setting must be enabled.
To do so, navigate to :menuselection:`Inventory --> Configuration --> Settings`, then enable the
checkbox next to :guilabel:`Packages`. Click :guilabel:`Save` to confirm the change.
.. image:: multipack/multipack03.png
.. image:: multipack/packages-setting.png
:align: center
:alt: The Packages setting on the Inventory app settings page.
Click on **Apply** when you are done.
.. _inventory/shipping/multiple-packages:
Sale process
============
Ship items in multiple packages
===============================
Sale order
----------
To split items in the same delivery order across multiple packages, begin by navigating to
:menuselection:`Inventory --> Delivery Orders`, then select a delivery order that has multiple
items, a multiple quantity of the same item, or both.
.. image:: multipack/multipack06.png
On the :guilabel:`Operations` tab, select the :guilabel:`⁞≣ (menu)` icon in the line of the product
that will be shipped in the first package.
.. image:: multipack/product-menu-icon.png
:align: center
:alt: The menu icon for a product in a delivery order.
Click on a **Delivery Method** to choose the right one.
This makes a :guilabel:`Detailed Operations` pop-up window appear. In the table at the bottom of the
pop-up window, the :guilabel:`Reserved` column shows the total quantity of the product included in
the delivery order.
The price is computed when you **save** the sale order or when you click on
**Set price**.
If the full quantity will be shipped in the first package, enter the number from the
:guilabel:`Done` column in the :guilabel:`Reserved` column. If less than the full quantity will be
shipped in the first package, enter a smaller number than the one that appears in the
:guilabel:`Reserved` column. Click :guilabel:`Confirm` to confirm the :guilabel:`Done` quantities
and close the pop-up.
Multi-packages Delivery
-----------------------
The delivery created from the sale order will take the shipping
information from it.
.. image:: multipack/multipack07.png
.. image:: multipack/detailed-operations.png
:align: center
:alt: The Detailed Operations pop-up for a product in a delivery order.
From here, you can split your delivery into multiple packages.
Repeat the same steps for every item quantity that is included in the first package. Then, click
:guilabel:`Put In Pack` to create a package with all of the selected items.
Choose the quantity you want to put in the first pack in the **Done**
column, then click on the link **Put in Pack**.
.. image:: multipack/multipack02.png
.. image:: multipack/put-in-pack.png
:align: center
:alt: The Put In Pack button on a delivery order.
It will automatically create a pack with the requested quantity.
For the next package, follow the same steps as detailed above, marking the quantity of each item to
be included in the package as :guilabel:`Done` before clicking :guilabel:`Put In Pack` on the
delivery order. Continue doing so until the full quantity of all items are added to a package.
Do the same steps for the other pieces you want to pack in.
Finally, after all of the packages have been shipped, click :guilabel:`Validate` to confirm that the
delivery order has been completed.
.. image:: multipack/multipack04.png
.. tip::
After one or more packages are created, a :guilabel:`Packages` smart button appears in the
top-right corner of the delivery order. Click the :guilabel:`Packages` smart button to go to the
:guilabel:`Packages` page for the delivery order, where each package can be selected to view all
of the items included in it.
.. image:: multipack/packages-smart-button.png
:align: center
:alt: The Packages smart button on a delivery order.
Create a backorder for items to be shipped later
================================================
If some items will be shipped at a later date than others, there is no need to put them in a package
until they are ready to be shipped. Instead, create a backorder for the items being shipped later.
Begin by shipping the items that will be shipped immediately. If they will be shipped in multiple
packages, follow the :ref:`steps above <inventory/shipping/multiple-packages>` to package them as
required. If they will be shipped in a single package, simply mark in the :guilabel:`Done` column
the quantity of each item being shipped, but **do not** click the :guilabel:`Put In Pack` button.
After all quantities being shipped immediately are marked as :guilabel:`Done`, click the
:guilabel:`Validate` button, and a :guilabel:`Create Backorder?` pop-up window appears. Then, click
the :guilabel:`Create Backorder` button. Doing so confirms the items being shipped immediately and
creates a new delivery order for the items that will be shipped later.
.. image:: multipack/backorder-pop-up.png
:align: center
:alt: The Create Backorder? pop-up window.
Click on **Validate** when you are done.
The backorder delivery order will be listed in the chatter of the original delivery order in a
message that reads :guilabel:`The backorder WH/OUT/XXXXX has been created.`. Click on
:guilabel:`WH/OUT/XXXXX` in the message to view the backorder delivery order.
Multi-packages with a 3rd party-shipper
---------------------------------------
Once the delivery order is validated, you will receive the tracking
number. The **carrier Tracking ref** field will automatically be filled.
Click on the **Tracking** button to check your delivery on the provider
website.
.. image:: multipack/multipack05.png
.. image:: multipack/backorder-chatter.png
:align: center
:alt: The backorder delivery order listed in the chatter of the original delivery order.
The **labels** to stick on your packages are available in the history
underneath:
The backorder delivery order can also be accessed by navigating to :menuselection:`Inventory`,
clicking the :guilabel:`# Back Orders` button on the :guilabel:`Delivery Orders` card, and selecting
the delivery order.
.. image:: multipack/multipack01.png
.. image:: multipack/back-orders-button.png
:align: center
:alt: The Back Orders button on the Delivery Orders card.
.. seealso::
* :doc:`invoicing`
* :doc:`labels`
Once the remaining items are ready to be shipped, navigate to the backorder delivery order. The
items can be shipped in a single package by clicking :guilabel:`Validate` and selecting
:guilabel:`Apply` on the :guilabel:`Immediate Transfer?` pop-up window that appears, or shipped in
multiple packages by following the steps detailed in the section above.
It is also possible to ship out some of the items while creating another backorder for the rest. To
do so, simply follow the same steps used to create the first backorder.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+1
View File
@@ -9,4 +9,5 @@ Websites
websites/website
websites/ecommerce
websites/elearning
websites/livechat
+252
View File
@@ -0,0 +1,252 @@
=========
eLearning
=========
The **eLearning** app allows you to easily upload content, define learning objectives, manage
attendees, assess students' progress, and even set up rewards. Engaging participants in a meaningful
learning experience enhances their attentiveness and fosters heightened productivity.
.. important::
You can manage your eLearning content on the **front end** or the **back end**. The **front end**
allows you to create content quickly from your website, while the **back end** provides
additional options and allows collaboration. This documentation focuses on using the back end to
create your content.
.. seealso::
`Odoo Tutorials: eLearning <https://www.odoo.com/slides/elearning-56>`_
Courses
=======
By going to :menuselection:`eLearning --> Courses --> Courses`, you can get an overview of all your
courses.
Click on a course title to edit your course on the back end. Click on :guilabel:`View course` to
access your course on the front end.
Course creation
---------------
Click :guilabel:`New` to create a new course. When the page pops up, you can add your
:guilabel:`Course Title` and one or more :guilabel:`Tags` to describe your course. You can add an
image to illustrate your course by hovering your mouse on the camera placeholder image and clicking
on the edit icon. Four tabs allow you to edit your course further:
:ref:`Content <elearning/content>`, :ref:`Description <elearning/description>`,
:ref:`Options <elearning/options>`, and :ref:`Karma <elearning/karma>`.
.. image:: elearning/elearning-course-creation.png
:align: center
:alt: Create your elearning course.
.. _elearning/content:
Content tab
~~~~~~~~~~~
This tab allows you to manage your course content. Click on :guilabel:`Add Section` to divide your
course into different sections. Click on :guilabel:`Add Content` to create
:ref:`content <elearning/create-content>`. Click on :guilabel:`Add Certification` to assess the
level of understanding of your attendees, certify their skills, and motivate them. **Certification**
is part of the :doc:`Surveys <../marketing/surveys/create>` app.
.. _elearning/description:
Description tab
~~~~~~~~~~~~~~~
You can add a short description or information related to your course in the :guilabel:`Description`
tab. It appears under your course title on your website.
.. image:: elearning/course-description.png
:align: center
:alt: Add a description to your course.
.. _elearning/options:
Options tab
~~~~~~~~~~~
In the :guilabel:`Options` tab, different configurations are available:
:ref:`Course <elearning/course>`, :ref:`Communication <elearning/communication>`,
:ref:`Access rights <elearning/access-rights>`, and :ref:`Display <elearning/display>`.
.. image:: elearning/options-tab.png
:align: center
:alt: Overview of the Options tab
.. _elearning/course:
Course
******
Assign a :guilabel:`Responsible` user for your course. If you have multiple websites, use the
:guilabel:`Website` field to only display the course on the selected website.
.. _elearning/communication:
Communication
*************
- :guilabel:`Allow Reviews`: tick the box to allow attendees to like and comment on your content and
to submit reviews on your course;
- :guilabel:`Forum`: add a dedicated forum to your course (only shown if the **Forum** feature is
enabled in the app's settings);
- :guilabel:`New Content Notification`: select an email template sent to your attendees when you
upload new content. Click on the internal link button (:guilabel:`➜`) to have access to the email
template editor;
- :guilabel:`Completion Notification`: select an email template sent to your attendees once they
reach the end of your course. Click on the internal link button (:guilabel:`➜`) to access the
email template editor;
.. _elearning/access-rights:
Access rights
*************
- :guilabel:`Show course to`: define who can access your course and their content between
:guilabel:`Everyone`, :guilabel:`Signed In` or :guilabel:`Course Attendees`;
- :guilabel:`Enroll Policy`: define how people enroll in your course. Select:
- :guilabel:`Open`: if you want your course to be available to anyone;
- :guilabel:`On Invitation`: if only people who received an invitation can enroll to your course.
If selected, fill in the :guilabel:`Enroll Message` explaining the course's enrollment process.
This message appears on your website under the course title;
- :guilabel:`On Payment`: if only people who bought your course can attend it. The
:guilabel:`Paid Courses` feature must be enabled to get this option. If you select
:guilabel:`On Payment`, you must add a :guilabel:`Product` for your course.
.. note::
Only products set up with :guilabel:`Course` as their :guilabel:`Product Type` are
displayed.
.. _elearning/display:
Display
*******
- :guilabel:`Training`: the course content appears as a training program, and the courses must be
taken in the proposed order.
- :guilabel:`Documentation`: the content is available in any order. If you choose this option, you
can choose which page should be promoted on the course homepage by using the
:guilabel:`Featured Content` field.
.. _elearning/karma:
Karma tab
~~~~~~~~~
This tab is about gamification to make eLearning fun and interactive.
In the :guilabel:`Rewards` section, choose how many karma points you want to grant your students
when they :guilabel:`Review` or :guilabel:`Finish` a course.
In the :guilabel:`Access Rights` section, define the karma needed to :guilabel:`Add Review`,
:guilabel:`Add Comment`, or :guilabel:`Vote` on the course.
.. note::
From your course, click the :guilabel:`Contact Attendees` button to reach people who are
enrolled in the course.
.. _elearning/course-groups:
Course groups
-------------
Use the **Course Groups** to inform users and allow them to filter the courses from the
:guilabel:`All Courses` dashboard.
You can manage them by going to :menuselection:`Configuration -->
Course Groups`. Click :guilabel:`New` to create a new course group. Add the :guilabel:`Course Group
Name`, tick the :guilabel:`Menu Entry` box to allow users to search by course group on the website,
and add tags in the :guilabel:`Tag Name` column. For each tag, you can select a corresponding color.
Settings
--------
You can enable different features to customize your courses by going to :menuselection:`eLearning
--> Configuration --> Settings`:
- **Certifications**: to evaluate the knowledge of your attendees and certify their skills;
- **Paid courses**: to sell access to your courses on your website and track revenues;
- **Mailing**: to update all your attendees at once through mass mailings;
- **Forum**: to create a community and let attendees answer each other's questions.
.. _elearning/create-content:
Content
=======
Manage your content by going to :menuselection:`eLearning --> Courses --> Contents`. Click
:guilabel:`New` to create content. Add your :guilabel:`Content Title`, and if you want
:ref:`Tags <elearning/tags>`, then fill in the related information among the different tabs.
.. image:: elearning/elearning-content-tab.png
:align: center
:alt: Create your content.
Document tab
------------
- :guilabel:`Course`: select the course your content belongs to;
- :guilabel:`Content Type`: select the type of your content;
- :guilabel:`Responsible`: add a responsible person for your content;
- :guilabel:`Duration`: indicate the time required to complete the course;
- :guilabel:`Allow Download`: allow users to download the content of the slide. This option is only
visible when the content is a document;
- :guilabel:`Allow Preview`: the course is accessible by anyone.
- :guilabel:`# of Public Views`: displays the number of views from non-enrolled participants;
- :guilabel:`# Total Views`: displays the total number of views (non-enrolled and enrolled
participants).
Description tab
---------------
You can add a description of your content that appears front end in the :guilabel:`About` section of
your course content.
Additional Resources tab
------------------------
Click :guilabel:`Add a line` to add a link or a file that supports your participants' learning.
It appears in the course content on your website.
.. image:: elearning/additional-content.png
:align: center
:alt: Additional ressources
Quiz tab
--------
From this tab you can create a quiz to assess your students at the end of the course.
The :guilabel:`Points Rewards` section lets you give a specific number of karma points depending on
how many tries they need to correctly answer the question. Then, create your questions and the
possible answers by clicking on :guilabel:`Add a line`. A new window pops up, add the question by
filling in the :guilabel:`Question Name` and add multiple answers by clicking on :guilabel:`Add a
line`. Tick the :guilabel:`Is correct answer` to mark one or more answers as correct. You can also
fill in the :guilabel:`Comment` field to display additional information when the answer is chosen by
the participant.
.. _elearning/tags:
Content Tags
------------
The **Content Tags** help users to classify the content from the :guilabel:`Contents` dashboard.
You can manage them by going to :menuselection:`eLearning --> Configuration --> Content Tags`. Click
:guilabel:`New` to create a new tag.
Publish your content
====================
Everything created on the back end needs to be published from the front end. Unpublished content is
always visible from your website but still needs to be published to be available to your audience.
You must be on your website's front end to publish your content. To do so, click on the
:guilabel:`Go To Website` smart button, and tick the :guilabel:`Publish` option available in the
right-hand corner.
.. image:: elearning/elearning-publish-button.png
:align: center
:alt: Publish your content.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -2325,11 +2325,14 @@ Possible children elements of the search view are:
<filter domain="[('state', '=', 'draft')]"/>
<separator/>
<filter domain="[('delay', '<', 15)]"/>
<filter domain="[('delay', '&lt;', 15)]"/>
if both filters are selected, will select the records whose ``state``
is ``draft`` **and** ``delay`` is below 15.
.. note:: XML does not allow ``<`` to be used within XML elements,
an entity reference (``&lt;``) should be used instead.
``separator``
can be used to separates groups of filters in simple search views
@@ -18,24 +18,18 @@ Description
The patch function is located in `@web/core/utils/patch`:
.. js:function:: patch(obj, patchName, patchValue, options)
.. js:function:: patch(objToPatch, extension)
:param Object obj: object that should be patched
:param string patchName: unique string describing the patch
:param Object patchValue: an object mapping each key to a patchValue
:param Object options: option object (see below)
:param object objToPatch: the object that should be patched
:param object extension: an object mapping each key to an extension
:returns: a function to remove the patch
The `patch` function modifies in place the `obj` object (or class) and
applies all key/value described in the `patchValue` object. This operation
is registered under the `patchName` name, so it can be unpatched later if
necessary.
The `patch` function modifies in place the `objToPatch` object (or class) and
applies all key/value described in the `extension` object. An unpatch
function is returned, so it can be used to remove the patch later if necessary.
Most patch operations provide access to the parent value by using the
`_super` property (see below in the examples). To do that, the `patch` method
wraps each pair key/value in a getter that dynamically binds `_super`.
The only option is `pure (boolean)`. If set to `true`, the patch operation
does not bind the `_super` property.
native `super` keyword (see below in the examples).
Patching a simple object
========================
@@ -53,7 +47,7 @@ Here is a simple example of how an object can be patched:
},
};
patch(object, "patch name", {
patch(object, {
fn() {
// do things
},
@@ -61,49 +55,45 @@ Here is a simple example of how an object can be patched:
When patching functions, we usually want to be able to access the ``parent``
function. Since we are working with patch objects, not ES6 classes, we cannot
use the native ``super`` keyword. So, Odoo provides a special method to simulate
this behaviour: ``this._super``:
function. To do so, we can simply use the native ``super`` keyword:
.. code-block:: javascript
patch(object, "_super patch", {
patch(object, {
fn() {
this._super(...arguments);
super.fn(...arguments);
// do other things
},
});
.. warning::
``this._super`` is reassigned after each patched function is called.
This means that if you use an asynchronous function in the patch then you
cannot call ``this._super`` after an ``await``, because it may or may not be
the function that you expect. The correct way to do that is to keep a reference
to the initial ``_super`` method:
``super`` can only be used in a method not a function. This means that the
following constructs are invalid for javascript.
.. code-block:: javascript
patch(object, "async _super patch", {
async myAsyncFn() {
const _super = this._super.bind(this);
await Promise.resolve();
await _super(...arguments);
// await this._super(...arguments); // this._super is undefined.
},
});
.. code-block:: javascript
const obj = {
a: function () {
// Throws: "Uncaught SyntaxError: 'super' keyword unexpected here"
super.a();
},
b: () => {
// Throws: "Uncaught SyntaxError: 'super' keyword unexpected here"
super.b();
},
};
Getters and setters are supported too:
.. code-block:: javascript
patch(object, "getter/setter patch", {
patch(object, {
get number() {
return this._super() / 2;
return super.number / 2;
},
set number(value) {
this._super(value * 2);
super.number = value;
},
});
@@ -124,12 +114,12 @@ the `prototype`:
}
// this will patch static properties!!!
patch(MyClass, "static patch", {
patch(MyClass, {
myStaticFn() {...},
});
// this is probably the usual case: patching a class method
patch(MyClass.prototype, "prototype patch", {
patch(MyClass.prototype, {
myPrototypeFn() {...},
});
@@ -149,9 +139,9 @@ constructor and patch that method instead:
}
}
patch(MyClass.prototype, "constructor", {
patch(MyClass.prototype, {
setup() {
this._super(...arguments);
super.setup(...arguments);
this.doubleNumber = this.number * 2;
},
});
@@ -165,11 +155,11 @@ Patching a component
Components are defined by javascript classes, so all the information above still
holds. For these reasons, Owl components should use the `setup` method, so they
can easily be patched as well (see the section on :ref:`best practices<frontend/owl/best_practices>`.
can easily be patched as well (see the section on :ref:`best practices<frontend/owl/best_practices>`).
.. code-block:: javascript
patch(MyComponent.prototype, "my patch", {
patch(MyComponent.prototype, {
setup() {
useMyHook();
},
@@ -178,19 +168,91 @@ can easily be patched as well (see the section on :ref:`best practices<frontend/
Removing a patch
================
The `patch` function has a counterpart, `unpatch`, also located in `@web/core/utils/patch`.
The `patch` function returns its counterpart. This is mostly useful for
testing purposes, when we patch something at the beginning of a test, and
unpatch it at the end.
.. js:function:: unpatch(obj, patchName)
.. code-block:: javascript
:param Object obj: object that should be unpatched
:param string patchName: string describing the patch that should be removed
const unpatch = patch(object, { ... });
// test stuff here
unpatch();
Removes an existing patch from an object `obj`. This is mostly useful for
testing purposes, when we patch something at the beginning of a test, and
unpatch it at the end.
Applying the same patch to multiple objects
===========================================
.. code-block:: javascript
It could happen that one wants to apply the same patch to multiple objects but
because of the way the `super` keyword works, the `extension` can only be used
for patching once and cannot be copied/cloned (`check the documentation of the keyword <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super#description>`_).
A function returning the object used to patch can be used to make it unique.
patch(object, "patch name", { ... });
// test stuff here
unpatch(object, "patch name");
.. code-block:: javascript
const obj1 = {
method() {
doSomething();
},
};
const obj2 = {
method() {
doThings();
},
};
function createExtensionObj() {
return {
method() {
super.method();
doCommonThings();
},
};
}
patch(obj1, createExtensionObj());
patch(obj2, createExtensionObj());
.. warning::
If an `extension` is based on another then the two extensions should
be applied separately. Do not copy/clone an extension.
.. code-block:: javascript
const object = {
method1() {
doSomething();
},
method2() {
doAnotherThing();
},
};
const ext1 = {
method1() {
super.method1();
doThings();
},
};
const invalid_ext2 = {
...ext1, // this will not work: super will not refer to the correct object in methods coming from ext1
method2() {
super.method2();
doOtherThings();
},
};
patch(object, invalid_ext2);
object.method1(); // throws: Uncaught TypeError: (intermediate value).method1 is not a function
const valid_ext2 = {
method2() {
super.method2();
doOtherThings();
},
};
patch(object, ext1); // first patch base extension
patch(object, valid_ext2); // then the new one
object.method1(); // works as expected
@@ -218,6 +218,16 @@ services *OR* have a unit price which is *NOT* between 1000 and 2000'::
('unit_price', '>=', 1000),
('unit_price', '<', 2000)]
.. note:: XML does not allow ``<`` and ``&`` to be used inside XML
elements. To avoid parsing errors, entity references should be used:
``&lt;`` for ``<`` and ``&amp;`` for ``&``. Other entity references
(``&gt;``, ``&apos;`` & ``&quot;``) are optional.
.. example::
.. code-block:: xml
<filter name="negative" domain="[('test_val', '&lt;', 0)]"/>
.. exercise:: Add filter and Group By.
The following should be added to the previously created search view:
+105 -109
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -204,7 +204,7 @@ msgid "Setting a proper :option:`--db-filter <odoo-bin --db-filter>` is an impor
msgstr ""
#: ../../content/administration/install/deploy.rst:76
#: ../../content/administration/install/install.rst:427
#: ../../content/administration/install/install.rst:420
msgid "PostgreSQL"
msgstr ""
@@ -947,11 +947,11 @@ msgid "Official Community packages with all relevant dependency requirements are
msgstr ""
#: ../../content/administration/install/install.rst:90
#: ../../content/administration/install/install.rst:295
#: ../../content/administration/install/install.rst:366
#: ../../content/administration/install/install.rst:431
#: ../../content/administration/install/install.rst:504
#: ../../content/administration/install/install.rst:673
#: ../../content/administration/install/install.rst:287
#: ../../content/administration/install/install.rst:359
#: ../../content/administration/install/install.rst:424
#: ../../content/administration/install/install.rst:497
#: ../../content/administration/install/install.rst:666
msgid "Windows"
msgstr ""
@@ -984,23 +984,23 @@ msgid "Odoo will automatically be started at the end of the installation."
msgstr ""
#: ../../content/administration/install/install.rst:106
#: ../../content/administration/install/install.rst:313
#: ../../content/administration/install/install.rst:388
#: ../../content/administration/install/install.rst:451
#: ../../content/administration/install/install.rst:539
#: ../../content/administration/install/install.rst:684
#: ../../content/administration/install/install.rst:305
#: ../../content/administration/install/install.rst:381
#: ../../content/administration/install/install.rst:444
#: ../../content/administration/install/install.rst:532
#: ../../content/administration/install/install.rst:677
msgid "Linux"
msgstr ""
#: ../../content/administration/install/install.rst:109
#: ../../content/administration/install/install.rst:359
#: ../../content/administration/install/install.rst:352
msgid "Prepare"
msgstr ""
#: ../../content/administration/install/install.rst:113
#: ../../content/administration/install/install.rst:146
#: ../../content/administration/install/install.rst:179
#: ../../content/administration/install/install.rst:546
#: ../../content/administration/install/install.rst:539
msgid "Debian/Ubuntu"
msgstr ""
@@ -1019,7 +1019,7 @@ msgid "Odoo needs a `PostgreSQL`_ server to run properly. Make sure that the `su
msgstr ""
#: ../../content/administration/install/install.rst:137
#: ../../content/administration/install/install.rst:644
#: ../../content/administration/install/install.rst:637
msgid "`wkhtmltopdf` is not installed through **pip** and must be installed manually in version `0.12.5 <the wkhtmltopdf download page_>`_ for it to support headers and footers. See our `wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for more details on the various versions."
msgstr ""
@@ -1156,197 +1156,193 @@ msgstr ""
msgid "The following requires `Git <git_>`_ to be installed on your machine and that you have basic knowledge of Git commands. To clone a Git repository, you must choose between cloning with HTTPS or SSH. If you do not know the difference between the two, the best option is most likely HTTPS. If you are following the :doc:`Getting started </developer/tutorials/getting_started>` developer tutorial, or plan on contributing to Odoo source code, choose SSH."
msgstr ""
#: ../../content/administration/install/install.rst:286
msgid "**The Enterprise Git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation. See :ref:`setup/install/editions` to get access to the Enterprise repository."
msgstr ""
#: ../../content/administration/install/install.rst:299
#: ../../content/administration/install/install.rst:317
#: ../../content/administration/install/install.rst:335
#: ../../content/administration/install/install.rst:291
#: ../../content/administration/install/install.rst:309
#: ../../content/administration/install/install.rst:327
msgid "Clone with HTTPS"
msgstr ""
#: ../../content/administration/install/install.rst:306
#: ../../content/administration/install/install.rst:324
#: ../../content/administration/install/install.rst:342
#: ../../content/administration/install/install.rst:298
#: ../../content/administration/install/install.rst:316
#: ../../content/administration/install/install.rst:334
msgid "Clone with SSH"
msgstr ""
#: ../../content/administration/install/install.rst:331
#: ../../content/administration/install/install.rst:407
#: ../../content/administration/install/install.rst:474
#: ../../content/administration/install/install.rst:603
#: ../../content/administration/install/install.rst:694
#: ../../content/administration/install/install.rst:323
#: ../../content/administration/install/install.rst:400
#: ../../content/administration/install/install.rst:467
#: ../../content/administration/install/install.rst:596
#: ../../content/administration/install/install.rst:687
msgid "Mac OS"
msgstr ""
#: ../../content/administration/install/install.rst:350
msgid "**The Enterprise git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation."
#: ../../content/administration/install/install.rst:342
msgid "**The Enterprise git repository does not contain the full Odoo source code**. It is only a collection of extra add-ons. The main server code is in the Community version. Running the Enterprise version actually means running the server from the Community version with the addons-path option set to the folder with the Enterprise version. You need to clone both the Community and Enterprise repository to have a working Odoo Enterprise installation. See :ref:`setup/install/editions` to get access to the Enterprise repository."
msgstr ""
#: ../../content/administration/install/install.rst:362
#: ../../content/administration/install/install.rst:355
msgid "Python"
msgstr ""
#: ../../content/administration/install/install.rst:368
#: ../../content/administration/install/install.rst:361
msgid "Odoo requires Python 3.7 or later to run. Visit `Python's download page <https://www.python.org/downloads/windows/>`_ to download and install the latest version of Python 3 on your machine."
msgstr ""
#: ../../content/administration/install/install.rst:371
#: ../../content/administration/install/install.rst:364
msgid "During installation, check **Add Python 3 to PATH**, then click **Customize Installation** and make sure that **pip** is checked."
msgstr ""
#: ../../content/administration/install/install.rst:368
#: ../../content/administration/install/install.rst:387
#: ../../content/administration/install/install.rst:406
msgid "If Python 3 is already installed, make sure that the version is 3.7 or above, as previous versions are not compatible with Odoo."
msgstr ""
#: ../../content/administration/install/install.rst:375
#: ../../content/administration/install/install.rst:394
#: ../../content/administration/install/install.rst:413
msgid "If Python 3 is already installed, make sure that the version is 3.7 or above, as previous versions are not compatible with Odoo."
msgstr ""
#: ../../content/administration/install/install.rst:382
#: ../../content/administration/install/install.rst:401
#: ../../content/administration/install/install.rst:420
msgid "Verify also that pip_ is installed for this version."
msgstr ""
#: ../../content/administration/install/install.rst:390
#: ../../content/administration/install/install.rst:383
msgid "Odoo requires Python 3.7 or later to run. Use your package manager to download and install Python 3 on your machine if it is not already done."
msgstr ""
#: ../../content/administration/install/install.rst:409
#: ../../content/administration/install/install.rst:402
msgid "Odoo requires Python 3.7 or later to run. Use your preferred package manager (homebrew_, macports_) to download and install Python 3 on your machine if it is not already done."
msgstr ""
#: ../../content/administration/install/install.rst:433
#: ../../content/administration/install/install.rst:426
msgid "Odoo uses PostgreSQL as database management system. `Download and install PostgreSQL <https://www.postgresql.org/download/windows/>`_ (supported version: 12.0 and later)."
msgstr ""
#: ../../content/administration/install/install.rst:436
#: ../../content/administration/install/install.rst:462
#: ../../content/administration/install/install.rst:485
#: ../../content/administration/install/install.rst:429
#: ../../content/administration/install/install.rst:455
#: ../../content/administration/install/install.rst:478
msgid "By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need to create a new PostgreSQL user:"
msgstr ""
#: ../../content/administration/install/install.rst:439
#: ../../content/administration/install/install.rst:432
msgid "Add PostgreSQL's `bin` directory (by default: :file:`C:\\\\Program Files\\\\PostgreSQL\\\\<version>\\\\bin`) to your `PATH`."
msgstr ""
#: ../../content/administration/install/install.rst:441
#: ../../content/administration/install/install.rst:434
msgid "Create a postgres user with a password using the pg admin gui:"
msgstr ""
#: ../../content/administration/install/install.rst:443
#: ../../content/administration/install/install.rst:436
msgid "Open **pgAdmin**."
msgstr ""
#: ../../content/administration/install/install.rst:444
#: ../../content/administration/install/install.rst:437
msgid "Double-click the server to create a connection."
msgstr ""
#: ../../content/administration/install/install.rst:445
#: ../../content/administration/install/install.rst:438
msgid "Select :menuselection:`Object --> Create --> Login/Group Role`."
msgstr ""
#: ../../content/administration/install/install.rst:446
#: ../../content/administration/install/install.rst:439
msgid "Enter the username in the **Role Name** field (e.g. `odoo`)."
msgstr ""
#: ../../content/administration/install/install.rst:447
#: ../../content/administration/install/install.rst:440
msgid "Open the **Definition** tab and enter the password (e.g. `odoo`), then click **Save**."
msgstr ""
#: ../../content/administration/install/install.rst:448
#: ../../content/administration/install/install.rst:441
msgid "Open the **Privileges** tab and switch **Can login?** to `Yes` and **Create database?** to `Yes`."
msgstr ""
#: ../../content/administration/install/install.rst:453
#: ../../content/administration/install/install.rst:446
msgid "Odoo uses PostgreSQL as database management system. Use your package manager to download and install PostgreSQL (supported version: 12.0 and later)."
msgstr ""
#: ../../content/administration/install/install.rst:456
#: ../../content/administration/install/install.rst:449
msgid "It can be achieved by executing the following:"
msgstr ""
#: ../../content/administration/install/install.rst:471
#: ../../content/administration/install/install.rst:494
#: ../../content/administration/install/install.rst:464
#: ../../content/administration/install/install.rst:487
msgid "Because your PostgreSQL user has the same name as your Unix login, you will be able to connect to the database without password."
msgstr ""
#: ../../content/administration/install/install.rst:476
#: ../../content/administration/install/install.rst:469
msgid "Odoo uses PostgreSQL as database management system. Use `postgres.app <https://postgresapp.com>`_ to download and install PostgreSQL (supported version: 12.0 and later)."
msgstr ""
#: ../../content/administration/install/install.rst:481
#: ../../content/administration/install/install.rst:474
msgid "To make the command line tools bundled with `postgres.app` available, make sure to setup your `$PATH` variable by following the `Postgres.app CLI Tools Instructions <https://postgresapp.com/documentation/cli-tools.html>`_."
msgstr ""
#: ../../content/administration/install/install.rst:500
#: ../../content/administration/install/install.rst:493
msgid "Dependencies"
msgstr ""
#: ../../content/administration/install/install.rst:506
#: ../../content/administration/install/install.rst:499
msgid "Before installing the dependencies, you must download and install the `Build Tools for Visual Studio <https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019>`_. When prompted, select **C++ build tools** in the **Workloads** tab and install them."
msgstr ""
#: ../../content/administration/install/install.rst:510
#: ../../content/administration/install/install.rst:605
#: ../../content/administration/install/install.rst:503
#: ../../content/administration/install/install.rst:598
msgid "Odoo dependencies are listed in the `requirements.txt` file located at the root of the Odoo community directory."
msgstr ""
#: ../../content/administration/install/install.rst:514
#: ../../content/administration/install/install.rst:581
#: ../../content/administration/install/install.rst:609
#: ../../content/administration/install/install.rst:507
#: ../../content/administration/install/install.rst:574
#: ../../content/administration/install/install.rst:602
msgid "It can be preferable to not mix python modules packages between different instances of Odoo or with your system. You can use virtualenv_ to create isolated Python environments."
msgstr ""
#: ../../content/administration/install/install.rst:517
#: ../../content/administration/install/install.rst:510
msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file in a terminal **with Administrator privileges**:"
msgstr ""
#: ../../content/administration/install/install.rst:526
#: ../../content/administration/install/install.rst:593
#: ../../content/administration/install/install.rst:633
#: ../../content/administration/install/install.rst:519
#: ../../content/administration/install/install.rst:586
#: ../../content/administration/install/install.rst:626
msgid "For languages with right-to-left interface (such as Arabic or Hebrew), the package `rtlcss` is needed:"
msgstr ""
#: ../../content/administration/install/install.rst:529
#: ../../content/administration/install/install.rst:522
msgid "Download and install `nodejs <https://nodejs.org/en/download/>`_."
msgstr ""
#: ../../content/administration/install/install.rst:530
#: ../../content/administration/install/install.rst:597
#: ../../content/administration/install/install.rst:637
#: ../../content/administration/install/install.rst:523
#: ../../content/administration/install/install.rst:590
#: ../../content/administration/install/install.rst:630
msgid "Install `rtlcss`:"
msgstr ""
#: ../../content/administration/install/install.rst:536
#: ../../content/administration/install/install.rst:529
msgid "Edit the System Environment's variable `PATH` to add the folder where `rtlcss.cmd` is located (typically: :file:`C:\\\\Users\\\\<user>\\\\AppData\\\\Roaming\\\\npm\\\\`)."
msgstr ""
#: ../../content/administration/install/install.rst:541
#: ../../content/administration/install/install.rst:534
msgid "Using your **distribution packages** is the preferred way of installing dependencies. Alternatively, you can install the python dependencies with **pip**."
msgstr ""
#: ../../content/administration/install/install.rst:548
#: ../../content/administration/install/install.rst:541
msgid "For Debian-based systems, the packages are listed in the `debian/control <https://github.com/odoo/odoo/blob/saas-16.1/debian/control>`_ file of the Odoo sources."
msgstr ""
#: ../../content/administration/install/install.rst:551
#: ../../content/administration/install/install.rst:544
msgid "On Debian/Ubuntu, the following commands should install the required packages:"
msgstr ""
#: ../../content/administration/install/install.rst:558
#: ../../content/administration/install/install.rst:551
msgid "Install with pip"
msgstr ""
#: ../../content/administration/install/install.rst:560
#: ../../content/administration/install/install.rst:553
msgid "As some of the python packages need a compilation step, they require system libraries to be installed."
msgstr ""
#: ../../content/administration/install/install.rst:563
#: ../../content/administration/install/install.rst:556
msgid "On Debian/Ubuntu-based systems, the following command should install these required libraries:"
msgstr ""
#: ../../content/administration/install/install.rst:570
#: ../../content/administration/install/install.rst:563
msgid "Odoo dependencies are listed in the :file:`requirements.txt` file located at the root of the Odoo community directory."
msgstr ""
@@ -1358,101 +1354,101 @@ msgstr ""
msgid "E.g., for Odoo 15.0, the `python3-babel` package version is 2.8.0 in Debian Bullseye and 2.6.0 in Ubuntu Focal. The lowest version is then chosen in the :file:`requirements.txt`."
msgstr ""
#: ../../content/administration/install/install.rst:585
#: ../../content/administration/install/install.rst:578
msgid "Navigate to the path of your Odoo Community installation (:file:`CommunityPath`) and run **pip** on the requirements file to install the requirements for the current user."
msgstr ""
#: ../../content/administration/install/install.rst:596
#: ../../content/administration/install/install.rst:589
msgid "Download and install **nodejs** and **npm** with your package manager."
msgstr ""
#: ../../content/administration/install/install.rst:612
#: ../../content/administration/install/install.rst:605
msgid "Navigate to the path of your Odoo Community installation (`CommunityPath`) and run **pip** on the requirements file:"
msgstr ""
#: ../../content/administration/install/install.rst:622
#: ../../content/administration/install/install.rst:615
msgid "Non-Python dependencies need to be installed with a package manager:"
msgstr ""
#: ../../content/administration/install/install.rst:624
#: ../../content/administration/install/install.rst:617
msgid "Download and install the **Command Line Tools**:"
msgstr ""
#: ../../content/administration/install/install.rst:630
#: ../../content/administration/install/install.rst:623
msgid "Download and install the package manager of your choice (homebrew_, macports_)."
msgstr ""
#: ../../content/administration/install/install.rst:631
#: ../../content/administration/install/install.rst:624
msgid "Install non-python dependencies."
msgstr ""
#: ../../content/administration/install/install.rst:636
#: ../../content/administration/install/install.rst:629
msgid "Download and install **nodejs** with your preferred package manager (homebrew_, macports_)."
msgstr ""
#: ../../content/administration/install/install.rst:651
#: ../../content/administration/install/install.rst:644
msgid "Running Odoo"
msgstr ""
#: ../../content/administration/install/install.rst:653
#: ../../content/administration/install/install.rst:646
msgid "Once all dependencies are set up, Odoo can be launched by running `odoo-bin`, the command-line interface of the server. It is located at the root of the Odoo Community directory."
msgstr ""
#: ../../content/administration/install/install.rst:656
#: ../../content/administration/install/install.rst:649
msgid "To configure the server, you can either specify :ref:`command-line arguments <reference/cmdline/server>` or a :ref:`configuration file <reference/cmdline/config>`."
msgstr ""
#: ../../content/administration/install/install.rst:660
#: ../../content/administration/install/install.rst:653
msgid "For the Enterprise edition, you must add the path to the `enterprise` addons to the `addons-path` argument. Note that it must come before the other paths in `addons-path` for addons to be loaded correctly."
msgstr ""
#: ../../content/administration/install/install.rst:664
#: ../../content/administration/install/install.rst:657
msgid "Common necessary configurations are:"
msgstr ""
#: ../../content/administration/install/install.rst:666
#: ../../content/administration/install/install.rst:659
msgid "PostgreSQL user and password."
msgstr ""
#: ../../content/administration/install/install.rst:667
#: ../../content/administration/install/install.rst:660
msgid "Custom addon paths beyond the defaults, to load your own modules."
msgstr ""
#: ../../content/administration/install/install.rst:669
#: ../../content/administration/install/install.rst:662
msgid "A typical way to run the server would be:"
msgstr ""
#: ../../content/administration/install/install.rst:680
#: ../../content/administration/install/install.rst:673
msgid "Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the PostgreSQL login, `dbpassword` is the PostgreSQL password, and `mydb` is the name of the PostgreSQL database."
msgstr ""
#: ../../content/administration/install/install.rst:691
#: ../../content/administration/install/install.rst:701
#: ../../content/administration/install/install.rst:684
#: ../../content/administration/install/install.rst:694
msgid "Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name of the PostgreSQL database."
msgstr ""
#: ../../content/administration/install/install.rst:704
#: ../../content/administration/install/install.rst:697
msgid "After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open http://localhost:8069 in your web browser and log in with the base administrator account: Use `admin` for the :guilabel:`Email` and, again, `admin` for the :guilabel:`Password`. That's it, you just logged into your own Odoo database!"
msgstr ""
#: ../../content/administration/install/install.rst:710
#: ../../content/administration/install/install.rst:703
msgid "From there, you can create and manage new :doc:`users </applications/general/users/manage_users>`."
msgstr ""
#: ../../content/administration/install/install.rst:712
#: ../../content/administration/install/install.rst:705
msgid "The user account you use to log into Odoo's web interface differs from the :option:`--db_user <odoo-bin -r>` CLI argument."
msgstr ""
#: ../../content/administration/install/install.rst:716
#: ../../content/administration/install/install.rst:709
msgid ":doc:`The exhaustive list of CLI arguments for odoo-bin </developer/reference/cli>`."
msgstr ""
#: ../../content/administration/install/install.rst:721
#: ../../content/administration/install/install.rst:714
#: ../../content/administration/maintain/update.rst:149
msgid "Docker"
msgstr ""
#: ../../content/administration/install/install.rst:723
#: ../../content/administration/install/install.rst:716
msgid "The full documentation on how to use Odoo with Docker can be found on the official Odoo `docker image <https://hub.docker.com/_/odoo/>`_ page."
msgstr ""
File diff suppressed because it is too large Load Diff
+257 -157
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -127,12 +127,12 @@ msgid "Statement"
msgstr ""
#: ../../content/applications/finance/accounting.rst:129
#: ../../content/applications/finance/accounting/customer_invoices.rst:214
#: ../../content/applications/finance/accounting/customer_invoices.rst:216
msgid "Balance sheet"
msgstr ""
#: ../../content/applications/finance/accounting.rst:131
#: ../../content/applications/finance/accounting/customer_invoices.rst:204
#: ../../content/applications/finance/accounting/customer_invoices.rst:206
msgid "Profit and loss"
msgstr ""
@@ -444,6 +444,7 @@ msgstr ""
#: ../../content/applications/finance/payment_providers/adyen.rst:17
#: ../../content/applications/finance/payment_providers/alipay.rst:12
#: ../../content/applications/finance/payment_providers/authorize.rst:9
#: ../../content/applications/finance/payment_providers/authorize.rst:60
#: ../../content/applications/finance/payment_providers/demo.rst:9
#: ../../content/applications/finance/payment_providers/mollie.rst:8
#: ../../content/applications/finance/payment_providers/paypal.rst:136
@@ -1986,27 +1987,27 @@ msgstr ""
msgid "By going to the customer record and diving into the \"Overdue Payments\" you will see the follow-up message and all overdue invoices."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:192
#: ../../content/applications/finance/accounting/customer_invoices.rst:194
msgid "Customer aging report:"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:194
#: ../../content/applications/finance/accounting/customer_invoices.rst:196
msgid "The customer aging report will be an additional key tool for the collector to understand the customer credit issues, and to prioritize their work."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:198
#: ../../content/applications/finance/accounting/customer_invoices.rst:200
msgid "Use the aging report to determine which customers are overdue and begin your collection efforts."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:206
#: ../../content/applications/finance/accounting/customer_invoices.rst:208
msgid "The Profit and Loss statement displays your revenue and expense details. Ultimately, this gives you a clear image of your Net Profit and Loss. It is sometimes referred to as the \"Income Statement\" or \"Statement of Revenues and Expenses.\""
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:216
#: ../../content/applications/finance/accounting/customer_invoices.rst:218
msgid "The balance sheet summarizes your company's liabilities, assets and equity at a specific moment in time."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices.rst:223
#: ../../content/applications/finance/accounting/customer_invoices.rst:225
msgid "For example, if you manage your inventory using the perpetual accounting method, you should expect a decrease in account \"Current Assets\" once the material has been shipped to the customer."
msgstr ""
@@ -2080,7 +2081,7 @@ msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/cash_discounts.rst:68
#: ../../content/applications/finance/accounting/customer_invoices/cash_discounts.rst:83
#: ../../content/applications/finance/accounting/customer_invoices/cash_discounts.rst:98
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:111
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:132
msgid "Due date"
msgstr ""
@@ -2377,7 +2378,6 @@ msgid "You can either create a credit note from scratch by going to :menuselecti
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/credit_notes.rst:89
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:94
msgid "Journal Entries"
msgstr ""
@@ -3254,184 +3254,194 @@ msgid "Payment terms and installment plans"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:5
msgid "**Payment Terms** specify all the conditions under which a sale is paid, mostly to ensure customers pay their invoices correctly and on time."
msgid "**Payment terms** specify all the conditions of a sale's payment to help ensure customers pay their invoices correctly and on time."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:8
msgid "Payment Terms can be applied to sales orders, customer invoices, supplier bills, and contacts. These conditions cover:"
msgid "Payment terms are generally defined on documents such as sales orders, customer invoices, and vendor bills. Payment terms cover:"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:11
msgid "The due date"
msgid "The due date(s)"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:12
msgid "Some discounts"
msgid "Early payment discounts"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:13
msgid "Any other condition on the payment"
msgid "Any other conditions on the payment"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:15
msgid "Defining Payment Terms automatically calculates the payments' due dates. This is particularly helpful for managing installment plans."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:18
msgid "An **installment plan** allows the customers to pay an invoice in parts, with the amounts and payment dates defined beforehand by the seller."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:21
msgid "**Examples of Payment Terms:**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:19
msgid "Immediate Payment"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**Immediate Payment**"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:20
msgid "The full payment is due on the day of the invoice's issuance."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**15 Days** (or **Net 15**)"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:21
msgid "15 Days (or Net 15)"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:22
msgid "The full payment is due 15 days after the invoice date."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**21 MFI**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:23
msgid "21 MFI"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:24
msgid "The full payment is due by the 21st of the month following the invoice date."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**2% 10, Net 30 EOM**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:26
msgid "30% Advance End of Following Month"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "2% :doc:`cash discount <cash_discounts>` if the payment is received within ten days. Otherwise, the full payment is due at the end of the month following the invoice date."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:26
msgid "30% is due on the day of the invoice's issuance. The remaining balance is due at the end of the following month."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:34
msgid "Payment terms are not to be confused with down payment invoices. If, for a specific order, you issue several invoices to your customer, that is neither a payment term nor an installment plan, but an invoicing policy."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:29
msgid "2% 10, Net 30 EOM"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:39
msgid "This document is about the *Payment Terms* feature, not *Terms & Conditions*."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:29
msgid "A 2% :doc:`cash discount <cash_discounts>` if the payment is received within ten days. Otherwise, the full payment is due at the end of the month following the invoice date."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:33
msgid "Payment terms are not to be confused with :doc:`down payment invoices </applications/sales/sales/invoicing/down_payment>`. If, for a specific order, you issue multiple invoices to your customer, that is neither a payment term nor an installment plan but an invoicing policy."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:37
msgid "This page is about the *payment terms* feature, not :doc:`terms & conditions <terms_conditions>`, which can be used to declare contractual obligations regarding content use, return policies, and other policies surrounding the sale of goods and services."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:42
msgid ":doc:`cash_discounts`"
msgid "`Odoo Tutorials: payment terms <https://www.odoo.com/slides/slide/payment-terms-1679>`_"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:43
msgid "`Odoo Tutorials: Payment Terms <https://www.odoo.com/slides/slide/payment-terms-1679>`_"
msgid ":doc:`cash_discounts`"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:48
msgid "Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on *Create*."
msgid "To create new payment terms, follow these steps:"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:50
msgid "The **Description on the Invoice** is the text displayed on the document (sale order, invoice, etc.)."
msgid "Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on :guilabel:`New`."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:53
msgid "In the **Terms** section, you can add a set of rules, called *terms*, to define what needs to be paid and by which due date."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:52
msgid "Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed in the database and is not customer-facing."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:54
msgid "Enter the text to be displayed on the document (sales order, invoice, etc.) in the :guilabel:`Description on the Invoice` field."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:56
msgid "To add a term, click on *Add a line*, and define its *Type*, *Value*, and *Due Date Computation*."
msgid "Tick the :guilabel:`Display terms on invoice` checkbox to display a breakdown of each payment and its due date on the invoice report, if desired."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:59
msgid "Terms are computed in the order they are set up."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:58
msgid "In the :guilabel:`Terms` section, add a set of rules (terms) to define what needs to be paid and by which due date(s). Defining terms automatically calculates the payments' due date(s). This is particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple terms`)."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:60
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:63
msgid "To add a term, click on :guilabel:`Add a line`, define its :guilabel:`Due Type` and :guilabel:`Value`, and fill out the appropriate fields to define when the term is due, including any :doc:`discounts <cash_discounts>`. Due dates are calculated by taking the invoice/bill date, first adding the :guilabel:`Months`, and then adding the :guilabel:`Days`. If the :guilabel:`End of month` toggle is enabled, the due date will then be the end of that month, plus any :guilabel:`Days after End of month`."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:71
msgid "To instead specify a number of days *before the end of the month*, use a negative value in the :guilabel:`Days after End of month` field."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:74
msgid "To test that your payment terms are configured correctly, enter an invoice amount and invoice date in the :guilabel:`Example` section to generate the payments that would be due and their due dates using these payment terms."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:79
msgid "Terms are computed in the order of their due dates."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:80
msgid "The **balance** should always be used for the last line."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:62
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:83
msgid "In the following example, 30% is due on the day of issuance, and the balance is due at the end of the following month."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:-1
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "Example of Payment Terms. The last line is the balance due on the 31st of the following\n"
"month."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:71
msgid "Using Payment Terms"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:91
msgid "Using payment terms"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:73
msgid "Payment Terms can be defined in the **Due Date** field, with the **Terms** drop-down list, on:"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:93
msgid "Payment terms can be defined using the :guilabel:`Payment Terms` field on:"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**Quotations**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:95
msgid "**Contacts:** To automatically set default payment terms on a contact's new sales orders, invoices, and bills. This can be modified in the contact form, under the :guilabel:`Sales & Purchase` tab."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "To set specific payment terms automatically on all invoices generated from a quotation."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:98
msgid "**Quotations/Sales Orders:** To set specific payment terms automatically on all invoices generated from a quotation or sales order."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**Customer Invoices**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:101
msgid "Payment terms can be defined using the :guilabel:`Due Date` field, with the :guilabel:`Terms` drop-down list on:"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "To set specific payment terms on an invoice."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:104
msgid "**Customer invoices:** To set specific payment terms on an invoice."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**Vendor Bills**"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:105
msgid "**Vendor bills:** To set specific payment terms on a bill."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "To set specific payment terms on a bill. This is mostly useful when you need to manage vendor terms with several installments. Otherwise, setting the *Due Date* is enough."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:108
msgid "Setting payment terms on a vendor bill is mostly useful for managing vendor terms with multiple installments or cash discounts. Otherwise, manually setting the **due date** is enough. If payment terms are already defined, empty the field to select a date."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:84
msgid "You can also define a **Due Date** manually. If Payment Terms are already defined, empty the field so you can select a date."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:113
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:133
#: ../../content/applications/finance/accounting/payments/checks.rst:84
msgid "Journal entries"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:87
msgid "Payment Terms can be defined with the **Payment Terms** field on:"
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:115
msgid "Invoices with specific payment terms generate different *journal entries*, with one *journal item* for every computed *due date*."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "**Contacts**"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:0
msgid "To set specific payment terms automatically on new sales orders, invoices, and bills of a contact. This can be modified in the contacts *Form View*, under the *Sales & Purchase* tab."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:96
msgid "Invoices with specific Payment Terms generate different *Journal Entries*, with one *Journal Item* for every computed *Due Date*."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:99
msgid "This makes for easier *Follow-ups* and *Reconciliation* since Odoo takes each due date into account, rather than just the balance due date. It also helps to get an accurate *Aged Receivable report*."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:118
msgid "This makes for easier :doc:`follow-ups </applications/finance/accounting/payments/follow_up>` and :doc:`reconciliation </applications/finance/accounting/bank/reconciliation>` since Odoo takes each due date into account, rather than just the balance due date. It also helps to get an accurate :ref:`aged receivable report <customer-invoices/aging-report>`."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:-1
msgid "The amount debited on the Account Receivable is split into two Journal Items with distinct\n"
"Due Dates"
msgid "The amount debited to the account receivable is split into two journal items with\n"
"distinct due dates"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:107
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:128
msgid "In this example, an invoice of $1000 has been issued with the following payment terms: *30% is due on the day of issuance, and the balance is due at the end of the following month.*"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:111
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:132
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:222
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:232
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:248
@@ -3441,7 +3451,7 @@ msgstr ""
msgid "Account"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:111
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:132
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:168
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:222
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:232
@@ -3453,7 +3463,7 @@ msgstr ""
msgid "Debit"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:111
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:132
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:168
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:222
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:232
@@ -3465,8 +3475,8 @@ msgstr ""
msgid "Credit"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:113
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:115
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:134
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:136
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:224
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:250
#: ../../content/applications/finance/accounting/payments/checks.rst:95
@@ -3474,33 +3484,33 @@ msgstr ""
msgid "Account Receivable"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:113
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:134
msgid "February 21"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:113
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:134
msgid "300"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:115
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:136
msgid "March 31"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:115
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:136
msgid "700"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:117
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:138
msgid "Product Sales"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:117
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:138
#: ../../content/applications/finance/fiscal_localizations/peru.rst:140
msgid "1000"
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:120
msgid "The $1000 debited on the Account Receivable is split into two distinct *Journal Items*. Both of them have their own **Due Date**."
#: ../../content/applications/finance/accounting/customer_invoices/payment_terms.rst:141
msgid "The $1000 debited to the account receivable is split into two distinct journal items. Both of them have their own due date."
msgstr ""
#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:5
@@ -4671,11 +4681,6 @@ msgstr ""
msgid "Balance = Debit - Credit"
msgstr ""
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:133
#: ../../content/applications/finance/accounting/payments/checks.rst:84
msgid "Journal entries"
msgstr ""
#: ../../content/applications/finance/accounting/get_started/cheat_sheet.rst:135
msgid "Every financial document of the company (e.g., an invoice, a bank statement, a pay slip, a capital increase contract) is recorded as a journal entry, impacting several accounts."
msgstr ""
@@ -4936,23 +4941,23 @@ msgid "If a currency is set on a **journal**, that journal only handles transact
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:103
msgid "To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open the journal you want to edit, and select a currency in the field :guilabel:`Currency`. If left empty, all active currencies are handled instead of just one."
msgid "To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open the journal you want to edit, and select a currency in the field :guilabel:`Currency`."
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:-1
msgid "Select the currency for the journal to handle."
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:114
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:113
msgid "Multi-currency accounting"
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:119
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:118
msgid "Invoices, bills, and other documents"
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:121
msgid "For all documents, you can select the currency and journal to use for the transaction."
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:120
msgid "For all documents, you can select the currency and journal to use for the transaction on the document itself."
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:-1
@@ -4973,11 +4978,11 @@ msgid "Select the currency and journal to use before registering the payment."
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:143
msgid "Bank statements"
msgid "Bank transactions"
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:145
msgid "When creating or importing bank statements, the amount is in the company's main currency. To see additional fields related to foreign currencies, click on the **columns dropdown button** (:guilabel:`⋮`) next to :guilabel:`Amount`, and check :guilabel:`Amount Currency` and :guilabel:`Foreign Currency`."
msgid "When creating or importing bank transactions, the amount is in the company's main currency. To input a **foreign currency**, select a currency in the :guilabel:`Foreign Currency`. Once selected, enter the :guilabel:`Amount` in your main currency for it to automatically get converted in the foreign currency in the :guilabel:`Amount in Currency field`."
msgstr ""
#: ../../content/applications/finance/accounting/get_started/multi_currency.rst:-1
@@ -16455,7 +16460,7 @@ msgid "2-digits comparison"
msgstr ""
#: ../../content/applications/finance/fiscal_localizations/france.rst:184
#: ../../content/applications/finance/payment_providers/authorize.rst:56
#: ../../content/applications/finance/payment_providers/authorize.rst:82
msgid "Template"
msgstr ""
@@ -22605,7 +22610,7 @@ msgid "The form in this section is specific to the payment provider you are conf
msgstr ""
#: ../../content/applications/finance/payment_providers.rst:343
#: ../../content/applications/finance/payment_providers/authorize.rst:39
#: ../../content/applications/finance/payment_providers/authorize.rst:38
#: ../../content/applications/finance/payment_providers/stripe.rst:122
msgid "Configuration tab"
msgstr ""
@@ -22792,7 +22797,7 @@ msgstr ""
#: ../../content/applications/finance/payment_providers/adyen.rst:163
#: ../../content/applications/finance/payment_providers/alipay.rst:39
#: ../../content/applications/finance/payment_providers/asiapay.rst:42
#: ../../content/applications/finance/payment_providers/authorize.rst:138
#: ../../content/applications/finance/payment_providers/authorize.rst:51
#: ../../content/applications/finance/payment_providers/buckaroo.rst:63
#: ../../content/applications/finance/payment_providers/flutterwave.rst:44
#: ../../content/applications/finance/payment_providers/mercado_pago.rst:30
@@ -22961,7 +22966,7 @@ msgid "Allows payments originated from a specific domain."
msgstr ""
#: ../../content/applications/finance/payment_providers/adyen.rst:137
#: ../../content/applications/finance/payment_providers/authorize.rst:42
#: ../../content/applications/finance/payment_providers/authorize.rst:41
#: ../../content/applications/finance/payment_providers/stripe.rst:127
msgid "Place a hold on a card"
msgstr ""
@@ -23179,88 +23184,183 @@ msgid "To retrieve them, log into your Authorize.Net account, go to :menuselecti
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:31
msgid "If you are trying Authorize.Net as a test, with a *sandbox account*, change the :guilabel:`State` to :guilabel:`Test Mode`. We recommend doing this on a test Odoo database, rather than on your main database. If you set :guilabel:`Test Mode` on Odoo and use an authorize.net account instead of a sandbox.authorize.net account, it results in the following error: *The merchant login ID or password is invalid or the account is inactive*."
msgid "To test Authorize.Net with a *sandbox* account, change the :guilabel:`State` to :guilabel:`Test Mode`. We recommend doing this on a test Odoo database, rather than on your main database."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:44
msgid "With Authorize.net, you can enable the :ref:`manual capture <payment_providers/features/manual_capture>`. If enabled, the funds are reserved for 30 days on the customer's card, but not charged yet."
#: ../../content/applications/finance/payment_providers/authorize.rst:34
msgid "If you use the :guilabel:`Test Mode` with a regular account, it results in the following error: *The merchant login ID or password is invalid or the account is inactive*."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:49
msgid "After **30 days**, the transaction is **voided automatically** by Authorize.net."
#: ../../content/applications/finance/payment_providers/authorize.rst:43
msgid "With Authorize.Net, you can enable the :ref:`manual capture <payment_providers/features/manual_capture>`. If enabled, the funds are reserved for 30 days on the customer's card, but not charged yet."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:52
msgid "Authorize.Net statement export"
#: ../../content/applications/finance/payment_providers/authorize.rst:48
msgid "After **30 days**, the transaction is **voided automatically** by Authorize.Net."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:58
msgid "You can find the Excel import template `here. <https://docs.google.com/spreadsheets/d/1CMVtBWLLVIrUpYA92paw-cL7-WdKLbaa/edit?usp=share_link&ouid=105295722917050444558&rtpof=true&sd=true>`_"
#: ../../content/applications/finance/payment_providers/authorize.rst:54
msgid "ACH payments (USA only)"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:60
msgid "To import a statement, log into your Authorize.Net account, and go to :menuselection:`Account --> Statements --> eCheck.Net Settlement Statement`. Then, define an export range using an **opening** and **closing** batch settlement. All transactions within the two batch settlements will be exported to Odoo. Select all transactions within the desired range, and copy/paste them into the :guilabel:`Report 1 Download` sheet of the :ref:`Excel sheet <excel-file-template>`."
#: ../../content/applications/finance/payment_providers/authorize.rst:56
msgid ":abbr:`ACH (automated clearing house)` is an electronic funds transfer system used between bank accounts in the United States."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:-1
msgid "Select all transactions for the desired range on Authorize.net, and copy them into\n"
"'report1' of the Excel template."
#: ../../content/applications/finance/payment_providers/authorize.rst:62
msgid "To give customers the possibility to pay using ACH, `sign up for Authorize.Net eCheck's service <https://www.authorize.net/payments/echeck.html>`_. Once eCheck is activated, duplicate the previously configured Authorize.Net payment acquirer on Odoo by going to :menuselection:`Accounting --> Configuration --> Payment Acquirers --> Authorize.net --> ⛭ Action --> Duplicate`. Then, change the acquirer's name to differentiate both versions (e.g., `Authorize.net - Banks`)."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:-1
msgid "Settlement batch of the an Authorize.Net statement"
#: ../../content/applications/finance/payment_providers/authorize.rst:68
msgid "Open the :guilabel:`Configuration` tab, click :guilabel:`Edit` and set the :guilabel:`Allow Payments From` field to :guilabel:`Bank Account (USA only)`. Finally, click :guilabel:`Save`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:76
msgid "In this case, the first batch (01/01/2021) of the year belongs to the settlement of 12/31/2020, so the **opening** settlement is from 12/31/2020."
#: ../../content/applications/finance/payment_providers/authorize.rst:71
msgid "When ready, change the acquirer's :guilabel:`State` to :guilabel:`Enabled` for a regular account or :guilabel:`Test Mode` for a sandbox account, and :guilabel:`Save`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:79
msgid "Once you have pasted the data into the :guilabel:`Report 1 Download` sheet, go to :menuselection:`Authorize.net --> Transaction Search --> Search for a Transaction`, enter the previously used range of batch settlement dates, and click :guilabel:`Search`."
#: ../../content/applications/finance/payment_providers/authorize.rst:75
msgid "Import an Authorize.Net statement"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:83
msgid "When the list has been generated, click :guilabel:`Download to File`. In the pop-up window, select :guilabel:`Expanded Fields with CAVV Response/Comma Separated`, enable :guilabel:`Include Column Headings`, and click :guilabel:`Submit`. Open the text file, select :guilabel:`All`, copy the data and paste it into the :guilabel:`Report 2 Download` sheet of the Excel file."
#: ../../content/applications/finance/payment_providers/authorize.rst:78
msgid "Export from Authorize.Net"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:84
msgid "`Download the Excel import template <https://docs.google.com/spreadsheets/d/1CMVtBWLLVIrUpYA92paw-cL7-WdKLbaa/edit?usp=share_link&ouid=105295722917050444558&rtpof=true&sd=true>`_"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:86
msgid "To export a statement:"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:88
msgid "Transit lines are automatically filled in and updated in the :guilabel:`transit for report 1` and :guilabel:`transit for report 2` sheets of the Excel file. Make sure all entries are present, and if not, copy the **formula** from previously filled-in lines of the :guilabel:`transit for report 1` or :guilabel:`2` and paste it into the empty lines."
msgid "Log in to Authorize.Net."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:94
msgid "To get the correct closing balance, do *not* remove any line from the Excel sheets."
#: ../../content/applications/finance/payment_providers/authorize.rst:89
msgid "Go to :menuselection:`Account --> Statements --> eCheck.Net Settlement Statement`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:97
msgid "Import into Odoo"
#: ../../content/applications/finance/payment_providers/authorize.rst:90
msgid "Define an export range using an *opening* and *closing* batch settlement. All transactions within the two batch settlements will be exported to Odoo."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:99
msgid "To import the data into Odoo, open the Excel file, copy the data from the :guilabel:`transit for report 2` sheet and **paste special** only the **values** in the :guilabel:`Odoo Import to CSV` sheet. Then, look for *blue* cells in the :guilabel:`Odoo Import to CSV` sheet. These are **chargeback** entries without any **reference** number. As they cannot be imported as such, go to :menuselection:`Authorize.Net --> Account --> Statements --> eCheck.Net Settlement Statement`, look for :guilabel:`Charge Transaction/Chargeback`, and click it. Copy the **invoice description**, paste it into the :guilabel:`Label` cell of the :guilabel:`Odoo Import to CSV` sheet, and add \"**Chargeback /**\" before the description. If you have multiple invoices, add a line into the Excel sheet for each invoice and copy/paste the description into each respective :guilabel:`Label` line."
#: ../../content/applications/finance/payment_providers/authorize.rst:92
msgid "Select all transactions within the desired range, copy them, and paste them into the :guilabel:`Report 1 Download` sheet of the :ref:`Excel import template <authorize-import-template>`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:-1
msgid "Selecting Authorize.Net transactions to import"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:-1
msgid "Settlement batch of an Authorize.Net statement"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:105
msgid "In this case, the first batch (01/01/2021) of the year belongs to the settlement of 12/31/2020, so the **opening** settlement is from 12/31/2020."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:108
msgid "Once the data is in the :guilabel:`Report 1 Download` sheet:"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:110
msgid "For combined **chargeback/returns** in the payouts, you need to create a new line in the Excel file for each invoice."
msgid "Go to the :guilabel:`Transaction Search` tab on Authorize.Net."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:111
msgid "Under the :guilabel:`Settlement Date` section, select the previously used range of batch settlement dates in the :guilabel:`From:` and :guilabel:`To:` fields and click :guilabel:`Search`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:113
msgid "When the list has been generated, click :guilabel:`Download to File`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:114
msgid "In the pop-up window, select :guilabel:`Expanded Fields with CAVV Response/Comma Separated`, enable :guilabel:`Include Column Headings`, and click :guilabel:`Submit`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:116
msgid "Open the text file, select :guilabel:`All`, copy the data, and paste it into the :guilabel:`Report 2 Download` sheet of the :ref:`Excel import template <authorize-import-template>`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:118
msgid "Transit lines are automatically filled in and updated in the :guilabel:`transit for report 1` and :guilabel:`transit for report 2` sheets of the :ref:`Excel import template <authorize-import-template>`. Make sure all entries are present, and **if not**, copy the formula from previously filled-in lines of the :guilabel:`transit for report 1` or :guilabel:`2` sheets and paste it into the empty lines."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:125
msgid "To get the correct closing balance, **do not remove** any line from the Excel sheets."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:128
msgid "Import into Odoo"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:130
msgid "To import the data into Odoo:"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:132
msgid "Open the :ref:`Excel import template <authorize-import-template>`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:133
msgid "Copy the data from the :guilabel:`transit for report 2` sheet and use *paste special* to only paste the values in the :guilabel:`Odoo Import to CSV` sheet."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:135
msgid "Look for *blue* cells in the :guilabel:`Odoo Import to CSV` sheet. These are chargeback entries without any reference number. As they cannot be imported as such, go to :menuselection:`Authorize.Net --> Account --> Statements --> eCheck.Net Settlement Statement`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:138
msgid "Look for :guilabel:`Charge Transaction/Chargeback`, and click it."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:139
msgid "Copy the invoice description, paste it into the :guilabel:`Label` cell of the :guilabel:`Odoo Import to CSV` sheet, and add `Chargeback /` before the description."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:141
msgid "If there are multiple invoices, add a line into the :ref:`Excel import template <authorize-import-template>` for each invoice and copy/paste the description into each respective :guilabel:`Label` line."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:146
msgid "For **combined chargeback/returns** in the payouts, create a new line in the :ref:`Excel import template <authorize-import-template>` for each invoice."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:0
msgid "Chargeback description"
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:118
msgid "Next, delete **zero transaction** and **void transaction** line items, and change the **format** of the :guilabel:`Amount` column in the :guilabel:`Odoo Import to CSV` sheet to **Number**. Go back to :menuselection:`eCheck.Net Settlement Statement --> Search for a Transaction` and search again for the previously used batch settlements dates. Verify that the batch settlement dates on **eCheck.Net** match the related payments' dates found in the :guilabel:`Date` column of the :guilabel:`Odoo Import to CSV`. If it does not match, replace the date with the one from **eCheck.Net**. Sort the column by *date*, and make sure the format is `MM/DD/YYYY`. Finally, copy the data (column headings included) from the :guilabel:`Odoo Import to CSV` sheet, paste into a new Excel file of your choice, and save it as .CSV format."
#: ../../content/applications/finance/payment_providers/authorize.rst:154
msgid "Next, delete *zero transaction* and *void transaction* line items, and change the format of the :guilabel:`Amount` column in the :guilabel:`Odoo Import to CSV` sheet to *Number*."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:128
msgid "Open your Accounting app, go to :menuselection:`Configuration --> Journals`, tick the :guilabel:`Authorize.Net` box, and click :menuselection:`Favorites --> Import records --> Load file`. Select the file saved as .CSV, and upload it into Odoo."
#: ../../content/applications/finance/payment_providers/authorize.rst:156
msgid "Go back to :menuselection:`eCheck.Net Settlement Statement --> Search for a Transaction` and search again for the previously used batch settlements dates."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:133
msgid "List of eCheck.Net `return codes. <https://support.authorize.net/knowledgebase/Knowledgearticle/?code=000001293>`_"
#: ../../content/applications/finance/payment_providers/authorize.rst:158
msgid "Verify that the batch settlement dates on eCheck.Net match the related payments' dates found in the :guilabel:`Date` column of the :guilabel:`Odoo Import to CSV`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:136
msgid "`Authorize.Net: Getting Started Guide <https://support.authorize.net/s/article/Authorize-Net-Getting-Started-Guide>`_"
#: ../../content/applications/finance/payment_providers/authorize.rst:160
msgid "If it does not match, replace the date with the one from eCheck.Net. Sort the column by *date*, and make sure the format is `MM/DD/YYYY`."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:162
msgid "Copy the data - column headings included - from the :guilabel:`Odoo Import to CSV` sheet, paste it into a new Excel file, and save it using the CSV format."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:164
msgid "Open the Accounting app, go to :menuselection:`Configuration --> Journals`, tick the :guilabel:`Authorize.Net` box, and click :menuselection:`Favorites --> Import records --> Load file`. Select the CSV file and upload it into Odoo."
msgstr ""
#: ../../content/applications/finance/payment_providers/authorize.rst:169
msgid "List of `eCheck.Net return codes <https://support.authorize.net/knowledgebase/Knowledgearticle/?code=000001293>`_"
msgstr ""
#: ../../content/applications/finance/payment_providers/buckaroo.rst:3
+21 -8
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2447,7 +2447,7 @@ msgid "Viewing the Sales Analysis report as a pie chart"
msgstr ""
#: ../../content/applications/general/reporting.rst:158
msgid "For bar and line charts, you can use the stacked option when you have at least two groups, which then appear on top of each other instead of next to each other."
msgid "For **bar** and **line** charts, you can use the stacked option when you have at least two groups, which then appear on top of each other instead of next to each other."
msgstr ""
#: ../../content/applications/general/reporting.rst:163
@@ -2467,10 +2467,27 @@ msgid "Non-stacked bar chart example"
msgstr ""
#: ../../content/applications/general/reporting.rst:175
msgid "For line charts, you can use the cumulative option to sum values, which is especially useful to show the change in growth over a time period."
msgid "Stacked line chart"
msgstr ""
#: ../../content/applications/general/reporting.rst:180
#: ../../content/applications/general/reporting.rst:0
msgid "Stacked line chart example"
msgstr ""
#: ../../content/applications/general/reporting.rst:181
#: ../../content/applications/general/reporting.rst:198
msgid "Regular line chart"
msgstr ""
#: ../../content/applications/general/reporting.rst:0
msgid "Non-stacked line chart example"
msgstr ""
#: ../../content/applications/general/reporting.rst:187
msgid "For **line** charts, you can use the cumulative option to sum values, which is especially useful to show the change in growth over a time period."
msgstr ""
#: ../../content/applications/general/reporting.rst:192
msgid "Cumulative line chart"
msgstr ""
@@ -2478,10 +2495,6 @@ msgstr ""
msgid "Cumulative line chart example"
msgstr ""
#: ../../content/applications/general/reporting.rst:186
msgid "Regular line chart"
msgstr ""
#: ../../content/applications/general/reporting.rst:0
msgid "Regular line chart example"
msgstr ""
+26 -111
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3408,7 +3408,7 @@ msgid "Process a delivery order in three steps (pick + pack + ship)"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/delivery_three_steps.rst:48
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:90
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:89
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:143
#: ../../content/applications/inventory_and_mrp/inventory/shipping/operation/label_type.rst:35
msgid "Create a sales order"
@@ -3537,30 +3537,29 @@ msgid "If another receiving or shipping configuration is set on the warehouse, t
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:23
msgid "Begin by navigating to :menuselection:`Inventory --> Configuration --> Warehouses`, click on the desired warehouse, and click :guilabel:`Edit`. Next, on the :guilabel:`Warehouse Configuration` tab, under the :guilabel:`Shipments` section, select :guilabel:`Receive goods directly (1 step)` for :guilabel:`Incoming Shipments` and/or :guilabel:`Deliver goods directly (1 step)` for :guilabel:`Outgoing Shipments`, and :guilabel:`Save` the changes to finish."
msgid "Begin by navigating to :menuselection:`Inventory --> Configuration --> Warehouses`, and click on the desired warehouse to edit. Next, on the :guilabel:`Warehouse Configuration` tab, under the :guilabel:`Shipments` section, select :guilabel:`Receive goods directly (1 step)` for :guilabel:`Incoming Shipments` and/or :guilabel:`Deliver goods directly (1 step)` for :guilabel:`Outgoing Shipments`."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:-1
msgid "Set incoming and outgoing shipment options to receive and deliver in one step."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:35
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:34
msgid "Receive goods directly (1 step)"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:38
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:37
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:70
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_three_steps.rst:46
msgid "Create a purchase order"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:40
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:72
msgid "On the main :menuselection:`Purchase` application dashboard, start by making a new quote by clicking :guilabel:`Create`. Then, select (or create) a :guilabel:`Vendor` from the drop-down field, add a storable :guilabel:`Product` to the order lines, and click :guilabel:`Confirm Order` to finalize the quote as a new purchase order."
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:39
msgid "On the main :menuselection:`Purchase` application dashboard, start by making a new quote by clicking :guilabel:`New`. Then, select (or create) a :guilabel:`Vendor` from the drop-down field, add a storable :guilabel:`Product` to the order lines, and click :guilabel:`Confirm Order` to finalize the quote as a new purchase order."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:45
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:97
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:44
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:96
msgid "A :guilabel:`Receipt` smart button will appear in the top-right corner of the :abbr:`PO (purchase order)` form — click it to reveal the associated receipt for the purchase order."
msgstr ""
@@ -3568,7 +3567,7 @@ msgstr ""
msgid "Receipt smart button appears on the confirmed purchase order."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:53
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:52
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:93
msgid "Purchase order receipts can also be found in the :menuselection:`Inventory` application. In the :guilabel:`Overview` dashboard, click the :guilabel:`# to Process` smart button in the :guilabel:`Receipts` kanban card."
msgstr ""
@@ -3577,13 +3576,13 @@ msgstr ""
msgid "Receipt kanban card's 1 to Process smart button."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:62
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:61
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:102
#: ../../content/applications/inventory_and_mrp/inventory/management/warehouses/warehouse_replenishment_transfer.rst:97
msgid "Process the receipt"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:64
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:63
msgid "When viewing the receipt (associated with the purchase order above), click :guilabel:`Validate` to then complete the receipt."
msgstr ""
@@ -3591,7 +3590,7 @@ msgstr ""
msgid "Validate the purchase order via the Validate smart button."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:72
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:71
msgid "If :guilabel:`Storage Locations` are activated, clicking the :guilabel:`≣ (bullet list)` details icon next to the :guilabel:`🗑️ (trash)` delete icon enables the :guilabel:`Detailed Operations` screen to pop-up. This allows the location(s) to be specified for the received product(s)."
msgstr ""
@@ -3600,19 +3599,19 @@ msgid "Select the Storage Location for the products being received in the Detail
"pop-up."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:81
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:80
msgid "Once the receipt is validated, the product leaves the :guilabel:`Supplier Location` and enters the :guilabel:`WH/Stock Location`. Once it arrives here, it will be available for manufacturing, sales, etc. Then, the status of the document will change to :guilabel:`Done`, thus completing the reception process in one step."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:87
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:86
msgid "Deliver goods directly (1 step)"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:92
msgid "Start my navigating to the main :menuselection:`Sales` app dashboard, and make a new quote by clicking :guilabel:`Create`. Then select (or create) a :guilabel:`Customer` from the drop-down field, add a storable :guilabel:`Product` that is in stock to the order lines, and click :guilabel:`Confirm` to finalize the quotation as a sales order."
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:91
msgid "Start my navigating to the main :menuselection:`Sales` app dashboard, and make a new quote by clicking :guilabel:`New`. Then select (or create) a :guilabel:`Customer` from the drop-down field, add a storable :guilabel:`Product` that is in stock to the order lines, and click :guilabel:`Confirm` to finalize the quotation as a sales order."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:100
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:99
msgid "A :guilabel:`Delivery` smart button will appear in the top-right corner of the :abbr:`SO (Sales Order)` form — click it to reveal the associated delivery order for the sales order."
msgstr ""
@@ -3620,7 +3619,7 @@ msgstr ""
msgid "The Delivery smart button appears after the sales order is confirmed."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:108
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:107
msgid "Delivery orders can also be found in the :menuselection:`Inventory` application. In the :guilabel:`Overview` dashboard, click the :guilabel:`# to Process` smart button in the :guilabel:`Delivery Orders` kanban card."
msgstr ""
@@ -3628,12 +3627,12 @@ msgstr ""
msgid "Delivery Orders kanban card's 1 to Process smart button."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:117
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:116
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:196
msgid "Process the delivery"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:119
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:118
msgid "When viewing the delivery order (associated with the sales order above), click :guilabel:`Validate` to then complete the delivery."
msgstr ""
@@ -3641,7 +3640,7 @@ msgstr ""
msgid "Validate the delivery order."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:126
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_one_step.rst:125
msgid "Once the picking order is validated, the product leaves the :guilabel:`WH/Stock location` and moves to the :guilabel:`Partners/Customers location`. Then, the status of the document will change to :guilabel:`Done`, thus completing delivery in one step."
msgstr ""
@@ -3701,6 +3700,10 @@ msgstr ""
msgid "Process a receipt in two steps (input + stock)"
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:72
msgid "On the main :menuselection:`Purchase` application dashboard, start by making a new quote by clicking :guilabel:`Create`. Then, select (or create) a :guilabel:`Vendor` from the drop-down field, add a storable :guilabel:`Product` to the order lines, and click :guilabel:`Confirm Order` to finalize the quote as a new purchase order."
msgstr ""
#: ../../content/applications/inventory_and_mrp/inventory/management/shipments_deliveries/receipts_delivery_two_steps.rst:78
msgid "For businesses with multiple warehouses that have different step configurations, the :guilabel:`Deliver To` field on the :abbr:`PO (Purchase Order)` form may need to be specified as the correct *input location* connected to the two-step warehouse, which can be done by selecting the warehouse from the drop-down selection that includes the `Receipts` label at the end of the name."
msgstr ""
@@ -6797,74 +6800,6 @@ msgstr ""
msgid "Manufacturing management"
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:3
msgid "Alternative Work Centers"
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:5
msgid "Manufacturing several different products simultaneously at the same work center is a common issue for manufacturing companies. Although in practice, employees can manufacture the goods at another work center instead of waiting for one to be available, it's not always simple to have visibility on which work center is busy and plan resources accordingly in real-time."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:10
msgid "With Odoo, you can configure alternative work centers to solve this issue. This automatically checks which work center is busy and which equivalent ones are free, and schedules orders and maintenance accordingly."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:14
msgid "This way, your process becomes more efficient, as work center utilisation is optimised."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:17
msgid "Configure your Work Centers"
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:19
msgid "First, go to the :menuselection:`Manufacturing app --> Configuration --> Settings`. Then, enable the :guilabel:`Work Orders` feature and hit :guilabel:`Save`."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:-1
msgid "Work order settings ticked in Odoo Manufacturing."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:26
msgid "Now, go to :menuselection:`Configuration --> Work Centers` and create two new work centers. Add the second work center as an alternative to the first one and vice versa."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:-1
msgid "Create a secondary work center as an alternate to the first."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:33
msgid "Next, go to :menuselection:`Products --> Bills of Materials`, choose your product, and add these work centers to the operations of your :abbr:`BoM (Bill of Materials)`."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:-1
msgid "Add work centers to Bill of Materials operations."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:41
msgid "Create your Work Orders"
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:43
msgid "Now that everything is configured, you can create your *Work Orders*."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:45
msgid "Go to :menuselection:`Operations --> Manufacturing Orders`, and hit :guilabel:`Create`. There, add your product to your manufacturing order and plan it. You can then retrieve them from the :guilabel:`Work Orders` list view, under :menuselection:`Operations > Work Orders`."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:49
msgid "Each new *Work Order*, which will be created before the end of the first one, will be scheduled at the alternative work center you configured, as shown below."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:-1
msgid "Work order creation and scheduling."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/alternative_wc.rst:57
msgid "Keep in mind that, if you add time after production to your work center, you may have work orders scheduled for your alternative work center even if the usual one is free."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/bill_configuration.rst:3
msgid "Create a bill of materials"
msgstr ""
@@ -7077,26 +7012,6 @@ msgstr ""
msgid "Applying components to multiple variants."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/quality_control.rst:3
msgid "Quality Control"
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/quality_control.rst:5
msgid "Whether you want to control the quality of your production, or the production of your subcontractor, before registering the products into your stock, you can rely on Odoo's Quality module."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/quality_control.rst:10
msgid "To control the quality of your production, you need to set a *Quality Control Point* on the Manufacturing Operation Type, as shown below. To create it, Go to :menuselection:`Quality --> Quality Control --> Control Points`, and click **Create**. If the check only applies to specific products, or product categories, you can specify these during the setup as well."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/quality_control.rst:19
msgid "Regarding the reception of subcontracted products, instead of the Manufacturing Operation Type, you need to select the 'Receipts' Operation type. For the rest, the same principles apply."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/quality_control.rst:25
msgid "By doing so, a quality check is automatically created each time a finished product is made and/or received. Note that several Quality Check *Types* can be chosen from the dropdown. Note also that several Quality Check Points can be set up for the same Operation Type."
msgstr ""
#: ../../content/applications/inventory_and_mrp/manufacturing/management/sub_assemblies.rst:3
msgid "Manage semi-finished products"
msgstr ""
+79 -83
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1453,75 +1453,71 @@ msgid "TM-P80 (Wi-Fi® model)"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:32
msgid "To work with Odoo, some models that can be used without an :doc:`IoT box <../../../productivity/iot/config/connect>` may require :doc:`the HTTPS protocol <https>` to establish a secure connection between the browser and the printer. However, trying to reach the printer's IP address using HTTPS leads to a warning page on most web browsers."
msgid "To work with Odoo, some models that can be used without an :doc:`IoT box <../../../productivity/iot/config/connect>` may require :doc:`the HTTPS protocol <https>` to establish a secure connection between the browser and the printer. However, trying to reach the printer's IP address using HTTPS leads to a warning page on most web browsers. In that case, you can temporarily :ref:`force the connection <epos_ssc/instructions>`, which allows you to reach the page in HTTPS and use the ePOS printer in Odoo as long as the browser window stays open."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:41
msgid "warning page about the connection privacy on Google Chrome"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:41
msgid "Warning page on Google Chrome, Windows 10"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:43
msgid "In that case, you can temporarily force the connection by clicking :guilabel:`Advanced` and :guilabel:`Proceed to [IP address] (unsafe)`. Doing so allows you to reach the page in HTTPS and use the ePOS printer in Odoo as long as the browser window stays open."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:48
msgid "The previous instructions apply to Google Chrome but are similar to other browsers."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:51
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:40
msgid "The connection is lost after closing the browser window. Therefore, this method should only be used as a **workaround** or as a pre-requisite for the :ref:`following instructions <epos_ssc/instructions>`."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:58
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:47
msgid "Generate, export, and import self-signed certificates"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:60
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:49
msgid "For a long-term solution, you must generate a **self-signed certificate**. Then, export and import it into your browser."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:64
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:53
msgid "**Generating** an SSL certificate should only be done **once**. If you create another certificate, devices using the previous one will lose HTTPS access."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:69
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:58
msgid "Windows 10 & Linux OS"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:73
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:62
msgid "Generate a self-signed certificate"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:75
msgid "After forcing the connection, sign in using your printer credentials to access the ePOS printer settings. To sign in, enter `epson` in the :guilabel:`ID` field and your printer serial number in the :guilabel:`Password` field."
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:64
msgid "Navigate to the ePOS' IP address (e.g., `https://192.168.1.25`) and force the connection by clicking :guilabel:`Advanced` and :guilabel:`Proceed to [IP address] (unsafe)`."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:79
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:0
msgid "warning page about the connection privacy on Google Chrome"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:72
msgid "Warning page on Google Chrome, Windows 10"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:74
msgid "Then, sign in using your printer credentials to access the ePOS printer settings. To sign in, enter `epson` in the :guilabel:`ID` field and your printer serial number in the :guilabel:`Password` field."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:78
msgid "Click :guilabel:`Certificate List` in the :guilabel:`Authentication` section, and click :guilabel:`create` to generate a new **Self-Signed Certificate**. The :guilabel:`Common Name` should be automatically filled out. If not, fill it in with the printer IP address number. Select the years the certificate will be valid in the :guilabel:`Validity Period` field, click :guilabel:`Create`, and :guilabel:`Reset` or manually restart the printer."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:86
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:85
msgid "The self-signed certificate is generated. Reload the page and click :guilabel:`SSL/TLS` in the :guilabel:`Security` section to ensure **Selfsigned Certificate** is correctly selected in the :guilabel:`Server Certificate` section."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:90
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:89
msgid "Export a self-signed certificate"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:92
msgid "The export process is heavily dependent on the :abbr:`OS (Operating System)` and the browser. Start by accessing your ePOS printer settings on your web browser by navigating to its IP address, for example, `https://192.168.1.25`. Then, force the connection as explained in the :ref:`introduction <epos_ssc/ePOS printers>`."
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:91
msgid "The export process is heavily dependent on the :abbr:`OS (Operating System)` and the browser. Start by accessing your ePOS printer settings on your web browser by navigating to its IP address (e.g., `https://192.168.1.25`). Then, force the connection as explained in the **Generate a self-signed certificate tab**."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:97
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:160
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:96
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:156
msgid "If you are using **Google Chrome**,"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:99
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:98
msgid "click :guilabel:`Not secure` next to the search bar, and :guilabel:`Certificate is not valid`;"
msgstr ""
@@ -1529,37 +1525,37 @@ msgstr ""
msgid "Connection to the printer not secure button in Google Chrome browser."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:106
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:104
msgid "go to the :guilabel:`Details` tab and click :guilabel:`Export`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:107
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:105
msgid "add `.crt` at the end of the file name to ensure it has the correct extension;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:108
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:106
msgid "select :guilabel:`Base64-encoded ASCII, single certificate`, at the bottom of the pop-up window;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:110
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:128
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:108
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:125
msgid "save, and the certificate is exported."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:113
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:111
msgid "Make sure that the certificate ends with the extension `.crt`. Otherwise, some browsers might not see the file during the import process."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:116
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:172
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:114
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:168
msgid "If you are using **Mozilla Firefox**,"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:118
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:116
msgid "click the **lock-shaped** icon on the left of the address bar;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:119
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:117
msgid "go to :menuselection:`Connection not secure --> More information --> Security tab --> View certificate`;"
msgstr ""
@@ -1567,156 +1563,156 @@ msgstr ""
msgid "Connection is not secure button in Mozilla Firefox browser"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:126
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:123
msgid "scroll down to the :guilabel:`Miscellaneous` section;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:127
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:124
msgid "click :guilabel:`PEM (cert)` in the :guilabel:`Download` section;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:130
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:127
msgid "Import a self-signed certificate"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:132
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:129
msgid "The import process is heavily dependent on the :abbr:`OS (Operating System)` and the browser."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:137
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:134
msgid "Windows 10"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:139
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:136
msgid "Windows 10 manages certificates, which means that self-signed certificates must be imported from the certification file rather than the browser. To do so,"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:142
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:139
msgid "open the Windows File Explorer and locate the downloaded certification file;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:143
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:140
msgid "right-click on the certification file and click :guilabel:`Install Certificate`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:145
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:142
msgid "select where to install the certificate and for whom - either for the :guilabel:`Current User` or all users (:guilabel:`Local Machine`). Then, click :guilabel:`Next`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:148
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:145
msgid "on the `Certificate Store` screen, tick :guilabel:`Place all certificates in the following store`, click :guilabel:`Browse...`, and select :guilabel:`Trusted Root Certification Authorities`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:155
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:151
msgid "click :guilabel:`Finish`, accept the pop-up security window;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:156
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:152
msgid "restart the computer to make sure that the changes are applied."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:158
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:154
msgid "Linux"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:162
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:158
msgid "open Chrome;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:163
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:159
msgid "go to :menuselection:`Settings --> Privacy and security --> Security --> Manage certificates`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:165
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:161
msgid "go to the :guilabel:`Authorities` tab, click :guilabel:`Import`, and select the exported certification file;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:167
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:163
msgid "accept all warnings;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:168
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:164
msgid "click :guilabel:`ok`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:169
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:179
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:165
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:175
msgid "restart your browser."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:174
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:170
msgid "open Firefox;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:175
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:171
msgid "go to :menuselection:`Settings --> Privacy & Security --> Security --> View Certificates... --> Import`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:177
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:173
msgid "select the exported certification file;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:178
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:174
msgid "tick the checkboxes and validate;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:181
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:177
msgid "Mac OS"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:183
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:179
msgid "To secure the connection on a Mac:"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:185
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:181
msgid "open Safari and navigate to your printer's IP address. Doing so leads to a warning page;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:186
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:182
msgid "on the warning page, go to :menuselection:`Show Details --> visit this website --> Visit Website`, validate;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:188
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:184
msgid "reboot the printer so you can use it with any other browser."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:190
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:186
msgid "Android OS"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:192
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:188
msgid "To import an SSL certificate into an Android device, first create and export it from a computer. Next, transfer the `.crt` file to the device using email, Bluetooth, or USB. Once the file is on the device,"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:196
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:192
msgid "open the settings and search for `certificate`;"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:197
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:193
msgid "click :guilabel:`Certificate AC` (Install from device storage);"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:198
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:194
msgid "select the certificate file to install it on the device."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:201
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:197
msgid "The specific steps for installing a certificate may vary depending on the version of Android and the device manufacturer."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:206
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:202
msgid "If you need to export SSL certificates from an operating system or web browser that has not been mentioned, search for `export SSL certificate` + `the name of your browser or operating system` in your preferred search engine."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:209
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:205
msgid "Similarly, to import SSL certificates from an unmentioned OS or browser, search for `import SSL certificate root authority` + `the name of your browser or operating system` in your preferred search engine."
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:214
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:210
msgid "Check if the certificate was imported correctly"
msgstr ""
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:216
#: ../../content/applications/sales/point_of_sale/configuration/epos_ssc.rst:212
msgid "To confirm your printer's connection is secure, connect to its IP address using HTTPS. For example, navigate to `https://192.168.1.25` in your browser. If the SSL certificate has been applied correctly, you should no longer see a warning page, and the address bar should display a padlock icon, indicating that the connection is secure."
msgstr ""
+41 -33
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo saas-16.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-10 08:34+0000\n"
"POT-Creation-Date: 2023-07-27 15:04+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2525,7 +2525,11 @@ msgstr ""
msgid "If an operator types `/helpdesk` in the chat window, the conversation is used to create a *Helpdesk* ticket."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:69
#: ../../content/applications/websites/livechat/responses.rst:70
msgid "In version 16.3, the command to create a new ticket is `/ticket`. This only applies to databases running version 16.3."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:73
msgid "After entering the `/helpdesk` command, type a title for the ticket into the chat window, then press `Enter`."
msgstr ""
@@ -2533,39 +2537,43 @@ msgstr ""
msgid "View of the results from a helpdesk search in a Live Chat conversation."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:76
#: ../../content/applications/websites/livechat/responses.rst:80
msgid "The newly created ticket will be added to the *Helpdesk* team that has live chat enabled. If more than one team has live chat enabled, the ticket will automatically be assigned based on the team's priority."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:80
#: ../../content/applications/websites/livechat/responses.rst:84
msgid "The transcript from the conversation will be added to the new ticket, under the :guilabel:`Description` tab."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:83
#: ../../content/applications/websites/livechat/responses.rst:87
msgid "To access the new ticket, click on the link in the chat window, or go to the :menuselection:`Helpdesk app` and click the :guilabel:`Tickets` button on the kanban card for the appropriate team."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:88
#: ../../content/applications/websites/livechat/responses.rst:92
msgid "Search for a ticket from a live chat"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:90
#: ../../content/applications/websites/livechat/responses.rst:94
msgid "If an operator types `/helpdesk_search` in the chat window, they can search through *Helpdesk* tickets by ticket number or keyword."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:93
#: ../../content/applications/websites/livechat/responses.rst:98
msgid "In version 16.3, the command to search through *Helpdesk* tickets is `/search_tickets`. This only applies to databases running version 16.3."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:101
msgid "After entering the `/helpdesk_search` command, type a keyword or ticket number, then press `Enter`. If one or more related tickets are found, a list of links will be generated in the conversation window."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:102
#: ../../content/applications/websites/livechat/responses.rst:110
msgid "Results from the search command will only be seen by the operator, not the customer."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:105
#: ../../content/applications/websites/livechat/responses.rst:113
msgid "History"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:107
#: ../../content/applications/websites/livechat/responses.rst:115
msgid "If an operator types `/history` in the chat window, it will generate a list of the most recent pages the visitor has viewed on the website (up to 15)."
msgstr ""
@@ -2573,11 +2581,11 @@ msgstr ""
msgid "View of the results from a /history command in a Live Chat conversation."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:115
#: ../../content/applications/websites/livechat/responses.rst:123
msgid "Lead"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:117
#: ../../content/applications/websites/livechat/responses.rst:125
msgid "By typing `/lead` in the chat window, an operator can create a *lead* in the *CRM* application."
msgstr ""
@@ -2585,79 +2593,79 @@ msgstr ""
msgid "View of the results from a /lead command in a Live Chat conversation."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:124
#: ../../content/applications/websites/livechat/responses.rst:132
msgid "The `/lead` command can only be used if the *CRM* app has been installed."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:126
#: ../../content/applications/websites/livechat/responses.rst:134
msgid "After typing `/lead`, create a title for this new lead, then press `Enter`. A link with the lead title appears. Click the link, or navigate to the :menuselection:`CRM` app to view the :guilabel:`Pipeline`."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:131
#: ../../content/applications/websites/livechat/responses.rst:139
msgid "The link to the new lead can only be seen and accessed by the operator, not the customer."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:133
#: ../../content/applications/websites/livechat/responses.rst:141
msgid "The transcript of that specific live chat conversation (where the lead was created) is added to the :guilabel:`Internal Notes` tab of the lead form."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:136
#: ../../content/applications/websites/livechat/responses.rst:144
msgid "On the :guilabel:`Extra Information` tab of the lead form, the :guilabel:`Source` will be listed as :guilabel:`Livechat`."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:140
#: ../../content/applications/websites/livechat/responses.rst:148
msgid "Leave"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:142
#: ../../content/applications/websites/livechat/responses.rst:150
msgid "If an operator types `/leave` in the chat window, they can automatically exit the conversation. This command does not cause the customer to be removed from the conversation, nor does it automatically end the conversation."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:147
#: ../../content/applications/websites/livechat/responses.rst:155
msgid ":doc:`/applications/sales/crm/acquire_leads`"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:148
#: ../../content/applications/websites/livechat/responses.rst:156
msgid ":doc:`/applications/services/helpdesk/overview/getting_started`"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:153
#: ../../content/applications/websites/livechat/responses.rst:161
msgid "Canned responses"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:155
#: ../../content/applications/websites/livechat/responses.rst:163
msgid "*Canned responses* are customizable inputs where a *shortcut* stands in for a longer response. An operator will enter the shortcut, and it will automatically be replaced by the expanded *substitution* response in the conversation."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:160
#: ../../content/applications/websites/livechat/responses.rst:168
msgid "Create canned responses"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:162
#: ../../content/applications/websites/livechat/responses.rst:170
msgid "To create a new canned response, go to :menuselection:`Live Chat app --> Configuration --> Canned Responses --> New`."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:165
#: ../../content/applications/websites/livechat/responses.rst:173
msgid "From here, type the shortcut command into the :guilabel:`Shortcut` field."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:167
#: ../../content/applications/websites/livechat/responses.rst:175
msgid "Then, click into the :guilabel:`Substitution` field, and enter the custom message that will be sent to visitors in place of the shortcut. Click :guilabel:`Save`."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:171
#: ../../content/applications/websites/livechat/responses.rst:179
msgid "Try to connect the shortcut to the topic of the substitution. The easier it is for the operators to remember, the easier it will be to use the canned responses in conversations."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:175
#: ../../content/applications/websites/livechat/responses.rst:183
msgid "Use canned responses in a live chat conversation"
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:177
#: ../../content/applications/websites/livechat/responses.rst:185
msgid "To use a canned response during a live chat conversation, type a colon (`:`) into the chat window, followed by the shortcut."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:181
#: ../../content/applications/websites/livechat/responses.rst:189
msgid "An operator is chatting with a visitor. As soon as they type `:` they would see a list of available responses. They can manually select one from the list, or continue to type. If they want to use the canned response `'I am sorry to hear that.'`, they would type `:sorry`."
msgstr ""
@@ -2665,7 +2673,7 @@ msgstr ""
msgid "View of a chat window and the use of a canned response in Odoo Live Chat."
msgstr ""
#: ../../content/applications/websites/livechat/responses.rst:190
#: ../../content/applications/websites/livechat/responses.rst:198
msgid "Typing `:` into a chat window on its own will generate a list of available canned responses. Responses can be manually selected from the list, in addition to the use of shortcuts."
msgstr ""