Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f529d0105 | |||
| 294c02bdb3 | |||
| e672f1e452 | |||
| 9ed8701cc7 | |||
| 3508459102 | |||
| 6e81573e1e | |||
| 2c909c93d1 | |||
| a762cabbb3 | |||
| 20a9faef80 | |||
| 92a39cff3a | |||
| 9c7ef9b2cf | |||
| 08d012ee46 | |||
| 8f1d5d428c | |||
| 39f78ec435 | |||
| 98b765babe | |||
| f1f547ca58 | |||
| f1030c6e9f | |||
| 4c1747369d | |||
| e8305bad12 | |||
| cdef3da925 | |||
| c5a866bd11 | |||
| 4b123b8464 | |||
| 26f226c51b | |||
| 24966a91c8 | |||
| b5d9d1afdb | |||
| 09427a0183 | |||
| 43e244edd6 | |||
| 8744243175 | |||
| 7af79e3189 | |||
| 4d5a4cb28d | |||
| 92b968d337 | |||
| ae9bdc5678 | |||
| 2159795dff | |||
| 7e50e9fe1c | |||
| ea9c8bd807 | |||
| db5abde8ee | |||
| eba8e6028e | |||
| 8bbbccdedc | |||
| fe9d186b54 | |||
| 2a28a68376 |
@@ -231,6 +231,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-18.1': "Odoo Online",
|
||||
'18.0': "Odoo 18",
|
||||
'saas-17.4': "Odoo Online",
|
||||
'saas-17.2': "Odoo Online",
|
||||
|
||||
@@ -23,7 +23,7 @@ Edit Security Settings --> Delete Account`. It can also be accessed by going to
|
||||
Upon clicking the :guilabel:`Delete Account` button, a pop-up window appears, requesting
|
||||
confirmation for the account deletion.
|
||||
|
||||
.. image:: odoo_account/delete-account.png
|
||||
.. image:: odoo_accounts/delete-account.png
|
||||
:align: center
|
||||
:alt: Clicking on the Delete Account button will populate a window verifying the change.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -132,7 +132,7 @@ be downloaded from the `Odoo download page <https://www.odoo.com/page/download>`
|
||||
.. group-tab:: Fedora
|
||||
|
||||
.. note::
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 36.
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 38.
|
||||
|
||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||
|
||||
|
||||
@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo SaaS 18.1
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- January 2025
|
||||
-
|
||||
* - **Odoo 18.0**
|
||||
- |green|
|
||||
- |green|
|
||||
@@ -38,17 +44,17 @@ This matrix shows the support status of every version.
|
||||
- October 2024
|
||||
- October 2027 (planned)
|
||||
* - Odoo SaaS 17.4
|
||||
- |green|
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- July 2024
|
||||
-
|
||||
- October 2024
|
||||
* - Odoo SaaS 17.2
|
||||
- |green|
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- April 2024
|
||||
-
|
||||
- October 2024
|
||||
* - **Odoo 17.0**
|
||||
- |green|
|
||||
- |green|
|
||||
|
||||
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
@@ -110,6 +110,8 @@ You can edit the currency used to enter the statements.
|
||||
.. seealso::
|
||||
:doc:`get_started/multi_currency`
|
||||
|
||||
.. _accounting/bank/account-number:
|
||||
|
||||
Account number
|
||||
--------------
|
||||
|
||||
|
||||
@@ -21,25 +21,23 @@ Import transactions
|
||||
|
||||
Odoo supports multiple file formats to import transactions:
|
||||
|
||||
- SEPA recommended Cash Management format (CAMT.053);
|
||||
- Comma-separated values (.CSV);
|
||||
- Open Financial Exchange (.OFX);
|
||||
- Quicken Interchange Format (.QIF);
|
||||
- Belgium: Coded Statement of Account (.CODA).
|
||||
- SEPA recommended Cash Management format (CAMT.053)
|
||||
- Comma-separated values (CSV)
|
||||
- Open Financial Exchange (OFX)
|
||||
- Quicken Interchange Format (QIF)
|
||||
- Belgium: Coded Statement of Account (CODA)
|
||||
|
||||
To import a file, go to the **Accounting Dashboard**, and in the :guilabel:`Bank` journal,
|
||||
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
|
||||
click on :guilabel:`Import File`.
|
||||
|
||||
.. tip::
|
||||
Alternatively, you can also:
|
||||
|
||||
- click :guilabel:`⋮` on the :guilabel:`Bank` journal and select :guilabel:`Import file`;
|
||||
- or access the transaction list by clicking :guilabel:`⋮` on the :guilabel:`Bank` journal and
|
||||
selecting :guilabel:`Transactions`, then click the gear icon :guilabel:`(⚙)` and select
|
||||
:guilabel:`Import records`.
|
||||
|
||||
.. image:: transactions/import-transactions.png
|
||||
:alt: Import bank transactions from the bank journal
|
||||
- click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon on the :guilabel:`Bank`
|
||||
journal and select :guilabel:`Import file`;
|
||||
- or access the transaction list by clicking the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)`
|
||||
icon on the :guilabel:`Bank` journal and selecting :guilabel:`Transactions`, then click
|
||||
the :icon:`fa-cog` :guilabel:`(gear)` icon and select :guilabel:`Import records`.
|
||||
|
||||
Next, select the file and upload it.
|
||||
|
||||
@@ -75,22 +73,28 @@ on your business flow, you may want to record them for control purposes.
|
||||
account balance as of the date you begin synchronizing or importing transactions. This is
|
||||
necessary to ensure the accuracy of your accounting.
|
||||
|
||||
To access a list of statements, go to your :guilabel:`Accounting Dashboard`, click on the vertical
|
||||
ellipsis (:guilabel:`⋮`) button next to the bank or cash journal you want to check, then on
|
||||
:guilabel:`Statements`
|
||||
To access a list of existing statements, go to the :guilabel:`Accounting Dashboard`, click the
|
||||
:icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon next to the bank or cash journal you want to
|
||||
check, then click :guilabel:`Statements`.
|
||||
|
||||
.. _transactions/statement-kanban:
|
||||
|
||||
Statement creation from the kanban view
|
||||
---------------------------------------
|
||||
|
||||
Open the bank reconciliation view by clicking on the name of the bank journal, and identify the
|
||||
transaction corresponding to the last transaction of your bank statement. Click on the
|
||||
:guilabel:`STATEMENT` button when hovering on the upper separator line.
|
||||
Open the bank reconciliation (kanban) view from the :guilabel:`Accounting Dashboard` by clicking on
|
||||
the name of the bank journal and identify the transaction corresponding to the last (most recent)
|
||||
transaction of your bank statement. Click on the :guilabel:`Statement` button when hovering on the
|
||||
upper separator line to create a statement from that transaction down to the oldest transaction that
|
||||
is not yet part of a statement.
|
||||
|
||||
.. image:: transactions/statements-kanban.png
|
||||
:alt: A "STATEMENT" button is visible when hovering on the line separating two transactions.
|
||||
:alt: A "Statement" button is visible when hovering on the line separating two transactions.
|
||||
|
||||
Fill out the statement's details and save. The newly created statement includes the previous
|
||||
transactions following the last statement.
|
||||
In the :guilabel:`Create Statement` window, fill out the statement's :guilabel:`Reference`, verify
|
||||
its :guilabel:`Starting Balance` and :guilabel:`Ending Balance`, and click :guilabel:`Save`.
|
||||
|
||||
.. _transactions/statement-list:
|
||||
|
||||
Statement creation from the list view
|
||||
-------------------------------------
|
||||
@@ -100,3 +104,35 @@ view. Select all the transactions corresponding to the bank statement, and, in t
|
||||
:guilabel:`Statement` column, select an existing statement or create a new one by typing its
|
||||
reference, clicking on :guilabel:`Create and edit...`, filling out the statement's details, and
|
||||
saving.
|
||||
|
||||
.. _transactions/view-edit-print:
|
||||
|
||||
Statement viewing, editing, and printing
|
||||
----------------------------------------
|
||||
|
||||
To view an existing statement, click on the statement amount in the reconciliation (kanban) view or
|
||||
click on the statement name in the bank transaction list view. From here, you can edit the
|
||||
:guilabel:`Reference`, :guilabel:`Starting Balance`, or :guilabel:`Ending Balance`.
|
||||
|
||||
.. note::
|
||||
Manually updating the :guilabel:`Starting Balance` automatically updates the :guilabel:`Ending
|
||||
Balance` based on the new value of the :guilabel:`Starting Balance` and the value of the
|
||||
statement's transactions.
|
||||
|
||||
.. warning::
|
||||
If the :guilabel:`Starting Balance` doesn't equal the previous statement's :guilabel:`Ending
|
||||
Balance`, or if the :guilabel:`Ending Balance` doesn't equal the running balance
|
||||
(:guilabel:`Starting Balance` plus the statement's transactions), a warning appears explaining
|
||||
the issue. To maintain flexibility, it is still possible to save without first resolving the
|
||||
issue.
|
||||
|
||||
To attach a digital copy (i.e., JPEG, PNG, or PDF) of the bank statement for enhanced recordkeeping,
|
||||
click the :icon:`fa-paperclip` :guilabel:`Attachments` button and select the file to attach.
|
||||
|
||||
To generate and print a PDF of the bank statement, click the :guilabel:`Print` button (if accessed
|
||||
via the reconciliation view) or click on the :icon:`fa-cog`:guilabel:`(gear)` icon and click
|
||||
:icon:`fa-print`:guilabel:`Statement` (if accessed via the list view).
|
||||
|
||||
.. note::
|
||||
When a bank statement is generated to be printed, it is automatically added to the
|
||||
:guilabel:`Attachments`.
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
@@ -25,16 +25,17 @@ for use at a later date:
|
||||
Registering payment from an invoice or bill
|
||||
===========================================
|
||||
|
||||
When clicking :guilabel:`Register payment` in a customer invoice or vendor bill, it generates a new
|
||||
journal entry and changes the amount due according to the payment amount. The counterpart is
|
||||
reflected in an :ref:`outstanding <bank/outstanding-accounts>` **receipts** or **payments** account.
|
||||
At this point, the customer invoice or vendor bill is marked as :guilabel:`In payment`. Then, when
|
||||
the outstanding account is reconciled with a bank transaction line, the invoice or vendor bill
|
||||
changes to the :guilabel:`Paid` status.
|
||||
Clicking :guilabel:`Register payment` in a customer invoice or vendor bill generates a new journal
|
||||
entry and sets the amount due according to the payment amount. The counterpart is reflected in an
|
||||
:ref:`outstanding <bank/outstanding-accounts>` **receipts** or **payments** account. At this point,
|
||||
the customer invoice or vendor bill is marked as :guilabel:`In payment` or :ref:`Partially paid
|
||||
<accounting/payments/partial-payment>`. Then, when the outstanding account is reconciled with a bank
|
||||
transaction, the invoice or vendor bill changes to the :guilabel:`Paid` status.
|
||||
|
||||
The :icon:`fa-info-circle` information icon next to the payment line displays more
|
||||
information about the payment. To access additional information, such as the related journal, click
|
||||
:guilabel:`View`.
|
||||
To open the :guilabel:`Journal Entry Info` window and display more information about the payment,
|
||||
click the :icon:`fa-info-circle` :guilabel:`(information)` icon in the footer of the
|
||||
:guilabel:`Invoice Lines` tab. To access additional information, such as the related journal entry,
|
||||
click :guilabel:`View`.
|
||||
|
||||
.. image:: payments/information-icon.png
|
||||
:alt: See detailed information of a payment.
|
||||
@@ -46,13 +47,13 @@ information about the payment. To access additional information, such as the rel
|
||||
invoice.
|
||||
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
|
||||
created to post the currency exchange gains/losses (reversal) amount.
|
||||
- If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is
|
||||
- If a payment is (un)reconciled on an invoice with cash-basis taxes, a journal entry is
|
||||
automatically created to post the cash-basis tax (reversal) amount.
|
||||
|
||||
.. tip::
|
||||
If the main bank account is set as an :ref:`outstanding account
|
||||
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
|
||||
bank transaction), invoices and bills are directly registered as :guilabel:`Paid`.
|
||||
If the main bank account is set as the :ref:`outstanding account <bank/outstanding-accounts>` on
|
||||
the bank journal's payment method, registering the full payment on an invoice or bill moves the
|
||||
invoice/bill directly to the :guilabel:`Paid` status without requiring bank reconciliation.
|
||||
|
||||
.. _accounting/payments/not-tied:
|
||||
|
||||
@@ -62,91 +63,106 @@ Registering payments not tied to an invoice or bill
|
||||
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not
|
||||
directly linked to an invoice or bill. Instead, the account receivable or the account payable is
|
||||
matched with the **outstanding account** until it is manually matched with its related invoice or
|
||||
bill.
|
||||
bill. Then, :doc:`reconciling <bank/reconciliation>` the payment with the bank transaction completes
|
||||
the payment workflow.
|
||||
|
||||
.. _accounting/payments/matching-invoices-bills:
|
||||
|
||||
Matching invoices and bills with payments
|
||||
-----------------------------------------
|
||||
|
||||
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
|
||||
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD`
|
||||
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
|
||||
.. image:: payments/add-option.png
|
||||
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
|
||||
|
||||
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
|
||||
corresponding bank transaction.
|
||||
|
||||
.. _accounting/payments/group-payments:
|
||||
|
||||
Group payments
|
||||
--------------
|
||||
|
||||
Group payments allow combining outgoing and incoming payments from the same contact into a single
|
||||
payment to simplify the process and improve payment usability. To register a group payment:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
|
||||
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
|
||||
#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact.
|
||||
#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`.
|
||||
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
|
||||
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
|
||||
#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`.
|
||||
|
||||
The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the
|
||||
corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`.
|
||||
|
||||
.. _accounting/payments/batch-payments:
|
||||
|
||||
Batch payments
|
||||
--------------
|
||||
|
||||
Batch payments allow grouping payments from multiple contacts to ease
|
||||
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
|
||||
<payments/checks>` to the bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to
|
||||
:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting -->
|
||||
Vendors --> Batch Payments`. In the list view of payments, to group several payments in a
|
||||
batch, select them and click :menuselection:`Action --> Create Batch Payment`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
|
||||
.. _accounting/payments/matching:
|
||||
.. _accounting/payments/payments-matching:
|
||||
|
||||
Payments matching
|
||||
-----------------
|
||||
|
||||
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
|
||||
allows them to be processed individually, matching all payments and invoices in one place. Go to the
|
||||
:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`)
|
||||
button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select
|
||||
:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting -->
|
||||
Reconciliation`.
|
||||
|
||||
.. image:: payments/payments-journal.png
|
||||
:alt: Payments matching menu in the drop-down menu.
|
||||
|
||||
.. note::
|
||||
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits and credits does
|
||||
not match, there is a remaining balance. This either needs to be reconciled at a later date or
|
||||
written off directly.
|
||||
During the :doc:`bank reconciliation <bank/reconciliation>` process, a remaining balance is
|
||||
identified if the total debits and credits do not match when records are compared with bank
|
||||
transactions. This balance must either be reconciled later or written off immediately.
|
||||
|
||||
.. _accounting/payments/batch-payments-matching:
|
||||
.. _accounting/payments/matching-invoices-bills:
|
||||
|
||||
Batch payments matching
|
||||
-----------------------
|
||||
For a single invoice or bill
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Use the batch reconciliation feature to reconcile several outstanding payments or invoices
|
||||
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
|
||||
Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that
|
||||
contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is
|
||||
displayed.
|
||||
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
|
||||
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`Add`
|
||||
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
|
||||
.. image:: payments/reconcile-option.png
|
||||
:alt: The batch payment reconcile option.
|
||||
.. image:: payments/add-option.png
|
||||
:alt: Shows the Add option to reconcile an invoice or a bill with a payment.
|
||||
|
||||
The invoice or bill is then marked as :guilabel:`In payment` until the payment is :doc:`reconciled
|
||||
<bank/reconciliation>` with its corresponding :doc:`bank transaction(s) <bank/transactions>`.
|
||||
|
||||
.. _accounting/payments/auto-reconcile-tool:
|
||||
|
||||
Matching payments
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :guilabel:`Payments matching` or :guilabel:`Auto-reconcile` tool allows reconciling journal
|
||||
items with each other (i.e., payments with customer invoices or vendor bills) either individually or
|
||||
in batches. Access the :guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v`
|
||||
(:guilabel:`dropdown menu`) button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor
|
||||
Bills` journals, and select :guilabel:`Payments Matching`. Alternatively, go to
|
||||
:menuselection:`Accounting --> Accounting --> Reconcile`.
|
||||
|
||||
To manually :guilabel:`Reconcile` journal items, select the individual items from the list view and
|
||||
click :guilabel:`Reconcile`.
|
||||
|
||||
Auto-Reconcile Feature
|
||||
**********************
|
||||
|
||||
To use the :guilabel:`Auto-Reconcile` feature, follow these steps:
|
||||
|
||||
#. In the :guilabel:`Journal Items to reconcile` list view, click :guilabel:`Auto-Reconcile` next to
|
||||
the receivable or payable account (or a specific contact's journal item in that account).
|
||||
#. In the :guilabel:`Find Entries to Reconcile Automatically` window, set the :guilabel:`Reconcile`
|
||||
field depending on how you want to match journal items:
|
||||
|
||||
- :guilabel:`Opposite balances one by one`: Each debit journal item will be matched with the
|
||||
corresponding credit journal item of the same value.
|
||||
- :guilabel:`Accounts with zero balances`: All reconciled journal items will have the same
|
||||
matching number.
|
||||
|
||||
#. Click :guilabel:`Launch`.
|
||||
|
||||
Invoices and bills are automatically matched to their corresponding payments and marked as
|
||||
:guilabel:`In payment` until they are :doc:`reconciled <bank/reconciliation>` with their
|
||||
corresponding :doc:`bank transactions <bank/transactions>`.
|
||||
|
||||
.. _accounting/payments/group-payments:
|
||||
|
||||
Registering payments on multiple invoices or bills (group payments)
|
||||
===================================================================
|
||||
|
||||
To register payments on multiple invoices/bills, follow these steps:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
|
||||
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
|
||||
#. In the list view, select the relevant invoices/credit notes or bills/refunds.
|
||||
#. Click :icon:`fa-cog` :guilabel:`Actions` and select :guilabel:`Register Payment`.
|
||||
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
|
||||
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
|
||||
#. To combine all payments from the same contact into a single payment, enable the :guilabel:`Group
|
||||
Payments` option, or leave it unchecked to create separate payments.
|
||||
#. Click :guilabel:`Create payment`.
|
||||
|
||||
The invoices or bills are then marked as :guilabel:`In payment` until the bank transactions are
|
||||
:doc:`reconciled <bank/reconciliation>` with the payments.
|
||||
|
||||
.. _accounting/payments/batch-payments:
|
||||
|
||||
Registering a single payment for multiple customers or vendors (batch payments)
|
||||
===============================================================================
|
||||
|
||||
Batch payments allow grouping payments from multiple contacts to ease
|
||||
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
|
||||
<payments/checks>` to the bank or for generating bank payment files such as :doc:`SEPA
|
||||
<payments/pay_sepa>` or :ref:`NACHA <l10n_us/nacha>`. To do so, go to :menuselection:`Accounting -->
|
||||
Customers --> Payments` or :menuselection:`Accounting --> Vendors --> Payments`. In the payments
|
||||
list view, select the payments to be grouped in a batch, click :icon:`fa-cog` :guilabel:`Actions`,
|
||||
and select :guilabel:`Create Batch Payment`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
|
||||
.. _accounting/payments/partial-payment:
|
||||
|
||||
@@ -173,8 +189,9 @@ Reconciling payments with bank transactions
|
||||
===========================================
|
||||
|
||||
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
|
||||
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank transaction line to
|
||||
finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
|
||||
next step is :doc:`reconciling <bank/reconciliation>` the payment with the related :doc:`bank
|
||||
transaction <bank/transactions>` line to finalize the payment workflow and mark the invoice or bill
|
||||
as :guilabel:`Paid`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -62,7 +62,7 @@ Then, to close the fiscal year:
|
||||
<accounting/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 <accounting/payments/matching>` to validate any open
|
||||
- Optionally, :ref:`match payments <accounting/payments/auto-reconcile-tool>` 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.
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 11 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 <accounting/payments/matching>` when you receive the products.
|
||||
the :ref:`matching <accounting/payments/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.
|
||||
|
||||
@@ -91,9 +91,10 @@ To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings
|
||||
and click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> Odoo IAP` and click on
|
||||
:guilabel:`View My Services`.
|
||||
|
||||
.. important::
|
||||
If you are on Odoo Online and have the Enterprise version, you benefit from free trial credits to
|
||||
test the feature.
|
||||
.. note::
|
||||
Enterprise Odoo users with a valid subscription get free credits to test IAP features before
|
||||
deciding to purchase more credits for the database. This includes demo/training databases,
|
||||
educational databases, and one-app-free databases.
|
||||
|
||||
.. seealso::
|
||||
- `Our Privacy Policy <https://iap.odoo.com/privacy#header_6>`_
|
||||
|
||||
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 48 KiB |
@@ -585,8 +585,8 @@ provide the following information:
|
||||
- your company's name, address, and legal structure; and
|
||||
- the Mac address of your IoT Box.
|
||||
|
||||
Once your IoT box is certified, :doc:`connect <../../general/iot/config/connect>` it to your
|
||||
database. To verify that the IoT Box recognizes the FDM, go to the IoT homepage and scroll down the
|
||||
Once your IoT box is certified, :doc:`connect <../../general/iot/connect>` it to your database. To
|
||||
verify that the IoT Box recognizes the FDM, go to the IoT homepage and scroll down the
|
||||
:guilabel:`IOT Device` section, which should display the FDM.
|
||||
|
||||
.. image:: belgium/iot-devices.png
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 24 KiB |
@@ -628,3 +628,60 @@ If the :abbr:`PA (Public Administration)` business doesn't reply within 15 days,
|
||||
the :abbr:`PA (Public Administration)` business directly, sending them both the invoice and the
|
||||
received deadline notification by email. You can make an arrangement with them and manually set the
|
||||
correct :guilabel:`SdI State` on your invoice.
|
||||
|
||||
Ri.Ba. (Ricevuta Bancaria)
|
||||
==========================
|
||||
|
||||
:abbr:`Ri.Ba. (Ricevuta Bancaria)` is a payment method widely used in Italy where vendors request
|
||||
payments through their bank, which forwards the request to the customer's own bank and takes
|
||||
responsibility for the collection. This enables payment automation and reduces risks for the vendor.
|
||||
|
||||
The vendor generally uploads a fixed-format text file with the list of payments to the bank's web
|
||||
portal.
|
||||
|
||||
.. note::
|
||||
- Ri.Ba. are exclusively for **domestic payments** in Italy. For recurring international
|
||||
payments, please use `SEPA Direct Debt (SDD) <../accounting/payments/batch_sdd>`_
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
#. Check that the `l10n_it_riba` module is :ref:`installed <general/install>`.
|
||||
#. Go to :menuselection:`Settings --> Users & Companies --> Companies` and select the company that
|
||||
will use Ri.Ba.
|
||||
#. Fill out the required :guilabel:`SIA Code`.
|
||||
|
||||
.. image:: italy/sia-code.png
|
||||
:alt: The company's SIA code
|
||||
|
||||
.. note::
|
||||
The :guilabel:`SIA Code` identifies businesses within the Italian banking network and is used
|
||||
to receive money through specific payment methods. It consists of one letter and four digits
|
||||
(e.g., T1234) and can usually be found on the bank's portal or obtained by contacting the bank.
|
||||
|
||||
#. Ensure the Company's bank account has an Italian IBAN.
|
||||
|
||||
.. seealso::
|
||||
How to configure :doc:`Bank Accounts <../accounting/bank>`
|
||||
|
||||
Accept Ri.Ba. for your invoices
|
||||
-------------------------------
|
||||
|
||||
Payments of type :abbr:`Ri.Ba. (Ricevuta Bancaria)` can be registered from the :guilabel:`Invoices`
|
||||
(:menuselection:`Accounting --> Customers --> Invoices`).
|
||||
|
||||
.. important::
|
||||
Make sure that your invoice involves a Partner that has a bank account with an Italian IBAN.
|
||||
|
||||
Then, all Payments must be grouped in a **Batch Payment**.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Batch Payments <../accounting/payments>`
|
||||
- :doc:`Create a Batch Payment <../accounting/payments/batch>`
|
||||
|
||||
Once you press the :guilabel:`Validate` button for the Batch Payment, the :abbr:`Ri.Ba. (Ricevuta
|
||||
Bancaria)` file is generated and attached to the Batch Payment, so you can download it and upload it
|
||||
through your bank's web portal.
|
||||
|
||||
.. image:: italy/riba-attachment.png
|
||||
:alt: The Ri.Ba. file attached
|
||||
|
||||
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -104,7 +104,10 @@ portal to grant Odoo the **right to invoice** as an intermediary for your compan
|
||||
|
||||
- :guilabel:`TIN`: `C57800417080`
|
||||
- :guilabel:`BRN`: `BE0477472701`
|
||||
- :guilabel:`Name`: `ODOO S.A.`
|
||||
- :guilabel:`Name`:
|
||||
|
||||
- :guilabel:`Production`: `ODOO S.A.`
|
||||
- :guilabel:`Pre-production`: `OXXX_XXXXO S.A.`
|
||||
|
||||
#. Grant the following permissions by clicking the :icon:`fa-toggle-on` :guilabel:`(toggle-on)`
|
||||
icon:
|
||||
|
||||
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 73 KiB |
@@ -2,55 +2,271 @@
|
||||
Vietnam
|
||||
=======
|
||||
|
||||
Add Vietnamese QR banking codes to invoices
|
||||
===========================================
|
||||
.. _SInvoice: https://www.sinvoice.vn/
|
||||
|
||||
.. _localizations/vietnam/modules:
|
||||
|
||||
Modules
|
||||
=======
|
||||
|
||||
The following modules are installed automatically with the Vietnamese localization:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Vietnam - Accounting`
|
||||
- `l10n_vn`
|
||||
- This module includes the default
|
||||
:ref:`fiscal localization package <fiscal_localizations/packages>`.
|
||||
* - :guilabel:`Vietnam - E-invoicing`
|
||||
- `l10n_vn_edi_viettel`
|
||||
- This module includes the features required for integration with :ref:`SInvoice
|
||||
<localizations/vietnam/sinvoice>`.
|
||||
|
||||
.. note::
|
||||
In some cases, such as when upgrading to a version with additional modules, it is possible that
|
||||
modules may not be installed automatically. Any missing modules can be manually :ref:`installed
|
||||
<general/install>`.
|
||||
|
||||
.. _localizations/vietnam/company:
|
||||
|
||||
Company
|
||||
=======
|
||||
|
||||
To use all the features of this fiscal localization, the following fields are required on the
|
||||
:doc:`company record </applications/general/companies>`:
|
||||
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Address`, including the :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
and :guilabel:`Country`.
|
||||
|
||||
- In the :guilabel:`Street` field, enter the street name, number, and any additional address
|
||||
information.
|
||||
- In the :guilabel:`Street 2` field, enter the neighborhood.
|
||||
|
||||
- :guilabel:`Tax ID`: tax identification number.
|
||||
|
||||
.. _localizations/vietnam/sinvoice:
|
||||
|
||||
E-invoicing with SInvoice
|
||||
=========================
|
||||
|
||||
SInvoice_ is an e-invoice service platform provided by Viettel, one of the biggest e-invoice service
|
||||
providers in Vietnam. Odoo supports integration with SInvoice to submit invoices generated in Odoo.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
SInvoice platform
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
To send electronic invoices to SInvoice, the following must be created on SInvoice_:
|
||||
|
||||
- :ref:`SInvoice account <localizations/vietname/sinvoice-registration>`
|
||||
- :ref:`Invoice template <localizations/vietname/sinvoice-template>`
|
||||
- :ref:`Invoice symbol <localizations/vietname/sinvoice-symbol>`
|
||||
- :ref:`Invoice issuance notice <localizations/vietname/sinvoice-notice>`
|
||||
|
||||
.. _localizations/vietname/sinvoice-registration:
|
||||
|
||||
SInvoice registration
|
||||
*********************
|
||||
|
||||
To create an account, go to SInvoice_ and register for the desired plan. Fill in the form that
|
||||
opens to be contacted by SInvoice_ to create an account.
|
||||
|
||||
Once you have an account, log into SInvoice_ using your :guilabel:`Username` and
|
||||
:guilabel:`Password`.
|
||||
|
||||
.. _localizations/vietname/sinvoice-template:
|
||||
|
||||
Invoice template creation
|
||||
*************************
|
||||
|
||||
#. On the left side of the overview page, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Create business information`.
|
||||
#. In the :guilabel:`Update key information` step, fill in the following fields and other optional
|
||||
information if needed: :guilabel:`Unit name`, :guilabel:`Address`, :guilabel:`Contact person`,
|
||||
:guilabel:`Type of representative documents`.
|
||||
#. Click :guilabel:`Update`.
|
||||
#. In the :guilabel:`Look up digital certificate` step, click :guilabel:`Add new` to add a digital
|
||||
certificate.
|
||||
#. Select the :guilabel:`Branch/Enterprise` and the :guilabel:`Type of digital certificate`, then
|
||||
fill in the required fields for each type:
|
||||
|
||||
- :guilabel:`Supplier`: CloudCA
|
||||
- :guilabel:`Signer ID`: CloudCA
|
||||
- :guilabel:`Digital Certificate`: CloudCA
|
||||
- :guilabel:`How to download file`: HSM
|
||||
- :guilabel:`File Upload`: HSM, USB-TOKEN
|
||||
|
||||
#. Click :guilabel:`Generate key pair` to generate encryption keys for authentication, and
|
||||
:guilabel:`Save`.
|
||||
#. In the :guilabel:`Manage invoice templates` step, add a new :guilabel:`Invoice template`.
|
||||
#. Select the :guilabel:`Invoice type` and fill in the :guilabel:`Invoice template code`,
|
||||
:guilabel:`Invoice template name`, and other optional information if needed.
|
||||
#. Click :guilabel:`Update`.
|
||||
|
||||
.. seealso::
|
||||
`SInvoice documentation on electronic invoice template creation
|
||||
<https://www.sinvoice.vn/2021/02/hdsd-tai-lieu-nghiep-vu-tao-mau-hoa-don-dien-tu.html?debug=1>`_
|
||||
|
||||
.. _localizations/vietname/sinvoice-symbol:
|
||||
|
||||
Invoice symbol creation
|
||||
***********************
|
||||
|
||||
On the left side of the main screen, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Invoice symbol` and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Add new` and select the :guilabel:`Invoice template`.
|
||||
#. Set the :guilabel:`Status` to :guilabel:`Active` to activate the symbol and fill in the
|
||||
:guilabel:`Invoice symbol`.
|
||||
#. Enable :guilabel:`Stop automatic sending to tax authorities` and :guilabel:`Default for built-in
|
||||
API` based on preference.
|
||||
#. Click :guilabel:`Save`.
|
||||
|
||||
.. _localizations/vietname/sinvoice-notice:
|
||||
|
||||
Invoice issuance notice
|
||||
***********************
|
||||
|
||||
On the left side of the main screen, in the :guilabel:`Release management` menu, click
|
||||
:guilabel:`Create issuance notice` and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Add new`, select the :guilabel:`Name of the business unit to issue an e-invoice`
|
||||
and the :guilabel:`Tax agency name`. Based on the business unit and tax agency selected, the
|
||||
:guilabel:`Tax code`, :guilabel:`Address`, :guilabel:`Phone number`, and :guilabel:`Separator
|
||||
used` are automatically filled and uneditable.
|
||||
#. Click :guilabel:`Select the invoice type for issuance`, and then select and fill in the
|
||||
following information :
|
||||
|
||||
- :guilabel:`Invoice type`: The invoice type on which to declare an issuance notice.
|
||||
- :guilabel:`Invoice template`: Select from the list of templates available based on the invoice
|
||||
type.
|
||||
- :guilabel:`Symbol`: Select from the list of symbols available based on the invoice type.
|
||||
- :guilabel:`Quantity`: Total number of invoices to issue for the selected type. Based on the
|
||||
type and template selected, this field is filled in automatically. It can be changed if needed.
|
||||
- :guilabel:`Start date of use`: The date from which the invoice template, range, and quantity
|
||||
are used for the issuance notice.
|
||||
|
||||
#. Click :guilabel:`Save` and select more invoice types if necessary by repeating the steps above.
|
||||
Click :guilabel:`Save` to finish drafting the notice.
|
||||
#. Click :guilabel:`Send to tax authorities` for approval. Once approved, the notice's
|
||||
:guilabel:`Status` is changed to :guilabel:`Active`.
|
||||
|
||||
.. _localizations/vietnam/sinvoice-odoo:
|
||||
|
||||
Odoo database
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Link Odoo to SInvoice
|
||||
*********************
|
||||
|
||||
To connect Odoo with SInvoice, go to :menuselection:`Accounting --> Configuration --> Settings`.
|
||||
In the :guilabel:`Vietnamese Integration` section, fill in your SInvoice :guilabel:`Username` and
|
||||
:guilabel:`Password`. Add a :guilabel:`Default symbol` to generate a prefix for the invoice number
|
||||
managed in SInvoice if needed.
|
||||
|
||||
Invoice template
|
||||
****************
|
||||
|
||||
To create SInvoice templates, go to :menuselection:`Accounting --> Configuration --> Templates`.
|
||||
Click :guilabel:`New` and add a :guilabel:`Template code` and a :guilabel:`Template Invoice Type`.
|
||||
The :guilabel:`Template code` is the initial sequence of digits in the name assigned by SInvoice.
|
||||
For example, if the invoice template is `1/001 - Hóa đơn GTGT - ND123`, the :guilabel:`Template
|
||||
code` is `1/001`. The SInvoice templates in Odoo must match the ones in SInvoice.
|
||||
|
||||
To add :guilabel:`Invoice Symbols`, click :guilabel:`Add a new line`.
|
||||
|
||||
Sending invoices to SInvoice
|
||||
----------------------------
|
||||
|
||||
Invoices can be sent to SInvoice once they have been confirmed. To do so, follow the
|
||||
:ref:`invoice sending <accounting/invoice/sending>` steps. In the :guilabel:`Send` popup, enable
|
||||
:guilabel:`Send to SInvoice` and click :guilabel:`Send & Print`.
|
||||
|
||||
Once the invoice has been successfully submitted to SInvoice, the :guilabel:`SInvoice Status` field
|
||||
in the :guilabel:`SInvoice` tab of the invoice is updated to :guilabel:`Sent`. The
|
||||
:guilabel:`SInvoice Number`, :guilabel:`Issue Date`, :guilabel:`Secret Code` and :guilabel:`eInvoice
|
||||
Number` fields are also updated. The same information is available on SInvoice.
|
||||
|
||||
Replacement or adjustment invoices
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A replacement invoice is issued to correct an invoice that has **yet to be tax declared**, whereas
|
||||
an adjustment invoice is issued to correct one that has **already been tax declared**. Follow these
|
||||
steps to issue a replacement or adjustment invoice:
|
||||
|
||||
#. Open the invoice and click :guilabel:`Credit Note`.
|
||||
#. In the :guilabel:`Credit Note` popup, fill in the following fields:
|
||||
|
||||
- :guilabel:`Reason displayed on Credit Note`
|
||||
- :guilabel:`Adjustment type`
|
||||
- :guilabel:`Agreement Name`
|
||||
- :guilabel:`Agreement Date`
|
||||
- :guilabel:`Journal`
|
||||
- :guilabel:`Reversal date`
|
||||
|
||||
#. Click :guilabel:`Reverse and Create Invoice` to issue a replacement invoice, or
|
||||
:guilabel:`Reverse` to issue an adjustment invoice.
|
||||
|
||||
The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
|
||||
:guilabel:`Replaced` for a replacement invoice or :guilabel:`Adjusted` for an adjustment invoice.
|
||||
|
||||
Invoice cancellation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If an invoice needs to be canceled, open the invoice and click :guilabel:`Request Cancel`. In the
|
||||
:guilabel:`Invoice Cancellation` popup, enter the cancellation :guilabel:`Reason`,
|
||||
:guilabel:`Agreement Name`, and :guilabel:`Agreement Date`, and click :guilabel:`Request
|
||||
Cancellation`.
|
||||
|
||||
The :guilabel:`SInvoice Status` in the :guilabel:`SInvoice` invoice tab is updated to
|
||||
:guilabel:`Canceled`.
|
||||
|
||||
.. _localizations/vietnam/qrcode:
|
||||
|
||||
QR banking codes
|
||||
================
|
||||
|
||||
Vietnamese QR banking is a payment service platform that allows customers to make instant domestic
|
||||
payments to individuals and merchants in Vietnamese dong via online and mobile banking.
|
||||
|
||||
Activate QR codes
|
||||
-----------------
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`. Under the :guilabel:`Customer
|
||||
Payments` section, activate the :guilabel:`QR Codes` feature.
|
||||
To activate QR banking codes, go to :menuselection:`Accounting --> Configuration --> Settings` and
|
||||
enable :guilabel:`QR Codes` in the :guilabel:`Customer Payments` section.
|
||||
|
||||
Vietnamese QR banking bank account configuration
|
||||
------------------------------------------------
|
||||
Bank account
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Contacts --> Configuration --> Bank Accounts` and select the bank account for
|
||||
which you want to activate Vietnamese QR banking. Set the :guilabel:`Bank Identifier Code` on the
|
||||
bank. Then set the :guilabel:`Proxy Type` and fill in the :guilabel:`Proxy Value` field depending on
|
||||
the type you chose.
|
||||
To activate QR banking for a bank account, go to :menuselection:`Contacts --> Configuration -->
|
||||
Bank Accounts` and select the bank account. Fill in the :guilabel:`Bank Identifier Code`,
|
||||
:guilabel:`Proxy Type` (based on the information used to identify the :guilabel:`Merchant Account`,
|
||||
such as the card number and bank account numbers), and :guilabel:`Proxy Value` fields.
|
||||
|
||||
Enable :guilabel:`Include Reference` to include the invoice number in the QR code.
|
||||
|
||||
.. important::
|
||||
- The account holder's country must be set to `Vietnam` on its contact form.
|
||||
- The account holder's city is mandatory.
|
||||
- You could also include the invoice number in the QR code by checking the :guilabel:`Include
|
||||
Reference` checkbox.
|
||||
|
||||
.. image:: vietnam/vn-paynow-bank-setting.png
|
||||
:alt: Vietnamese QR banking bank account configuration
|
||||
- The account holder's country must be set to `Vietnam`, and their city must be specified on the
|
||||
contact form.
|
||||
- The :ref:`account number <accounting/bank/account-number>` and bank must be set on the
|
||||
:guilabel:`Bank` journal.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/bank`
|
||||
|
||||
Bank journal configuration
|
||||
--------------------------
|
||||
Generating QR codes on invoices
|
||||
-------------------------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Journals`, open the bank journal, then fill
|
||||
out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Journal Entries` tab.
|
||||
When creating a new invoice, open the :guilabel:`Other Info` tab and select :guilabel:`EMV
|
||||
Merchant-Presented QR-code` in the :guilabel:`Payment QR-code` field.
|
||||
|
||||
.. image:: vietnam/vn-bank-account-journal-setting.png
|
||||
:alt: Bank Account's journal configuration
|
||||
|
||||
Issue invoices with Vietnamese QR banking QR codes
|
||||
--------------------------------------------------
|
||||
|
||||
When creating a new invoice, open the :guilabel:`Other Info` tab and set the :guilabel:`Payment
|
||||
QR-code` option to *EMV Merchant-Presented QR-code*.
|
||||
|
||||
.. image:: vietnam/vn-qr-code-invoice-setting.png
|
||||
:alt: Select EMV Merchant-Presented QR-code option
|
||||
|
||||
Ensure that the :guilabel:`Recipient Bank` is the one you configured, as Odoo uses this field to
|
||||
generate the Vietnamese QR banking QR code.
|
||||
.. note::
|
||||
Ensure the :guilabel:`Recipient Bank` is configured, as Odoo uses this field to generate QR
|
||||
codes.
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
@@ -1,14 +1,87 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
:hide-page-toc:
|
||||
:show-toc:
|
||||
:nosearch:
|
||||
|
||||
========================
|
||||
Internet of Things (IoT)
|
||||
========================
|
||||
|
||||
Odoo Internet of Things (IoT) allows to connect physical devices such as barcode scanners, receipt
|
||||
printers, payment terminals, measurement tools, etc. to an Odoo database using an IoT system.
|
||||
|
||||
The following IoT systems are supported:
|
||||
|
||||
- :doc:`IoT box <iot/iot_box>`: micro-computer, plug-and-play device (i.e., the Odoo IoT program is
|
||||
pre-installed);
|
||||
- :doc:`Windows virtual IoT <iot/windows_iot>`: Odoo IoT program for Windows that can be installed
|
||||
on a Windows computer.
|
||||
|
||||
.. note::
|
||||
- :abbr:`MRP (Material Requirement Planning)` devices, including cameras and measurement tools,
|
||||
are not compatible with Windows virtual IoT.
|
||||
- Multiple IoT systems can be used at the same time.
|
||||
- It is also possible to create a Windows Virtual Machine on a MacOS/Linux computer. However,
|
||||
this option is not supported by Odoo, and no troubleshooting assistance will be provided.
|
||||
|
||||
.. _iot/iot/iot-subscription:
|
||||
|
||||
IoT box subscription
|
||||
====================
|
||||
|
||||
An IoT box subscription is required for production use of IoT systems. If you have issues related
|
||||
to your subscription, contact the database's account manager or Odoo partner for assistance.
|
||||
|
||||
.. tip::
|
||||
If the subscription is linked to an `Odoo.com <https://www.odoo.com>`_ portal user, check the
|
||||
information on the portal's subscription page.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo's compatible IoT devices <https://www.odoo.com/app/iot-hardware>`_
|
||||
- `Odoo Tutorials: Internet of Things (IoT) Tutorials
|
||||
<https://www.odoo.com/slides/internet-of-things-iot-175>`_
|
||||
- `IoT system FAQ <https://www.odoo.com/app/iot-faq>`_
|
||||
|
||||
.. cards::
|
||||
|
||||
.. card:: IoT box
|
||||
:target: iot/iot_box
|
||||
:large:
|
||||
|
||||
Set up an IoT box.
|
||||
|
||||
.. card:: Windows virtual IoT
|
||||
:target: iot/windows_iot
|
||||
:large:
|
||||
|
||||
Set up Windows virtual IoT.
|
||||
|
||||
.. card:: IoT system connection to Odoo
|
||||
:target: iot/connect
|
||||
|
||||
Connect the IoT system to your Odoo database and troubleshoot potential connection issues.
|
||||
|
||||
.. card:: Devices
|
||||
:target: iot/devices
|
||||
|
||||
Connect devices such as printers, screens, measurement tools, etc., to the IoT system.
|
||||
|
||||
.. card:: HTTPS certificate
|
||||
:target: iot/iot_advanced/https_certificate_iot
|
||||
|
||||
Verify your IoT system and database meet the eligibility requirements for HTTPS certificate
|
||||
generation and address any related issues.
|
||||
|
||||
.. card:: IoT system updates
|
||||
:target: iot/iot_advanced/updating_iot
|
||||
|
||||
Update your IoT system's image, core code, and handlers to benefit from the latest IoT fixes
|
||||
and features or reset the IoT system if needed.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
iot/config
|
||||
iot/iot_box
|
||||
iot/windows_iot
|
||||
iot/connect
|
||||
iot/iot_advanced
|
||||
iot/devices
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
:nosearch:
|
||||
|
||||
=============
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
:glob:
|
||||
|
||||
config/connect
|
||||
config/pos
|
||||
config/https_certificate_iot
|
||||
config/updating_iot
|
||||
config/troubleshooting
|
||||
config/windows_iot
|
||||
config/ssh_connect
|
||||
@@ -1,181 +0,0 @@
|
||||
==========================
|
||||
Connect an IoT box to Odoo
|
||||
==========================
|
||||
|
||||
An Internet of Things (IoT) box is a micro-computer device that allows for the connection of input
|
||||
and output devices to an Odoo database. An :abbr:`IoT (Internet of Things)` box subscription is
|
||||
required in order to use the :abbr:`IoT (Internet of Things)` box with a secured connection. A
|
||||
computer is also required to set up the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
.. seealso::
|
||||
`IoT Box FAQ <https://www.odoo.com/app/iot-faq>`_
|
||||
|
||||
Begin the :abbr:`IoT (Internet of Things)` configuration process by :ref:`installing the IoT app
|
||||
<general/install>` on the Odoo database through the :menuselection:`Apps` application.
|
||||
|
||||
.. image:: connect/install-iot-app.png
|
||||
:align: center
|
||||
:alt: The Internet of Things (IoT) app on the Odoo database.
|
||||
|
||||
Next, after the *IoT app* is installed, navigate to :menuselection:`IoT app --> IoT Boxes`, and then
|
||||
click on the :guilabel:`Connect` button located in the upper-left corner of the :menuselection:`IoT
|
||||
Boxes` dashboard.
|
||||
|
||||
.. image:: connect/connect-iot.png
|
||||
:align: center
|
||||
:alt: Connecting an IoT box to the Odoo database.
|
||||
|
||||
There are two recommended ways to connect the :abbr:`IoT (Internet of Things)` box to the database
|
||||
once the *IoT app* is installed. Follow the steps in either of the next two sections to connect the
|
||||
:abbr:`IoT (Internet of Things)` box via :ref:`wired ethernet connection <iot_connect/ethernet>` or
|
||||
via :ref:`WiFi <iot_connect/wifi>`.
|
||||
|
||||
.. image:: connect/connect-iot-box.png
|
||||
:align: center
|
||||
:alt: Connection steps for a wired connection or WiFi connection.
|
||||
|
||||
.. important::
|
||||
The disk image that the :abbr:`IoT (Internet of Things)` box SD card is formatted with is unique
|
||||
to the version of the Odoo database that the :abbr:`IoT (Internet of Things)` box is running on.
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box is :ref:`flashed <iot/config/flash>` with
|
||||
the most up-to-date disk image.
|
||||
|
||||
.. _iot_connect/ethernet:
|
||||
|
||||
Ethernet connection
|
||||
===================
|
||||
|
||||
The following is the process to connect the :abbr:`IoT (Internet of Things)` box via an ethernet
|
||||
cable to the Odoo database (by way of the ethernet port; RJ-45).
|
||||
|
||||
First, connect all wired devices to the :abbr:`IoT (Internet of Things)` box (ethernet, :abbr:`USB
|
||||
(Universal Serial Bus)` devices, etc.). At minimum, an HDMI screen should be connected. Then, plug
|
||||
the :abbr:`IoT (Internet of Things)` box into a power source.
|
||||
|
||||
Immediately after the unit powers on and boots up, read the *pairing code* from the screen or from
|
||||
the printout of a receipt printer connected to the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
.. warning::
|
||||
By default, the :abbr:`IoT (Internet of Things)` box will display the *pairing code* for a
|
||||
maximum of 5 minutes after the unit boots up. After 5 minutes, the *pairing code* will disappear
|
||||
for security purposes and the :abbr:`IoT (Internet of Things)` box will need to be rebooted
|
||||
manually by unplugging the unit from the power source for ten seconds and re-plugging it back in.
|
||||
|
||||
.. note::
|
||||
If no screen is attached to the :abbr:`IoT (Internet of Things)` box, then the *pairing code* can
|
||||
be accessed from the :abbr:`IoT (Internet of Things)` box homepage by clicking on the
|
||||
:guilabel:`POS Display` button. For instructions on how to access the :abbr:`IoT (Internet of
|
||||
Things)` box homepage visit :ref:`iot_connect/token`.
|
||||
|
||||
On the computer, navigate to :menuselection:`IoT app --> IoT Boxes`, and then click on the
|
||||
:guilabel:`Connect` button located in the upper-left corner of the the :menuselection:`IoT Boxes`
|
||||
dashboard. Input the *pairing code* in the :guilabel:`Pairing Code` field and click on the
|
||||
:guilabel:`Pair` button. The database will now link to the :abbr:`IoT (Internet of Things)` box and
|
||||
it will appear on the :menuselection:`IoT Boxes` page.
|
||||
|
||||
.. _iot_connect/wifi:
|
||||
|
||||
WiFi connection
|
||||
===============
|
||||
|
||||
The following is the process to connect the :abbr:`IoT (Internet of Things)` box via a WiFi
|
||||
connection to the Odoo database.
|
||||
|
||||
First, ensure there is no ethernet cable plugged into the :abbr:`IoT (Internet of Things)` box.
|
||||
Then, connect all wired devices to the :abbr:`IoT (Internet of Things)` box (:abbr:`USB (Universal
|
||||
Serial Bus)` devices, etc.).
|
||||
|
||||
After connecting the devices, plug the :abbr:`IoT (Internet of Things)` box into to a power source.
|
||||
On the computer, navigate to :menuselection:`IoT app --> IoT Boxes`, and then click on the
|
||||
:guilabel:`Connect` button located in the upper-left corner of the the :menuselection:`IoT Boxes`
|
||||
dashboard. Then copy the :guilabel:`Token` from the :guilabel:`WiFi connection` section as this will
|
||||
later be used to link the Odoo database to the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
Back on the computer, navigate to the available WiFi networks and connect to the :abbr:`IoT
|
||||
(Internet of Things)` box WiFi network. The WiFi network dispersed by the :abbr:`IoT (Internet of
|
||||
Things)` box will start with `IoTBox-xxxxxxxxxx`.
|
||||
|
||||
.. image:: connect/connect-iot-wifi.png
|
||||
:align: center
|
||||
:alt: WiFi networks available on the computer.
|
||||
|
||||
Upon connecting to the :abbr:`IoT (Internet of Things)` box WiFi, a browser will automatically
|
||||
redirect to the :menuselection:`Configure Iot Box` wizard. Name the :abbr:`IoT (Internet of Things)`
|
||||
box, then paste the previously copied *token* into the :guilabel:`Server Token` field, and then
|
||||
click on :guilabel:`Next`.
|
||||
|
||||
.. image:: connect/server-token.png
|
||||
:align: center
|
||||
:alt: Enter the server token into the IoT box.
|
||||
|
||||
.. note::
|
||||
If the :abbr:`IoT (Internet of Things)` box WiFi connection wizard doesn't start, then see the
|
||||
documentation on :ref:`connecting with a token <iot_connect/token>`.
|
||||
|
||||
Now, choose the WiFi network that the :abbr:`IoT (Internet of Things)` box will connect with (enter
|
||||
the password if there is one) and click on :guilabel:`Connect`. Wait a few seconds and the browser
|
||||
will redirect to the :abbr:`IoT (Internet of Things)` box homepage. The computer may need to be
|
||||
manually re-connected back to the original WiFi connection, if this does not happen automatically.
|
||||
|
||||
.. image:: connect/configure-wifi-network-iot.png
|
||||
:align: center
|
||||
:alt: Configuring the WiFi for the IoT box.
|
||||
|
||||
After completing each step, the :abbr:`IoT (Internet of Things)` box should appear when navigating
|
||||
to :menuselection:`IoT app --> IoT Boxes` on the Odoo database.
|
||||
|
||||
.. image:: connect/iot-box-connected.png
|
||||
:align: center
|
||||
:alt: The IoT box has been successfully configured on the Odoo database.
|
||||
|
||||
.. important::
|
||||
The :abbr:`IoT (Internet of Things)` box may need to be manually rebooted upon successfully
|
||||
connecting via WiFi for the box to appear in the *IoT app* on the Odoo database. To do so, simply
|
||||
unplug the device and plug it back into the power source after ten seconds.
|
||||
|
||||
.. _iot_connect/token:
|
||||
|
||||
Manually connecting the IoT box using the token
|
||||
===============================================
|
||||
|
||||
A manual connection of the :abbr:`IoT (Internet of Things)` box to the :abbr:`IoT (Internet of
|
||||
Things)` app can be made using the *token*, from a computer. The *token* can be found by navigating
|
||||
to :menuselection:`IoT app --> IoT Boxes` and clicking on :guilabel:`Connect`.
|
||||
|
||||
Under the :guilabel:`WiFi Connection` section of the :guilabel:`Connect an IoT Box` page that
|
||||
appears, click :guilabel:`Copy` to the right of the :guilabel:`Token`. This token will be entered
|
||||
into the :abbr:`IoT (Internet of Things)` box homepage.
|
||||
|
||||
Access the :abbr:`IoT (Internet of Things)` box homepage by entering the :abbr:`IP (Internet
|
||||
Protocol)` address of the :abbr:`IoT (Internet of Things)` box into a browser window from a computer
|
||||
on the same network as the :abbr:`IoT (Internet of Things)` box (preferably by ethernet connection).
|
||||
|
||||
.. note::
|
||||
The :abbr:`IP (Internet Protocol)` address can be accessed by the router admin console that the
|
||||
:abbr:`IoT (Internet of Things)` box is connected to, or by connecting a receipt printer to the
|
||||
:abbr:`IoT (Internet of Things)` box. A receipt will print out with the :abbr:`IoT (Internet of
|
||||
Things)` box's :abbr:`IP (Internet Protocol)` address on it.
|
||||
|
||||
On the :abbr:`IoT (Internet of Things)` box homepage, enter the *token* under the :guilabel:`Server`
|
||||
section by clicking on :guilabel:`Configure`. Then, paste the *token* into the :guilabel:`Server
|
||||
Token` field and click :guilabel:`Connect`. The :abbr:`IoT (Internet of Things)` box will then link
|
||||
to the Odoo database.
|
||||
|
||||
.. _iot/connect_schema:
|
||||
|
||||
IoT box schema
|
||||
==============
|
||||
|
||||
Raspberry Pi 4
|
||||
--------------
|
||||
|
||||
.. figure:: connect/iot-box-schema.png
|
||||
|
||||
The Odoo IoT box (Raspberry Pi 4) schema with labels.
|
||||
|
||||
Raspberry Pi 3
|
||||
--------------
|
||||
|
||||
.. figure:: connect/iox-box-schema-3.png
|
||||
|
||||
The Odoo IoT box (Raspberry Pi 3) schema with labels.
|
||||
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 33 KiB |
@@ -1,258 +0,0 @@
|
||||
.. _iot/https_certificate_iot:
|
||||
|
||||
=======================
|
||||
HTTPS certificate (IoT)
|
||||
=======================
|
||||
|
||||
What is HTTPS?
|
||||
==============
|
||||
|
||||
*Hypertext Transfer Protocol Secure* (HTTPS) is the secure version of *Hypertext Transfer Protocol*
|
||||
(HTTP), which is the primary protocol used to send data back and forth between a web browser and a
|
||||
website. :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` is encrypted in order to increase the
|
||||
security of data transfer.
|
||||
|
||||
:abbr:`HTTPS (Hypertext Transfer Protocol Secure)` uses an encryption protocol to encrypt
|
||||
communications. The protocol is called *Transport Layer Security* (TLS), although formerly it was
|
||||
known as *Secure Sockets Layer* (SSL).
|
||||
|
||||
:abbr:`HTTPS (Hypertext Transfer Protocol Secure)` occurs based upon the transmission of :abbr:`TLS
|
||||
(Transport Layer Security)`/:abbr:`SSL (Secure Sockets Layer)` certificates, which verify that a
|
||||
particular provider is who they say they are.
|
||||
|
||||
.. note::
|
||||
In this documentation and throughout Odoo the term "HTTPS certificate" will be used to define the
|
||||
fact that the :abbr:`SSL (Secure Sockets Layer)` certificate is valid and allows a :abbr:`HTTPS
|
||||
(Hypertext Transfer Protocol Secure)` connection.
|
||||
|
||||
Why is it needed?
|
||||
-----------------
|
||||
|
||||
In order to communicate with certain network devices (in particular for payment terminals), the
|
||||
usage of :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` is mandatory. If the :abbr:`HTTPS
|
||||
(Hypertext Transfer Protocol Secure)` certificate isn't valid, some devices won't be able to
|
||||
interact with the :abbr:`IoT (Internet of Things)` Box.
|
||||
|
||||
How to obtain a Hypertext Transfer Protocol Secure (HTTPS) certificate
|
||||
======================================================================
|
||||
|
||||
The generation of the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate is automatic.
|
||||
|
||||
The :abbr:`IoT (Internet of Things)` Box will send a specific request to `<https://www.odoo.com>`_
|
||||
which will send back the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate if the
|
||||
:abbr:`IoT (Internet of Things)` box and database are eligible.
|
||||
|
||||
.. _iot/iot-eligibility:
|
||||
|
||||
Internet of Things (IoT) eligibility
|
||||
------------------------------------
|
||||
|
||||
#. The database should be a **production** instance. The database instance should not be a copy, a
|
||||
duplicate, a staging, or a development environment.
|
||||
#. The Odoo subscription must:
|
||||
|
||||
- Have an :guilabel:`IoT Box Subscription` line.
|
||||
- :guilabel:`Status` must be :guilabel:`In Progress`.
|
||||
|
||||
If the subscription is linked to a `<https://www.odoo.com>`_ portal user check the information
|
||||
on the portal subscription page.
|
||||
|
||||
.. figure:: https_certificate_iot/sub-example-in-progress.png
|
||||
:align: center
|
||||
:alt: Odoo.com portal subscriptions filtered by "in progress".
|
||||
|
||||
In this case, both subscriptions are considered "in progress" as the :guilabel:`Filter By\:
|
||||
In Progress` was used.
|
||||
|
||||
.. note::
|
||||
If the subscription is in question, contact the database's Account Manager or Partner
|
||||
regarding the matter.
|
||||
|
||||
Troubleshooting Hypertext Transfer Protocol Secure (HTTPS) certificate errors
|
||||
=============================================================================
|
||||
|
||||
If anything goes wrong during the process of the "HTTPS certificate" generation or reception, a
|
||||
specific error will code be given on the :abbr:`IoT (Internet of Things)` box home page.
|
||||
|
||||
.. tip::
|
||||
Accessing the :abbr:`IoT (Internet of Things)` box homepage will check for the presence of the
|
||||
"HTTPS certificate" and will attempt its generation if it is missing. As such, if there is an
|
||||
error on the :abbr:`IoT (Internet of Things)` box home page, refresh the :abbr:`IoT (Internet of
|
||||
Things)` home page to see if the error disappears.
|
||||
|
||||
`ERR_IOT_HTTPS_CHECK_NO_SERVER`
|
||||
-------------------------------
|
||||
|
||||
Reason:
|
||||
The configuration regarding the server is missing. In other words, the Odoo instance is not
|
||||
connected with the IoT box.
|
||||
|
||||
Solution:
|
||||
Ensure that the server is configured.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/general/iot/config/connect`
|
||||
|
||||
`ERR_IOT_HTTPS_CHECK_CERT_READ_EXCEPTION`
|
||||
-----------------------------------------
|
||||
|
||||
Reason:
|
||||
An unhandled error happened when trying to read the existing :abbr:`HTTPS (Hypertext Transfer
|
||||
Protocol Secure)` certificate.
|
||||
|
||||
Solution:
|
||||
Ensure that the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate file is readable.
|
||||
|
||||
`ERR_IOT_HTTPS_LOAD_NO_CREDENTIAL`
|
||||
----------------------------------
|
||||
|
||||
Reason:
|
||||
The contract and/or database :abbr:`UUID (Universal Unique Identifier)` is missing.
|
||||
|
||||
Solution:
|
||||
Ensure that both values are configured as intended. To modify them, go to the :abbr:`IoT
|
||||
(Internet of Things)` box home page, and navigate to :guilabel:`Credential`.
|
||||
|
||||
`ERR_IOT_HTTPS_LOAD_REQUEST_EXCEPTION`
|
||||
--------------------------------------
|
||||
|
||||
Reason:
|
||||
An unexpected error happened when the :abbr:`IoT (Internet of Things)` box tried to reach
|
||||
`<https://www.odoo.com>`_. The causes are likely due to the network
|
||||
infrastructure/configuration:
|
||||
|
||||
- The :abbr:`IoT (Internet of Things)` box does not have access to internet.
|
||||
- The network does not allow the :abbr:`IoT (Internet of Things)` box to communicate with
|
||||
`<https://www.odoo.com>`_. This may be due to network devices preventing the communication
|
||||
(firewalls, etc.) or the network configuration (:abbr:`VPN (Virtual Private Network)`,
|
||||
etc.).
|
||||
|
||||
.. note::
|
||||
More information regarding the error that occurred can be found in the full request
|
||||
exception details, which are in the :abbr:`IoT (Internet of Things)` box logs.
|
||||
|
||||
Solution:
|
||||
.. warning::
|
||||
Consult with your system or network administrator should this issue arise. This error code
|
||||
depends on the network infrastructure and goes beyond Odoo support's service scope.
|
||||
|
||||
`ERR_IOT_HTTPS_LOAD_REQUEST_STATUS`
|
||||
-----------------------------------
|
||||
|
||||
Reason:
|
||||
The IoT-box was able to reach `<https://www.odoo.com>`_ but received an unusual
|
||||
`HTTP response (status codes)
|
||||
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Status>`_.
|
||||
|
||||
This error code will also give the HTTP response status codes. For example, if the error reads
|
||||
`ERR_IOT_HTTPS_LOAD_REQUEST_STATUS 404` it means that the page returned a 404 error, which is
|
||||
the "Page Not Found" code.
|
||||
|
||||
Solution:
|
||||
Check if `<https://www.odoo.com>`_ is down using a web browser, as it's possible that it is down
|
||||
due to maintenance.
|
||||
|
||||
- If `<https://www.odoo.com>`_ is down due to maintenance, unfortunately there is nothing that
|
||||
can be done but instead wait for it to recover.
|
||||
- If `<https://www.odoo.com>`_ is not down due to maintenance, open a `support ticket
|
||||
<https://www.odoo.com/help>`_ on the matter. Ensure that the 3 digits status code next to the
|
||||
code error is included in the support ticket.
|
||||
|
||||
`ERR_IOT_HTTPS_LOAD_REQUEST_NO_RESULT`
|
||||
--------------------------------------
|
||||
|
||||
Reason:
|
||||
The :abbr:`IoT (Internet of Things)` box was able to reach `<https://www.odoo.com>`_ but it
|
||||
refused to deliver the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate.
|
||||
|
||||
Solution:
|
||||
Ensure that the :abbr:`IoT (Internet of Things)` box and database are eligible for a
|
||||
certificate: :ref:`Internet of Things (IoT) eligibility <iot/iot-eligibility>`.
|
||||
|
||||
How to ensure that the HTTPS certificate is correct
|
||||
===================================================
|
||||
|
||||
If the certificate has been applied successfully, a new :abbr:`HTTPS (Hypertext Transfer Protocol
|
||||
Secure)` :abbr:`URL (Uniform Resource Locator)` for the :abbr:`IoT (Internet of Things)` box ending
|
||||
with `.odoo-iot.com` will appear on the Odoo database, inside of the :menuselection:`IoT`
|
||||
application on that specific device's form.
|
||||
|
||||
.. image:: https_certificate_iot/odoo-new-domain.png
|
||||
:align: center
|
||||
:alt: Odoo IoT app IoT box with .odoo-iot.com domain.
|
||||
|
||||
When navigating to the :abbr:`URL (Uniform Resource Locator)` in a browser a secured :abbr:`HTTPS
|
||||
(Hypertext Transfer Protocol Secure)` connection will be established.
|
||||
|
||||
.. figure:: https_certificate_iot/secured-connection.png
|
||||
:align: center
|
||||
:alt: Example of valid SSL certificate details on the browser.
|
||||
|
||||
Padlock in Chrome on Windows 10 attesting the fact that the connection is secured in :abbr:`HTTPS
|
||||
(Hypertext Transfer Protocol Secure)`.
|
||||
|
||||
The IoT-box homepage will now display an `OK` status next to `HTTPS certificate`. The
|
||||
drop-down menu icon, when clicked, will reveal information regarding the certificate.
|
||||
|
||||
.. image:: https_certificate_iot/status-ok.png
|
||||
:align: center
|
||||
:alt: IoT box homepage with HTTPS certificate OK status.
|
||||
|
||||
Domain Name System (DNS) issue
|
||||
==============================
|
||||
|
||||
If the :abbr:`IoT (Internet of Things)` box can be accessed from its :abbr:`IP (Intrernet Protocol)`
|
||||
address but not the Odoo assigned domain: `.odoo-iot.com`; then the :abbr:`IoT (Internet of Things)`
|
||||
box is likely running into a :abbr:`DNS (Domain Name System)` issue. On some browsers, it will give
|
||||
an error code mentioning :abbr:`DNS (Domain Name System)` (like `DNS_PROBE_FINISHED_NXDOMAIN`).
|
||||
|
||||
These :abbr:`DNS (Domain Name System)` issues may appear as the following in different browsers:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: Chrome
|
||||
|
||||
.. figure:: https_certificate_iot/dns-chrome.png
|
||||
:align: center
|
||||
:alt: DNS issue on Chrome browser on Windows 10.
|
||||
|
||||
DNS issue on Chrome browser on Windows 10.
|
||||
|
||||
|
||||
.. tab:: Firefox
|
||||
|
||||
.. figure:: https_certificate_iot/dns-firefox.png
|
||||
:align: center
|
||||
:alt: DNS issue on Firefox browser on Windows 10.
|
||||
|
||||
DNS issue on Firefox browser on Windows 10.
|
||||
|
||||
.. tab:: Edge
|
||||
|
||||
.. figure:: https_certificate_iot/dns-edge.png
|
||||
:align: center
|
||||
:alt: DNS issue on Edge browser on Windows 10.
|
||||
|
||||
DNS issue on Edge browser on Windows 10.
|
||||
|
||||
|
||||
Domain Name System (DNS) issue solution
|
||||
---------------------------------------
|
||||
|
||||
#. Should the router allow the :abbr:`DNS (Domain Name System)` to be manually changed, change the
|
||||
DNS to use `Google DNS <https://developers.google.com/speed/public-dns>`_.
|
||||
#. If your router doesn't allow for this, then a change will need to be made on the :abbr:`DNS
|
||||
(Domain Name System)` settings of each of the devices using `Google DNS
|
||||
<https://developers.google.com/speed/public-dns>`_. This will need to occur on **every** device
|
||||
that plans to interact with the :abbr:`IoT (Internet of Things)` box (e.g. computer, tablet or
|
||||
phone). The individual device configuration processes can be found on the website of the
|
||||
device's manufacturer.
|
||||
|
||||
.. note::
|
||||
Other :abbr:`IoT (Internet of Things)` devices such as payment terminals likely won't need
|
||||
their :abbr:`DNS (Domain Name System)` settings changed as they are already configured with
|
||||
custom :abbr:`DNS (Domain Name System)`.
|
||||
|
||||
.. warning::
|
||||
Consult with your system or network administrator should this issue arise. This error code
|
||||
depends on the network infrastructure, and it goes beyond Odoo support's service scope.
|
||||
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -1,67 +0,0 @@
|
||||
=========================
|
||||
Use an IoT box with a PoS
|
||||
=========================
|
||||
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
Before starting, make sure the following equipment is available:
|
||||
|
||||
- An :abbr:`IoT (Internet of Things)` box, with its power adapter.
|
||||
- A computer or tablet with an up-to-date web browser.
|
||||
- Odoo Online or an Odoo instance with the *Point of Sale* and *IoT* applications installed.
|
||||
- A local network set up with :abbr:`DHCP (Dynamic Host Configuration Protocol)` (this is the
|
||||
default setting).
|
||||
- An RJ45 Ethernet Cable (optional, but preferred over WiFi, which is already built in).
|
||||
- Any of the supported hardware (receipt printer, barcode scanner, cash drawer, payment terminal,
|
||||
scale, customer display, etc.). The list of supported hardware can be found on the `POS Hardware
|
||||
page <https://www.odoo.com/page/point-of-sale-hardware>`_.
|
||||
|
||||
Setup
|
||||
=====
|
||||
|
||||
.. figure:: pos/pos-connections.png
|
||||
|
||||
A suggested configuration for a point of sale system.
|
||||
|
||||
To connect hardware to the :abbr:`PoS (Point of Sale)`, the first step is to connect an :abbr:`IoT
|
||||
(Internet of Things)` box to the database. To do this, follow these instructions: :doc:`Connect an
|
||||
Internet of Things (IoT) box to the Odoo database <connect>`.
|
||||
|
||||
Then, connect the peripheral devices to the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Device Name
|
||||
- Instructions
|
||||
* - Printer
|
||||
- Connect a supported receipt printer to a :abbr:`USB (Universal Serial Bus)` port or
|
||||
to the network, and power it on. Refer to
|
||||
:doc:`/applications/sales/point_of_sale/restaurant/kitchen_printing`.
|
||||
* - Cash drawer
|
||||
- The cash drawer should be connected to the printer with an RJ25 cable.
|
||||
* - Barcode scanner
|
||||
- In order for the barcode scanner to be compatible it must end barcodes with an `ENTER`
|
||||
character (keycode 28). This is most likely the default configuration of the barcode scanner.
|
||||
* - Scale
|
||||
- Connect the scale and power it on. Refer to
|
||||
:doc:`../devices/scale`.
|
||||
* - Customer display
|
||||
- Connect a screen to the :abbr:`IoT (Internet of Things)` box to display the :abbr:`PoS (Point
|
||||
of Sale)` order. Refer to :doc:`../devices/screen`.
|
||||
* - Payment terminal
|
||||
- The connection process depends on the terminal. Refer to the :doc:`payment terminals
|
||||
documentation </applications/sales/point_of_sale/payment_methods>`.
|
||||
|
||||
Once this is completed, connect the :abbr:`IoT (Internet of Things)` box to the :menuselection:`PoS`
|
||||
application. To do this, go to :menuselection:`Point of Sale --> Configuration --> PoS`, tick the
|
||||
:guilabel:`IoT Box` option, and select the devices to be used in this :abbr:`PoS (Point of Sale)`.
|
||||
:guilabel:`Save` the the changes.
|
||||
|
||||
.. image:: pos/iot-connected-devices.png
|
||||
:align: center
|
||||
:alt: Configuring the connected devices in the POS application.
|
||||
|
||||
Once set up is done, a new :abbr:`PoS (Point of Sale)` session can be launched.
|
||||
|
Before Width: | Height: | Size: 7.5 KiB |
@@ -1,46 +0,0 @@
|
||||
==========================
|
||||
Connect an IoT box via SSH
|
||||
==========================
|
||||
|
||||
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
|
||||
.. |SSH| replace:: :abbr:`SSH (secure shell protocol)`
|
||||
|
||||
To provide an |SSH| connection to an Internet of Things (IoT) box, a password needs to be generated.
|
||||
|
||||
.. warning::
|
||||
This feature should **only** be utilized with trusted parties, as it provides administrative
|
||||
access to the |iot| box, which can create security issues.
|
||||
|
||||
Managing an |SSH| connection is **not** covered under the standard scope of Odoo support. Visit
|
||||
the `Odoo Support <https://www.odoo.com/help>`_ page for additional information about what is
|
||||
covered.
|
||||
|
||||
First, navigate to the :menuselection:`IoT app --> IoT Boxes`. Click on the IP address of the
|
||||
appropriate |iot| box.
|
||||
|
||||
.. note::
|
||||
If the desired |iot| box does not appear, see :doc:`troubleshooting` for additional steps.
|
||||
|
||||
At the bottom of the |iot| box pop-up window, click :guilabel:`Remote Debug`. This opens the
|
||||
:guilabel:`Remote Debugging` pop-up window.
|
||||
|
||||
.. image:: ssh_connect/ssh-generate-password.png
|
||||
:align: center
|
||||
:alt: The Remote Debugging password generation window.
|
||||
|
||||
Click :guilabel:`Generate password`.
|
||||
|
||||
.. warning::
|
||||
After the password has been generated from the :guilabel:`Remote Debugging` pop-up window, the
|
||||
information **must** be recorded immediately. Once this window is closed, there is no current
|
||||
method for looking up this information.
|
||||
|
||||
Enter the :guilabel:`Authentication Token` provided by the user attempting to connect to the |iot|
|
||||
box.
|
||||
|
||||
Click :guilabel:`Enable Remote Debugging`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`connect`
|
||||
- :doc:`troubleshooting`
|
||||
- :doc:`updating_iot`
|
||||
|
Before Width: | Height: | Size: 27 KiB |
@@ -1,633 +0,0 @@
|
||||
===============
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
IoT box connection
|
||||
==================
|
||||
|
||||
Unable to locate the pairing code to connect the IoT box
|
||||
--------------------------------------------------------
|
||||
|
||||
The pairing code should be printed on receipt printers connected to the :abbr:`IoT (Internet of
|
||||
Things)` box and should also be displayed on connected monitors.
|
||||
|
||||
The pairing code does not show under the following circumstances:
|
||||
|
||||
- The :abbr:`IoT (Internet of Things)` box is already connected to an Odoo database.
|
||||
- The :abbr:`IoT (Internet of Things)` box is not connected to the Internet.
|
||||
- The code is only valid for 5 minutes after the :abbr:`IoT (Internet of Things)` box has started.
|
||||
It is automatically removed from connected displays when this time has expired.
|
||||
- The version of the :abbr:`IoT (Internet of Things)` box image is too old. If the :abbr:`IoT
|
||||
(Internet of Things)` box image is from an earlier version, then the SD card of the :abbr:`IoT
|
||||
(Internet of Things)` box needs to be re-flashed to update the image (see :ref:`Flashing the SD
|
||||
Card <iot/config/flash>`).
|
||||
|
||||
If none of the cases listed above correct the issue, then make sure the :abbr:`IoT (Internet of
|
||||
Things)` box has correctly started, by checking that a fixed green LED is showing next to the power
|
||||
port.
|
||||
|
||||
IoT box is connected but it is not showing in the database
|
||||
----------------------------------------------------------
|
||||
|
||||
When an :abbr:`IoT (Internet of Things)` box connects to a database, it may restart. If so, it can
|
||||
take up to five minutes before appearing in the database. If the :abbr:`IoT (Internet of Things)`
|
||||
box is still not showing after five minutes, make sure that the :abbr:`IoT (Internet of Things)` box
|
||||
can reach the database and that the server does not use a multi-database environment.
|
||||
|
||||
To access the database from the :abbr:`IoT (Internet of Things)` box, open a browser and type in the
|
||||
database address.
|
||||
|
||||
The IoT box is connected to the Odoo database, but cannot be reached
|
||||
--------------------------------------------------------------------
|
||||
|
||||
Make sure that the :abbr:`IoT (Internet of Things)` box and the computer running the browser are
|
||||
located on the same network, as the :abbr:`IoT (Internet of Things)` box cannot be reached from
|
||||
outside the local network.
|
||||
|
||||
The HTTPS certificate does not generate
|
||||
---------------------------------------
|
||||
|
||||
In order to generate a :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate, an IoT box
|
||||
subscription is required for the :abbr:`IoT (Internet of Things)` box. Connecting the :abbr:`IoT
|
||||
(Internet of Things)` box prior to configuring an :abbr:`IoT (Internet of Things)` subscription for
|
||||
the database and :abbr:`IoT (Internet of Things)` box with the Account Manager will result in an
|
||||
unsecured connection.
|
||||
|
||||
In addition, a firewall can also prevent the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)`
|
||||
certificate from generating correctly. In this case, deactivate the firewall until the certificate
|
||||
is successfully generated. It should also be noted that certain devices, such as a router that has
|
||||
a built-in firewall, can prevent the :abbr:`HTTPS (Hypertext Transfer Protocol Secure)` certificate
|
||||
from generating.
|
||||
|
||||
.. seealso::
|
||||
:doc:`HTTPS certificate (IoT) <https_certificate_iot>`
|
||||
|
||||
Printer
|
||||
=======
|
||||
|
||||
The printer is not detected
|
||||
---------------------------
|
||||
|
||||
If a printer does not appear in the devices list, go to the :abbr:`IoT (Internet of Things)` box
|
||||
homepage and make sure that it is listed under :guilabel:`Printers`.
|
||||
|
||||
.. image:: troubleshooting/printer-status.png
|
||||
:align: center
|
||||
:alt: The IoT box Home Page landing page.
|
||||
|
||||
If the printer is not present on the :abbr:`IoT (Internet of Things)` box homepage, click
|
||||
:guilabel:`Printers Server`, go to the :guilabel:`Administration` tab and click on :guilabel:`Add
|
||||
Printer`. If the printer is not present in the list, it is likely not connected properly.
|
||||
|
||||
The printer outputs random text
|
||||
-------------------------------
|
||||
|
||||
For most printers, the correct driver should be automatically detected and selected. However, in
|
||||
some cases, the automatic detection mechanism might not be enough, and if no driver is found, the
|
||||
printer might print random characters.
|
||||
|
||||
The solution is to manually select the corresponding driver. On the :abbr:`IoT (Internet of Things)`
|
||||
box homepage, click on :guilabel:`Printers Server`, go to the :guilabel:`Printers` tab and select
|
||||
the printer in the list. In the :guilabel:`Administration` drop-down menu, click on
|
||||
:guilabel:`Modify Printer`. Follow the steps and select the *make* and *model* corresponding to the
|
||||
printer.
|
||||
|
||||
.. image:: troubleshooting/modify-printer.png
|
||||
:align: center
|
||||
:alt: Edit the printer connected to the IoT box.
|
||||
|
||||
.. note::
|
||||
Epson receipt printers and Zebra label printers do not need a driver to work. Make sure that no
|
||||
driver is selected for those printers.
|
||||
|
||||
Epson configuration special case
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Most Epson printers support printing receipts in Odoo :abbr:`POS (Point of Sale)` using the `GS v 0`
|
||||
command. However, the following Epson printer models do not support this command:
|
||||
|
||||
- TM-U220
|
||||
- TM-U230
|
||||
- TM-P60
|
||||
- TMP-P60II
|
||||
|
||||
Bypass this issue by configuring the printer to use the `ESC *` command instead.
|
||||
|
||||
Process to force ESC * command
|
||||
******************************
|
||||
|
||||
Epson printer compatibility
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The first step is to check whether the printer is incompatible with `GS v 0` command.
|
||||
|
||||
.. seealso::
|
||||
|
||||
- `Epson GS v 0 documentation <https://reference.epson-biz.com/modules/ref_escpos/index.php?
|
||||
content_id=94>`_ for `GS v 0` compatible printers.
|
||||
- `Epson ESC * documentation <https://reference.epson-biz.com/modules/ref_escpos/index.php
|
||||
?content_id=88>`_ for `ESC *` compatible printers.
|
||||
|
||||
If the printer is not compatible with the `ESC *` command then the following process is not
|
||||
possible. Should the printer be compatible to use the `ESC *` command to print, follow this process
|
||||
to configure the printer with the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
IoT box configuration for ESC *
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To configure the :abbr:`IoT (Internet of Things)` box to use the `ESC *` command to print, go to the
|
||||
:abbr:`IoT (Internet of Things)` box homepage by navigating to :menuselection:`IoT app --> IoT
|
||||
Boxes`. Then click on the :guilabel:`IP address` and this will direct to the :abbr:`IoT (Internet of
|
||||
Things)` box homepage.
|
||||
|
||||
**Choosing the printer**
|
||||
|
||||
Now click on the :guilabel:`Printers server` button. This will redirect the browser to the *CUPS*
|
||||
page. Next, go to :menuselection:`Administration --> Printers --> Add Printer`, choose the printer
|
||||
that should be modified, and then click :guilabel:`Continue`.
|
||||
|
||||
.. tip::
|
||||
If the name of the printer is still uncertain, take the following steps:
|
||||
|
||||
#. Take note of the listed printers on the *CUPS* page.
|
||||
#. Turn the printer off and refresh the page.
|
||||
#. Now compare the difference with the first list to see which printer disappeared.
|
||||
#. Turn the printer back on and refresh the page again.
|
||||
#. Double-check the list again to see if the printer re-appears.
|
||||
#. The printer that disappeared and reappears again on the listed printers is the name of the
|
||||
printer in question.
|
||||
|
||||
.. note::
|
||||
This can be :guilabel:`Unknown` under :guilabel:`Local printers`.
|
||||
|
||||
**CUPS naming convention**
|
||||
|
||||
`CUPS` will prompt the administrator for three pieces of information: the :guilabel:`Name`,
|
||||
:guilabel:`Description` and the :guilabel:`Location`. The last two pieces of information do not need
|
||||
to be specific, however, the :guilabel:`Name` should follow a particular convention to work with the
|
||||
`ESC *` command.
|
||||
|
||||
The :guilabel:`Name` should match this convention:
|
||||
`<printer_name>__IMC_<param_1>_<param_2>_..._<param_n>__`
|
||||
|
||||
A breakdown of the naming convention:
|
||||
|
||||
- `printer_name`: This is the printer name. It can be any character as long as it does not contain
|
||||
`_`, `/`, `#`, or ` ` (space character).
|
||||
- `IMC`: This stands for *Image Mode Column* (the simplified name for `ESC *`).
|
||||
- `param_1`: This stands for the specific parameter:
|
||||
|
||||
- `SCALE<X>`: Scale of the picture (with the same aspect ratio). `X` should be an integer
|
||||
describing the scale percentage that should be used.
|
||||
|
||||
.. example::
|
||||
`100` is the original size, `50` is half the size, `200` is twice the size.
|
||||
|
||||
- `LDV`: *Low Density Vertical* (will be set to *High Density Vertical* if not specified).
|
||||
- `LDH`: *Low Density Horizontal* (will be set to *High Density Horizontal* if not specified).
|
||||
|
||||
.. note::
|
||||
*Density* parameters might need to be configured in a particular way depending on the printer
|
||||
model.
|
||||
|
||||
.. seealso::
|
||||
Visit `Epson's ESC * documentation
|
||||
<https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_ and click on the
|
||||
printer model printer in the table above to see if the printer should set these parameters.
|
||||
|
||||
.. example::
|
||||
The following are examples of proper and improper name formatting:
|
||||
|
||||
Proper name formatting:
|
||||
|
||||
- `EPSONTMm30II__IMC__`
|
||||
- `EPSON_TM_U220__IMC_LDV_LDH_SCALE80__`
|
||||
|
||||
Improper name formatting (this will not prevent printing, but the result might not have the
|
||||
expected printed output):
|
||||
|
||||
- `EPSON TMm 30II` -> The name cannot have spaces.
|
||||
- `EPSONTMm30II` -> The name itself is correct, but it will not use `ESC *`.
|
||||
- `EPSONTMm30II__IMC` -> This name is missing the end `__`.
|
||||
- `EPSONTMm30II__IMC_XDV__` -> The parameter `XDV` does not match any existing parameters.
|
||||
- `EPSONTMm30II__IMC_SCALE__` -> The parameter `SCALE` is missing the scale value.
|
||||
|
||||
**Finish adding a printer**
|
||||
|
||||
After setting the name of the printer with the appropriate naming convention, click
|
||||
:guilabel:`Continue`. Next, set the :guilabel:`Make` value to :guilabel:`Raw` and for the
|
||||
:guilabel:`Model` value, set this to :guilabel:`Raw Queue (en)`.
|
||||
|
||||
After completing these steps, click :guilabel:`Add Printer`. If everything was done correctly, the
|
||||
page should redirect to the *Banners* page.
|
||||
|
||||
At this point the printer should have been created, now the :abbr:`IoT (Internet of Things)` box
|
||||
just needs to detect it and then sync to Odoo's server (this could take a few minutes).
|
||||
|
||||
**Adding the printer to Odoo PoS**
|
||||
|
||||
Once the printer is visible on the Odoo database, do not forget to choose it in the :abbr:`PoS
|
||||
(Point of Sale)`configuration as the :abbr:`IoT (Internet of Things)` printer. Navigate to
|
||||
:menuselection:`Pos App --> Settings --> Connected Devices --> IoT Box --> Receipt Printer -->
|
||||
Save`.
|
||||
|
||||
.. note::
|
||||
If the printer was set up incorrectly (it is still printing random text or the printed receipt is
|
||||
too big or small), then it cannot be modified via the printer name with *CUPS*. Instead, the
|
||||
above process can be repeated to set up another printer from scratch to create one with modified
|
||||
parameters.
|
||||
|
||||
**Example setup of the Epson TM-U220B printer using ESC**
|
||||
|
||||
.. spoiler::
|
||||
Click this text to reveal the example
|
||||
|
||||
The following is an example of the troubleshooting process for a TM-U220B printer model using the
|
||||
`ESC *` command. The receipt pictured below is an example of a receipt that is printing correctly
|
||||
due to proper formatting (in theory):
|
||||
|
||||
.. image:: troubleshooting/receipt-example.png
|
||||
:align: center
|
||||
:alt: Properly formatted receipt picture from a demo database.
|
||||
|
||||
Trying to print this receipt right-away prior to the proper formatting will not work as the
|
||||
TM-U220B printer model does not support `GS v 0`. Instead random characters will print:
|
||||
|
||||
.. image:: troubleshooting/receipt-print-random-letters.png
|
||||
:align: center
|
||||
:alt: Printer paper with seemingly random characters.
|
||||
|
||||
To properly configure formatting for the Epson TM-U220B printer model take the following steps.
|
||||
|
||||
After consulting Epson's website for compatibility for both of the commands: `GS v 0
|
||||
<https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=94>`_ and `ESC *
|
||||
<https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_, it can be seen
|
||||
that indeed the TM-U220B is not compatible with `GS v 0`, but is compatible with `ESC *`.
|
||||
|
||||
.. image:: troubleshooting/epson-compatibility-compare.png
|
||||
:align: center
|
||||
:alt: Epson compatibility evaluation from Epson website.
|
||||
|
||||
When adding the printer, *CUPS* will ask which printer should be added:
|
||||
|
||||
.. image:: troubleshooting/add-printer.png
|
||||
:align: center
|
||||
:alt: Administration menu, add printer selection.
|
||||
|
||||
In this case, the printer is connected via :abbr:`USB (Universal Serial Bus)` so it won' be part
|
||||
of the :guilabel:`Discovered Network Printers`. Instead it is likely part of the
|
||||
:guilabel:`Unknown` selection under :guilabel:`Local Printers`. By unplugging the printer's
|
||||
:abbr:`USB (Universal Serial Bus)` cable from the :abbr:`IoT (Internet of Things)` box and
|
||||
refreshing the page, the :guilabel:`Unknown` printer disappears. By plugging it back in, the
|
||||
printer reappears, so it can be said that this is the printer in question.
|
||||
|
||||
For the naming convention, since it needs to print using the `ESC *` command, it is imperative to
|
||||
add `__IMC`. Reference the printer model on `Epson's ESC * site
|
||||
<https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=88>`_ to find out more
|
||||
about the *density* parameters.
|
||||
|
||||
.. image:: troubleshooting/epson-tm-u220-specification.png
|
||||
:align: center
|
||||
:alt: Epson TM-U220 specifications on manufacturer's website.
|
||||
|
||||
For this particular model, TM-U220, `m` should be equal to 0 or 1. While referencing the
|
||||
:guilabel:`Description` below the pink box in the above picture, the `m` values could be 0, 1, 32
|
||||
or 33. So in this printers case, the `m` value can NOT be 32 or 33 (otherwise there will be
|
||||
random characters printed).
|
||||
|
||||
The table includes the numeric values: 32 and 33, they both occur if the :guilabel:`Number of
|
||||
bits for vertical data` is set to 24. This means that is a *High Vertical Density*. In the case
|
||||
of configuring the Epson TM-U220, the *Low Vertical Density* will need to be forced, as this
|
||||
printer model does not support *High Vertical Density* for this command `ESC *`.
|
||||
|
||||
To add a *Low Vertical Density*, add the `LDV` parameter to the naming convention.
|
||||
|
||||
.. image:: troubleshooting/add-printer-filled.png
|
||||
:align: center
|
||||
:alt: Add a *Low Vertical Density* (the `LDV` parameter) to the naming convention.
|
||||
|
||||
Click :guilabel:`Continue` to proceed. Next, set the :guilabel:`Make` value to :guilabel:`Raw`
|
||||
and for the :guilabel:`Model` value, set this to :guilabel:`Raw Queue (en)`.
|
||||
|
||||
.. image:: troubleshooting/add-printer-add.png
|
||||
:align: center
|
||||
:alt: Epson TM-U220 specifications on manufacturers website.
|
||||
|
||||
However, when trying to print with the naming convention: `EpsonTMU220B__IMC_LDV__`, it prints
|
||||
the receipt, but it is too big and outside the margin. To resolve this, add a new printer (and
|
||||
naming convention) with the `SCALE<X>` parameter to adapt to our receipt size.
|
||||
|
||||
Here are some examples:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Printer Naming Convention
|
||||
- `EpsonTMU220B__IMC_LDV__`
|
||||
- `EpsonTMU220B__IMC_LDV_SCALE75__`
|
||||
- `EpsonTMU220B__IMC_LDV_LDH__`
|
||||
- `EpsonTMU220B__IMC_LDV_LDH_SCALE35__`
|
||||
* - .. image:: troubleshooting/receipt-example.png
|
||||
:align: center
|
||||
:alt: Receipt example format.
|
||||
- .. image:: troubleshooting/tm-u220-ldv.png
|
||||
:align: center
|
||||
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV__.
|
||||
- .. image:: troubleshooting/tm-u220-ldv-scale75.png
|
||||
:align: center
|
||||
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV_SCALE75__.
|
||||
- .. image:: troubleshooting/tm-u220-ldv-hdv.png
|
||||
:align: center
|
||||
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV_LDH__.
|
||||
- .. image:: troubleshooting/tm-u220-ldv-hdv-scale35.png
|
||||
:align: center
|
||||
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV_LDH_SCALE35__.
|
||||
|
||||
DYMO LabelWriter print issue
|
||||
----------------------------
|
||||
|
||||
The DYMO LabelWriter has a known issue in printing with the :abbr:`IoT (Internet of Things)` box.
|
||||
The OpenPrinting CUPS server installs the printer using :guilabel:`Local RAW Printer` drivers. In
|
||||
order to print anything, the correct :guilabel:`Make and Model` needs to be set, so the correct
|
||||
driver is referenced when using the device.
|
||||
|
||||
Additionally, a new printer needs to be added to reduce a print delay that occurs after updating the
|
||||
driver.
|
||||
|
||||
.. important::
|
||||
The DYMO LabelWriter 450 DUO printer is the recommended DYMO printer for use with Odoo and the
|
||||
:abbr:`IoT (Internet of Things)` box. It **must** already be connected to, and recognized on, the
|
||||
:abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
The DYMO LabelWriter 450 DUO printer contains two printers in one: a label printer and a tape
|
||||
printer. Choosing the correct model (either DYMO LabelWriter 450 DUO Label (en) or DYMO
|
||||
LabelWriter 450 DUO Tape (en)) is crucial when configuring the following processes.
|
||||
|
||||
To keep things consistent, both of the following processes detail the configuration for the DYMO
|
||||
LabelWriter 450 DUO Label (en) model. Change the model when needed.
|
||||
|
||||
.. _troubleshooting/dymo/update_drivers:
|
||||
|
||||
DYMO LabelWriter not printing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the case where the DYMO LabelWriter is not printing anything, a new driver needs to be installed.
|
||||
|
||||
First, open the OpenPrinting CUPS console by clicking :menuselection:`Printers server` at the bottom
|
||||
of the :abbr:`IoT (Internet of Things)` box homepage. Next, click on :menuselection:`Printers` in
|
||||
the top menu. Click into the printer in question, and select :guilabel:`Maintenance` in the first
|
||||
drop-down menu. Then, select :guilabel:`Modify Printer` in the second drop-down menu.
|
||||
|
||||
.. image:: troubleshooting/main-modify.png
|
||||
:align: center
|
||||
:alt: Modify the make and model of the DYMO LabelWriter. Maintenance and Modify drop-down menus
|
||||
highlighted.
|
||||
|
||||
Next, select the specific network connection/printer that the modification should be made on. Click
|
||||
:guilabel:`Continue`.
|
||||
|
||||
.. image:: troubleshooting/modify-select-printer.png
|
||||
:align: center
|
||||
:alt: Printer selection screen with Continue highlighted.
|
||||
|
||||
On the next page, click :guilabel:`Continue` to proceed to set the :guilabel:`Make` of the printer.
|
||||
|
||||
.. image:: troubleshooting/modify-printer-dymo.png
|
||||
:align: center
|
||||
:alt: Printer modification screen with Continue highlighted.
|
||||
|
||||
Under :guilabel:`Make` select :guilabel:`DYMO` from the menu. Click on :guilabel:`Continue` to set
|
||||
the :guilabel:`Model`.
|
||||
|
||||
.. image:: troubleshooting/setting-make.png
|
||||
:align: center
|
||||
:alt: Setting the make page, with DYMO and continue highlighted.
|
||||
|
||||
On the following page, set the :guilabel:`Model` to :guilabel:`DYMO LabelWriter 450 DUO Label (en)`
|
||||
(or whichever DYMO printer model is being used). Click on :guilabel:`Modify Printer` to complete
|
||||
setting the new driver, a confirmation page will appear.
|
||||
|
||||
.. image:: troubleshooting/setting-model.png
|
||||
:align: center
|
||||
:alt: Setting the printer model page with DYMO LabelWriter 450 DUO Label (en) highlighted.
|
||||
|
||||
After being redirected to a confirmation page, acknowledging a successful update, click on the
|
||||
:menuselection:`Printers` button in the top menu.
|
||||
|
||||
All the printers installed on the OpenPrinting CUPS server appear, including the newly updated:
|
||||
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
|
||||
into the printer that was just updated.
|
||||
|
||||
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
|
||||
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
|
||||
will print out with a ten-second delay if the driver update was successful.
|
||||
|
||||
.. image:: troubleshooting/print-test.png
|
||||
:align: center
|
||||
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
|
||||
server.
|
||||
|
||||
To reduce this delay a new printer will need to be added, follow the process below.
|
||||
|
||||
DYMO LabelWriter print delay
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To resolve the delay issue after modifying the driver, the printer **must** be reinstalled. To
|
||||
reinstall the printer, open the OpenPrinting CUPS administration page by clicking
|
||||
:menuselection:`Printers server`, at the bottom of the :abbr:`IoT (Internet of Things)` box
|
||||
homepage. Then, click on :menuselection:`Administration` in the top menu, then click :guilabel:`Add
|
||||
a Printer`.
|
||||
|
||||
.. tip::
|
||||
If the DYMO LabelWriter 450 DUO printer is not printing at all, or is not recognizable (has a RAW
|
||||
driver type), then update the drivers on the device. See
|
||||
:ref:`troubleshooting/dymo/update_drivers`.
|
||||
|
||||
.. image:: troubleshooting/add-printer-dymo.png
|
||||
:align: center
|
||||
:alt: Add a printer button highlighted on the Printer CUPS management page.
|
||||
|
||||
On the next screen, in the :guilabel:`Local Printers` section, select the :guilabel:`DYMO
|
||||
LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label)` (or whichever DYMO printer model is
|
||||
being used) pre-installed printer. Click :guilabel:`Continue`.
|
||||
|
||||
.. image:: troubleshooting/local-printer.png
|
||||
:align: center
|
||||
:alt: Add a printer screen on OpenPrinting CUPS with DYMO LabelWriter 450 DUO Label highlighted.
|
||||
|
||||
On the following screen, modify the :guilabel:`Name` to something recognizable, as the original
|
||||
printer will still be present. Click :guilabel:`Continue` to be taken to the next screen.
|
||||
|
||||
.. image:: troubleshooting/rename-printer.png
|
||||
:align: center
|
||||
:alt: Rename printer page in the 'Add a Printer' flow, with the name field highlighted.
|
||||
|
||||
Next, choose the :guilabel:`Model`. Select :guilabel:`DYMO LabelWriter 450 DUO Label (en)` (or
|
||||
whichever DYMO printer model is being used), and finally, click :guilabel:`Add Printer` to complete
|
||||
the installation.
|
||||
|
||||
.. image:: troubleshooting/choose-printer.png
|
||||
:align: center
|
||||
:alt: Choose model screen on the OpenPrinting CUPS console with model and add a printer
|
||||
highlighted.
|
||||
|
||||
After being redirected to a confirmation page, acknowledging a successful installation, click on the
|
||||
:menuselection:`Printers` button in the top menu.
|
||||
|
||||
All the printers installed on the OpenPrinting CUPS server appear, including the newly installed:
|
||||
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
|
||||
into the printer that was just installed.
|
||||
|
||||
.. image:: troubleshooting/printer-page.png
|
||||
:align: center
|
||||
:alt: Printer page with newly installed printer highlighted.
|
||||
|
||||
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
|
||||
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
|
||||
should print out immediately (one-to-two seconds delay).
|
||||
|
||||
.. image:: troubleshooting/print-test.png
|
||||
:align: center
|
||||
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
|
||||
server.
|
||||
|
||||
The Zebra printer does not print anything
|
||||
-----------------------------------------
|
||||
|
||||
Zebra printers are quite sensitive to the format of the Zebra Programming Language (ZPL) code that
|
||||
is printed. If nothing comes out of the printer or blank labels are printed, try changing the format
|
||||
of the report that is sent to the printer by accessing :menuselection:`Settings --> Technical -->
|
||||
User Interface --> Views` in :ref:`developer mode <developer-mode>` and look for the corresponding
|
||||
template.
|
||||
|
||||
.. seealso::
|
||||
Check out Zebra's instructions on printing :abbr:`ZPL (Zebra Programming Language)` files `here
|
||||
<https://supportcommunity.zebra.com/s/article/Print-a-zpl-file-using-the-Generic-Text-Printer>`_.
|
||||
|
||||
Barcode scanner
|
||||
===============
|
||||
|
||||
The characters read by the barcode scanner do not match the barcode
|
||||
-------------------------------------------------------------------
|
||||
|
||||
By default, most barcode scanners are configured in the US QWERTY format. If the barcode scanner
|
||||
uses a different layout, go to the form view of the device (:menuselection:`IoT App --> Devices -->
|
||||
Barcode Device`) and select the correct format.
|
||||
|
||||
Nothing happens when a barcode is scanned
|
||||
-----------------------------------------
|
||||
|
||||
Make sure that the correct device is selected in the :menuselection:`Point of Sale` configuration
|
||||
and that the barcode is configured to send an `ENTER` character (keycode 28) at the end of every
|
||||
barcode. To do so, navigate to :menuselection:`PoS app --> 3-Dot Menu on the PoS --> IoT Box section
|
||||
--> Edit`.
|
||||
|
||||
The barcode scanner is detected as a keyboard
|
||||
---------------------------------------------
|
||||
|
||||
.. important::
|
||||
Some barcode scanners do not advertise themselves as barcode scanners but as a USB keyboard
|
||||
instead, and will not be recognized by the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
The device type can be manually changed by going to its form view (:menuselection:`IoT App -->
|
||||
Devices --> Barcode Device`) and activating the :guilabel:`Is scanner` option.
|
||||
|
||||
.. image:: troubleshooting/barcode-scanner-settings.png
|
||||
:align: center
|
||||
:alt: Modifying the form view of the barcode scanner.
|
||||
|
||||
Barcode scanner processes barcode characters individually
|
||||
---------------------------------------------------------
|
||||
|
||||
When accessing the mobile version of Odoo from a mobile device, or tablet, paired with a barcode
|
||||
scanner, via the :abbr:`IoT (Internet of Things)` box, the scanner may process each barcode
|
||||
character as an individual scan. In this case, the *Keyboard Layout* option **must** be filled out
|
||||
with the appropriate language of the barcode scanner on the *Barcode Scanner* form page.
|
||||
|
||||
.. tip::
|
||||
Access the barcode scanner form page by navigating to :menuselection:`IoT App --> Devices -->
|
||||
Barcode Scanner`.
|
||||
|
||||
.. image:: troubleshooting/keyboard-layout.png
|
||||
:align: center
|
||||
:alt: Barcode scanner form page, with keyboard layout option highlighted.
|
||||
|
||||
The :guilabel:`Keyboard Layout` is language based, and the options available vary, depending on the
|
||||
device and the language of the database. For example: :guilabel:`English (UK)`, :guilabel:`English
|
||||
(US)`, etc.
|
||||
|
||||
Cash drawer
|
||||
===========
|
||||
|
||||
The cash drawer does not open
|
||||
-----------------------------
|
||||
|
||||
The cash drawer should be connected to the printer and the :guilabel:`Cash drawer` checkbox should
|
||||
be ticked in the :abbr:`PoS (Point of Sale)` configuration. To do so, navigate to
|
||||
:menuselection:`POS app --> 3-Dot Menu on the POS --> IoT Box section --> Edit --> Receipt Printer
|
||||
--> Cashdrawer checkbox`.
|
||||
|
||||
Scale
|
||||
=====
|
||||
|
||||
Scales play a crucial role in the checkout process, especially for products sold by weight, rather
|
||||
than fixed pricing.
|
||||
|
||||
Set up Ariva S scales
|
||||
---------------------
|
||||
|
||||
Odoo has determined that a specific setting in Ariva S series scales (manufactured by
|
||||
Mettler-Toledo, LLC.) needs modification, and a dedicated Mettler :abbr:`USB (Universal Serial
|
||||
Bus)`-to-proprietary RJ45 cable is required for the scale to function with Odoo's :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
To correctly configure the scale for recognition by the :abbr:`IoT (Internet of Things)` box, follow
|
||||
this setup process for the Ariva S series scales.
|
||||
|
||||
.. important::
|
||||
It is crucial to use the official Mettler :abbr:`USB (Universal Serial Bus)`-to-RJ45 cable during
|
||||
this process.
|
||||
|
||||
Cable
|
||||
~~~~~
|
||||
|
||||
The Mettler part number is 72256236 - :abbr:`USB (Universal Serial Bus)`-to-:abbr:`POS (Point of
|
||||
Sale)` cable. Contact Mettler, or a partner, to purchase an authentic cable. Note that **no other**
|
||||
cable outside of this Mettler cable works for this configuration. Using a serial-only cable attached
|
||||
to a serial-to-:abbr:`USB (Universal Serial Bus)` adapter is **not** effective.
|
||||
|
||||
.. image:: troubleshooting/cable-mettler.png
|
||||
:align: center
|
||||
:alt: Authentic Mettler USB to POS cable, part number 72256236.
|
||||
|
||||
Setup
|
||||
~~~~~
|
||||
|
||||
Refer to Mettler's Setup Guide for Ariva S series scales during the following configuration: `Ariva
|
||||
Checkout Scale User's Guide <https://www.mt.com/dam/RET_DOCS/Ariv.pdf>`_.
|
||||
|
||||
To begin, go to page 17 in the above manual for *Setup*. This guide lists potential settings for the
|
||||
Ariva S series scales.
|
||||
|
||||
Follow the instructions, along with the following process, to set the scale to setup mode. First,
|
||||
hold the **>T<** button for eight seconds, or until :guilabel:`CONF` appears.
|
||||
|
||||
Next, press **>T<** until :guilabel:`GRP 3` appears, then press **>0<** to confirm.
|
||||
|
||||
Under :guilabel:`3.1`, ensure the setting is set to :guilabel:`1` (USB Virtual COM ports). Press
|
||||
**>T<** to cycle through the options under group 3.1.
|
||||
|
||||
Once :guilabel:`3.1` is set to :guilabel:`1`, press **>0<** to confirm the selection. Continue to
|
||||
press **>0<** until :guilabel:`GRP 4` appears.
|
||||
|
||||
Now, press **>T<** until :guilabel:`EXIT` appears.
|
||||
|
||||
.. important::
|
||||
Do **not** make any other changes unless otherwise needed.
|
||||
|
||||
Once :guilabel:`EXIT` appears, press **>0<**. Following this, press **>0<** again to
|
||||
:guilabel:`SAVE`. Now the scale restarts.
|
||||
|
||||
Finally, restart the :abbr:`IoT (Internet of Things)` box to recognize the changes made on the
|
||||
scale's configuration. After restarting, the scale appears as `Toledo 8217`, as opposed to the
|
||||
previous display, where it appeared as `Adam Equipment Serial`.
|
||||
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 53 KiB |
@@ -1,230 +0,0 @@
|
||||
==============
|
||||
Updating (IoT)
|
||||
==============
|
||||
|
||||
Due to the complexity of the :abbr:`IoT (Internet of Things)` box, and virtual Windows :abbr:`IoT
|
||||
(Internet of Things)` box, the term 'updating' can mean several different things.
|
||||
|
||||
The actual drivers can be updated, the core code on the :abbr:`IoT (Internet of Things)` box can be
|
||||
updated, or a new image can be flashed (using a physical :abbr:`IoT (Internet of Things)` box).
|
||||
|
||||
This document explores the various ways to update :abbr:`IoT (Internet of Things)` boxes to ensure
|
||||
smooth operation of :abbr:`IoT (Internet of Things)` box processes and devices.
|
||||
|
||||
.. _iot/config/flash:
|
||||
|
||||
Flashing the SD card on IoT box
|
||||
===============================
|
||||
|
||||
.. important::
|
||||
This update does **not** apply to the Windows :abbr:`IoT (Internet of Things)` box (Odoo 16 and
|
||||
higher).
|
||||
|
||||
To update the Windows :abbr:`IoT (Internet of Things)`, first, uninstall the previous version of
|
||||
the Odoo Windows program, and then reinstall it using the most up-to-date installation package.
|
||||
|
||||
To begin the installation, navigate to the Odoo 16 (or higher) installation package for
|
||||
Enterprise or Community - Windows edition, at `Odoo's download page
|
||||
<https://odoo.com/download>`_.
|
||||
|
||||
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
|
||||
re-flashed with *Etcher* software to benefit from Odoo's latest :abbr:`IoT (Internet of Things)`
|
||||
image update. This means the Odoo :abbr:`IoT (Internet of Things)` box software may need to be
|
||||
updated in instances of a new :abbr:`IoT (Internet of Things)` box, or when a handler's update, or
|
||||
an update from the :abbr:`IoT (Internet of Things)` box home page, does not resolve issues.
|
||||
|
||||
|
||||
.. note::
|
||||
- It is often necessary to re-flash the :abbr:`IoT (Internet of Things)` box's image after
|
||||
upgrading the Odoo database to a new version.
|
||||
- A computer with a micro SD card reader/adapter is **required** to re-flash the micro SD card.
|
||||
|
||||
First, begin by downloading `Etcher <https://www.balena.io/etcher#download-etcher>`_. It is a free,
|
||||
open-source utility, used for burning image files onto drives. After the download completes, install
|
||||
and launch the program on the computer.
|
||||
|
||||
Then, download the latest :abbr:`IoT (Internet of Things)` image from `nightly
|
||||
<http://nightly.odoo.com/master/iotbox>`_, which will be labeled as `iotbox-latest.zip`. This
|
||||
particular image is compatible with *all* supported versions of Odoo.
|
||||
|
||||
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
|
||||
the computer or reader. Open *Etcher*, and select :guilabel:`Flash from file`, then find and select
|
||||
the `iotbox-latest.zip` image and extract it. Next, select the drive the image should be burned to.
|
||||
|
||||
Lastly, click :guilabel:`Flash`, and wait for the process to finish.
|
||||
|
||||
.. image:: updating_iot/etcher-app.png
|
||||
:align: center
|
||||
:alt: Balena's Etcher software dashboard.
|
||||
|
||||
.. tip::
|
||||
Balena's *Etcher* software also allows for the administrator to flash the :abbr:`SD (Secure
|
||||
Digital)` card from a :abbr:`URL (Uniform Resource Locator)`. To flash from a :abbr:`URL (Uniform
|
||||
Resource Locator)`, simply click :guilabel:`Flash from URL`, instead of :guilabel:`Flash from
|
||||
file`.
|
||||
|
||||
Then, enter the following: `http://nightly.odoo.com/master/iotbox/iotbox-latest.zip`.
|
||||
|
||||
.. image:: updating_iot/url-flash.png
|
||||
:align: center
|
||||
:alt: A view of Balena's Etcher software, with the flash from URL option highlighted.
|
||||
|
||||
.. note::
|
||||
An alternative software for flashing the micro SD card is `Raspberry Pi Imager
|
||||
<https://www.raspberrypi.com/software/>`_.
|
||||
|
||||
Windows IoT update
|
||||
==================
|
||||
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box may occasionally need an update to work
|
||||
properly.
|
||||
|
||||
The following processes cover the :ref:`uninstallation <iot/config/uninstall-windows-iot>` and
|
||||
:ref:`re-installation <iot/config/re-install-windows-iot>` of the Windows virtual :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
.. _iot/config/uninstall-windows-iot:
|
||||
|
||||
Uninstalling Windows IoT
|
||||
------------------------
|
||||
|
||||
Prior to upgrading the Windows virtual :abbr:`IoT (Internet of Things)` box, the previous version
|
||||
should be uninstalled first.
|
||||
|
||||
.. important::
|
||||
Before uninstalling a previous version of the Windows virtual :abbr:`IoT (Internet of Things)`
|
||||
box, ensure that there is a newer version of Windows virtual :abbr:`IoT (Internet of Things)` box
|
||||
available, compared to the version currently installed. To do so, navigate to the `Odoo Nightly
|
||||
builds <https://nightly.odoo.com/>`_ page.
|
||||
|
||||
On the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds (stable version)
|
||||
--> windows/` to view the date next to the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0). The latest version of the Windows
|
||||
virtual :abbr:`IoT (Internet of Things)` box can be downloaded by selecting this file, or it is
|
||||
always available at the `Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
Uninstalling the Windows virtual :abbr:`IoT (Internet of Things)` box is done through the Windows
|
||||
program manager.
|
||||
|
||||
On any version of Windows, search for `program` to open the :menuselection:`Programs --> Programs
|
||||
and Features` section of the :guilabel:`Control Panel`. Then, select :guilabel:`Uninstall or change
|
||||
a program`. Next, search for `Odoo`, and click the :guilabel:`... (three dot)` menu on the
|
||||
:guilabel:`Odoo.exe` program to uninstall.
|
||||
|
||||
Confirm the uninstallation, and follow the steps to uninstall through the Odoo uninstall wizard.
|
||||
|
||||
.. _iot/config/re-install-windows-iot:
|
||||
|
||||
Download and re-install
|
||||
-----------------------
|
||||
|
||||
The latest version of the Windows virtual :abbr:`IoT (Internet of Things)` box can be downloaded
|
||||
from the `Odoo Nightly builds <https://nightly.odoo.com/>`_ page or it is always available at the
|
||||
`Odoo Download <https://odoo.com/download/>`_ page.
|
||||
|
||||
To download from the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds
|
||||
(stable version) --> windows/` to and select the :file:`odoo_(version).latest.exe` file; where
|
||||
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0).
|
||||
|
||||
To download from the :guilabel:`Odoo Download` page, find the section for the version of Odoo (e.g.
|
||||
16.0, 17.0), and select the :guilabel:`Download` button for :guilabel:`Windows`.
|
||||
|
||||
Next, install and setup the downloaded Odoo :file:`.exe` file. After the instructions screen, click
|
||||
:guilabel:`Next` to start the installation, and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
|
||||
During the next step of the re-installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select
|
||||
the type of install` drop-down menu.
|
||||
|
||||
.. example::
|
||||
For reference, the following should be installed:
|
||||
|
||||
- :guilabel:`Odoo server`
|
||||
- :guilabel:`Odoo IoT`
|
||||
- :guilabel:`Nginx WebServer`
|
||||
- :guilabel:`Ghostscript interpreter`
|
||||
|
||||
Ensure there is enough space on the computer for the installation, then click :guilabel:`Next`.
|
||||
|
||||
Set the destination and complete the installation
|
||||
-------------------------------------------------
|
||||
|
||||
To complete the re-installation, select the :guilabel:`Destination Folder`, and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. warning::
|
||||
Choosing `C:\\odoo` as the install location allows for the *Nginx* server to start. Odoo's
|
||||
Windows virtual :abbr:`IoT (Internet of Things)` box software should **not** be installed inside
|
||||
any of the Windows user's directories. Doing so does **not** allow for *Nginx* to initialize.
|
||||
|
||||
The installation may take a few minutes. When complete, click :guilabel:`Next` to continue.
|
||||
|
||||
Then, ensure that the :guilabel:`Start Odoo` box is checked, and click :guilabel:`Finish`. After
|
||||
installation, the Odoo server runs, and automatically opens `http://localhost:8069` on a web
|
||||
browser. The webpage should display the :abbr:`IoT (Internet of Things)` box homepage.
|
||||
|
||||
.. tip::
|
||||
A :ref:`restart <iot/restart_windows_iot>` of the Windows IoT program may be necessary if the web
|
||||
browser does not display anything.
|
||||
|
||||
.. _iot/config/homepage-upgrade:
|
||||
|
||||
Update from the IoT box home page
|
||||
=================================
|
||||
|
||||
In the background, the :abbr:`IoT (Internet of Things)` box uses a version of Odoo code to run and
|
||||
connect to the Odoo database. This code may need to be updated in order for the :abbr:`IoT (Internet
|
||||
of Things)` box to operate effectively. This operation should be completed on a routine basis, to
|
||||
ensure the :abbr:`IoT (Internet of Things)` system, and its processes, stay up-to-date.
|
||||
|
||||
Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to :menuselection:`IoT app
|
||||
--> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)`
|
||||
box. Then, click on :guilabel:`Update` (next to the version number).
|
||||
|
||||
If a new version of the :abbr:`IoT (Internet of Things)` box image is available, an
|
||||
:guilabel:`Upgrade to _xx.xx_` button appears at the bottom of the page. Click this button to
|
||||
upgrade the unit, at which point the :abbr:`IoT (Internet of Things)` box flashes itself to the
|
||||
newer version. All of the previous configurations are then saved.
|
||||
|
||||
.. important::
|
||||
This process can take more than 30 minutes. Do **not** turn off, or unplug, the :abbr:`IoT
|
||||
(Internet of Things)` box, as it would leave it in an inconsistent state. This means the
|
||||
:abbr:`IoT (Internet of Things)` box needs to be :ref:`re-flashed <iot/config/flash>` with a new
|
||||
image.
|
||||
|
||||
.. image:: updating_iot/flash-upgrade.png
|
||||
:align: center
|
||||
:alt: IoT box software upgrade in the IoT Box Home Page.
|
||||
|
||||
Handler (driver) update
|
||||
=======================
|
||||
|
||||
There may be some instances where drivers or interfaces need to be updated for individual devices
|
||||
(e.g. scales, measurement tools, etc.). The IoT handler's (drivers and interfaces) code can be
|
||||
modified by syncing them with the configured server handler's code.
|
||||
|
||||
This can be helpful in instances where :abbr:`IoT (Internet of Things)` devices (e.g. scales,
|
||||
measurement tools, etc.) are not working properly with the :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
For both the Windows :abbr:`IoT (Internet of Things)` (Odoo 16 and higher) and physical :abbr:`IoT
|
||||
(Internet of Things)` box, this process can be performed manually from the :abbr:`IoT (Internet of
|
||||
Things)` box home page. Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to
|
||||
:menuselection:`IoT app --> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT
|
||||
(Internet of Things)` box.
|
||||
|
||||
Next, click :guilabel:`Handlers list`, and then select :guilabel:`Load Handlers` at the bottom of
|
||||
the page.
|
||||
|
||||
.. image:: updating_iot/load-handlers.png
|
||||
:align: center
|
||||
:alt: Handlers list on an IoT box with the load handlers button highlighted.
|
||||
|
||||
.. important::
|
||||
Handler's code is fetched from the configured server, and it needs to be up-to-date to have the
|
||||
latest fixes and patches.
|
||||
|
||||
.. note::
|
||||
A handler update is also performed automatically each time the :abbr:`IoT (Internet of Things)`
|
||||
box is restarted. The only exception to this process is if the *Automatic drivers update* is
|
||||
unchecked in the form view of the :abbr:`IoT (Internet of Things)` box on the Odoo server. This
|
||||
setting can be reached by going to :menuselection:`IoT App --> Select the IoT box --> Automatic
|
||||
drivers update`.
|
||||
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
@@ -1,314 +0,0 @@
|
||||
========================
|
||||
Connect Windows IoT Odoo
|
||||
========================
|
||||
|
||||
A Virtual IoT box is a computer program that needs to be downloaded and installed on a Windows
|
||||
computer. This requires a Windows operating system with an Odoo 16 or later database.
|
||||
|
||||
The Windows virtual :abbr:`IoT (Internet of Things)` box works the same way as a physical :abbr:`IoT
|
||||
(Internet of Things)` box, with the ability to run most of the same devices. All :abbr:`POS (Point
|
||||
of Sale)` devices work with it, such as a scale or printer. Payment terminals will also work, but it
|
||||
should be noted that :abbr:`MRP (Material Requirement Planning)` devices are not compatible. *These
|
||||
include cameras or measurement tools.*
|
||||
|
||||
Pre-requisites
|
||||
==============
|
||||
|
||||
The following items will be needed to complete the Windows :abbr:`IoT (Internet of Things)`
|
||||
installation.
|
||||
|
||||
- Odoo 16 database or any version above.
|
||||
- :abbr:`IoT (Internet of Things)` compatible devices (except those mentioned above). Refer to:
|
||||
`Odoo's compatible IoT devices <https://www.odoo.com/app/iot-hardware>`_.
|
||||
- Device drivers for Windows.
|
||||
|
||||
.. note::
|
||||
Odoo recommends using an updated, recent version of Windows (Windows 10/11) as some older
|
||||
operating systems can cause the Windows virtual :abbr:`IoT (Internet of Things)` to not work.
|
||||
|
||||
- Windows computer (laptop, desktop, or server).
|
||||
- Odoo :abbr:`IoT (Internet of Things)` subscription. Refer to: :ref:`iot/iot-eligibility`.
|
||||
|
||||
Connect the Windows virtual IoT box to an Odoo database
|
||||
=======================================================
|
||||
|
||||
The Windows virtual IoT box is simple to setup in just a few easy steps. Follow this process when
|
||||
installing the Windows virtual IoT software for the first time.
|
||||
|
||||
Download and initial installation
|
||||
---------------------------------
|
||||
|
||||
To begin the installation, navigate to the Odoo 16 or higher installation package for Community -
|
||||
Windows edition at `Odoo's download page <https://odoo.com/download>`_. Next, install and setup the
|
||||
Odoo :file:`.exe` file. After the instructions screen, click :guilabel:`Next` to start the
|
||||
installation and agree to the :abbr:`TOS (Terms of Service)`.
|
||||
|
||||
During the next step of the installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select the
|
||||
type of install` drop-down menu.
|
||||
|
||||
.. example::
|
||||
For reference, the following should be installed:
|
||||
|
||||
- **Odoo server**
|
||||
- **Odoo IoT**
|
||||
- **Nginx WebServer**
|
||||
- **Ghostscript interpreter**
|
||||
|
||||
Ensure there is enough space on the computer for the installation and click :guilabel:`Next`.
|
||||
|
||||
Setting the destination and completing the installation
|
||||
-------------------------------------------------------
|
||||
|
||||
To complete the installation, select the :guilabel:`Destination Folder` and click
|
||||
:guilabel:`Install`.
|
||||
|
||||
.. tip::
|
||||
Choosing ``C:\odoo`` as the install location will allow for the Nginx server to start. If the
|
||||
folder doesn't exist, then create it. Otherwise the installation files will be spread throughout
|
||||
the hard drive.
|
||||
|
||||
.. warning::
|
||||
Odoo's Windows virtual IoT software should not be installed inside any of the Window's User's
|
||||
directories. Doing so will not allow for Nginx to initialize.
|
||||
|
||||
The installation may take a few minutes. When complete, click :guilabel:`Next` to continue.
|
||||
|
||||
Ensure that the :guilabel:`Start Odoo` box is checked and click :guilabel:`Finish`. After
|
||||
installation, the Odoo server will run and automatically open `http://localhost:8069` on a web
|
||||
browser. The webpage should display the :abbr:`IoT (Internet of Things)` box homepage.
|
||||
|
||||
.. seealso::
|
||||
A restart of the Windows IoT program may be necessary should the web browser not display
|
||||
anything. :ref:`iot/restart_windows_iot`
|
||||
|
||||
Connecting devices
|
||||
------------------
|
||||
|
||||
Next, connect the :abbr:`IoT (Internet of Things)` devices to the Windows computer. Windows should
|
||||
automatically detect the device because the driver is pre-installed on the computer. If not, search
|
||||
for and install the Windows driver for the device.
|
||||
|
||||
.. important::
|
||||
Most devices connect to the Windows Machine for Windows IoT automatically through Windows
|
||||
Plug-N-Play (PnP). However, if Windows does not automatically recognize the device after
|
||||
connecting, then the administrator may need to install the corresponding drivers manually.
|
||||
|
||||
Devices automatically recognized:
|
||||
|
||||
- Regular ink/toner based printers
|
||||
- Receipt printers (Epson/Star)
|
||||
- Barcode scanners
|
||||
- Measurement devices (although some configuration of the measurement device settings is
|
||||
required) See this documentation: :doc:`../devices/measurement_tool`
|
||||
|
||||
Devices not automatically recognized (requires manual driver download):
|
||||
|
||||
- Label printers (Zebra)
|
||||
- Scales
|
||||
|
||||
Reference the manufacturer's website for the equipment in question. Then, download the drivers
|
||||
and install them on the Windows machine. Reconnect the device in question and Windows will find
|
||||
the device.
|
||||
|
||||
Following connecting devices to the computer, refresh the :abbr:`IoT (Internet of Things)` box
|
||||
homepage and verify the device is seen. If not, reload the handlers through the :abbr:`IoT (Internet
|
||||
of Things)` box homepage.
|
||||
|
||||
Finally, connect Windows :abbr:`IoT (Internet of Things)` to a database using existing instructions
|
||||
(manually using the Token).
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/general/iot/config/connect`
|
||||
|
||||
Now the installation is complete, the devices connected to :abbr:`IoT (Internet of Things)` can be
|
||||
used to complete processes/actions.
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
.. _iot/restart_windows_iot:
|
||||
|
||||
Restart Windows IoT box
|
||||
-----------------------
|
||||
|
||||
In some instances a manual restart of the physical :abbr:`IoT (Internet of Things)` box can resolve
|
||||
the issue of an :abbr:`IoT (Internet of Things)` box not showing up on the database. For the Windows
|
||||
virtual :abbr:`IoT (Internet of Things)` box a manual restart of the Odoo server can resolve
|
||||
database connection issues.
|
||||
|
||||
To restart the virtual Windows IoT server:
|
||||
|
||||
#. Type `Services` into the Windows :guilabel:`Search Bar`.
|
||||
#. Select the :menuselection:`Services` App and scroll down to the :guilabel:`Odoo` service.
|
||||
#. Right click on :guilabel:`Odoo` and select :guilabel:`Start` or :guilabel:`Restart`. This action
|
||||
will manually restart the Odoo IoT server.
|
||||
|
||||
Firewalls
|
||||
---------
|
||||
|
||||
Firewalls keep devices safe and secure. Sometimes they can block connections that should be made
|
||||
though. The Windows virtual :abbr:`IoT (Internet of Things)` box software may not be reachable to
|
||||
the :abbr:`LAN (Local Area Network)` due to a firewall preventing the connection. Consult your local
|
||||
IT support team to make exceptions (network discovery) in the :abbr:`OS (Operating System)` or
|
||||
firewall program. Windows has their own firewall as do other virus protection programs.
|
||||
|
||||
.. example::
|
||||
A client might encounter a time when they are able to reach the homepage of the :abbr:`IoT
|
||||
(Internet of Things)` box, yet they cannot access it from another computer/mobile device/tablet
|
||||
on the same network.
|
||||
|
||||
Making an exception on Windows Defender
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is possible to allow other devices to access the Windows virtual :abbr:`IoT (Internet of Things)`
|
||||
box while keeping the firewall on. This is done by creating a rule on *Windows Defender* and
|
||||
allowing communication through port `8069`. The following process describes the steps to take in
|
||||
order to make this exception.
|
||||
|
||||
Create a rule in Windows Defender
|
||||
*********************************
|
||||
|
||||
First, open the *Windows Firewall* by navigating to the :menuselection:`Start Menu` and typing in
|
||||
`Firewall`. Then, open the :menuselection:`Windows Defender Firewall` program. In the left-hand
|
||||
menu, navigate to :guilabel:`Advanced Settings`.
|
||||
|
||||
Once :guilabel:`Advanced Settings` have been selected, click :guilabel:`Inbound Rules` in the
|
||||
left-hand menu. Then, in the right-hand menu column (under :guilabel:`Inbound Rules`), click on
|
||||
:guilabel:`New Rule` to create a new rule.
|
||||
|
||||
Configure new rule
|
||||
******************
|
||||
|
||||
On the :menuselection:`Rule Type` screen, select :guilabel:`Port`. Then click :guilabel:`Next`. From
|
||||
the :menuselection:`Protocol and Ports` page leave the rule application to :guilabel:`TCP`. Then,
|
||||
select :guilabel:`Specific Local Ports` for the :guilabel:`ports` option. In the text box, type in
|
||||
`8069, 443`. Finally, click :guilabel:`Next` to continue to the next step.
|
||||
|
||||
On the :menuselection:`Actions` page, select :guilabel:`Allow the connection` and click
|
||||
:guilabel:`Next`. The following page on the :menuselection:`Rule Configuration` wizard is the
|
||||
:guilabel:`Profile` page. On this page, select whichever connection type applies to the network the
|
||||
Windows machine is operating on. Ideally, select :guilabel:`Private` only connections. The *Private*
|
||||
connection type is the most secure connection while allowing the selected port to communicate. Click
|
||||
:guilabel:`Next` to continue.
|
||||
|
||||
Finally, assign a new, unique name to the rule. For example, this name can be `Odoo`. Optionally,
|
||||
add a brief description in the :guilabel:`Description` field. Click :guilabel:`Finish` to complete
|
||||
the :guilabel:`Rule Configuration` wizard. Now, the new rule is active and devices can connect to
|
||||
the Windows virtual :abbr:`IoT (Internet of Things)` box.
|
||||
|
||||
.. _iot/windows/wordline:
|
||||
|
||||
Worldline exception
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
*Worldline* is a payment terminal that can be connected to Odoo's *PoS* (point of sale) system. It
|
||||
allows for a comprehensive and fluid payment experience for customers. Worldline is available in
|
||||
Belgium, the Netherlands, and Luxembourg.
|
||||
|
||||
When using the Windows IoT server to connect the Worldline payment terminal, it is necessary to
|
||||
create an exception in the Windows firewall so that a connection can be made between the Odoo
|
||||
database/:abbr:`IoT (Internet of Things)` box and Worldline.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../../sales/point_of_sale/payment_methods/terminals/worldline`
|
||||
|
||||
To create the exception, first, open the *Windows Defender Firewall* app on the Windows machine.
|
||||
This can be accomplished by typing `windows defender` in the :guilabel:`Search` bar.
|
||||
|
||||
Next, click :guilabel:`Advanced settings` in the left menu.
|
||||
|
||||
.. image:: windows_iot/advanced-settings.png
|
||||
:align: center
|
||||
:alt: Advanced settings option highlighted in the left pane of the Windows Defender Firewall app.
|
||||
|
||||
In the left menu, choose :guilabel:`Inbound Rules`.
|
||||
|
||||
.. image:: windows_iot/inbound-rules.png
|
||||
:align: center
|
||||
:alt: Windows Defender left window pane with inbound rules menu item highlighted.
|
||||
|
||||
After selecting :guilabel:`Inbound Rules`, select :guilabel:`New Rule` in the far right menu.
|
||||
|
||||
.. image:: windows_iot/new-rule.png
|
||||
:align: center
|
||||
:alt: New rule dropdown shown with new rule option highlighted.
|
||||
|
||||
Then, for the :guilabel:`Rule Type`, select the radio button for :guilabel:`Port`. Click
|
||||
:guilabel:`Next` to continue to the rest of the configuration.
|
||||
|
||||
.. image:: windows_iot/radio-port.png
|
||||
:align: center
|
||||
:alt: Rule Type window open, with the radio button next to port highlighted.
|
||||
|
||||
On the :guilabel:`Protocols and Ports` page, choose the radio button for :guilabel:`TCP`, under
|
||||
:guilabel:`Does this rule apply to TCP or UDP?`.
|
||||
|
||||
Next, under :guilabel:`Does this rule apply to all local ports or specific ports?`, select the radio
|
||||
button for :guilabel:`Specific local ports`. Then, enter `9050`, and click :guilabel:`Next` to
|
||||
continue.
|
||||
|
||||
.. image:: windows_iot/protocol-port.png
|
||||
:align: center
|
||||
:alt: Protocol/port configuration window with TCP, specific port (9050) and Next highlighted.
|
||||
|
||||
The next screen is the :guilabel:`Action` page. Under :guilabel:`What action should be taken when a
|
||||
connection matches the specified conditions?`, choose the radio button for :guilabel:`Allow the
|
||||
connection`. Then, click :guilabel:`Next` to continue.
|
||||
|
||||
A :guilabel:`Profile` page appears. Under :guilabel:`When does this rule apply?`, leave the three
|
||||
boxes checked for: :guilabel:`Domain`, :guilabel:`Private`, and :guilabel:`Public`. Click
|
||||
:guilabel:`Next` to continue to the naming convention page.
|
||||
|
||||
On the :guilabel:`Name` page, enter `Odoo Worldline`, under the :guilabel:`Name` field. Enter a
|
||||
:guilabel:`Description (optional)`. Finally, once ready, click :guilabel:`Finish`.
|
||||
|
||||
The final :guilabel:`Inbound rule` should appear as follows:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* -
|
||||
- Odoo Worldline
|
||||
* - Profile
|
||||
- All
|
||||
* - Enabled
|
||||
- Yes
|
||||
* - Action
|
||||
- Allow
|
||||
* - Override
|
||||
- No
|
||||
* - Program
|
||||
- Any
|
||||
* - Local Address
|
||||
- Any
|
||||
* - Remote Address
|
||||
- Any
|
||||
* - Protocol
|
||||
- TCP
|
||||
* - Local Port
|
||||
- 9050
|
||||
* - Remote Port
|
||||
- Any
|
||||
* - Authorized Users
|
||||
- Any
|
||||
* - Authorized Computers
|
||||
- Any
|
||||
* - Authorized Local Principals
|
||||
- Any
|
||||
* - Local User Owner
|
||||
- Any
|
||||
* - PolicyAppld
|
||||
- None
|
||||
* - Application Package
|
||||
- Any
|
||||
|
||||
Uninstalling Windows IoT
|
||||
------------------------
|
||||
|
||||
Uninstalling the Windows virtual :abbr:`IoT (Internet of Things)` box is done through the Windows
|
||||
program manager. Using any Windows version, search for `program`. Then, select :guilabel:`Add or
|
||||
Remove Programs` located in the control panel. Search for `Odoo` and click the :guilabel:`three dot
|
||||
menu` to uninstall.
|
||||
|
||||
Confirm the un-installation and follow the steps to uninstall through the Odoo uninstall guide.
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 39 KiB |