Compare commits
54 Commits
master-def
...
saas-18.1-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f5c7adce1 | ||
|
|
beb619bef1 | ||
|
|
6e27b30a30 | ||
|
|
4805579882 | ||
|
|
6fff0024b4 | ||
|
|
5421a9b64d | ||
|
|
bf8cbad52b | ||
|
|
fbbda69eef | ||
|
|
b2d74f9060 | ||
|
|
a362a5295c | ||
|
|
02c2c56118 | ||
|
|
82511641ca | ||
|
|
5344283f88 | ||
|
|
bf03a68576 | ||
|
|
89ef206c76 | ||
|
|
ff6f55ae20 | ||
|
|
ce598c8f4f | ||
|
|
39d6762690 | ||
|
|
85db99c793 | ||
|
|
91103976f7 | ||
|
|
d2f5f224fd | ||
|
|
ca88450e9e | ||
|
|
818a633089 | ||
|
|
97ae039524 | ||
|
|
325d5cda17 | ||
|
|
c8b5ec9b8b | ||
|
|
01f3e490e2 | ||
|
|
beb10a0649 | ||
|
|
584221de4b | ||
|
|
43226c1c1d | ||
|
|
213a8b5272 | ||
|
|
9e0440653f | ||
|
|
bc1e3def1d | ||
|
|
fd6286996d | ||
|
|
69a5e540ea | ||
|
|
8c334b663f | ||
|
|
95e4fee78f | ||
|
|
cd9a550691 | ||
|
|
deabf8bcb2 | ||
|
|
7346b921e1 | ||
|
|
82d326b89c | ||
|
|
71c6e2c728 | ||
|
|
87250c8510 | ||
|
|
ffa8f068b3 | ||
|
|
25ee78901b | ||
|
|
b678d14483 | ||
|
|
ba6083172a | ||
|
|
4142841a43 | ||
|
|
85cbb4349f | ||
|
|
267ed1371c | ||
|
|
8cbe296a12 | ||
|
|
7b1341bb6c | ||
|
|
e6a052c4dd | ||
|
|
6b399d13d1 |
2
Makefile
@@ -27,7 +27,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-18.1
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
||||
3
conf.py
@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
|
||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||
# also used in various other places throughout the built documents.
|
||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'master'
|
||||
version = release = 'saas-18.1'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
@@ -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",
|
||||
|
||||
@@ -64,4 +64,4 @@ The Odoo mobile apps are available for download on the `Google Play Store
|
||||
.. important::
|
||||
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||
|
||||
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
||||
While the store apps support multi-accounts, they are not compatible with SSO authentication.
|
||||
|
||||
@@ -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|
|
||||
|
||||
@@ -28,15 +28,13 @@ select a record, tick the checkbox next to the corresponding record. Finally, cl
|
||||
then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
:alt: View of the different things to enable/click to export data.
|
||||
|
||||
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
|
||||
several options for the data to export:
|
||||
|
||||
.. image:: export_import_data/export-data-overview.png
|
||||
:align: center
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
:alt: Overview of options to consider when exporting data in Odoo.
|
||||
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||
@@ -87,7 +85,6 @@ data into an Odoo database.
|
||||
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
|
||||
|
||||
.. image:: export_import_data/advanced-import.png
|
||||
:align: center
|
||||
:alt: Advanced import options when developer mode is activated.
|
||||
|
||||
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
|
||||
@@ -96,6 +93,8 @@ data into an Odoo database.
|
||||
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
|
||||
within a field are used to match under the :guilabel:`Odoo Field` while importing.
|
||||
|
||||
.. _essentials/export_import_data/get-started:
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
@@ -103,30 +102,32 @@ Data can be imported on any Odoo business object using either Excel (`.xlsx`) or
|
||||
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
|
||||
journal entries, and orders.
|
||||
|
||||
Open the view of the object to which the data should be imported/populated, and click on
|
||||
:menuselection:`⚙️ (Action) --> Import records`.
|
||||
Open the view of the object to which the data should be imported/populated, click the :icon:`fa-cog`
|
||||
(:guilabel:`gear`) icon and select :guilabel:`Import records`.
|
||||
|
||||
.. image:: export_import_data/import-button.png
|
||||
:align: center
|
||||
:alt: Action menu revealed with the import records option highlighted.
|
||||
|
||||
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
|
||||
downloaded and populated with the company's own data. Such templates can be imported in one click,
|
||||
since the data mapping is already done. To download a template click :guilabel:`Import Template for
|
||||
Customers` at the center of the page.
|
||||
Click :icon:`fa-download`:guilabel:`Import Template for Customers` at the center of the page to
|
||||
download a :ref:`template <essentials/export_import_data/adapt-a-template>` and populate it with
|
||||
the company's own data. Such templates can be imported in one click since the data mapping is
|
||||
already preconfigured.
|
||||
|
||||
.. important::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
|
||||
`.xlsx`).
|
||||
To upload the downloaded template or your own file, follow the next steps:
|
||||
|
||||
.. image:: export_import_data/formatting.png
|
||||
:align: center
|
||||
:alt: Formatting options presented when a CVS file is imported in Odoo.
|
||||
#. Click :guilabel:`Upload Data File` and select the desired file.
|
||||
#. Adjust the :guilabel:`Formatting` options as needed (for CSV files only).
|
||||
#. Ensure all data in the :guilabel:`File Column` is correctly mapped to the appropriate
|
||||
:guilabel:`Odoo Field` and free of errors.
|
||||
#. (Optional) Click :guilabel:`Load Data File` to reload the same file or upload a different one.
|
||||
#. Click :guilabel:`Test` to verify that the data is valid.
|
||||
#. Click :guilabel:`Import`.
|
||||
|
||||
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
|
||||
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
|
||||
:guilabel:`Import` to import the data.
|
||||
.. note::
|
||||
The :guilabel:`Formatting` options do **not** appear when importing the proprietary Excel file
|
||||
type (i.e., `.xls` or `.xlsx`).
|
||||
|
||||
.. _essentials/export_import_data/adapt-a-template:
|
||||
|
||||
Adapt a template
|
||||
----------------
|
||||
@@ -144,7 +145,6 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
(ID) column.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
|
||||
|
||||
.. note::
|
||||
@@ -153,7 +153,6 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
Search the drop-down menu for the corresponding field.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Drop-down menu expanded in the initial import screen on Odoo.
|
||||
|
||||
Then, use this field's label in the import file to ensure future imports are successful.
|
||||
@@ -203,7 +202,6 @@ If this happens, check the :guilabel:`Show fields of relation fields (advanced)
|
||||
complete list of fields becomes available for each column.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Searching for the field to match the tax column.
|
||||
|
||||
Change data import format
|
||||
@@ -401,6 +399,33 @@ respective contacts:
|
||||
- :download:`Customers and their respective contacts
|
||||
<export_import_data/o2m_customers_contacts.csv>`
|
||||
|
||||
Import image files
|
||||
------------------
|
||||
|
||||
To import image files along with the :ref:`uploaded <essentials/export_import_data/get-started>`
|
||||
CSV or Excel file, follow the next steps:
|
||||
|
||||
#. Add the image file names to the relevant :guilabel:`Image` column in the data file.
|
||||
#. :ref:`Upload the data file <essentials/export_import_data/get-started>` or reload it by
|
||||
clicking :guilabel:`Load Data File`.
|
||||
#. Click :guilabel:`Upload your files` under the :guilabel:`Files to import` section.
|
||||
#. Select the relevant image files. The number of files selected appears next to the button.
|
||||
#. Click :guilabel:`Test` to verify that all data is valid.
|
||||
#. Click :guilabel:`Import`. During the import process, Odoo performs a file check to automatically
|
||||
link the uploaded images to the imported data file. If there is no match, the data file is
|
||||
imported without any image.
|
||||
|
||||
.. note::
|
||||
- The :guilabel:`Files to import` section is enabled if your product template has an
|
||||
:guilabel:`Image` column with all fields populated.
|
||||
- The image file names in the data file must correspond to the uploaded image files.
|
||||
- When importing a large number of images, you can specify the maximum batch size in megabytes
|
||||
and set a delay to prevent the system from becoming overloaded. To do so, :doc:`enable the
|
||||
developer mode <../general/developer_mode>` and fill in the :guilabel:`Max size per
|
||||
batch` and the :guilabel:`Delay after each batch` fields in the :guilabel:`Files to import`
|
||||
section. By default, the delay meets the RPC/API call limit defined in the `Odoo Cloud -
|
||||
Acceptable Use Policy <https://www.odoo.com/acceptable-use>`_.
|
||||
|
||||
Import records several times
|
||||
----------------------------
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Bank and cash accounts
|
||||
======================
|
||||
|
||||
You can manage as many bank or cash accounts as needed on your database. Configuring them well
|
||||
You can manage as many bank or cash accounts as needed on your database. Configuring them correctly
|
||||
allows you to have all your banking data up-to-date and ready for :doc:`reconciliation
|
||||
<bank/reconciliation>` with your journal entries.
|
||||
|
||||
@@ -21,22 +21,22 @@ which include action buttons.
|
||||
.. image:: bank/card.png
|
||||
:alt: Bank journals are displayed on the Accounting Dashboard and contain action buttons
|
||||
|
||||
.. _bank_accounts/manage:
|
||||
.. _accounting/bank/manage:
|
||||
|
||||
Manage your bank and cash accounts
|
||||
==================================
|
||||
Manage bank and cash accounts
|
||||
=============================
|
||||
|
||||
Connect your bank for automatic synchronization
|
||||
-----------------------------------------------
|
||||
Connect a bank for automatic synchronization
|
||||
--------------------------------------------
|
||||
|
||||
To connect your bank account to your database, go to :menuselection:`Accounting --> Configuration
|
||||
--> Banks: Add a Bank Account`, select your bank in the list, click on :guilabel:`Connect`, and
|
||||
follow the instructions.
|
||||
--> Add a Bank Account`, select your bank in the list, click on :guilabel:`Connect`, and follow the
|
||||
instructions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`bank/bank_synchronization`
|
||||
|
||||
.. _bank_accounts/create:
|
||||
.. _accounting/bank/create:
|
||||
|
||||
Create a bank account
|
||||
---------------------
|
||||
@@ -44,8 +44,9 @@ Create a bank account
|
||||
If your banking institution is not available in Odoo, or if you don't want to connect your bank
|
||||
account to your database, you can configure your bank account manually.
|
||||
|
||||
To manually add a bank account, go to :menuselection:`Accounting --> Configuration --> Banks:
|
||||
Add a Bank Account`, click on :guilabel:`Create it` (at the bottom right), and fill out the form.
|
||||
To manually add a bank account, go to :menuselection:`Accounting --> Configuration --> Add a Bank
|
||||
Account`, click on :guilabel:`Record transactions manually` (at the bottom right), fill out the bank
|
||||
information, and click :guilabel:`Create`.
|
||||
|
||||
.. note::
|
||||
- Odoo automatically detects the bank account type (e.g., IBAN) and enables some features
|
||||
@@ -61,7 +62,7 @@ To create a new cash journal, go to :menuselection:`Accounting --> Configuration
|
||||
Journals`, click on :guilabel:`Create` and select :guilabel:`Cash` in the :guilabel:`Type` field.
|
||||
|
||||
For more information on the accounting information fields, read the
|
||||
:ref:`bank_accounts/configuration` section of this page.
|
||||
:ref:`accounting/bank/configuration` section of this page.
|
||||
|
||||
.. note::
|
||||
A default cash journal is available and can be used straight away. You can review it by going to
|
||||
@@ -73,7 +74,7 @@ Edit an existing bank or cash journal
|
||||
To edit an existing bank journal, go to :menuselection:`Accounting --> Configuration --> Accounting:
|
||||
Journals` and select the journal you want to modify.
|
||||
|
||||
.. _bank_accounts/configuration:
|
||||
.. _accounting/bank/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -86,14 +87,23 @@ You can edit the accounting information and bank account number according to you
|
||||
.. seealso::
|
||||
- :doc:`get_started/multi_currency`
|
||||
- :doc:`bank/transactions`
|
||||
- `Bank configuration <https://www.youtube.com/watch?v=tVhhXw-VnGE>`_
|
||||
|
||||
.. _bank_accounts/suspense:
|
||||
.. _accounting/bank/suspense:
|
||||
|
||||
Suspense account
|
||||
----------------
|
||||
|
||||
Bank statement transactions are posted on the :guilabel:`Suspense Account` until the final
|
||||
reconciliation allows finding the right account.
|
||||
Bank statement transactions are posted on the suspense account until they are reconciled. At any
|
||||
moment, the suspense account's balance in the general ledger shows the balance of transactions that
|
||||
have not yet been reconciled.
|
||||
|
||||
.. note::
|
||||
When a bank transaction is reconciled, the journal entry is modified to replace the bank suspense
|
||||
account with the account of the journal item it is reconciled with. This account is usually the
|
||||
:ref:`outstanding receipts or payments account <accounting/bank/outstanding-accounts>` if
|
||||
reconciling with a registered payment or the account receivable or payable if reconciling with
|
||||
an invoice or bill directly.
|
||||
|
||||
Profit and loss accounts
|
||||
------------------------
|
||||
@@ -105,7 +115,7 @@ register a loss when the ending balance of a cash register differs from what the
|
||||
Currency
|
||||
--------
|
||||
|
||||
You can edit the currency used to enter the statements.
|
||||
You can edit the currency used to enter the transactions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`get_started/multi_currency`
|
||||
@@ -114,7 +124,7 @@ Account number
|
||||
--------------
|
||||
|
||||
If you need to **edit your bank account details**, click on the external link arrow next to your
|
||||
:guilabel:`Account Number`. On the new page, click on the external link arrow next to your
|
||||
:guilabel:`Account Number`. On the account page, click on the external link arrow next to your
|
||||
:guilabel:`Bank` and update your bank information accordingly. These details are used when
|
||||
registering payments.
|
||||
|
||||
@@ -124,12 +134,13 @@ registering payments.
|
||||
Bank feeds
|
||||
----------
|
||||
|
||||
:guilabel:`Bank Feeds` defines how the bank statements are registered. Three options are available:
|
||||
:guilabel:`Bank Feeds` defines how the bank transactions are registered. Three options are
|
||||
available:
|
||||
|
||||
- :guilabel:`Undefined yet`, which should be selected when you don’t know yet if you will
|
||||
synchronize your bank account with your database or not.
|
||||
- :guilabel:`Import (CAMT, CODA, CSV, OFX, QIF)`, which should be selected if you want to import
|
||||
your bank statement using a different format.
|
||||
your bank statements and transactions using a different format.
|
||||
- :guilabel:`Automated Bank Synchronization`, which should be selected if your bank is synchronized
|
||||
with your database.
|
||||
|
||||
@@ -137,53 +148,47 @@ Bank feeds
|
||||
- :doc:`bank/bank_synchronization`
|
||||
- :doc:`bank/transactions`
|
||||
|
||||
.. _bank/outstanding-accounts:
|
||||
.. _accounting/bank/outstanding-accounts:
|
||||
|
||||
Outstanding accounts
|
||||
====================
|
||||
|
||||
By default, payments are registered through transitory accounts named **outstanding accounts**,
|
||||
before being recorded in your bank account.
|
||||
By default, payments in Odoo do not create journal entries, but they can easily be configured to
|
||||
create journal entries using **outstanding accounts**.
|
||||
|
||||
- An **outstanding payments account** is where outgoing payments are posted until they are linked
|
||||
with a withdrawal from your bank statement.
|
||||
- An **outstanding receipts account** is where incoming payments are posted until they are linked
|
||||
with a deposit from your bank statement.
|
||||
with incoming bank transactions.
|
||||
- An **outstanding payments account** is where outgoing payments are posted until they are linked
|
||||
with outgoing bank transactions.
|
||||
|
||||
These accounts should be of :ref:`type <chart-of-account/type>` :guilabel:`Current Assets`.
|
||||
These accounts are usually of :ref:`type <chart-of-account/type>` :guilabel:`Current Assets` and
|
||||
:guilabel:`Current Liabilities`.
|
||||
|
||||
Payments that are registered in Odoo are posted to the outstanding receipts and outstanding accounts
|
||||
until they are reconciled. At any moment, the outstanding receipts account's balance in the general
|
||||
ledger shows the balance of registered incoming payments that have not yet been reconciled, and the
|
||||
outstanding payments account's balance in the general ledger shows the balance of registered
|
||||
outgoing payments that have not yet been reconciled.
|
||||
|
||||
Bank and cash journal configuration
|
||||
-----------------------------------
|
||||
|
||||
To configure payments to create journal entries, set outstanding accounts for the journal's payment
|
||||
methods. This can be done for any journal with the :ref:`type <chart-of-account/type>`
|
||||
:guilabel:`Bank` or :guilabel:`Cash`.
|
||||
|
||||
To configure the outstanding accounts for a journal's payment methods, first go to
|
||||
:menuselection:`Accounting --> Configuration --> Journals` and select a bank or cash journal. In the
|
||||
:guilabel:`Incoming Payments` and :guilabel:`Outgoing Payments` tabs, set :guilabel:`Outstanding
|
||||
Receipts accounts` and :guilabel:`Outstanding Payments accounts` for each payment method that you
|
||||
want to create journal entries.
|
||||
|
||||
.. note::
|
||||
The movement from an outstanding account to a bank account is done automatically when you
|
||||
reconcile the bank account with a bank statement.
|
||||
|
||||
Default accounts configuration
|
||||
------------------------------
|
||||
|
||||
The outstanding accounts are defined by default. If necessary, you can update them by going to
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Default Accounts` and update your
|
||||
:guilabel:`Outstanding Receipts Account` and :guilabel:`Outstanding Payments Account`.
|
||||
|
||||
Bank and cash journals configuration
|
||||
------------------------------------
|
||||
|
||||
You can also set specific outstanding accounts for any journal with the :ref:`type
|
||||
<chart-of-account/type>` :guilabel:`Bank` or :guilabel:`Cash`.
|
||||
|
||||
From your :guilabel:`Accounting Dashboard`, click on the menu selection ⋮ of the journal you want to
|
||||
configure, and click on :guilabel:`Configuration`, then open the :guilabel:`Incoming/Outgoing
|
||||
Payments` tab. To display the outstanding accounts column, click on the toggle button and check the
|
||||
:guilabel:`Outstanding Receipts/Payments accounts`, then update the account.
|
||||
|
||||
.. image:: bank/toggle-button.png
|
||||
:align: center
|
||||
:alt: Select the toggle button and click on outstanding Accounts
|
||||
|
||||
.. note::
|
||||
- If you do not specify an outstanding payments account or an outstanding receipts account for a
|
||||
specific journal, Odoo uses the default outstanding accounts.
|
||||
- If your main bank account is added as an outstanding receipts account or outstanding payments
|
||||
account, when a payment is registered, the invoice or bill's status is directly set to
|
||||
:guilabel:`Paid`.
|
||||
- If the main bank account of the journal is added as an outstanding receipts account or
|
||||
outstanding payments account, when a payment is registered, the invoice or bill's status is
|
||||
directly set to :guilabel:`Paid`.
|
||||
- If the outstanding receipts or outstanding payments account for a payment method is left blank,
|
||||
registering a payment with that payment method will not create any journal entry.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
@@ -192,5 +197,6 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
|
||||
bank/transactions
|
||||
bank/reconciliation
|
||||
bank/reconciliation_models
|
||||
bank/internal_transfers
|
||||
bank/foreign_currency
|
||||
bank/loans
|
||||
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 25 KiB |
@@ -11,7 +11,7 @@ To check if your bank is compatible with Odoo, go to `Odoo Accounting Features
|
||||
<https://www.odoo.com/page/accounting-features>`_, and click on
|
||||
:guilabel:`See list of supported institutions`.
|
||||
|
||||
Odoo supports more than 25,000 institutions around the world.
|
||||
Odoo supports more than 26,000 institutions around the world.
|
||||
|
||||
To connect to the banks, Odoo uses multiple web-services:
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,71 @@
|
||||
==================
|
||||
Internal transfers
|
||||
==================
|
||||
|
||||
Internal money transfers can be handled in Odoo. At least two bank or cash accounts are needed to
|
||||
make internal transfers.
|
||||
|
||||
.. seealso::
|
||||
:ref:`How to add an additional bank account <accounting/bank/create>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
An internal transfer account is automatically created on your database based on your company's
|
||||
:doc:`localization <../../fiscal_localizations>` and depending on your country’s legislation. To
|
||||
modify the default :guilabel:`Internal Transfer` account, go to :menuselection:`Accounting -->
|
||||
Configuration --> Settings` and scroll down to the :guilabel:`Default Accounts` section.
|
||||
|
||||
Register an internal transfer from one bank to another
|
||||
======================================================
|
||||
|
||||
When money is transferred from one bank or cash account to another, that amount appears as two
|
||||
transactions on the corresponding journals, whether the transactions are created manually, via
|
||||
import, or via :doc:`bank synchronization <bank_synchronization>`. When reconciling the transaction,
|
||||
select the :guilabel:`Internal Transfers` :doc:`reconciliation model <reconciliation_models>`
|
||||
button. This reconciliation model button writes the transaction off to the :guilabel:`Internal
|
||||
Transfer` account.
|
||||
|
||||
.. tip::
|
||||
Remember to reconcile the transaction for both the outgoing transaction on the journal that sends
|
||||
the payment and the incoming transaction on the journal that receives the payment.
|
||||
|
||||
.. example::
|
||||
Take, for example, a transfer of $1000 from Bank A to Bank B:
|
||||
|
||||
- Bank journal (Bank A)
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Bank A account
|
||||
-
|
||||
- $1,000
|
||||
* - **Internal transfer account**
|
||||
- **$1,000**
|
||||
-
|
||||
|
||||
- Bank journal (Bank B)
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Bank B account
|
||||
- $1,000
|
||||
-
|
||||
* - **Internal transfer account**
|
||||
-
|
||||
- **$1,000**
|
||||
|
||||
.. seealso::
|
||||
:doc:`reconciliation`
|
||||
:doc:`reconciliation_models`
|
||||
@@ -15,7 +15,7 @@ for use at a later date:
|
||||
reduce/settle unpaid invoices/bills.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Internal transfers <payments/internal_transfers>`
|
||||
- :doc:`Internal transfers <bank/internal_transfers>`
|
||||
- :doc:`bank/reconciliation`
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-6832>`_
|
||||
@@ -27,10 +27,10 @@ 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.
|
||||
reflected in an :ref:`outstanding <accounting/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.
|
||||
|
||||
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
|
||||
@@ -51,8 +51,8 @@ information about the payment. To access additional information, such as the rel
|
||||
|
||||
.. 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`.
|
||||
<accounting/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`.
|
||||
|
||||
.. _accounting/payments/not-tied:
|
||||
|
||||
@@ -184,7 +184,6 @@ finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
|
||||
payments/batch
|
||||
payments/batch_sdd
|
||||
payments/follow_up
|
||||
payments/internal_transfers
|
||||
payments/pay_sepa
|
||||
payments/pay_checks
|
||||
payments/forecast
|
||||
|
||||
@@ -17,7 +17,7 @@ into account checks yet to be cashed.
|
||||
statement.
|
||||
|
||||
.. seealso::
|
||||
* :ref:`Outstanding accounts <bank/outstanding-accounts>`
|
||||
* :ref:`Outstanding accounts <accounting/bank/outstanding-accounts>`
|
||||
* :ref:`Bank reconciliation <accounting/reconciliation>`
|
||||
|
||||
.. _checks/outstanding-account:
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
==================
|
||||
Internal transfers
|
||||
==================
|
||||
|
||||
Internal money transfers can be handled in Odoo. At least two bank accounts are needed to make
|
||||
internal transfers.
|
||||
|
||||
.. seealso::
|
||||
:doc:`How to add an additional bank account <../bank>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
An internal transfer account is automatically created on your database based on your company's
|
||||
localization and depending on your country’s legislation. To modify the default :guilabel:`Internal
|
||||
transfer account`, go to :menuselection:`Accounting --> Configuration --> Settings` and scroll down
|
||||
to the :guilabel:`Default Accounts` section.
|
||||
|
||||
Register an internal transfer from one bank to another
|
||||
======================================================
|
||||
|
||||
If you want to transfer money from one bank to another, access the Accounting Dashboard, click the
|
||||
drop-down selection button (:guilabel:`⋮`) on the bank from which you want to make the transfer,
|
||||
then click :guilabel:`Payments`. Select or create a payment, tick the :guilabel:`Internal Transfer`
|
||||
checkbox, and select a :guilabel:`Destination Journal` before you :guilabel:`Confirm` the internal
|
||||
transfer.
|
||||
|
||||
The money is now booked in the transfer account and another payment is automatically created in the
|
||||
destination journal.
|
||||
|
||||
.. example::
|
||||
|
||||
- Bank journal (Bank A)
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Outstanding Payments account
|
||||
-
|
||||
- $1,000
|
||||
* - **Internal transfer account**
|
||||
- **$1,000**
|
||||
-
|
||||
|
||||
- Bank journal (Bank B)
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Outstanding Receipts account
|
||||
- $1,000
|
||||
-
|
||||
* - **Internal transfer account**
|
||||
-
|
||||
- **$1,000**
|
||||
|
||||
There is **one outstanding payment** and **one outstanding receipt** pending in your two bank
|
||||
account journals because the bank statement confirming the sending and receiving of the money
|
||||
has not been booked yet.
|
||||
|
||||
Once this is done, you can book and reconcile your bank statement lines as usual.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../bank/reconciliation`
|
||||
@@ -35,9 +35,6 @@ To do so, go to :menuselection:`Accounting --> Configuration --> Settings`. Unde
|
||||
- :guilabel:`Reminder`: define when Odoo should remind you to submit your tax return;
|
||||
- :guilabel:`Journal`: select the journal in which to record the tax return.
|
||||
|
||||
.. image:: tax_returns/tax_return_periodicity.png
|
||||
:align: center
|
||||
:alt: Configure how often tax returns have to be made in Odoo Accounting
|
||||
|
||||
.. note::
|
||||
This is usually configured during the :doc:`app's initial set up <../get_started>`.
|
||||
@@ -53,16 +50,11 @@ You can see the :guilabel:`Tax Grids` by opening the :guilabel:`Journal Items` t
|
||||
invoice and bill.
|
||||
|
||||
.. image:: tax_returns/tax_return_grids.png
|
||||
:align: center
|
||||
:alt: see which tax grids are used to record transactions in Odoo Accounting
|
||||
|
||||
To configure your tax grids, go to :menuselection:`Accounting --> Configuration --> Taxes`,
|
||||
and open the tax you want to modify. There, you can edit your tax settings, along with the tax
|
||||
grids that are used to record invoices or credit notes.
|
||||
|
||||
.. image:: tax_returns/tax_return_taxes.png
|
||||
:align: center
|
||||
:alt: Configure taxes and their tax grids in Odoo Accounting
|
||||
grids that are used to record invoices or refunds.
|
||||
|
||||
.. note::
|
||||
Taxes and reports are usually already pre-configured in Odoo: a :ref:`fiscal localization package
|
||||
@@ -76,40 +68,41 @@ Close a tax period
|
||||
|
||||
.. _tax-returns/lock-date:
|
||||
|
||||
Tax Lock Date
|
||||
Tax lock date
|
||||
-------------
|
||||
|
||||
Any new transaction whose accounting date prior to the :guilabel:`Tax Lock Date` has its tax values
|
||||
moved to the next open tax period. This is useful to make sure that no change can be made to a
|
||||
report once its period is closed.
|
||||
Any new transaction whose accounting date prior to the :guilabel:`Lock Tax Return` date has its tax
|
||||
values moved to the next open tax period. This is useful to make sure that no change can be made to
|
||||
a report once its period is closed.
|
||||
|
||||
Therefore, we recommend locking your tax date before working on your
|
||||
:guilabel:`Closing Journal Entry`.
|
||||
This way, other users cannot modify or add transactions that would have an impact on the
|
||||
:guilabel:`Closing Journal Entry`, which can help you avoid some tax declaration errors.
|
||||
|
||||
To check the current :guilabel:`Tax Lock Date`, or to edit it, go to
|
||||
:menuselection:`Accounting --> Accounting --> Actions: Lock Dates`.
|
||||
|
||||
.. image:: tax_returns/tax_return_lock.png
|
||||
:align: center
|
||||
:alt: Lock your tax for a specific period in Odoo Accounting
|
||||
To check the current :guilabel:`Lock Tax Return` date, or to edit it, go to
|
||||
:menuselection:`Accounting --> Accounting --> Lock Dates`.
|
||||
|
||||
.. _tax-returns/report:
|
||||
|
||||
Tax Report
|
||||
Tax return
|
||||
----------
|
||||
|
||||
Once all the transactions involving taxes have been posted for the period you want to report, open
|
||||
your :guilabel:`Tax Report` by going to :menuselection:`Accounting --> Reporting -->
|
||||
Audit Reports: Tax Report`. Make sure to select the right period you want to declare by using the
|
||||
date filter, this way you can have an overview of your tax report. From this view, you can easily
|
||||
access different formats of your tax report, such as `PDF` and XLSX. These include all the values to
|
||||
report to the tax authorities, along with the amount you have to pay or be refunded.
|
||||
the :guilabel:`Tax Return` report by going to :menuselection:`Accounting --> Reporting --> Tax
|
||||
Return`. Select the period you want to declare using the date filter to have an overview of the tax
|
||||
return. Then, click :guilabel:`Closing Entry` to create a tax closing journal entry. Odoo
|
||||
automatically proposes the details of the journal entry. Make any necessary changes and click
|
||||
:guilabel:`Post`.
|
||||
|
||||
.. image:: tax_returns/tax_return_report.png
|
||||
:align: center
|
||||
:alt: download the PDF with your Tax Report in Odoo Accounting
|
||||
From the report, click :guilabel:`PDF` to download a PDF of the tax return. Alternatively, click the
|
||||
:icon:`fa-cog` (:guilabel:`gear`) icon, then click :guilabel:`Download Excel` to download an XLSX of
|
||||
the tax return. To save the report to the Documents app, click the :icon:`fa-cog` (:guilabel:`gear`)
|
||||
icon, then click :guilabel:`Copy to Documents`. Select the format to :guilabel:`Export to`, the
|
||||
:guilabel:`Documents Name`, the :guilabel:`Folder` to store it in, and add any :guilabel:`Tags`.
|
||||
|
||||
The report includes all the values to report to the tax authorities, along with the amount to be
|
||||
paid or refunded.
|
||||
|
||||
.. note::
|
||||
If you forgot to lock your tax date before clicking on :guilabel:`Closing Journal Entry`, then
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@@ -43,7 +43,7 @@ Before closing a fiscal year, ensure first everything is accurate and up-to-date
|
||||
- Validate all :doc:`expenses <../../expenses>`, ensuring their accuracy.
|
||||
- Corroborate that all :doc:`received payments <../payments>` have been encoded and recorded
|
||||
accurately.
|
||||
- Close all :ref:`suspense accounts <bank_accounts/suspense>`.
|
||||
- Close all :ref:`suspense accounts <accounting/bank/suspense>`.
|
||||
- Book all :doc:`depreciation <../vendor_bills/assets>` and :doc:`deferred revenue
|
||||
<../customer_invoices/deferred_revenues>` entries.
|
||||
|
||||
|
||||
@@ -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>`_
|
||||
|
||||
@@ -187,17 +187,17 @@ Fiscal localization modules are available for the countries listed below.
|
||||
fiscal_localizations/mexico
|
||||
fiscal_localizations/netherlands
|
||||
fiscal_localizations/new_zealand
|
||||
fiscal_localizations/romania
|
||||
fiscal_localizations/peru
|
||||
fiscal_localizations/philippines
|
||||
fiscal_localizations/romania
|
||||
fiscal_localizations/saudi_arabia
|
||||
fiscal_localizations/singapore
|
||||
fiscal_localizations/spain
|
||||
fiscal_localizations/switzerland
|
||||
fiscal_localizations/thailand
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
fiscal_localizations/united_states
|
||||
fiscal_localizations/uruguay
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/employment_hero
|
||||
|
||||
@@ -24,6 +24,10 @@ localization.
|
||||
- `l10n_at_saft`
|
||||
- Adds the SAF-T export.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in Austria
|
||||
<../accounting/customer_invoices/electronic_invoicing/austria>`
|
||||
|
||||
Financial reports
|
||||
=================
|
||||
|
||||
|
||||
@@ -11,6 +11,10 @@ Install the :guilabel:`🇧🇪 Belgium` :ref:`fiscal localization package
|
||||
<fiscal_localizations/packages>` to get all the default accounting features of the Belgian
|
||||
localization, following the :abbr:`IFRS(International Financial Reporting Standards)` rules.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in Belgium
|
||||
<../accounting/customer_invoices/electronic_invoicing/belgium>`
|
||||
|
||||
.. _belgium/coa:
|
||||
|
||||
Chart of accounts
|
||||
|
||||
@@ -205,11 +205,11 @@ An Odoo local server works as a bridge between your computer and your Odoo datab
|
||||
Download the Odoo Community installer from the page https://www.odoo.com/page/download and start the
|
||||
installation on your computer.
|
||||
|
||||
Select :guilabel:`Local Proxy Mode` as the type of install.
|
||||
Select :guilabel:`Odoo IoT` as the type of install.
|
||||
|
||||
.. image:: egypt/install-odoo-local-proxy.png
|
||||
:align: center
|
||||
:alt: Selection of "Local Proxy Mode" during the installation of Odoo Community.
|
||||
:alt: Selection of "Odoo IoT" during the installation of Odoo Community.
|
||||
|
||||
.. note::
|
||||
This installation of Odoo only works as a server and does not install any Odoo apps on your
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
@@ -2,6 +2,10 @@
|
||||
France
|
||||
======
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in France
|
||||
<../accounting/customer_invoices/electronic_invoicing/france>`
|
||||
|
||||
.. _localization/france/fec:
|
||||
|
||||
FEC - Fichier des Écritures Comptables
|
||||
|
||||
@@ -2,222 +2,154 @@
|
||||
Germany
|
||||
=======
|
||||
|
||||
German Chart of Accounts
|
||||
========================
|
||||
Accounting
|
||||
==========
|
||||
|
||||
The chart of accounts SKR03 and SKR04 are both supported in Odoo. You can choose the
|
||||
one you want by going in :menuselection:`Accounting --> Configuration` then choose the
|
||||
package you want in the Fiscal Localization section.
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing's legality and compliance in Germany
|
||||
<../accounting/customer_invoices/electronic_invoicing/germany>`
|
||||
|
||||
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
|
||||
Chart of accounts
|
||||
-----------------
|
||||
|
||||
.. tip::
|
||||
Both SKR03 and SKR04 charts of accounts are supported in Odoo. When you create a new Odoo Online
|
||||
database, SKR03 is installed by default.
|
||||
|
||||
When you create a new Odoo Online database, the SKR03 is installed by default.
|
||||
Verify which is installed by going to :menuselection:`Accounting --> Configuration --> Settings`
|
||||
and checking the :guilabel:`Package` field under the :guilabel:`Fiscal Localization` section.
|
||||
|
||||
German Accounting Reports
|
||||
=========================
|
||||
.. warning::
|
||||
Selecting another package is only possible if you have not created an accounting entry. If one
|
||||
was posted, a new company or database must be set up to select another package. In
|
||||
addition, all journal entries will need to be created again.
|
||||
|
||||
Here is the list of German-specific reports available on Odoo Enterprise:
|
||||
Reports
|
||||
-------
|
||||
|
||||
The following German-specific reports available on Odoo Enterprise:
|
||||
|
||||
- Balance Sheet
|
||||
- Profit & Loss
|
||||
- Tax Report (Umsatzsteuervoranmeldung)
|
||||
- Partner VAT Intra
|
||||
- EC Sales List
|
||||
- Intrastat
|
||||
|
||||
Export from Odoo to Datev
|
||||
=========================
|
||||
Exporting entries from Odoo to DATEV
|
||||
------------------------------------
|
||||
|
||||
It is possible to export your accounting entries from Odoo to Datev. To be able to use this
|
||||
feature, the german accounting localization needs to be installed on your Odoo Enterprise database.
|
||||
Then you can go in :menuselection:`Accounting --> Reporting --> General Ledger` then click on the
|
||||
**Export Datev (csv)** button.
|
||||
Provided that one of the German :ref:`fiscal localization packages
|
||||
<fiscal_localizations/accounting>` is installed, you can export your accounting entries from Odoo to
|
||||
DATEV from the general ledger.
|
||||
|
||||
.. _germany/pos:
|
||||
|
||||
Point of Sale in Germany: Technical Security System
|
||||
===================================================
|
||||
|
||||
The **Kassensicherungsverordnung** (The Act on Protection against Manipulation of Digital Records)
|
||||
requires that electronic record-keeping systems - including the :doc:`point of sale
|
||||
</applications/sales/point_of_sale>` systems - must be equipped with a **Technical Security System**
|
||||
(also called **TSS** or **TSE**).
|
||||
|
||||
Odoo offers a service that is compliant with the help of `fiskaly <https://fiskaly.com>`_, a
|
||||
*cloud-based solution*.
|
||||
|
||||
.. important::
|
||||
Since this solution is cloud-based, a working internet connection is required.
|
||||
Two types of exports are needed: first the DATEV ATCH export, then the DATEV DATA export.
|
||||
|
||||
.. note::
|
||||
The only VAT rates allowed are given by fiskaly. You can check these rates by consulting:
|
||||
`fiskaly DSFinV-K API: VAT Definition
|
||||
<https://developer.fiskaly.com/api/dsfinvk/v0/#tag/VAT-Definition>`_.
|
||||
Both are needed at different stages to transfer the data correctly to DATEV, as DATEV works with
|
||||
two interfaces, one for clients (DUO - DATEV Unternehmen Online) and one for tax advisors (DATEV
|
||||
Rechnungswesen).
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
1. DATEV ATCH
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Modules installation
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
Go to :menuselection:`Accounting --> Reporting --> General Ledger`, click the :icon:`fa-cog`
|
||||
(:guilabel:`Actions`) button, and select :guilabel:`Datev ATCH (zip)`.
|
||||
|
||||
#. If your database was created before June 2021, :ref:`upgrade <general/upgrade>` your **Point of
|
||||
Sale** app (`point_of_sale`) and the **Restaurant** module (`pos_restaurant`).
|
||||
#. :ref:`Install <general/install>` the **Germany - Certification for Point of Sale**
|
||||
(`l10n_de_pos_cert`) and **Germany - Certification for Point of Sale of type restaurant**
|
||||
(`l10n_de_pos_res_cert`) modules.
|
||||
.. image:: germany/datev-export.png
|
||||
:alt: General ledger's actions menu with DATEV exports
|
||||
|
||||
.. tip::
|
||||
If these modules are not listed, :ref:`update the app list <general/install>`.
|
||||
Upload the downloaded ZIP file via the `DATEV Belegtransfer software <https://www.datev.de/web/de/service-und-support/software-bereitstellung/download-bereich/betriebliches-rechnungswesen/belegtransfer>`_.
|
||||
|
||||
.. image:: germany/pos-upgrade.png
|
||||
:align: center
|
||||
:alt: Upgrading Odoo Point of Sale from the Apps dashboard
|
||||
If you do not have the DATEV Belegtransfer software installed on your computer, ask your tax advisor
|
||||
to help you with this.
|
||||
|
||||
Register your company at the financial authority
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.. warning::
|
||||
The DATEV ATCH ZIP file includes the files (reports) linked to an Odoo invoice or bill. For
|
||||
customer invoices, the file must have been generated by using the :guilabel:`Send` button. For
|
||||
vendor bills, the file must have been received via an email alias or uploaded by using the
|
||||
:guilabel:`Upload` button.
|
||||
|
||||
To register your company, go to :menuselection:`Settings --> General Settings --> Companies -->
|
||||
Update Info`, fill out the following fields and *Save*.
|
||||
.. admonition:: DATEV ATCH ZIP file
|
||||
|
||||
- **Company name**
|
||||
- Valid **address**
|
||||
- **VAT** number
|
||||
- **St.-Nr** (Steuernummer): this number is assigned by the tax office to every taxable natural or
|
||||
legal person. (e.g., `2893081508152`)
|
||||
- **W-IdNr** (Wirtschafts-Identifikationsnummer): this number is used as a permanent
|
||||
identification number for economically active persons.
|
||||
The ZIP file contains two types of files:
|
||||
|
||||
You can then **register your company through fiskaly** by opening the *fiskaly* tab and clicking on
|
||||
the *fiskaly Registration* button.
|
||||
- the individual invoice/bill files (PDF, JPEG, etc.) for the selected period on the general
|
||||
ledger, and
|
||||
- a :file:`document.xml` file used to generate a unique ID (GUID) for each file.
|
||||
|
||||
.. image:: germany/fiskaly-registration.png
|
||||
:align: center
|
||||
:alt: Button to register a company through fiskaly in Odoo
|
||||
These unique IDs are essential as they allow DATEV to automatically link the files to the
|
||||
individual journal items, which will be imported with the DATEV DATA file in the next step.
|
||||
|
||||
.. tip::
|
||||
If you do not see the *fiskaly Registration* button, make sure that you *saved* your company
|
||||
details and are not in *editing mode* anymore.
|
||||
2. DATEV DATA
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Once the registration has been finalized, new fields appear:
|
||||
Go to :menuselection:`Accounting --> Reporting --> General Ledger`, click the :icon:`fa-cog`
|
||||
(:guilabel:`Actions`) button, and select :guilabel:`Datev DATA (zip)`.
|
||||
|
||||
- **fiskaly organization ID** refers to the ID of your company at the fiskaly side.
|
||||
- **fiskaly API key** and **secret** are the credentials the system uses to access the services
|
||||
offered by fiskaly.
|
||||
Transfer the downloaded ZIP file to your tax advisor. They should import the ZIP file into DATEV
|
||||
Rechnungswesen.
|
||||
|
||||
.. image:: germany/fiskaly-keys.png
|
||||
:align: center
|
||||
:alt: fiskaly keys as displayed on Odoo
|
||||
Check with your tax advisor how often they need these files.
|
||||
|
||||
.. note::
|
||||
It is possible to request new credentials if there is any issue with the current ones.
|
||||
.. admonition:: DATEV ATCH ZIP file
|
||||
|
||||
Create and link a Technical Security System to your PoS
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The ZIP file contains three CSV files:
|
||||
|
||||
.. image:: germany/create-tss.png
|
||||
:align: right
|
||||
:alt: Create TSS option from a point of sale
|
||||
|
||||
To use your point of sale in Germany, you first have to create a :abbr:`TSS (Technical Security
|
||||
System)` for it.
|
||||
|
||||
To do so, go to :menuselection:`Point of Sale --> Configuration --> Point of Sale`, open the point
|
||||
of sale you want to edit, then check the box next to **Create TSS** and *Save*.
|
||||
|
||||
.. image:: germany/tss-ids.png
|
||||
:align: right
|
||||
:alt: Example of TSS ID and Client ID from fiskaly in Odoo Point of Sale
|
||||
|
||||
Once the creation of the TSS is successful, you can find your **TSS ID** and **Client ID** under the
|
||||
*fiskaly API* section.
|
||||
|
||||
- **TSS ID** refers to the ID of your TSS at fiskaly's side.
|
||||
- **Client ID** refers to your PoS but at fiskaly's side.
|
||||
|
||||
DSFinV-K
|
||||
--------
|
||||
|
||||
.. image:: germany/dsfinv-k-export.png
|
||||
:align: right
|
||||
:alt: Menu to export DSFinV-K
|
||||
|
||||
Whenever you close a PoS session, the orders' details are sent to the :abbr:`DSFinV-K (Digitale
|
||||
Schnittstelle der Finanzverwaltung für Kassensysteme)` service of fiskaly.
|
||||
|
||||
In case of an audit, you can export the data sent to DSFinV-K by going to :menuselection:`Point of
|
||||
Sale --> Orders --> DSFinV-k exports`.
|
||||
|
||||
These fields are mandatory:
|
||||
|
||||
- **Name**
|
||||
- **Start Datetime** (export data with dates larger than or equal to the given start date)
|
||||
- **End Datetime** (export data with dates smaller than or equal to the given end date)
|
||||
|
||||
Leave the **Point of Sale** field blank if you want to export the data of all your points of sale.
|
||||
Specify a Point of Sale if you want to export this specific PoS' data only.
|
||||
|
||||
The creation of a DSFinV-K export triggers on export at fiskaly's side.
|
||||
|
||||
.. image:: germany/dsfinv-k-export-fields.png
|
||||
:align: center
|
||||
:alt: Pending DSFinV-K export on Odoo
|
||||
|
||||
As you can see, the **State** is *Pending*. This means that the export has been successfully
|
||||
triggered and is being processed. You have to click on *Refresh State* to check if it is ready.
|
||||
- the :file:`EXTF_customer_accounts.csv` file containing all information related to your
|
||||
customers,
|
||||
- the :file:`EXTF_vendor_accounts.csv` file containing all information related to your vendors,
|
||||
and
|
||||
- the :file:`EXTF_accounting_entries.csv` containing all journal items for the period defined on
|
||||
the general ledger, as well as the unique IDs (GUID) so that the journal items can be linked to
|
||||
the files inside the DATEV ATCH ZIP file.
|
||||
|
||||
.. _germany/gobd:
|
||||
|
||||
German Tax Accounting Standards: Odoo's guide to GoBD Compliance
|
||||
================================================================
|
||||
GoBD compliance
|
||||
---------------
|
||||
|
||||
**GoBD** stands for *Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
|
||||
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*.
|
||||
In short, it is a **guideline for the proper management and storage of books, records, and documents
|
||||
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
|
||||
declaration, and balance sheet.
|
||||
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*. In short, it is a
|
||||
guideline for the proper management and storage of books, records, and documents in electronic form,
|
||||
as well as for data access, that is relevant for the German tax authority, tax declaration, and
|
||||
balance sheet.
|
||||
|
||||
These principles have been written and published by the Federal Ministry of Finance (BMF) in
|
||||
November 2014. Since January 2015, **they have become the norm** and replace previously accepted
|
||||
practices linked to computer-based accounting. Several changes have been made by the BMF in 2019 and
|
||||
January 2020 to specify some of the content and due to the development of digital solutions (cloud
|
||||
hosting, paperless companies, etc.).
|
||||
November 2014. Since January 2015, **they have become the norm** and have replaced previously
|
||||
accepted practices linked to computer-based accounting. Several changes have been made by the BMF in
|
||||
2019 and January 2020 to specify some of the content due to the development of digital solutions
|
||||
(cloud hosting, paperless companies, etc.).
|
||||
|
||||
.. important::
|
||||
Odoo gives you **the means to be compliant with GoBD**.
|
||||
Odoo is certified **GoBD-compliant**.
|
||||
|
||||
What do you need to know about GoBD when relying on accounting software?
|
||||
------------------------------------------------------------------------
|
||||
Understanding GoBD in relation to accounting software
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
If you can, the best way to understand GoBD is to Read the `Official GoBD text
|
||||
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
|
||||
It is a bit long but quite readable for non-experts. But in short, here is what to expect:
|
||||
|
||||
The **GoBD is binding for companies that have to present accounts, which includes SMEs, freelancers,
|
||||
and entrepreneurs, to the financial authorities**. As such, **the taxpayer himself is the sole
|
||||
responsible** for the complete and exhaustive keeping of fiscal-relevant data (above-mentioned
|
||||
The **GoBD is binding for companies that have to present accounts**, which includes SMEs,
|
||||
freelancers, and entrepreneurs, to the financial authorities. As such, **the taxpayer himself is the
|
||||
sole responsible** for the complete and exhaustive keeping of fiscal-relevant data (above-mentioned
|
||||
financial and related data).
|
||||
|
||||
Apart from software requirements, the user is required to ensure Internal control systems (*in
|
||||
Apart from software requirements, the user is required to ensure internal control systems (*in
|
||||
accordance with sec. 146 of the Fiscal Code*):
|
||||
|
||||
- Access rights control;
|
||||
- Segregation of Duties, Functional separating;
|
||||
- Entry controls (error notifications, plausibility checks);
|
||||
- Reconciliation checks at data entry;
|
||||
- Processing controls;
|
||||
- Measures to prevent intentional or unintentional manipulation of software, data, or documents.
|
||||
- access rights control;
|
||||
- segregation of duties, functional separating;
|
||||
- entry controls (error notifications, plausibility checks);
|
||||
- reconciliation checks at data entry;
|
||||
- processing controls; and
|
||||
- measures to prevent intentional or unintentional manipulation of software, data, or documents.
|
||||
|
||||
The user must distribute tasks within its organization to the relevant positions (*control*) and
|
||||
The user must distribute tasks within their organization to the relevant positions (*control*) and
|
||||
verify that the tasks are properly and completely performed (*supervision*). The result of these
|
||||
controls must be recorded (*documentation*), and should errors be found during these controls,
|
||||
appropriate measures to correct the situation should be put into place (*prevention*).
|
||||
|
||||
What about data security?
|
||||
-------------------------
|
||||
Data security
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
**The taxpayer must secure the system against any data loss due to deletion, removal, or theft of
|
||||
any data**. If the entries are not sufficiently secured, the bookkeeping will be regarded as not in
|
||||
The taxpayer must **secure the system against any data loss** due to deletion, removal, or theft of
|
||||
any data. If the entries are not sufficiently secured, the bookkeeping will be regarded as not in
|
||||
accordance with the GoBD guidelines.
|
||||
|
||||
Once bookings have been finally posted, they can no longer be changed or deleted via the
|
||||
@@ -229,104 +161,183 @@ application.
|
||||
.. seealso::
|
||||
`Odoo Cloud Hosting - Service Level Agreement <https://www.odooo.com/cloud-sla>`_
|
||||
|
||||
- If the server is operated locally, it is the responsibility of the user to create the necessary
|
||||
backup infrastructure.
|
||||
- If the server is operated locally, the user is responsible for creating the necessary backup
|
||||
infrastructure.
|
||||
|
||||
.. important::
|
||||
In some cases, data has to be kept for ten years or more, so always have backups saved. It is
|
||||
even more important if you decide to change software provider.
|
||||
|
||||
Responsibility of the software editor
|
||||
-------------------------------------
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Considering GoBD only applies between the taxpayer and the financial authority, **the software
|
||||
editor can by no means be held responsible for the accurate and compliant documentation of financial
|
||||
transactional data of their users**. It can merely provide the necessary tools for the user to
|
||||
respect the software related guidelines described in the GoBD.
|
||||
Considering GoBD applies only to the taxpayer, **the software editor can by no means be held
|
||||
responsible for the accurate and compliant documentation of their users' financial transactional
|
||||
data**. It can merely provide the necessary tools for the user to respect the software-related
|
||||
guidelines described in the GoBD.
|
||||
|
||||
How can Odoo help you achieve Compliance?
|
||||
-----------------------------------------
|
||||
Ensuring compliance through Odoo
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The key words, when it comes to GoBD, are: **traceable, verifiable, true, clear, and continuous**.
|
||||
In short, you need to have audit-proof archiving in place and Odoo provides you with the means to
|
||||
The keywords, when it comes to GoBD are: **traceable, verifiable, true, clear, and continuous**.
|
||||
In short, you need to have audit-proof archiving in place, and Odoo provides you with the means to
|
||||
achieve all of these objectives:
|
||||
|
||||
#. | **Traceability and verifiability**
|
||||
| Each record in Odoo is stamped with the creator of the document, the creation date, the
|
||||
modification date, and who modified it. In addition, relevant fields are tracked thus it can be
|
||||
seen which value was changed by whom in the chatter of the relevant object.
|
||||
modification date, and who modified it. In addition, relevant fields are tracked. Thus, it can
|
||||
be seen which value was changed by whom in the chatter of the relevant object.
|
||||
#. | **Completeness**
|
||||
| All financial data must be recorded in the system, and there can be no gaps. Odoo ensures that
|
||||
there is no gap in the numbering of the financial transactions. It is the responsibility of the
|
||||
user to encode all financial data in the system. As most financial data in Odoo is generated
|
||||
user to encode all financial data in the system. As most financial data in Odoo is generated
|
||||
automatically, it remains the responsibility of the user to encode all vendor bills and
|
||||
miscellaneous operations completely.
|
||||
#. | **Accuracy**
|
||||
| Odoo ensures with the correct configuration that the correct accounts are used. In addition,
|
||||
| Odoo ensures that, with the correct configuration, the correct accounts are used. In addition,
|
||||
the control mechanisms between purchase orders and sales orders and their respective invoices
|
||||
reflect the business reality. It is the responsibility of the user to scan and attach the
|
||||
paper-based vendor bill to the respective record in Odoo. *Odoo Document helps you automate
|
||||
this task*.
|
||||
reflect the reality of the business. It is the responsibility of the user to scan and attach
|
||||
the paper-based vendor bill to the respective record in Odoo. *Odoo Documents helps you
|
||||
automate this task*.
|
||||
#. | **Timely booking and record-keeping**
|
||||
| As most financial data in Odoo is generated by the transactional objects (for example, the
|
||||
invoice is booked at confirmation), Odoo ensures out-of-the-box timely record-keeping. It is
|
||||
the responsibility of the user to encode all incoming vendor bills in a timely manner, as well
|
||||
as the miscellaneous operations.
|
||||
#. | **Order**
|
||||
| Financial data stored in Odoo is per definition ordered and can be reordered according to most
|
||||
fields present in the model. A specific ordering is not enforced by the GoBD, but the system
|
||||
must ensure that a given financial transaction can be quickly found by a third-party expert.
|
||||
Odoo ensures this out-of-the-box.
|
||||
| Financial data stored in Odoo is, per definition, ordered and can be reordered according to
|
||||
most fields present in the model. A specific ordering is not enforced by the GoBD, but the
|
||||
system must ensure that a given financial transaction can be quickly found by a third-party
|
||||
expert. Odoo ensures this out-of-the-box.
|
||||
#. | **Inalterability**
|
||||
| With the German Odoo localization, Odoo is in standard configured in such a way that the
|
||||
inalterability clause can be adhered to without any further customization.
|
||||
|
||||
Do you need a GoBD-Export?
|
||||
--------------------------
|
||||
GoBD export
|
||||
~~~~~~~~~~~
|
||||
|
||||
In the case of fiscal control, the fiscal authority can request three levels of access to the
|
||||
accounting system (Z1, Z2, Z3). These levels vary from direct access to the interface to the
|
||||
handover of the financial data on a storage device.
|
||||
|
||||
In case of a handover of the financial data on a storage device, the format is **not** enforced by
|
||||
the GoBD. It can be, for example, in XLS, CSV, XML, Lotus 123, SAP-format, AS/400-format, or else.
|
||||
Odoo supports the CSV and XLS-export of financial data out-of-the-box. The GoBD **recommends** the
|
||||
export in a specific XML-based GoBD-format (see "Ergänzende Informationen zur
|
||||
Datenntträgerüberlassung" §3) but it is not binding.
|
||||
In the case of a handover of financial data to a storage device, the GoBD does **not** enforce the
|
||||
format. It can be, for example, in XLS, CSV, XML, Lotus 123, SAP-format, AS/400-format, or else.
|
||||
Odoo supports the CSV and XLS export of financial data out of the box. The GoBD **recommends** the
|
||||
export in a specific XML-based GoBD format (see "Ergänzende Informationen zur
|
||||
Datenträgerüberlassung" §3), but it is not binding.
|
||||
|
||||
What is the role and meaning of the compliance certification?
|
||||
-------------------------------------------------------------
|
||||
Non-compliance
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The GoBD clearly states that due to the nature of a state of the art accounting software, their
|
||||
configuration possibilities, changing nature, and various forms of use, **no legally binding
|
||||
certification can be given**, nor can the software be made liable towards a public authority.
|
||||
Third-party certificates can indeed have **an informative value** for customers to make software
|
||||
buying decisions but are by no means legally binding or of any other legal value (A. 12, § 181).
|
||||
In the event of an infringement, you can expect a fine and a court order demanding the
|
||||
implementation of specific measures.
|
||||
|
||||
A GoBD certificate states nothing more than that if you use the software according to its
|
||||
guidelines, the software will not refrain you from respecting the GoBD. These certifications are
|
||||
very expensive in terms of time and cost, and their value is very relative. Thus we focus our
|
||||
efforts on ensuring GoBD compliance rather than pay for a marketing tool which does not, however,
|
||||
offer our customer any legal certainty.
|
||||
.. _germany/pos:
|
||||
|
||||
Point of Sale
|
||||
=============
|
||||
|
||||
Technical security system
|
||||
-------------------------
|
||||
|
||||
The **Kassensicherungsverordnung** (The Act on Protection against Manipulation of Digital Records)
|
||||
requires that electronic record-keeping systems - including the :doc:`point of sale
|
||||
</applications/sales/point_of_sale>` systems - must be equipped with a **technical security system**
|
||||
(also called **TSS** or **TSE**).
|
||||
|
||||
Odoo offers a service that is compliant with the help of `fiskaly <https://fiskaly.com>`_, a
|
||||
*cloud-based solution*.
|
||||
|
||||
.. important::
|
||||
The BMF actually states the following in the `Official GoBD text
|
||||
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_:
|
||||
Since this solution is cloud-based, a working internet connection is required.
|
||||
|
||||
- 180. Positive attestations on the correctness of the bookkeeping - and thus on the correctness
|
||||
of IT-based bookkeeping systems - are not issued either in the context of a tax field audit or
|
||||
in the context of binding information.
|
||||
- 181. "Certificates" or "attestations" from third parties can serve as a decision criterion for
|
||||
the company when selecting a software product, but develop from the in margin no. 179 is not
|
||||
binding on the tax authorities.
|
||||
.. note::
|
||||
The only VAT rates allowed are given by fiskaly. You can check these rates by consulting
|
||||
`fiskaly DSFinV-K API: VAT Definition
|
||||
<https://developer.fiskaly.com/api/dsfinvk/v0/#tag/VAT-Definition>`_.
|
||||
|
||||
.. note::
|
||||
The previous content was `automatically translated from German with Google Translate
|
||||
<https://translate.google.com/?sl=de&tl=en&text=180.%0APositivtestate%20zur%20Ordnungsm%C3%A4%C3%9Figkeit%20der%20Buchf%C3%BChrung%20-%20und%20damit%20zur%20Ordnungsm%C3%A4%C3%9Figkeit%20DV-gest%C3%BCtzter%20Buchf%C3%BChrungssysteme%20-%20werden%20weder%20im%20Rahmen%20einer%20steuerlichen%20Au%C3%9Fenpr%C3%BCfung%20noch%20im%20Rahmen%20einer%20verbindlichen%20Auskunft%20erteilt.%0A%0A181.%0A%E2%80%9EZertifikate%E2%80%9C%20oder%20%E2%80%9ETestate%E2%80%9C%20Dritter%20k%C3%B6nnen%20bei%20der%20Auswahl%20eines%20Softwareproduktes%20dem%20Unternehmen%20als%20Entscheidungskriterium%20dienen%2C%20entfalten%20jedoch%20aus%20den%20in%20Rz.%20179%20genannten%20Gr%C3%BCnden%20gegen%C3%BCber%20der%20Finanzbeh%C3%B6rde%20keine%20Bindungswirkung.%20&op=translate>`_.
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
:ref:`Install <general/install>` the **Germany - Certification for Point of Sale**
|
||||
(`l10n_de_pos_cert`) and **Germany - Certification for Point of Sale of type restaurant**
|
||||
(`l10n_de_pos_res_cert`) modules.
|
||||
|
||||
What happens if you are not compliant?
|
||||
--------------------------------------
|
||||
.. tip::
|
||||
If these modules are not listed, :ref:`update the app list <general/install>`.
|
||||
|
||||
In the event of an infringement, you can expect a fine but also a court order demanding the
|
||||
implementation of specific measures.
|
||||
Company registration at the financial authority
|
||||
***********************************************
|
||||
|
||||
To register your company, open the :guilabel:`Settings` app, click :guilabel:`Update Info` under the
|
||||
:guilabel:`Companies` section, and fill in the following fields:
|
||||
|
||||
- :guilabel:`Company Name`
|
||||
- :guilabel:`Address`
|
||||
- :guilabel:`VAT`
|
||||
- :guilabel:`St.-Nr.` (Steuernummer) this number is assigned by the tax office to every taxable
|
||||
natural or legal person (e.g., `2893081508152`).
|
||||
- :guilabel:`W-IdNr.` (Wirtschafts-Identifikationsnummer) this number is used as a permanent
|
||||
identification number for economically active persons.
|
||||
|
||||
You can then **register your company through fiskaly** by opening the :guilabel:`Fiskaly` tab and
|
||||
clicking the :guilabel:`Fiskaly Registration` button.
|
||||
|
||||
.. tip::
|
||||
If you do not see the :guilabel:`Fiskaly Registration` button, make sure that you *saved* your
|
||||
company details and are not in *editing mode* anymore.
|
||||
|
||||
Once the registration has been finalized, new fields appear:
|
||||
|
||||
- :guilabel:`Fiskaly Organization ID` refers to the ID of your company on fiskaly's side.
|
||||
- :guilabel:`Fiskaly API Key` and :guilabel:`Fiskaly API Secret` are the credentials the system
|
||||
uses to access the services offered by fiskaly.
|
||||
|
||||
.. image:: germany/fiskaly-registration.png
|
||||
:alt: Fiskaly registration tab
|
||||
|
||||
.. note::
|
||||
It is possible to request new credentials if there is any issue with the current ones by clicking
|
||||
the :guilabel:`New keys` button.
|
||||
|
||||
Create a technical security system and link it to a POS
|
||||
*******************************************************
|
||||
|
||||
To use a point of sale in Germany, first create a :abbr:`TSS (Technical Security System)` by going
|
||||
to :menuselection:`Point of Sale --> Configuration --> Point of Sale`, selecting the
|
||||
:guilabel:`Point of Sale` to edit, then checking the :guilabel:`Create TSS` box under the
|
||||
:guilabel:`Fiskaly API` section.
|
||||
|
||||
Once the creation of the TSS is successful, you can find the:
|
||||
|
||||
- :guilabel:`TSS ID`, which refers to the ID of your TSS on fiskaly's side, and
|
||||
- :guilabel:`Fiskaly Client ID`, which refers to your POS on fiskaly's side.
|
||||
|
||||
.. image:: germany/fiskaly-tss.png
|
||||
:alt: Fiskaly API section
|
||||
|
||||
DSFinV-K export
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Whenever you close a PoS session, the details of the orders are sent to the :abbr:`DSFinV-K
|
||||
(Digitale Schnittstelle der Finanzverwaltung für Kassensysteme)` service of fiskaly.
|
||||
|
||||
In case of an audit, you can export the data sent to DSFinV-K by going to :menuselection:`Point of
|
||||
Sale --> Orders --> DSFinV-K Exports --> New`.
|
||||
|
||||
.. image:: germany/pos-orders-menu.png
|
||||
:alt: Menu to export DSFinV-K
|
||||
|
||||
These fields are mandatory:
|
||||
|
||||
- :guilabel:`Start Datetime`: export data with dates larger than or equal to the given start date
|
||||
- :guilabel:`End Datetime`: export data with dates smaller than or equal to the given end date
|
||||
|
||||
Leave the :guilabel:`Point of Sale` field blank to export the data of all your points of sale;
|
||||
specify one if you want to export data for this specific POS only.
|
||||
|
||||
.. image:: germany/dsfinv-k-export.png
|
||||
:alt: Exporting DSFinV-K
|
||||
|
||||
When an export is successfully triggered and is being processed, the :guilabel:`State` field should
|
||||
mention :guilabel:`Pending`. Click :guilabel:`Refresh State` to check if it is ready.
|
||||
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@@ -33,6 +33,10 @@ localization:
|
||||
- `l10n_it_stock_ddt`
|
||||
- Transport documents - Documento di Trasporto (DDT)
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in Italy
|
||||
<../accounting/customer_invoices/electronic_invoicing/italy>`
|
||||
|
||||
Company information
|
||||
-------------------
|
||||
|
||||
@@ -651,7 +655,7 @@ as follows:
|
||||
#. Make sure the fiscal printer is set to its default state: printer on, start-up cycle complete,
|
||||
and no transaction in progress.
|
||||
#. Type `3333`.
|
||||
#. Press :guilabel:`Chiave`. The screen displays :guilabel:`Scleta Funzione`.
|
||||
#. Press :guilabel:`Chiave`. The screen displays :guilabel:`Scelta Funzione`.
|
||||
#. Type `14`. The screen displays :guilabel:`Apprendimento`.
|
||||
#. Type `62`. The screen displays :guilabel:`Simulazione`.
|
||||
#. To turn the :guilabel:`no` into a :guilabel:`si`, press :guilabel:`X`.
|
||||
|
||||
@@ -32,6 +32,10 @@ localization:
|
||||
Installing the module :guilabel:`Luxembourg - Accounting Reports` installs all three modules at
|
||||
once.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in Luxembourg
|
||||
<../accounting/customer_invoices/electronic_invoicing/luxembourg>`
|
||||
|
||||
Standard Chart of Accounts - PCN 2020
|
||||
=====================================
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
Netherlands
|
||||
===========
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in the Netherlands
|
||||
<../accounting/customer_invoices/electronic_invoicing/netherlands>`
|
||||
|
||||
XAF Export
|
||||
==========
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ Peru
|
||||
.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)`
|
||||
.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)`
|
||||
.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)`
|
||||
.. |PLE| replace:: :abbr:`PLE (Programa de Libros Electrónico)`
|
||||
|
||||
Modules
|
||||
=======
|
||||
@@ -57,6 +58,10 @@ Peruvian localization.
|
||||
- Adds the delivery guide (Guía de Remisión), which is needed as proof that you are sending
|
||||
goods between A and B. It is only when a delivery order is validated that the delivery guide
|
||||
can be created.
|
||||
* - :guilabel:`Peru - Stock Reports`
|
||||
- `l10n_pe_reports_stock`
|
||||
- Enables the :ref:`PLE reports <peru/reports-ple>` for permanent inventory record in physical
|
||||
units and permanent valued inventory records.
|
||||
* - :guilabel:`Peruvian eCommerce`
|
||||
- `l10n_pe_website_sale`
|
||||
- Enables the identification type in eCommerce checkout forms and the ability to generate
|
||||
@@ -724,14 +729,22 @@ and the :ref:`master data <peru-master_data>`, :ref:`install <general/install>`
|
||||
|
||||
Next, you need to retrieve the *client ID* and *client secret* from |SUNAT|. To do so, follow the
|
||||
`manual de servicios web plataforma nueva GRE
|
||||
<https://cpe.sunat.gob.pe/sites/default/files/inline-files/Manual_Servicios_GRE.pdf>`_.
|
||||
<https://cpe.sunat.gob.pe/sites/default/files/inline-files/Manual_Servicios_GRE%20%281%29.pdf>`_.
|
||||
|
||||
.. note::
|
||||
In the |SUNAT| portal, it is important to have the correct access rights enabled, as they may
|
||||
differ from the user set for electronic invoicing.
|
||||
|
||||
These credentials should be used to configure the delivery guide general settings from
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Peruvian Electronic Invoicing`.
|
||||
:menuselection:`Inventory --> Configuration --> Settings`, and scroll down to the :guilabel:`Peru
|
||||
Delivery Guide` section.
|
||||
|
||||
Configure the following :guilabel:`Sunat Delivery Guide API` fields:
|
||||
|
||||
- :guilabel:`Guide Client ID`: the unique API *client ID* generated in the |SUNAT| portal
|
||||
- :guilabel:`Guide Client Secret`: the unique API *client secret* generated in the |SUNAT| portal
|
||||
- :guilabel:`Guide SOL User`: the RUC Number + SOL username
|
||||
- :guilabel:`Guide SOL Password`: the SOL user password
|
||||
|
||||
.. image:: peru/gre-fields-example.png
|
||||
:alt: Example for the SUNAT Delivery Guide API section configuration.
|
||||
@@ -940,5 +953,100 @@ based on their tax ID (RUC/DNI). The invoice must then :ref:`be sent to the OSE
|
||||
<peru-electronic-invoice-status>`. By default, all published invoices are sent once a day through
|
||||
a scheduled action, but you can also send each invoice manually if needed.
|
||||
|
||||
Once the invoice is validated with |SUNAT|, customers can download the :file:`.zip` with the CDR,
|
||||
XML, and PDF files directly from the customer portal by clicking the :guilabel:`Download` button.
|
||||
Once the invoice is validated with |SUNAT|, customers can download the .zip file with the CDR, XML,
|
||||
and PDF files directly from the customer portal by clicking the :guilabel:`Download` button.
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
.. _peru/reports-ple:
|
||||
|
||||
Permanent inventory reports: |PLE| 12.1 and |PLE| 13.1
|
||||
------------------------------------------------------
|
||||
|
||||
Odoo can produce two permanent inventory reports as `.txt` files for Peruvian accounting: |PLE| 12.1
|
||||
and |PLE| 13.1. All inventory transactions made need to be reported.
|
||||
|
||||
- |PLE| 12.1 **only tracks inventory in physical units**, focusing on the inflow and outflow of
|
||||
goods for effective management and planning.
|
||||
|
||||
- |PLE| 13.1 tracks **both physical quantities and monetary values of inventory**, providing a
|
||||
comprehensive view for tax and management purposes.
|
||||
|
||||
Both reports must be maintained semi-annually (January-June and July-December), with monthly
|
||||
transaction details reported within these periods. The submission deadlines are October 1st for the
|
||||
first semester and April 1st for the second semester, in accordance with the *Resolución de
|
||||
Superintendencia N° 169-2015*.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Before generating the |PLE| 12.1 or |PLE| 13.1 reports, make sure the :guilabel:`Peru - Stock
|
||||
Reports` (`l10n_pe_reports_stock`) module is installed, then update the fields for:
|
||||
|
||||
- :ref:`Products <peru/reports-ple-products>`
|
||||
- :ref:`Warehouses <peru/reports-ple-warehouses>`
|
||||
- :ref:`Inventory transfers <peru/reports-ple-transfers>`
|
||||
|
||||
.. _peru/reports-ple-products:
|
||||
|
||||
Products
|
||||
********
|
||||
|
||||
Several configurations related to the product or product category are necessary for |PLE| reporting:
|
||||
|
||||
- **Type of existence**: For all products needing |PLE| reporting, go to the product record's
|
||||
:guilabel:`Accounting` tab and select the :guilabel:`Type of Existence` according to |SUNAT|'s
|
||||
table 5 for inventory reporting.
|
||||
|
||||
- **Automatic inventory valuation**: For storable goods (:dfn:`products with tracked inventory`),
|
||||
use :doc:`automatic inventory valuation
|
||||
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`.
|
||||
Once automatic inventory valuation is enabled, this valuation method can be enabled for
|
||||
a product's :ref:`product category <inventory/warehouses_storage/valuation-on-product-category>`.
|
||||
|
||||
- **Costing method:** Storable goods must use a :doc:`costing method
|
||||
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`
|
||||
**other** than :guilabel:`Standard Price`, as the journal entries generated from stock moves are
|
||||
used to populate the |PLE| reports.
|
||||
|
||||
.. _peru/reports-ple-warehouses:
|
||||
|
||||
Warehouses
|
||||
**********
|
||||
|
||||
When :doc:`setting up a warehouse
|
||||
<../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses>`, the
|
||||
:guilabel:`Annex Establishment Code` field must be filled. This code acts as a unique ID for each
|
||||
warehouse and should only be a numeric combination, containing between 4 to 7 digits.
|
||||
|
||||
.. _peru/reports-ple-transfers:
|
||||
|
||||
Inventory transfers
|
||||
*******************
|
||||
|
||||
Transferring inventory is a key process captured in the |PLE| 12.1 and |PLE| 13.1 reports.
|
||||
:doc:`Inventory transfers <../../inventory_and_mrp/inventory/shipping_receiving/daily_operations>`
|
||||
include both incoming and outgoing shipments.
|
||||
|
||||
When validating an inventory transfer (either on a warehouse receipt or delivery order), select the
|
||||
:guilabel:`Type of Operation (PE)` performed according to |SUNAT|'s table 12 for permanent inventory
|
||||
reporting.
|
||||
|
||||
Generate a .txt file for permanent inventory Kardex reports
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|PLE| 12.1 and 13.1 come as two separate books. The books need to be downloaded in `.txt` file
|
||||
format from Odoo, and then they should be submitted to the |SUNAT| |PLE| software.
|
||||
|
||||
On the :ref:`Inventory Valuation Report <inventory/management/reporting/valuation-report>`, click
|
||||
the :guilabel:`PLE Reports` button. Then, select the :guilabel:`Period` and choose a report to
|
||||
export: either the :guilabel:`PLE 12.1` or :guilabel:`PLE 13.1`. Odoo generates a `.txt` file
|
||||
for the chosen report.
|
||||
|
||||
.. image:: peru/l10n-ple-export-button.png
|
||||
:alt: Export Buttons selection
|
||||
|
||||
.. note::
|
||||
Only a download of the report in `.txt` format is available. There is no preview or visualization
|
||||
available within Odoo.
|
||||
|
||||
|
After Width: | Height: | Size: 13 KiB |
@@ -24,6 +24,10 @@ localization.
|
||||
.. image:: romania/romania-modules.png
|
||||
:alt: Modules for the Romanian localization
|
||||
|
||||
.. seealso::
|
||||
:doc:`Documentation on e-invoicing’s legality and compliance in Romania
|
||||
<../accounting/customer_invoices/electronic_invoicing/romania>`
|
||||
|
||||
D.406 declaration
|
||||
=================
|
||||
|
||||
|
||||
@@ -20,6 +20,12 @@ select a package in the :guilabel:`Fiscal Localization` section.
|
||||
.. warning::
|
||||
You can only change the accounting package as long as you have not created any accounting entry.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Documentation on e-invoicing’s legality and compliance in Spain
|
||||
<../accounting/customer_invoices/electronic_invoicing/spain>`
|
||||
- :doc:`Documentation on e-invoicing’s legality and compliance in the Basque Country
|
||||
<../accounting/customer_invoices/electronic_invoicing/basque_country>`
|
||||
|
||||
Chart of accounts
|
||||
=================
|
||||
|
||||
@@ -149,11 +155,16 @@ Before configuring the :abbr:`FACe (General Entrance for Electronic Invoices)` s
|
||||
:ref:`install <general/install>` the :guilabel:`Spain - Facturae EDI (l10n_es_edi_facturae)` module
|
||||
and other **Facturae EDI**-related modules.
|
||||
|
||||
To enable FACe, go to :menuselection:`Settings --> General Settings`, click
|
||||
:guilabel:`Update Info` in the :guilabel:`Companies` section, then click :guilabel:`Update Info` and
|
||||
set the :guilabel:`Country` and :guilabel:`Tax ID` of your company. Next, add the
|
||||
:guilabel:`Facturae signature certificate` by clicking :guilabel:`Add a line`, uploading the
|
||||
certificate provided by the tax agency, and entering the provided password.
|
||||
To configure FACe, follow these steps:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Configuration --> Certificates`.
|
||||
#. Click :guilabel:`New` to create a new certificate.
|
||||
#. Complete the fields, including uploading the file of the :guilabel:`Certificate` provided by the
|
||||
tax agency and the provided :guilabel:`Certificate Password`.
|
||||
|
||||
.. note::
|
||||
If using the Invoicing app instead of Accounting, go to :menuselection:`Invoicing -->
|
||||
Configuration --> Certificates`.
|
||||
|
||||
Use case
|
||||
--------
|
||||
|
||||
@@ -105,39 +105,61 @@ search for your company to verify the following:
|
||||
Set up a Uruware account
|
||||
------------------------
|
||||
|
||||
To set up a Uruware account, first be sure to have a valid Odoo subscription. Then follow the
|
||||
proceeding steps.
|
||||
To set up a Uruware account, follow these steps:
|
||||
|
||||
Locate the Uruware credentials settings by navigating to the :menuselection:`Accounting -->
|
||||
Configuration --> Settings`. Scroll down to the :guilabel:`Uruguayan Localization` section and click
|
||||
on :guilabel:`Create Uruware Account`.
|
||||
#. Verify that you have a valid Odoo subscription.
|
||||
#. Locate the Uruware credentials settings by navigating to the :menuselection:`Accounting -->
|
||||
Configuration --> Settings`.
|
||||
#. Scroll down to the :guilabel:`Uruguayan Localization` section and select the environment
|
||||
(:guilabel:`Production` or :guilabel:`Testing`).
|
||||
#. Click on :guilabel:`Create Uruware Account`.
|
||||
|
||||
Upon doing so, an email is sent to the address associated with your Odoo subscription with the
|
||||
username and password to enter Uruware's portal and set up your account.
|
||||
password to enter Uruware's portal and set up your account.
|
||||
|
||||
.. tip::
|
||||
Your :guilabel:`Tax ID` needs to be setup to be able to create your account.
|
||||
- The email with the credentials is not immediate; it might take up to 48 hours for the account to
|
||||
be created.
|
||||
- The company's :guilabel:`Tax ID` needs to be set up to be able to create an Uruware account.
|
||||
- The password sent expires after 24 hours. In this case, reset it by using the *Forgot Password*
|
||||
link in Uruware's portal.
|
||||
|
||||
.. note::
|
||||
This action will create an account with Uruware with the following information:
|
||||
|
||||
- Legal name (razón social)
|
||||
- RUT from the company
|
||||
- User name (RUT.odoo)
|
||||
- Username (the Odoo subscription email or `RUT`.odoo. For example: `213344556677.odoo`)
|
||||
- Odoo database link
|
||||
|
||||
To ensure your account is created correctly, please add any missing information from above.
|
||||
|
||||
Once the account is created, a confirmation email is sent to the email linked to your subscription
|
||||
in Odoo, containing the credentials to configure the account directly in the Uruware
|
||||
`testing portal <https://odootest.ucfe.com.uy/Gestion/>`_ or
|
||||
Once the account is created and you have received the email containing the credentials, configure
|
||||
your accounts directly in the Uruware `testing portal <https://odootest.ucfe.com.uy/Gestion/>`_ or
|
||||
`production portal <https://prod6109.ucfe.com.uy/Gestion/>`_:
|
||||
|
||||
Use the account credentials in the email to log in to the portal.
|
||||
Use the account credentials in the email to log in to the to the corresponding (`test
|
||||
<https://odootest.ucfe.com.uy/Gestion/>`_ or `production <https://prod6109.ucfe.com.uy/Gestion/>`_)
|
||||
portal.
|
||||
|
||||
In Uruware's portal, the following steps are needed to be able to issue invoices from Odoo:
|
||||
|
||||
#. Complete and correct the company's information.
|
||||
#. Add your digital certificate.
|
||||
#. Add your :abbr:`CAEs (Constancia de Autorización para Emisión)` for each document-type you plan
|
||||
to issue.
|
||||
#. Configure the format of the PDF to be printed and sent to your customers.
|
||||
|
||||
.. important::
|
||||
Be sure to configure two accounts, one for testing and one for production. The email address can
|
||||
be changed in Uruware and the same can be used in both environments.
|
||||
Be sure to configure two accounts, one for testing and one for production. The certificate is
|
||||
needed in both environments, but :abbr:`CAEs (Constancia de Autorización para Emisión)` are only
|
||||
needed in production.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Uruguay Localization
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-uruguay-432>`_
|
||||
- `Odoo Help Forum: Uruguay
|
||||
<https://www.odoo.com/forum/help-1?search=l10n_uy>`_
|
||||
|
||||
Electronic invoice data
|
||||
-----------------------
|
||||
@@ -156,6 +178,9 @@ First, select the :guilabel:`UCFE Web Services` environment:
|
||||
to the |DGI|. For this reason, rejection errors will not appear in this mode. Every internal
|
||||
validation can be tested in demo mode. Avoid selecting this option in a production database.
|
||||
|
||||
.. note::
|
||||
Using :guilabel:`Demo` mode does not require a Uruware account.
|
||||
|
||||
Then, enter the :guilabel:`Uruware Data`:
|
||||
|
||||
- :guilabel:`Uruware WS Password`
|
||||
@@ -166,9 +191,16 @@ Then, enter the :guilabel:`Uruware Data`:
|
||||
:alt: Required information for electronic invoice.
|
||||
|
||||
.. note::
|
||||
This data can be obtained from the Uruware portal, after configuring the :ref:`Uruware account
|
||||
<l10n_uy/uruware-account>`. The :guilabel:`Uruware WS Password` differs from the password you use
|
||||
to enter your Uruware account.
|
||||
This data can be obtained from the Uruware portal after configuring the :ref:`Uruware account
|
||||
<l10n_uy/uruware-account>`.
|
||||
|
||||
To get the :guilabel:`Uruware WS Password`, go to :menuselection:`Configuration --> Company -->
|
||||
Edit` and look for the :guilabel:`Validators and Additional Information` tab to find
|
||||
:guilabel:`WS Password`.
|
||||
|
||||
To get the :guilabel:`Commerce Code`, go to :menuselection:`Configuration --> Branches`.
|
||||
|
||||
To get the :guilabel:`Terminal Code`, go to :menuselection:`Configuration --> Issuing Points`.
|
||||
|
||||
Master data
|
||||
-----------
|
||||
|
||||
@@ -441,8 +441,8 @@ entries. We recommend you ask your accountant for advice.
|
||||
|
||||
By default, the :guilabel:`Bank Account` defined for the :ref:`payment journal
|
||||
<payment_providers/journal>` is used, but you can also specify an :ref:`outstanding account
|
||||
<bank/outstanding-accounts>` for each payment provider to separate the provider's payments from
|
||||
other payments.
|
||||
<accounting/bank/outstanding-accounts>` for each payment provider to separate the provider's
|
||||
payments from other payments.
|
||||
|
||||
.. image:: payment_providers/bank_journal.png
|
||||
:alt: Define an outstanding account for a payment provider.
|
||||
|
||||
@@ -33,8 +33,6 @@ Configuration on the Xendit Dashboard
|
||||
#. In the :guilabel:`Webhook URL` section, enter your Odoo database's URL, followed by
|
||||
`/payment/xendit/webhook` (e.g., `https://example.odoo.com/payment/xendit/webhook`) in the field
|
||||
:guilabel:`Invoices paid` and click the :guilabel:`Test and save` button next to it.
|
||||
#. Navigate to the `Card Settings page <https://dashboard.xendit.co/settings/payment-methods/cards-configuration>`_
|
||||
and ensure that :guilabel:`Optional 3DS` is enabled while :guilabel:`Dynamic 3DS` is disabled.
|
||||
|
||||
Configuration on Odoo
|
||||
=====================
|
||||
|
||||
@@ -100,9 +100,10 @@ Sending emails with an external SMTP server
|
||||
the DNS of an Odoo subdomain is not feasible.
|
||||
|
||||
To add an external SMTP server in Odoo, open :guilabel:`Settings`, and enable the :guilabel:`Use
|
||||
Custom Email Servers` option found under the :guilabel:`Discuss` section.
|
||||
Custom Email Servers` option found under the :guilabel:`Emails` section. Then, click
|
||||
:guilabel:`Save` at the top of the page to save the changes.
|
||||
|
||||
Still under the :guilabel:`Discuss` section, click :guilabel:`Outgoing Email Servers`, then `New` to
|
||||
Returning to the :guilabel:`Emails` section, click :guilabel:`Outgoing Email Servers`, then `New` to
|
||||
create an outgoing mail server record. Most fields are the common parameters used to set up a
|
||||
connection to an SMTP server; use the values provided by your email provider.
|
||||
|
||||
@@ -158,9 +159,8 @@ transactional emails are given priority.
|
||||
:alt: Example of split between transaction and mass mailing mail servers.
|
||||
|
||||
Now, go to :menuselection:`Email Marketing --> Configuration --> Settings`, enable
|
||||
:guilabel:`Dedicated Server`, and select the appropriate email server. Odoo uses the server
|
||||
with the lowest priority value for transactional emails, and the server selected here for mass
|
||||
mailings.
|
||||
:guilabel:`Dedicated Server`, and select the appropriate email server. Odoo uses the server with the
|
||||
lowest priority value for transactional emails, and the server selected here for mass mailings.
|
||||
|
||||
.. image:: email_servers_outbound/dedicated-mass-mail-server.png
|
||||
:alt: Dedicated mail server on Email Marketing app settings.
|
||||
@@ -194,8 +194,8 @@ When an email is sent from Odoo, the following sequence is used to choose the ou
|
||||
If the sender's email address is `test@example.com`, only an email server having a FROM filtering
|
||||
value equal to `test@example.com` or `example.com` can be used.
|
||||
|
||||
- If no server is found based on the first criteria, Odoo looks for the first server
|
||||
without a FROM filtering value set. The email will be overridden with the notification address.
|
||||
- If no server is found based on the first criteria, Odoo looks for the first server without a FROM
|
||||
filtering value set. The email will be overridden with the notification address.
|
||||
|
||||
- If no server is found based on the second criteria, Odoo uses the first server, and the email will
|
||||
be overridden with the notification address.
|
||||
@@ -228,8 +228,8 @@ server is set, the default Odoo's SMTP server will be used.
|
||||
:alt: Splitting of Odoo mail server for transactional emails and Mail server for Mass mailing.
|
||||
|
||||
.. note::
|
||||
On Odoo Online, the command line interface is equivalent to the default Odoo mail
|
||||
server, using the same limit as if there was no outgoing mail server in place.
|
||||
On Odoo Online, the command line interface is equivalent to the default Odoo mail server, using
|
||||
the same limit as if there was no outgoing mail server in place.
|
||||
|
||||
.. tip::
|
||||
On Odoo Online, the page also shows your daily email usage and your daily limit. On Odoo.sh, you
|
||||
|
||||
@@ -1,9 +1,166 @@
|
||||
:nosearch:
|
||||
:show-content:
|
||||
|
||||
.. |UoM| replace:: :abbr:`UoM (Unit of Measure)`
|
||||
.. |UoMs| replace:: :abbr:`UoMs (Units of Measure)`
|
||||
|
||||
|
||||
=================
|
||||
Configure product
|
||||
=================
|
||||
|
||||
A group of products in Odoo can be further defined using:
|
||||
|
||||
- :doc:`Units of measure (UoM) <configure/uom>`: a standard quantity for specifying product amounts
|
||||
(e.g., meters, yards, kilograms). Enables automatic conversion between measurement systems in
|
||||
Odoo, such as centimeters to feet.
|
||||
|
||||
- *Ex: Purchasing fabric measured in meters but receiving it in yards from a vendor.*
|
||||
|
||||
- :doc:`configure/package`: A physical container used to group products together, regardless of
|
||||
whether they are the same or different.
|
||||
|
||||
- *Ex: A box containing assorted items for delivery, or a storage box of two hundred buttons on a
|
||||
shelf.*
|
||||
|
||||
- :doc:`configure/packaging`: groups the *same* products together to receive or sell them in
|
||||
specified quantities.
|
||||
|
||||
- *Ex: Cans of soda sold in packs of six, twelve, or twenty-four.*
|
||||
|
||||
Comparison
|
||||
==========
|
||||
|
||||
This table provides a detailed comparison of units of measure, packages, and packaging to help
|
||||
businesses evaluate which best suits their requirements.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Feature
|
||||
- Unit of measure
|
||||
- Packages
|
||||
- Packaging
|
||||
* - Purpose
|
||||
- Standardized measurement for product units (e.g., cm, lb, L)
|
||||
- Tracks the specific physical container and its contents
|
||||
- Groups a fixed number of items together for easier management (e.g., packs of 6, 12 or 24)
|
||||
* - Product uniformity
|
||||
- Defined per product; saved as one |UoM| in the database
|
||||
- Allows mixed products
|
||||
- Same products only
|
||||
* - Flexible
|
||||
- Converts between vendor/customer |UoMs| and database |UoM|
|
||||
- Items can be added or removed from the container
|
||||
- Quantities are fixed (e.g., always packs of 6, 12 or 24)
|
||||
* - Complexity
|
||||
- Simplest for unit conversions
|
||||
- More complex due to container-level inventory tracking
|
||||
- Simpler; suitable for uniform product groupings
|
||||
* - Inventory tracking
|
||||
- Tracks product quantities within the warehouse in the specific |UoM| defined in the product
|
||||
form
|
||||
- Tracks package location and contents within the warehouse
|
||||
- Tracks grouped quantities but not individual items' locations
|
||||
* - Smooth barcode operations
|
||||
- Not available
|
||||
- Requires scanning both the package and individual items for reception. (even if there are 30
|
||||
items in a package). Can enable the :ref:`Move Entire Packages
|
||||
<inventory/product_management/move-entire-pack>` feature to update the package's contained
|
||||
items' locations, when moving the package
|
||||
- Scanning a packaging barcode automatically records all included units. (e.g. 1 pack = 12
|
||||
units)
|
||||
* - Product lookup
|
||||
- Not available
|
||||
- Scanning a product's barcode identifies its typical storage location in the Odoo database
|
||||
- Barcode identifies grouped quantity, not storage location
|
||||
* - Unique barcodes
|
||||
- Not available
|
||||
- Unique barcodes for individual packages (e.g. Pallet #12)
|
||||
- Barcodes set at the packaging type level (e.g. for a pack of 6)
|
||||
* - Reusability
|
||||
- Not applicable
|
||||
- Can be disposable or reusable, configured via the :ref:`Package Use
|
||||
<inventory/warehouses_storage/cluster-pack>` field
|
||||
- Disposable only
|
||||
* - Container weight
|
||||
- Not applicable
|
||||
- Weight of the container itself is included in the *Shipping Weight* field of a package
|
||||
(:menuselection:`Inventory app --> Products --> Packages`)
|
||||
- Weight of the container is defined in the *Package Type* settings
|
||||
* - Lot/serial number tracking
|
||||
- Requires manual adjustments to track |UoMs| via lots (See :ref:`use case
|
||||
<inventory/product_management/lots-uom>` for details)
|
||||
- Applies only to contained products
|
||||
- Applies to both contained products and the container
|
||||
* - Custom routes
|
||||
- Cannot be set
|
||||
- Cannot be set
|
||||
- Routes can define specific warehouse paths for a particular packaging type
|
||||
|
||||
Use cases
|
||||
=========
|
||||
|
||||
After comparing the various features, consider how these businesses, with various inventory
|
||||
management and logistics workflows, came to their decision.
|
||||
|
||||
Pallets of items using packaging
|
||||
--------------------------------
|
||||
|
||||
A warehouse receives shipments of soap organized on physical pallets, each containing 96 bars. These
|
||||
pallets are used for internal transfers and are also sold as standalone units. For logistical
|
||||
purposes, the pallet's weight must be included in the total shipping weight for certain deliveries.
|
||||
Additionally, the pallet requires a barcode to facilitate tracking, and the number of individual
|
||||
bars of soap must be included in the stock count when the pallet is received.
|
||||
|
||||
After evaluating various options, *product packaging* was the most suitable solution. Packaging
|
||||
enables assigning a barcode to a pallet, identifying it as a "pallet type" containing 96 soap bars.
|
||||
This barcode streamlines operations by automatically registering the grouped quantity. Key
|
||||
distinctions include:
|
||||
|
||||
- **Warehouse tracking limitations**: Odoo tracks only the total quantity, not the number of
|
||||
packagings. For instance, if a pallet with 12 and 24 quantities is received, Odoo records 36
|
||||
quantities, not the pallet details.
|
||||
- **Packaging barcodes are type-specific, not unique**: Barcodes represent packaging types (e.g.,
|
||||
"pallet of 96 soap bars") but do not uniquely identify individual pallets, such as Pallet #1 or
|
||||
Pallet #2.
|
||||
|
||||
Capture product information using barcode
|
||||
-----------------------------------------
|
||||
|
||||
An Odoo user expects the **Barcode** app to display the typical storage location of a product by
|
||||
scanning a barcode for a container.
|
||||
|
||||
*Packages* was the most suitable. When the :ref:`appropriate setting is enabled
|
||||
<inventory/warehouses_storage/enable-package>`, scanning a package barcode displays its contents in
|
||||
the **Barcode** app.
|
||||
|
||||
Packages represent physical containers, enabling detailed tracking of the items they hold.
|
||||
Scanning a package provides visibility into its contents and facilitates operations, like inventory
|
||||
moves.
|
||||
|
||||
.. _inventory/product_management/lots-uom:
|
||||
|
||||
Track different units of measure in storage
|
||||
-------------------------------------------
|
||||
|
||||
A fruit juice distributor tracks multiple |UoMs| for their operations:
|
||||
|
||||
- Fruits are purchased in tons.
|
||||
- Juice is produced and stored in kilograms.
|
||||
- Small samples are stored in grams for recipe testing.
|
||||
|
||||
*Unit of Measure* was most suitable. Odoo automatically converts tons to kilograms during
|
||||
receipts. However, since Odoo tracks only one |UoM| per product in the database, the company uses
|
||||
lot numbers to differentiate |UoMs|:
|
||||
|
||||
- LOT1: Grams (g)
|
||||
- LOT2: Kilograms (kg)
|
||||
|
||||
Manual inventory adjustments are required to convert between lots, such as subtracting 1 kg from
|
||||
LOT2 to add 1,000 g to LOT1. While functional, this workaround can be time-consuming and prone to
|
||||
errors.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
|
||||
@@ -45,6 +45,17 @@ the :guilabel:`Operations` heading, activate the :guilabel:`Packages` feature. T
|
||||
:align: center
|
||||
:alt: Activate the *Packages* setting in Inventory > Configuration > Settings.
|
||||
|
||||
.. _inventory/product_management/move-entire-pack:
|
||||
|
||||
When moving packages internally, the *Move Entire Packages* feature can be enabled on an operation
|
||||
type to update a package's contained item's location upon updating the package's location.
|
||||
|
||||
To do that, go to :menuselection:`Inventory app --> Configuration --> Operations Types` and select
|
||||
the desired operation this feature will apply to (may have to set it for multiple).
|
||||
|
||||
On the operation type page, in the :guilabel:`Packages` section, tick the :guilabel:`Move Entire
|
||||
Packages` checkbox.
|
||||
|
||||
.. _inventory/warehouses_storage/pack:
|
||||
|
||||
Pack items
|
||||
|
||||
@@ -140,8 +140,8 @@ serial number.
|
||||
|
||||
.. _inventory/product_management/incoming-outgoing-products:
|
||||
|
||||
Create serial numbers to incoming or outgoing products
|
||||
------------------------------------------------------
|
||||
Create serial numbers for incoming or outgoing products
|
||||
-------------------------------------------------------
|
||||
|
||||
Serial numbers can be assigned to both incoming and outgoing goods. The receipt and delivery order
|
||||
forms mirror one another; the instructions below can be followed to assign serial numbers in either
|
||||
@@ -297,6 +297,43 @@ the desired serial numbers for each individual product.
|
||||
When finished, click the receipt/delivery order's breadcrumbs, and the assigned serial numbers are
|
||||
automatically saved.
|
||||
|
||||
Display serial numbers on delivery slips
|
||||
========================================
|
||||
|
||||
When selling products tracked using serial numbers, it is possible to include the serial numbers on
|
||||
the delivery slips sent to customers. This can be helpful to customers in cases where serial numbers
|
||||
are needed, such as filing an RMA or repair request, or registering the product.
|
||||
|
||||
To include serial numbers on delivery slips, open the :menuselection:`Inventory` app, and navigate
|
||||
to :menuselection:`Configuration --> Settings`. Scroll down to the :guilabel:`Traceability` section,
|
||||
tick the :guilabel:`Display Lots & Serial Numbers on Delivery Slips` checkbox, and click
|
||||
:guilabel:`Save`.
|
||||
|
||||
After enabling the :guilabel:`Display Lots & Serial Numbers on Delivery Slips` setting, serial
|
||||
numbers are listed on delivery slips for products tracked by serial numbers, once the delivery order
|
||||
is validated.
|
||||
|
||||
To view serial numbers on delivery orders and delivery slips, navigate to the
|
||||
:menuselection:`Inventory` app, click on :guilabel:`Delivery Orders`, and select an order containing
|
||||
a product tracked using serial numbers.
|
||||
|
||||
To view the serial numbers of products included in the order, make sure the :guilabel:`Operations`
|
||||
tab is selected, then click the :icon:`oi-settings-adjust` :guilabel:`(adjust)` icon to the right of
|
||||
the tab. Ensure that the :guilabel:`Serial Numbers` checkbox is ticked, which causes a
|
||||
:guilabel:`Serial Numbers` column to appear. The serial number(s) for each product included in the
|
||||
order are displayed in this column.
|
||||
|
||||
When the order is ready to be processed, click :guilabel:`Validate` to confirm the delivery and add
|
||||
product information to the delivery slip.
|
||||
|
||||
At the top of the order's form, click the :icon:`fa-cog` :guilabel:`(Actions)` button, and select
|
||||
:menuselection:`Print --> Delivery Slip`. The delivery slip is then downloaded. Open the delivery
|
||||
slip using the device's browser or file manager. Serial numbers are listed next to their respective
|
||||
products in the :guilabel:`Lot/Serial Number` column.
|
||||
|
||||
.. image:: serial_numbers/delivery-slip.png
|
||||
:alt: The order lines section of a delivery slip, showing a product and its serial number.
|
||||
|
||||
Traceability & reporting
|
||||
========================
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
@@ -4,29 +4,27 @@ Batch picking
|
||||
|
||||
.. _inventory/misc/batch_picking:
|
||||
|
||||
*Batch picking* enables a single picker to handle multiple orders at once, reducing the time needed
|
||||
to navigate to the same location in a warehouse.
|
||||
|
||||
When picking in batches, orders are grouped and consolidated into a picking list. After the picking,
|
||||
the batch is taken to an output location, where the products are sorted into their respective
|
||||
delivery packages.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Use Barcode app for pickings <inventory/warehouses_storage/barcode_picking>`
|
||||
*Batch picking* enables a single picker to handle multiple orders at once, reducing the number of
|
||||
times needed to navigate to a warehouse location. When picking in batches, orders are grouped and
|
||||
consolidated into a picking list. After the picking, the batch is taken to an output location, where
|
||||
the products are sorted into their respective delivery packages.
|
||||
|
||||
Since orders *must* be sorted at the output location after being picked, this picking method suits
|
||||
businesses with a few products that are ordered often. Storing high-demand items in easily
|
||||
accessible locations can increase the number of orders that are fulfilled efficiently.
|
||||
|
||||
Batch picking is ideal for industries or warehouses that handle high order volumes with a stable
|
||||
demand. This method increases efficiency by allowing workers to pick items for multiple orders in
|
||||
one trip through the warehouse, reducing travel time and boosting productivity.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To activate the batch picking option, begin by going to :menuselection:`Inventory app -->
|
||||
Configuration --> Settings`. Under the :guilabel:`Operations` section, check the :guilabel:`Batch
|
||||
Transfers` box.
|
||||
Configuration --> Settings`. Under the :guilabel:`Operations` section, check the :guilabel:`Batch,
|
||||
Wave & Cluster Transfers` box.
|
||||
|
||||
.. image:: batch/batch-transfer-checkbox.png
|
||||
:align: center
|
||||
:alt: Enable the *Batch Transfers* in Inventory > Configuration > Settings.
|
||||
|
||||
Since batch picking is a method to optimize the *pick* operation in Odoo, the :guilabel:`Storage
|
||||
@@ -34,29 +32,22 @@ Locations` and :guilabel:`Multi-Step Routes` options under the :guilabel:`Wareho
|
||||
also be checked on this settings page. When finished, click :guilabel:`Save`.
|
||||
|
||||
.. image:: batch/locations-routes-checkbox.png
|
||||
:align: center
|
||||
:alt: Enable *Storage Locations* and *Multi-Step Routes* Inventory > Configuration > Settings.
|
||||
|
||||
Lastly, enable the warehouse picking feature, by navigating to the warehouse settings page, which is
|
||||
accessible from :menuselection:`Inventory app --> Configuration --> Warehouses`.
|
||||
|
||||
From here, select the desired warehouse from the list. Then, from the radio options available for
|
||||
:guilabel:`Outgoing Shipments`, select either the :guilabel:`Send goods in output and then deliver
|
||||
(2 steps)` or :guilabel:`Pack goods, send goods in output and then deliver (3 steps)`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Delivery in two steps <../daily_operations/receipts_delivery_two_steps>`
|
||||
- :doc:`../daily_operations/delivery_three_steps`
|
||||
|
||||
.. image:: batch/set-2-or-3-step-shipment.png
|
||||
:align: center
|
||||
:alt: Set up 2-step or 3-step outgoing shipments.
|
||||
|
||||
Create batch transfers
|
||||
======================
|
||||
|
||||
Manually create batch transfers directly from the :menuselection:`Inventory app --> Operations -->
|
||||
Batch Transfers` page. Click the :guilabel:`New` button to begin creating a batch transfer.
|
||||
To manually group transfers directly from the :menuselection:`Inventory app`, hover over the
|
||||
desired operation type from the :guilabel:`Inventory Overview` menu (e.g. the :guilabel:`Receipts`
|
||||
Kanban card), click the :icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` icon, then select
|
||||
:guilabel:`Prepare Batch`.
|
||||
|
||||
.. image:: batch/prepare-batch.png
|
||||
:alt: The Inventory dashboard with the Prepare Batch option highlighted.
|
||||
|
||||
On the batch transfer form, fill the following fields out accordingly:
|
||||
|
||||
@@ -67,6 +58,11 @@ On the batch transfer form, fill the following fields out accordingly:
|
||||
- :guilabel:`Scheduled Date`: specifies the date by which the :guilabel:`Responsible` person should
|
||||
complete the transfer to the output location.
|
||||
|
||||
.. seealso::
|
||||
To learn more about the :guilabel:`Dock Location`, :guilabel:`Vehicle`, and :guilabel:`Vehicle
|
||||
Category` fields, see :doc:`dispatch management system
|
||||
<../../shipping_receiving/setup_configuration/dispatch>`.
|
||||
|
||||
Next, in the :guilabel:`Transfers` list, click :guilabel:`Add a line` to open the :guilabel:`Add:
|
||||
Transfers` window.
|
||||
|
||||
@@ -78,11 +74,10 @@ Click the :guilabel:`New` button to create a new transfer.
|
||||
Once the transfer records are selected, click :guilabel:`Confirm` to confirm the batch picking.
|
||||
|
||||
.. example::
|
||||
A new batch transfer assigned to the :guilabel:`Responsible`, `Joel Willis`, for the `Pick`
|
||||
A new batch transfer is assigned to the :guilabel:`Responsible`, `Joel Willis`, for the `Pick`
|
||||
:guilabel:`Operation Type`. The :guilabel:`Scheduled Date` is set to `August 11`.
|
||||
|
||||
.. image:: batch/batch-transfer-form.png
|
||||
:align: center
|
||||
:alt: View of *Batch Transfers* form.
|
||||
|
||||
Clicking the :guilabel:`Add a line` button opens the :guilabel:`Add:Transfers` window,
|
||||
@@ -94,7 +89,6 @@ Once the transfer records are selected, click :guilabel:`Confirm` to confirm the
|
||||
:guilabel:`Add:Transfers` window.
|
||||
|
||||
.. image:: batch/add-transfers-window.png
|
||||
:align: center
|
||||
:alt: Select multiple transfers from the *Add:Transfers* window.
|
||||
|
||||
.. _inventory/warehouses_storage/add-batch-transfers:
|
||||
@@ -107,16 +101,14 @@ a list. Navigate to the :menuselection:`Inventory app --> Operations` drop-down
|
||||
of the :guilabel:`Transfers` to open a filtered list of transfers.
|
||||
|
||||
.. image:: batch/transfers-drop-down.png
|
||||
:align: center
|
||||
:alt: Show all transfer types in a drop-down menu: Receipts, Deliveries, Internal Transfers,
|
||||
Manufacturings, Batch Transfers, Dropships.
|
||||
|
||||
On the transfers list, select the checkbox to the left of the selected transfers to add in a batch.
|
||||
Next, navigate to the :guilabel:`Actions ⚙️ (gear)` button, and click :guilabel:`Add to batch` from
|
||||
the resulting drop-down menu.
|
||||
Next, navigate to the :icon:`fa-cog` :guilabel:`Actions` button, and click :guilabel:`Add to batch`
|
||||
from the resulting drop-down menu.
|
||||
|
||||
.. image:: batch/add-to-batch.png
|
||||
:align: center
|
||||
:alt: Use *Add to batch* button, from the *Action* button's list.
|
||||
|
||||
Doing so opens an :guilabel:`Add to batch` pop-up window, wherein the employee
|
||||
@@ -125,14 +117,45 @@ Doing so opens an :guilabel:`Add to batch` pop-up window, wherein the employee
|
||||
Choose from the two radio options to add to :guilabel:`an existing batch transfer` or create
|
||||
:guilabel:`a new batch transfer`.
|
||||
|
||||
To begin with a draft, select the :guilabel:`Draft` checkbox.
|
||||
Add a :guilabel:`Description` for this batch.
|
||||
|
||||
.. tip::
|
||||
The :guilabel:`Description` field can be used to add additional information to help workers
|
||||
identify the source of the batch, where to place the batch, what shipping containers to use, etc.
|
||||
|
||||
To create a batch to be processed at a later time, select the :guilabel:`Draft` checkbox.
|
||||
|
||||
Conclude the process by clicking :guilabel:`Confirm`.
|
||||
|
||||
.. image:: batch/add-to-batch-window.png
|
||||
:align: center
|
||||
:alt: Show *Add to batch* window to create a batch transfer.
|
||||
|
||||
Automatic batches
|
||||
-----------------
|
||||
|
||||
Batches can be automatically created and assigned based on several criteria. The *Automatic Batches*
|
||||
option is defined on the *operation type* level.
|
||||
|
||||
.. example::
|
||||
In a multi-steps delivery process, the picking operation can be grouped by customer, while the
|
||||
shipping operation can be organized by carrier and destination country.
|
||||
|
||||
To enable *Automatic Batches*, navigate to :menuselection:`Inventory app --> Configuration -->
|
||||
Operation Types`, and select the desired operation type (e.g. :guilabel:`Delivery`,
|
||||
:guilabel:`Pick`, etc). Then, select one or more :guilabel:`Batch Grouping` criteria by ticking the
|
||||
appropriate checkbox. Even if more than one grouping option is selected, only one batch is created.
|
||||
|
||||
Batches can be automatically generated based on the following criteria:
|
||||
|
||||
- :guilabel:`Contact`
|
||||
- :guilabel:`Carrier`
|
||||
- :guilabel:`Destination Country`
|
||||
- :guilabel:`Source Location`
|
||||
- :guilabel:`Destination Location`
|
||||
|
||||
.. image:: batch/auto-batch-grouping.png
|
||||
:alt: The Batch and Wave Transfers settings page with the Auto batch grouping criteria visible.
|
||||
|
||||
Process batch transfer
|
||||
======================
|
||||
|
||||
@@ -157,7 +180,6 @@ Finally, select :guilabel:`Validate` to complete the picking.
|
||||
However, `0.00` quantities have been picked for the other product, `Cable Management Box`.
|
||||
|
||||
.. image:: batch/process-batch-transfer.png
|
||||
:align: center
|
||||
:alt: Show batch transfer of products from two pickings in the *Detailed Operations* tab.
|
||||
|
||||
Only in-stock products are visible in the :guilabel:`Detailed Operations` tab.
|
||||
@@ -170,12 +192,11 @@ the products that have been picked, and are ready for the next step.
|
||||
.. example::
|
||||
The product, `Desk Pad`, from the same batch as the :ref:`example above
|
||||
<inventory/management/batch-transfers-example>`, is only visible in the :guilabel:`Operations`
|
||||
tab because there are no :guilabel:`Reserved` quantities in-stock to fulfill the batch picking.
|
||||
tab because there are no :guilabel:`Reserved` quantities in stock to fulfill the batch transfer.
|
||||
|
||||
Click the :guilabel:`Check Availability` button to search the stock again for available products.
|
||||
|
||||
.. image:: batch/operations-tab.png
|
||||
:align: center
|
||||
:alt: Show unavailable reserved quantities in the *Operations* tab.
|
||||
|
||||
Create backorder
|
||||
@@ -186,53 +207,15 @@ On the batch transfer form, if the :guilabel:`Done` quantity of the product is *
|
||||
|
||||
This pop-up window provides the option: :guilabel:`Create Backorder?`.
|
||||
|
||||
Clicking the :guilabel:`Create Backorder` button automatically creates a new batch transfer,
|
||||
containing the remaining products.
|
||||
Clicking the :guilabel:`Create Backorder` button automatically creates a new batch transfer.
|
||||
|
||||
.. note::
|
||||
When creating a new backorder, the transfers that have **not** been validated in the batch will
|
||||
be removed from it.
|
||||
|
||||
Click :guilabel:`No Backorder` to finish the picking *without* creating another batch picking.
|
||||
|
||||
Click :guilabel:`Discard` to cancel the validation, and return to the batch transfer form.
|
||||
|
||||
.. image:: batch/create-backorder.png
|
||||
:align: center
|
||||
:alt: Show the *Create Backorder* pop-up.
|
||||
|
||||
.. _inventory/warehouses_storage/barcode_picking:
|
||||
|
||||
Process batch transfer: Barcode app
|
||||
===================================
|
||||
|
||||
Created batch transfers are also listed in the :menuselection:`Barcode` app, accessible by selecting
|
||||
the :guilabel:`Batch Transfers` button.
|
||||
|
||||
By default, confirmed batch pickings appear on the :guilabel:`Batch Transfers` page. On that page,
|
||||
click on the desired batch transfer to open the detailed list of products for the picking.
|
||||
|
||||
.. image:: batch/barcode-batch-transfers.png
|
||||
:align: center
|
||||
:alt: Show list of to-do batch transfers in *Barcode* app.
|
||||
|
||||
For the chosen batch transfer, follow the instructions at the top of the page in the black
|
||||
background. Begin by scanning the product's barcode to record a single product for picking. To
|
||||
record multiple quantities, click the :guilabel:`✏️ (pencil)` icon, and enter the required
|
||||
quantities for the picking.
|
||||
|
||||
.. note::
|
||||
Products from the same order are labeled with the same color on the left. Completed pickings are
|
||||
highlighted in green.
|
||||
|
||||
.. example::
|
||||
In a batch transfer for 2 `Cabinet with Doors`, 3 `Acoustic Bloc Screens`, and 4 `Four Person
|
||||
Desks`, the `3/3` and `4/4` :guilabel:`Units` indicate that the last two product pickings are
|
||||
complete.
|
||||
|
||||
`1/2` units of the `Cabinet with Doors` has already been picked, and after scanning the product
|
||||
barcode for the second cabinet, Odoo prompts the user to `Scan a serial number` to record the
|
||||
unique serial number for :ref:`product tracking <inventory/product_management/enable-lots>`.
|
||||
|
||||
.. image:: batch/barcode-products.png
|
||||
:align: center
|
||||
:alt: Display products to be picked in barcode view.
|
||||
|
||||
Once all the products have been picked, click on :guilabel:`Validate` to mark the batch transfer as
|
||||
:guilabel:`Done`.
|
||||
|
||||
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
@@ -7,16 +7,17 @@ Cluster picking
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |SOS| replace:: :abbr:`SOs (Sales Orders)`
|
||||
|
||||
Cluster picking is an advanced order fulfillment approach derived from :ref:`batch picking
|
||||
<inventory/misc/batch_picking>`.
|
||||
Cluster picking is an advanced picking method that combines the efficiency of :ref:`batch picking
|
||||
<inventory/misc/batch_picking>` with immediate sorting during the picking process. It is best suited
|
||||
for warehouses with high order volumes where organization and speed are critical.
|
||||
|
||||
In this strategy, pickers load a cart with multiple packages, each designated for a specific *sales
|
||||
order* (SO). Then, the picker travels to each storage location, and places the products directly in
|
||||
the package of the associated order.
|
||||
Unlike batch picking, which requires a separate sorting step after picking, cluster picking sorts
|
||||
items directly into designated bins or containers for each *sales order* (SO). This eliminates the
|
||||
need for post-picking consolidation, making it ideal for operations prioritizing speed and accuracy.
|
||||
|
||||
This method is most efficient for medium-sized companies, with high order volumes, and relatively
|
||||
few unique products, since the method eliminates the need for sorting products into packages for
|
||||
customers after picking.
|
||||
Cluster picking is particularly effective in environments where immediate organization is crucial,
|
||||
and orders contain a mix of items that need precise sorting during, rather than after, the picking
|
||||
process.
|
||||
|
||||
However, cluster picking does have some disadvantages. For instance, urgent orders cannot be
|
||||
prioritized, and optimized batches must be manually created beforehand. As a result, the picking
|
||||
@@ -41,7 +42,6 @@ process can lead to bottlenecks.
|
||||
where the packages are sealed and prepared for shipment.
|
||||
|
||||
.. image:: cluster/cluster-example.png
|
||||
:align: center
|
||||
:alt: Show example of fulfilling sales orders 2 and 3 at once.
|
||||
|
||||
Configuration
|
||||
@@ -49,10 +49,9 @@ Configuration
|
||||
|
||||
To enable cluster picking, begin by navigating to :menuselection:`Inventory app --> Configuration
|
||||
--> Settings`. Under the :guilabel:`Operations` heading, activate the :guilabel:`Packages` and
|
||||
:guilabel:`Batch Transfers` options.
|
||||
:guilabel:`Batch, Wave & Cluster Transfers` options.
|
||||
|
||||
.. image:: cluster/configs.png
|
||||
:align: center
|
||||
:alt: Activate *Packages* and *Batch Transfers* features in the settings.
|
||||
|
||||
Since batch picking is used to optimize the *pick* operation in Odoo, the :guilabel:`Storage
|
||||
@@ -65,7 +64,6 @@ also be checked on this settings page.
|
||||
When finished, click :guilabel:`Save`.
|
||||
|
||||
.. image:: cluster/locations-routes-checkbox.png
|
||||
:align: center
|
||||
:alt: Enable *Storage Locations* and *Multi-Step Routes* Inventory > Configuration > Settings.
|
||||
|
||||
.. _inventory/misc/create-package:
|
||||
@@ -73,8 +71,9 @@ When finished, click :guilabel:`Save`.
|
||||
Packages setup
|
||||
--------------
|
||||
|
||||
After the :guilabel:`Packages` feature is enabled, navigate to :menuselection:`Inventory app -->
|
||||
Products --> Packages`, and click the :guilabel:`New` button to create a new package.
|
||||
To configure the containers to be used during the picking process, navigate to
|
||||
:menuselection:`Inventory app --> Products --> Packages`. Click the :guilabel:`New` button to create
|
||||
a new package.
|
||||
|
||||
On the new package form, the :guilabel:`Package Reference` is pre-filled with the next available
|
||||
`PACK` number in the system. :guilabel:`Pack Date` is automatically set to the creation date of the
|
||||
@@ -88,37 +87,17 @@ Set the :guilabel:`Package Use` field to :guilabel:`Reusable Box`.
|
||||
.. example::
|
||||
A package intended for cluster picking is named `CLUSTER-PACK-3` for easy identification. For
|
||||
this workflow, the products are directly packed using their intended shipping boxes, so
|
||||
:guilabel:`Package Use` is set to :guilabel:`Disposable Box`.
|
||||
:guilabel:`Package Use` is set to :guilabel:`Reusable Box`.
|
||||
|
||||
.. image:: cluster/cluster-package.png
|
||||
:align: center
|
||||
:alt: Create new package form.
|
||||
|
||||
Create cluster batch
|
||||
====================
|
||||
|
||||
To see how cluster picking works in Odoo, navigate to the :menuselection:`Sales` app, and create
|
||||
|SOS| that will be fulfilled together in the same batch. After confirming an |SO|, the
|
||||
:guilabel:`Delivery` smart button becomes visible. Displayed inside the icon is a number
|
||||
representing the amount of steps in the outgoing shipment process.
|
||||
|
||||
.. example::
|
||||
Begin by creating three |SOS| for the apples, oranges, and bananas, as shown in the :ref:`example
|
||||
above <inventory/misc/cluster_picking/example>`.
|
||||
|
||||
After confirming the |SO|, the :guilabel:`Delivery` smart button displays the number `2`,
|
||||
indicating there are two operations to complete: `Pick` and `Delivery`.
|
||||
|
||||
.. image:: cluster/create-sales-order.png
|
||||
:align: center
|
||||
:alt: Example sales order for an apple, orange, and banana.
|
||||
|
||||
With the |SOS| created, orders now must be grouped into batches. To do so, navigate to the
|
||||
*Inventory* dashboard and select the operation type card, :guilabel:`Delivery Orders` or
|
||||
:guilabel:`Pick` (whichever is the first operation in the delivery flow).
|
||||
|
||||
Doing so displays a filtered list of outgoing operations with the :guilabel:`Ready` status,
|
||||
indicating that all the products in the |SO| are in stock.
|
||||
To create a cluster, navigate to :menuselection:`Inventory app` and select the operation type card,
|
||||
:guilabel:`Delivery Orders` or :guilabel:`Pick` (whichever is the first operation in the delivery
|
||||
flow).
|
||||
|
||||
.. note::
|
||||
Cluster pick batches can be created for outgoing shipments in one, two, or three steps.
|
||||
@@ -129,8 +108,8 @@ indicating that all the products in the |SO| are in stock.
|
||||
- :doc:`Delivery in three steps <../daily_operations/delivery_three_steps>`
|
||||
|
||||
Click the checkbox to the left of the corresponding outgoing operation to add them to the batch.
|
||||
With the desired pickings selected, click the :guilabel:`⚙️ Actions (gear)` button, and select the
|
||||
:guilabel:`Add to batch` option from the resulting drop-down menu.
|
||||
With the desired pickings selected, click the :icon:`fa-cog` :guilabel:`Actions` button, and select
|
||||
the :guilabel:`Add to batch` option from the resulting drop-down menu.
|
||||
|
||||
.. example::
|
||||
To create a cluster batch, as shown in the :ref:`example above
|
||||
@@ -142,7 +121,6 @@ With the desired pickings selected, click the :guilabel:`⚙️ Actions (gear)`
|
||||
- `WH/PICK/00009`: linked to |SO| 90 for one apple, orange, and banana.
|
||||
|
||||
.. image:: cluster/select-picks.png
|
||||
:align: center
|
||||
:alt: Use *Add to batch* button, from the *Action* button's list.
|
||||
|
||||
Doing so opens an :guilabel:`Add to batch` pop-up window, wherein the employee
|
||||
@@ -151,13 +129,18 @@ Doing so opens an :guilabel:`Add to batch` pop-up window, wherein the employee
|
||||
Choose from the two options in the :guilabel:`Add to` field to either: add to :guilabel:`an existing
|
||||
batch transfer`, or create :guilabel:`a new batch transfer`.
|
||||
|
||||
Then, add a :guilabel:`Description` for this batch.
|
||||
|
||||
.. tip::
|
||||
The :guilabel:`Description` field can be used to add additional information to help workers
|
||||
identify the source of the batch, where to place the batch, what shipping containers to use, etc.
|
||||
|
||||
To create draft batch pickings to be confirmed at a later date, select the :guilabel:`Draft`
|
||||
checkbox.
|
||||
|
||||
Conclude the process by clicking :guilabel:`Confirm`.
|
||||
|
||||
.. image:: cluster/add-to-batch-window.png
|
||||
:align: center
|
||||
:alt: Show *Add to batch* window to create a batch transfer.
|
||||
|
||||
Process batches
|
||||
@@ -168,73 +151,17 @@ Click on a batch to select it.
|
||||
|
||||
In the :guilabel:`Detailed Operations` tab, products that are to be picked are grouped by location.
|
||||
|
||||
Under the :guilabel:`Source Package` or :guilabel:`Destination Package` field, enter the package
|
||||
used for the picking.
|
||||
|
||||
.. note::
|
||||
Use the :guilabel:`Source Package` field when the picking package is configured as *reusable* on
|
||||
the :ref:`package form <inventory/misc/create-package>`. This means the products are temporarily
|
||||
placed in a container during picking, before getting transferred to their final shipping box.
|
||||
|
||||
Alternatively, use the :guilabel:`Destination Package` field when the product is directly placed
|
||||
in its *disposable* shipping box during picking.
|
||||
Set the :guilabel:`Destination Package` to the package dedicated to that particular order.
|
||||
|
||||
.. example::
|
||||
Process the cluster batch for the three orders of apples, oranges, and bananas :ref:`example
|
||||
<inventory/misc/cluster_picking/example>` by assigning each picking to a dedicated package.
|
||||
|
||||
At the storage location for apples, `WH/Stock/Shelf A`, assign the apples in all three pickings
|
||||
to one of the three disposable packages, `CLUSTER-PACK-1`, `CLUSTER-PACK-2`, or `CLUSTER-PACK-3`.
|
||||
to one of the three reusable packages, `CLUSTER-PACK-1`, `CLUSTER-PACK-2`, or `CLUSTER-PACK-3`.
|
||||
|
||||
Record this in Odoo using the :guilabel:`Destination Package` field in the :guilabel:`Detailed
|
||||
Operations` tab.
|
||||
|
||||
.. image:: cluster/cluster-batch-example.png
|
||||
:align: center
|
||||
:alt: Example of processing cluster pickings in *Inventory*.
|
||||
|
||||
In Barcode
|
||||
----------
|
||||
|
||||
To process cluster pickings directly from the *Barcode* app, select the :guilabel:`Batch Transfers`
|
||||
button from the *Barcode* dashboard. Then, select the desired batch.
|
||||
|
||||
On the batch transfer screen, the products in the picking are grouped by location, and each line is
|
||||
color-coded to associate products in the same picking together.
|
||||
|
||||
Then, follow the prompt to :guilabel:`Scan the source location` barcode for the storage location of
|
||||
the first product. Then, scan the barcode for the product and package to process the transfer.
|
||||
|
||||
Repeat this for all products, and click the :guilabel:`Validate` button.
|
||||
|
||||
.. note::
|
||||
To find the package barcode, navigate to :menuselection:`Inventory app --> Products -->
|
||||
Packages`, select the desired package, click the :guilabel:`⚙️ (gear)` icon at the top of the
|
||||
package form, and select the :guilabel:`Print` option.
|
||||
|
||||
Next, select one of the three print options to generate the package barcode from the
|
||||
:guilabel:`Package Reference` field.
|
||||
|
||||
.. image:: cluster/find-package-barcode.png
|
||||
:align: center
|
||||
:alt: Display where the package barcode can be generated.
|
||||
|
||||
.. example::
|
||||
Begin processing the cluster picking by going to the first storage location, `Shelf A`, and
|
||||
scanning the :ref:`location barcode <barcode/setup/location>`. Doing so highlights all the
|
||||
pickings that need products from this particular location.
|
||||
|
||||
Scan the barcode for the apple, which highlights the picking (labeled in red) for the product
|
||||
`Apple`, for the picking, `WH/PICK/00007`.
|
||||
|
||||
Then, scan the `CLUSTER-PACK-1` package barcode, and place the product in the designated package.
|
||||
|
||||
.. image:: cluster/batch-barcode.png
|
||||
:align: center
|
||||
:alt: Example of cluster batch from the *Barcode* app.
|
||||
|
||||
.. tip::
|
||||
After creating a batch transfer and assigning a package to a picking, Odoo suggests the specified
|
||||
package by displaying the name *in italics* under the product name, ensuring pickers place
|
||||
products into the correct boxes.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 13 KiB |
@@ -1,68 +1,137 @@
|
||||
======================
|
||||
Process wave transfers
|
||||
======================
|
||||
==============
|
||||
Wave transfers
|
||||
==============
|
||||
|
||||
While a batch transfer is a group of several pickings, a **wave transfer** only contains some parts
|
||||
of different pickings. Both methods are used to pick orders in a warehouse, and depending on the
|
||||
situation, one method may be a better fit than the other.
|
||||
.. |SO| replace:: :abbr:`SO (sales order)`
|
||||
|
||||
To handle orders of a specific product category, or fetch products that are at the same location,
|
||||
wave transfers are the ideal method.
|
||||
While a batch transfer is a group of several pickings, a **wave transfer** contains certain parts
|
||||
of different pickings. In Odoo, wave transfers are batch transfers with an extra step: transfers are
|
||||
split before being grouped in a batch.
|
||||
|
||||
In Odoo, wave transfers are actually batch transfers with an extra step: transfers are split before
|
||||
being grouped in a batch.
|
||||
Wave picking is ideal for warehouses that need to optimize the handling of high order volumes while
|
||||
managing complex picking criteria. With wave transfers, orders are grouped into waves based on
|
||||
factors like product location, category, or scheduled shipping times. Each wave is assigned to a
|
||||
different employee for the most efficient execution.
|
||||
|
||||
Wave picking is particularly useful for operations where multiple sales orders (SOs), or a single
|
||||
order, must be picked across different waves. This approach enables flexible scheduling, allowing
|
||||
warehouses to align picking activities with shipping deadlines, or resource availability.
|
||||
|
||||
.. example::
|
||||
#. |SO| 1 calls for one apple and one orange
|
||||
#. |SO| 2 calls for one apple and one banana
|
||||
#. |SO| 3 calls for one apple, one orange, and two bananas
|
||||
|
||||
Apples are stored in Shelf A, oranges in Shelf B, and bananas in Shelf C. A warehouse employee is
|
||||
assigned to the wave, and is provided with the following instructions:
|
||||
|
||||
- Shelf A: Pick three apples. Place them into a central cart designated for the wave.
|
||||
- Shelf B: Pick two oranges. Add them to the same cart.
|
||||
- Shelf C: Pick three bananas. Add them to the cart.
|
||||
|
||||
The employee then takes the cart to the sorting/packing station. Items are then sorted and packed
|
||||
into individual orders.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Before a wave transfer can be created, the :guilabel:`Batch Transfers` and :guilabel:`Wave
|
||||
Transfers` options must be activated.
|
||||
|
||||
First, go to :menuselection:`Inventory --> Configuration --> Settings`. In the
|
||||
:guilabel:`Operations` section, enable :guilabel:`Batch Transfers` and :guilabel:`Wave Transfers`.
|
||||
Then, click :guilabel:`Save` to apply the settings.
|
||||
To enable wave picking, begin by navigating to :menuselection:`Inventory --> Configuration -->
|
||||
Settings`. In the :guilabel:`Operations` section, tick the :guilabel:`Batch, Wave & Cluster
|
||||
Transfers` checkbox to enable the setting.
|
||||
|
||||
.. image:: wave/wave-transfers-setting.png
|
||||
:align: center
|
||||
:alt: View of Odoo Inventory app settings to enable the wave transfers option.
|
||||
|
||||
Add products to a wave
|
||||
======================
|
||||
Next, the :guilabel:`Storage Locations` and :guilabel:`Multi-Step Routes` options, under the
|
||||
:guilabel:`Warehouse` heading, must also be checked on this settings page.
|
||||
|
||||
Now that the settings are activated, start a wave transfer by adding products to a wave.
|
||||
*Storage locations* allow products to be stored in specific locations they can be picked from, while
|
||||
*multi-step routes* enable the picking operation itself.
|
||||
|
||||
Then, click :guilabel:`Save` to save the changes.
|
||||
|
||||
Create a wave
|
||||
=============
|
||||
|
||||
Wave transfers can only contain product lines from transfers of the same operation type. To view
|
||||
all the transfers and product lines in a specific operation, first go to the :guilabel:`Inventory`
|
||||
dashboard and locate the desired operation type's card. Then, open the options menu (the three dots
|
||||
icon in the corner of the operation type's card) and click :guilabel:`Operations`.
|
||||
all the transfers and product lines in a specific operation, navigate to the
|
||||
:menuselection:`Inventory app`. Find the desired Kanban card, then click the :icon:`fa-ellipsis-v`
|
||||
:guilabel:`(vertical ellipsis)` icon to open the options menu. Under :guilabel:`New`, click
|
||||
:guilabel:`Prepare Wave`.
|
||||
|
||||
.. image:: wave/list-of-operations.png
|
||||
:align: center
|
||||
:alt: How to get an operation type's list of operations.
|
||||
|
||||
On the operations page, select the product lines you want to add in a new or existing wave. Then,
|
||||
click :guilabel:`Add to Wave`.
|
||||
Create a new wave
|
||||
-----------------
|
||||
|
||||
On the :guilabel:`Prepare Wave` pop-up, stock moves lines are grouped by source location. Select the
|
||||
checkboxes for the product lines that should be added. Then, click :guilabel:`Add to Wave`.
|
||||
|
||||
.. image:: wave/select-lines.png
|
||||
:align: center
|
||||
:alt: Select lines to add to the wave.
|
||||
|
||||
.. tip::
|
||||
Use the :guilabel:`Filters` in the search bar to group lines with the same product, location,
|
||||
carrier, etc...
|
||||
carrier, etc.
|
||||
|
||||
After that, a pop-up box appears.
|
||||
Add products to an existing wave
|
||||
--------------------------------
|
||||
|
||||
To add the selected lines to an existing wave transfer, select the :guilabel:`an existing wave
|
||||
transfer` option and select the existing wave transfer from the drop-down menu.
|
||||
To add products to an existing wave, navigate to :menuselection:`Inventory --> Operations --> Wave
|
||||
Transfers`. Click on the appropriate wave from the list to open it.
|
||||
|
||||
To create a new wave transfer, select the :guilabel:`a new wave transfer` option. If creating a new
|
||||
wave transfer, an employee can also be set in the optional :guilabel:`Responsible` field. Once the
|
||||
desired options are selected, click :guilabel:`Confirm` to add the product lines to a wave.
|
||||
Under the :guilabel:`Detailed Operations` tab, click :guilabel:`Add a line`. Then, in the
|
||||
:guilabel:`Product` field, search for the desired product.
|
||||
|
||||
View wave transfers
|
||||
===================
|
||||
Process a wave
|
||||
==============
|
||||
|
||||
To view all wave transfers and their statuses, go to :menuselection:`Inventory --> Operations -->
|
||||
Wave Transfers`. Wave transfers can also be viewed in the :guilabel:`Barcode` app by going to
|
||||
:menuselection:`Barcode --> Batch Transfers`.
|
||||
Wave Transfers`. Click on the appropriate wave from the list to open it.
|
||||
|
||||
To assign the wave to a specific employee, click the :guilabel:`Responsible` field and select the
|
||||
appropriate name from the drop-down list.
|
||||
|
||||
To designate a :ref:`Dock location <inventory/shipping_receiving/docks>`, select an option from the
|
||||
drop-down menu in the :guilabel:`Docks Location` field.
|
||||
|
||||
.. note::
|
||||
The :doc:`dispatch management system <../../shipping_receiving/setup_configuration/dispatch>`
|
||||
feature in Odoo is used to plan and build shipments. Assigning batches to loading docks ensures
|
||||
the right products are pack into the appropriate trucks for delivery.
|
||||
|
||||
Select a :guilabel:`Vehicle` from the drop-down. Making a selection in this field automatically
|
||||
updates the :guilabel:`Vehicle Category` field.
|
||||
|
||||
Enter a :guilabel:`Description` for this wave, if desired.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Description` field is automatically generated for :ref:`automatic waves
|
||||
<inventory/shipping_receiving/auto-waves>`.
|
||||
|
||||
.. _inventory/shipping_receiving/auto-waves:
|
||||
|
||||
Automatic waves
|
||||
===============
|
||||
|
||||
Waves can be automatically created and assigned based on different criteria. The *Automatic Batches*
|
||||
option is defined on the *operation type* level, which enables the creation of waves with distinct
|
||||
grouping criteria for each operation type.
|
||||
|
||||
To enable *Automatic Batches*, navigate to :menuselection:`Inventory app --> Configuration -->
|
||||
Operation Types`, and select the desired operation type (e.g. :guilabel:`Delivery`,
|
||||
:guilabel:`Pick`, etc). Under the :guilabel:`Batch & Wave Transfers` heading, tick the
|
||||
:guilabel:`Automatic Batches` checkbox.
|
||||
|
||||
Then, select one or more :guilabel:`Wave Grouping` criteria by ticking the appropriate checkbox.
|
||||
Even if more than one grouping option is selected, only one wave is created.
|
||||
|
||||
Automatic waves can be created based on the following criteria:
|
||||
|
||||
- :guilabel:`Product`: Split transfers by product, then group transfers that have the same product.
|
||||
- :guilabel:`Product Category`: Split transfers by product category, then group transfers that have
|
||||
the same product category.
|
||||
|
||||
.. image:: wave/auto-wave-grouping.png
|
||||
:alt: The Automatic batches feature with the wave grouping option for product category selected.
|
||||
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 13 KiB |
@@ -74,6 +74,21 @@ a form to provide details about the shipping provider, including:
|
||||
- :guilabel:`Free if order amount is above`: checking this box enables free shipping if the customer
|
||||
spends above the specified amount.
|
||||
|
||||
.. _inventory/shipping_receiving/availability:
|
||||
|
||||
Use the :guilabel:`Availability` tab to define conditions for the delivery method based on the
|
||||
order’s content or destination:
|
||||
|
||||
- :guilabel:`Countries`: Specify one or more countries where the method is available.
|
||||
- :guilabel:`Max Weight`: Set a maximum weight; the method is only available for orders below
|
||||
this limit.
|
||||
- :guilabel:`Max Volume`: Set a maximum volume; the method is only available for orders below
|
||||
this limit.
|
||||
- :guilabel:`Must Have Tags`: The method is available only if at least one product in the order
|
||||
has one of these tags.
|
||||
- :guilabel:`Excluded Tags`: The method is unavailable if at least one product in the order has
|
||||
one of these tags.
|
||||
|
||||
For examples on how to configure specific shipping methods, refer to the sections below.
|
||||
|
||||
.. _inventory/shipping/fixed:
|
||||
|
||||
@@ -6,8 +6,8 @@ Set up the *Bpost* shipping connector in Odoo to manage Bpost shipments to clien
|
||||
Odoo. To configure it, complete these steps:
|
||||
|
||||
#. Create a Bpost account.
|
||||
#. Get the :ref:`Account ID and passphrase <inventory/shipping/Bpost-account>`.
|
||||
#. Set up the shipping method in Odoo.
|
||||
#. Get the :ref:`Account ID and passphrase <inventory/shipping_receiving/bpost-account>`.
|
||||
#. :ref:`Set up the shipping method in Odoo <inventory/shipping_receiving/bpost-method>`.
|
||||
|
||||
Upon completion, it is possible to calculate the cost of shipping, based on package size and weight,
|
||||
have the charges applied directly to a Bpost business account, and automatically print Bpost
|
||||
@@ -19,8 +19,8 @@ tracking labels through Odoo.
|
||||
- :doc:`dhl_credentials`
|
||||
- :doc:`ups_credentials`
|
||||
|
||||
Bpost account setup
|
||||
===================
|
||||
Account setup
|
||||
=============
|
||||
|
||||
To begin, go to the `Bpost website <https://parcel.bpost.be/en/home/business>`_ to create, or log
|
||||
into, the company's Bpost business account. When creating the Bpost account, have the company's VAT
|
||||
@@ -30,25 +30,24 @@ Follow the website's steps to complete registration, and sign up for shipping se
|
||||
submits a request to enter a contractual business relationship between the company and Bpost.
|
||||
|
||||
.. important::
|
||||
Odoo **cannot** be integrated with `non-business Bpost
|
||||
<https://bpost.freshdesk.com/support/solutions/articles/174847-account-id-and-passphrase>`_
|
||||
accounts.
|
||||
Odoo **cannot** be integrated with `non-business Bpost <https://www.odoo.com/r/Z4wZ>`_ accounts.
|
||||
|
||||
After completing the setup, get the Bpost account ID and passphrase, by navigating to the
|
||||
:guilabel:`Shipping Manager` menu item.
|
||||
|
||||
.. _inventory/shipping/bpost-account:
|
||||
.. _inventory/shipping_receiving/bpost-account:
|
||||
|
||||
On the :guilabel:`Shipping Manager` page, go to the :guilabel:`Admin` tab, then the
|
||||
:guilabel:`General Settings` tab, to find the :guilabel:`Account ID` and :guilabel:`Passphrase`
|
||||
needed to configure Odoo's shipping method.
|
||||
|
||||
.. image:: bpost/credentials.png
|
||||
:align: center
|
||||
:alt: In the *Admin* tab, show the Account ID and Passphrase.
|
||||
|
||||
Configure Bpost shipping method
|
||||
===============================
|
||||
.. _inventory/shipping_receiving/bpost-method:
|
||||
|
||||
Shipping method configuration
|
||||
=============================
|
||||
|
||||
With those necessary credentials, configure the Bpost shipping method in Odoo by going to
|
||||
:menuselection:`Inventory app --> Configuration --> Shipping Methods`.
|
||||
@@ -69,23 +68,20 @@ Product`, refer to the :doc:`Configure third-party carrier <third_party_shipper>
|
||||
In the :guilabel:`Bpost Configuration` tab, complete the following fields:
|
||||
|
||||
- :guilabel:`Bpost Account Number` (required field): enter the company's unique :ref:`account ID
|
||||
<inventory/shipping/bpost-account>` from the Bpost website.
|
||||
<inventory/shipping_receiving/bpost-account>` from the Bpost website.
|
||||
- :guilabel:`Passphrase` (required field): enter the :ref:`passphrase
|
||||
<inventory/shipping/bpost-account>` from the Bpost website.
|
||||
<inventory/shipping_receiving/bpost-account>` from the Bpost website.
|
||||
- :guilabel:`Bpost Delivery Nature`: select either :guilabel:`Domestic` or :guilabel:`International`
|
||||
shipping services. Choosing :guilabel:`Domestic` shows the :guilabel:`Options` section, while
|
||||
:guilabel:`International` enables the :guilabel:`Bpost Shipment Type` and :guilabel:`Bpost Parcel
|
||||
Return Instructions` fields.
|
||||
- :guilabel:`Bpost Package Type`: select the type of shipping service from the drop-down menu.
|
||||
|
||||
For `domestic delivery
|
||||
<https://help.shipmondo.com/en/articles/6092265-bpost-belgium-parcel-types-and-requirements>`_,
|
||||
the options are: :guilabel:`bpack 24h Pro`, :guilabel:`bpack 24h business`, or :guilabel:`bpack
|
||||
Bus`.
|
||||
For `domestic delivery <https://www.odoo.com/r/uOVM>`_, the options are: :guilabel:`bpack 24h
|
||||
Pro`, :guilabel:`bpack 24h business`, or :guilabel:`bpack Bus`.
|
||||
|
||||
For `international delivery <https://www.bpost.be/en/business-parcels-send/international>`_, the
|
||||
options are: :guilabel:`bpack World Express Pro`, :guilabel:`bpack World Business`, or
|
||||
:guilabel:`bpack Europe Business`.
|
||||
For `international delivery <https://www.odoo.com/r/s6G>`_, the options are: :guilabel:`bpack
|
||||
World Express Pro`, :guilabel:`bpack World Business`, or :guilabel:`bpack Europe Business`.
|
||||
- :guilabel:`Bpost Shipment Type` (required field): for international deliveries, declare the type
|
||||
of goods in the package as :guilabel:`SAMPLE`, :guilabel:`GIFT`, :guilabel:`GOODS`,
|
||||
:guilabel:`DOCUMENTS`, or :guilabel:`OTHER`.
|
||||
@@ -105,6 +101,5 @@ For domestic deliveries, these features are available in the :guilabel:`Options`
|
||||
validating the delivery order.
|
||||
|
||||
.. image:: bpost/bpost.png
|
||||
:align: center
|
||||
:alt: Show Bpost shipping method.
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@ A *delivery slip* contains recipient and package details, usually placed inside
|
||||
package.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Picking list <inventory/warehouses_storage/barcode_picking>`
|
||||
- :doc:`Tracking label <../setup_configuration/labels>`
|
||||
|
||||
After :ref:`enabling the Delivery Slip setting <inventory/shipping_receiving/print_setup>` in the
|
||||
|
||||
@@ -38,7 +38,7 @@ The following is a list of available shipping connectors in Odoo:
|
||||
- United States of America
|
||||
* - :doc:`Sendcloud <sendcloud_shipping>`
|
||||
- Some European countries (see details below)
|
||||
* - Bpost
|
||||
* - :doc:`Bpost <bpost>`
|
||||
- Belgium
|
||||
* - Easypost
|
||||
- North America
|
||||
|
||||
@@ -26,19 +26,17 @@ In order to use reordering rules for a product, it must first be correctly confi
|
||||
navigating to :menuselection:`Inventory app --> Products --> Products`, then select an existing
|
||||
product, or create a new one by clicking :guilabel:`New`.
|
||||
|
||||
On the product form, under the :guilabel:`General Information` tab, make sure the :guilabel:`Product
|
||||
Type` is set to :guilabel:`Storable Product`. This is necessary because Odoo only tracks stock
|
||||
quantities for storable products, and this number is used to trigger reordering rules.
|
||||
On the product form, under the :guilabel:`General Information` tab, make sure the
|
||||
:guilabel:`Track Inventory` checkbox is ticked. This is necessary for Odoo to track the product's
|
||||
stock levels and trigger reordering rules.
|
||||
|
||||
.. image:: reordering_rules/product-type.png
|
||||
:align: center
|
||||
:alt: Set the Product Type as Storable.
|
||||
|
||||
Next, click on the :guilabel:`Inventory` tab and select one or more routes from the
|
||||
:guilabel:`Routes` section. Doing so tells Odoo which route to use to replenish the product.
|
||||
|
||||
.. image:: reordering_rules/select-routes.png
|
||||
:align: center
|
||||
:alt: Select one or more routes on the Inventory tab.
|
||||
|
||||
If the product is reordered using the :guilabel:`Buy` route, confirm that the :guilabel:`Can be
|
||||
@@ -47,7 +45,6 @@ appear. Click on the :guilabel:`Purchase` tab, and specify at least one vendor,
|
||||
they sell the product for, so that Odoo knows which company the product should be purchased from.
|
||||
|
||||
.. image:: reordering_rules/specify-vendor.png
|
||||
:align: center
|
||||
:alt: Specify a vendor and price on the Purchase tab.
|
||||
|
||||
If the product is replenished using the :guilabel:`Manufacture` route, it needs to have at least one
|
||||
@@ -59,30 +56,40 @@ If a :abbr:`BoM (Bill of Materials)` does not already exist for the product, sel
|
||||
:guilabel:`New` to configure a new :abbr:`BoM (Bill of Materials)`.
|
||||
|
||||
.. image:: reordering_rules/bom-smart-button.png
|
||||
:align: center
|
||||
:alt: The Bill of Materials smart button on a product form.
|
||||
|
||||
Create new reordering rules
|
||||
===========================
|
||||
|
||||
To create a new reordering rule, navigate to :menuselection:`Inventory app --> Configuration -->
|
||||
Reordering Rules`, then click :guilabel:`New`, and fill out the new line as follows:
|
||||
To create a new reordering rule, navigate to :menuselection:`Inventory app --> Operations -->
|
||||
Replenishment`, then click :guilabel:`New`, and fill out the following fields for the new reordering
|
||||
rule line item:
|
||||
|
||||
- :guilabel:`Product`: The product that is replenished by the rule.
|
||||
- :guilabel:`Location`: The location where the product is stored.
|
||||
- :guilabel:`Min Quantity`: The minimum quantity that can be forecasted without the rule being
|
||||
- :guilabel:`Min`: The minimum quantity that can be forecasted without the rule being
|
||||
triggered. When forecasted stock falls below this number, a replenishment order for the product is
|
||||
created.
|
||||
- :guilabel:`Max Quantity`: The maximum quantity that stock is replenished up to.
|
||||
- :guilabel:`Multiple Quantity`: Specify if the product should be replenished in batches of a
|
||||
certain quantity (e.g., a product could be replenished in batches of 20).
|
||||
- :guilabel:`Max`: The maximum quantity at which the stock is replenished.
|
||||
- :guilabel:`To Order`: The number of units, according to the *UoM*, that should be replenished for
|
||||
this reordering rule (e.g., a product could be replenished in batches of 20).
|
||||
- :guilabel:`UoM`: The unit of measure used for reordering the product. This value can simply be
|
||||
`Units` or a specific unit of measurement for weight, length, etc.
|
||||
|
||||
.. image:: reordering_rules/reordering-rule-form.png
|
||||
:align: center
|
||||
:alt: The form for creating a new reordering rule.
|
||||
|
||||
.. note::
|
||||
Two other fields are automatically populated: :guilabel:`On Hand` (the number of units currently
|
||||
available in inventory) and :guilabel:`Forecast` (the number of units expected to be available in
|
||||
inventory after all orders are taken into account). These numbers will only change when an
|
||||
:doc:`inventory adjustment <../inventory_management/count_products>` is made.
|
||||
|
||||
Also, additional fields can be accessed by clicking the :icon:`oi-settings-adjust`
|
||||
:guilabel:`(additional options slider icon)`. For example, :guilabel:`Multiple Quantity`
|
||||
specifies if the product should be replenished in batches of a certain quantity (e.g., a product
|
||||
could be replenished in batches of 20).
|
||||
|
||||
.. tip::
|
||||
Reordering rules can also be created from each product form. To do so, navigate to
|
||||
:menuselection:`Inventory app --> Products --> Products`, and select a product. Then, click the
|
||||
@@ -137,7 +144,6 @@ In the :guilabel:`Min Quantity` field and :guilabel:`Max Quantity` field, leave
|
||||
`0.00`. In the :guilabel:`To Order` field, enter a value of `1.00`.
|
||||
|
||||
.. image:: reordering_rules/001-rule.png
|
||||
:align: center
|
||||
:alt: A 0/0/1 reordering rule.
|
||||
|
||||
With the reordering rule configured using these values, each time an |SO| causes the forecasted
|
||||
@@ -183,7 +189,6 @@ titles, and enable the :guilabel:`Trigger` option from the additional options dr
|
||||
appears.
|
||||
|
||||
.. image:: reordering_rules/enable-trigger.png
|
||||
:align: center
|
||||
:alt: Enable the Trigger field by toggling it in the additional options menu
|
||||
|
||||
In the :guilabel:`Trigger` column, select :guilabel:`Auto` or :guilabel:`Manual`. Refer to the
|
||||
@@ -215,7 +220,6 @@ Automatic reordering rules, configured by setting the reordering rule's :guilabe
|
||||
:guilabel:`Forecast` is `55.00`, the reordering rule is **not** triggered.
|
||||
|
||||
.. image:: reordering_rules/auto.png
|
||||
:align: center
|
||||
:alt: Show automatic reordering rule from the Reordering Rule page.
|
||||
|
||||
If the :guilabel:`Buy` route is selected, then an :abbr:`RFQ (Request for Quotation)` is generated.
|
||||
@@ -252,7 +256,6 @@ When a product appears on the replenishment dashboard, clicking the :guilabel:`O
|
||||
generates the purchase or manufacturing order with the specified amounts :guilabel:`To Order`.
|
||||
|
||||
.. image:: reordering_rules/manual.png
|
||||
:align: center
|
||||
:alt: Click the Order Once button on the replenishment dashboard to replenish stock.
|
||||
|
||||
.. _inventory/product_management/visibility-days:
|
||||
@@ -284,11 +287,10 @@ advance.
|
||||
is February 27th.
|
||||
|
||||
.. image:: reordering_rules/need-dates.png
|
||||
:align: center
|
||||
:alt: Graphic representing when the need appears on the replenishment dashboard: Feb 27th.
|
||||
|
||||
To see the product on the replenishment dashboard for the current date, February 20, set
|
||||
the :guilabel:`Visibility Days` to `7.00`.
|
||||
To see the product on the replenishment dashboard for the current date, February 20, set the
|
||||
:guilabel:`Visibility Days` to `7.00`.
|
||||
|
||||
To determine the amount of visibility days needed to see a product on the replenishment dashboard,
|
||||
subtract *today's date* from the *date the need appears* on the replenishment dashboard.
|
||||
@@ -307,7 +309,6 @@ subtract *today's date* from the *date the need appears* on the replenishment da
|
||||
the need **not** appearing on the replenishment dashboard.
|
||||
|
||||
.. image:: reordering_rules/visibility-days.png
|
||||
:align: center
|
||||
:alt: Show the replenishment dashboard with the correct and incorrect visibility days set.
|
||||
|
||||
.. _inventory/product_management/route:
|
||||
@@ -332,7 +333,6 @@ Click inside of the column on the row of a reordering rule, and a drop-down menu
|
||||
routes for that rule. Select one to set it as the preferred route.
|
||||
|
||||
.. image:: reordering_rules/select-preferred-route.png
|
||||
:align: center
|
||||
:alt: Select a preferred route from the drop-down.
|
||||
|
||||
.. important::
|
||||
|
||||
@@ -62,10 +62,10 @@ The following are fields found on an event form:
|
||||
pop-up window appears, displaying various pre-configured language translation options available
|
||||
in the database.
|
||||
|
||||
- :guilabel:`Date`: when the event is scheduled to take place. This field is auto-populated, but
|
||||
modifiable, and is **required**.
|
||||
- :guilabel:`Timezone`: the corresponding timezone related to the event. This field is
|
||||
auto-populated, but modifiable, and is **required**.
|
||||
- :guilabel:`Date`: when the event is scheduled to take place (expressed in your local timezone).
|
||||
This field is auto-populated, but modifiable, and is **required**.
|
||||
- :guilabel:`Display Timezone`: the timezone in which the event dates/times will be displayed on the
|
||||
website. This field is auto-populated, but modifiable, and is **required**.
|
||||
- :guilabel:`Language`: designate a specific language for all event communications to be translated
|
||||
into, if necessary. This field is blank, by default, so if event-related communications are being
|
||||
sent to recipients who speak a different language, be sure to configure this field properly.
|
||||
|
||||
@@ -178,12 +178,15 @@ the **POS dashboard**.
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
point_of_sale/configuration
|
||||
point_of_sale/employee_login
|
||||
point_of_sale/receipts_invoices
|
||||
point_of_sale/preparation
|
||||
point_of_sale/combos
|
||||
point_of_sale/configuration
|
||||
point_of_sale/shop
|
||||
point_of_sale/restaurant
|
||||
point_of_sale/pricing
|
||||
point_of_sale/payment_methods
|
||||
point_of_sale/pos_based_marketing
|
||||
point_of_sale/online_food_delivery
|
||||
point_of_sale/reporting
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
====================
|
||||
Online food delivery
|
||||
====================
|
||||
|
||||
**UrbanPiper** is an order management system that integrates with multiple food delivery platforms.
|
||||
It consolidates orders from all connected platforms into a single interface, simplifying the
|
||||
delivery process.
|
||||
|
||||
Supported providers:
|
||||
|
||||
- `Careem <https://www.careem.com>`_
|
||||
- `Cari <https://getcari.com/>`_
|
||||
- `ChowNow <https://www.chownow.com>`_
|
||||
- `Deliveroo <https://deliveroo.co.uk/>`_
|
||||
- `DoorDash <https://www.doordash.com>`_
|
||||
- `EatEasy <https://www.eateasy.ae/dubai>`_
|
||||
- `Glovo <https://glovoapp.com>`_
|
||||
- `Grubhub <https://www.grubhub.com>`_
|
||||
- `HungryPanda <https://www.hungrypanda.co>`_
|
||||
- `HungerStation <https://hungerstation.com>`_
|
||||
- `Jahez <https://www.jahez.net/>`_
|
||||
- `Just Eat <https://www.just-eat.ie/>`_
|
||||
- `Mrsool <https://mrsool.co>`_
|
||||
- `Ninja <https://ananinja.com/>`_
|
||||
- `NoonFood <https://www.noon.com>`_
|
||||
- `Postmates <https://www.postmates.com>`_
|
||||
- `Rafeeq <https://www.gorafeeq.com/en>`_
|
||||
- `SkipTheDishes <https://www.skipthedishes.com/>`_
|
||||
- `Swiggy <https://www.swiggy.com>`_
|
||||
- `Talabat <https://www.talabat.com>`_
|
||||
- `UberEats <https://www.ubereats.com>`_
|
||||
- `Zomato <https://www.zomato.com>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. _online_food_delivery/credentials:
|
||||
|
||||
UrbanPiper credentials
|
||||
----------------------
|
||||
|
||||
#. Get your Atlas credentials:
|
||||
|
||||
#. Go to the :ref:`POS settings <configuration/settings>`.
|
||||
#. Scroll down to the :guilabel:`Food Delivery Connector` section.
|
||||
#. Click :guilabel:`Fill this form to get Username & Api key` and fill out the survey.
|
||||
#. `Go to your Atlas account <https://atlas.urbanpiper.com>`_ and retrieve your API key and username
|
||||
by navigating to :menuselection:`Settings --> API Access`.
|
||||
|
||||
.. image:: online_food_delivery/urban-piper-api.png
|
||||
:alt: Atlas API access
|
||||
|
||||
Point of Sale
|
||||
-------------
|
||||
|
||||
#. Enable the :guilabel:`Urban Piper` setting:
|
||||
|
||||
#. Go to the :ref:`POS settings <configuration/settings>`.
|
||||
#. Scroll down to the :guilabel:`Food Delivery Connector` section.
|
||||
#. Check the :guilabel:`Urban Piper` setting.
|
||||
|
||||
#. Set up UrbanPiper:
|
||||
|
||||
#. Fill in the :guilabel:`Username` and :guilabel:`Api Key` fields with your :ref:`UrbanPiper
|
||||
credentials <online_food_delivery/credentials>`.
|
||||
#. Select the desired delivery providers in the :guilabel:`Food Delivery Platforms` field under
|
||||
the :guilabel:`Urban Piper Location` section (i.e., Zomato, Uber Eats).
|
||||
#. Save the settings.
|
||||
#. Click the :guilabel:`+ Create Store` button. Doing so creates a new location on the UrbanPiper
|
||||
Atlas platform.
|
||||
|
||||
.. note::
|
||||
- The :guilabel:`Pricelist` and :guilabel:`Fiscal Position` fields are automatically selected
|
||||
after saving.
|
||||
- A successful store creation triggers a notification.
|
||||
- The store creation process may take 2–3 minutes to reflect changes on the UrbanPiper Atlas
|
||||
platform.
|
||||
- The store is automatically named after your point of sale name.
|
||||
|
||||
.. image:: online_food_delivery/create-store.png
|
||||
:alt: Food delivery connector settings
|
||||
|
||||
Products
|
||||
--------
|
||||
|
||||
To make products available individually,
|
||||
|
||||
#. Go to :menuselection:`Point of Sale --> Products --> Products`.
|
||||
#. Select any product to open its product form.
|
||||
#. Go to the :guilabel:`Point of Sale` tab.
|
||||
#. Complete the :guilabel:`Urban Piper` section:
|
||||
|
||||
- Fill in the :guilabel:`Available on Food Delivery` with the desired POS.
|
||||
- Optionally, set up the :guilabel:`Meal Type` field and enable the :guilabel:`Is Recommended`
|
||||
and :guilabel:`Is Alcoholic` buttons.
|
||||
|
||||
.. image:: online_food_delivery/product-form.png
|
||||
:alt: where to make a single product available for delivery
|
||||
|
||||
To make multiple products available for food delivery at once,
|
||||
|
||||
#. Go to :menuselection:`Point of Sale --> Products --> Products`.
|
||||
#. Click the list icon (:icon:`oi-view-list`) to switch to the list view.
|
||||
#. Select the products.
|
||||
#. Enter the desired POS in the :guilabel:`Available on Food Delivery` column.
|
||||
|
||||
.. image:: online_food_delivery/product-list.png
|
||||
:alt: Product list
|
||||
|
||||
Synchronization
|
||||
---------------
|
||||
|
||||
To make products available on food delivery platforms, synchronize with your UrbanPiper account:
|
||||
|
||||
#. Go to the :ref:`POS settings <configuration/settings>`.
|
||||
#. Scroll down the :guilabel:`Food Delivery Connector` section.
|
||||
#. Click the :guilabel:`Sync Menu` button.
|
||||
|
||||
- The :guilabel:`Last Sync on` timestamp below the :guilabel:`Create Store` and :guilabel:`Sync
|
||||
Menu` buttons updates.
|
||||
|
||||
.. note::
|
||||
- A successful synchronization triggers a notification.
|
||||
- The synchronization process may take 2–3 minutes to reflect changes on the UrbanPiper Atlas
|
||||
platform.
|
||||
|
||||
Go live
|
||||
-------
|
||||
|
||||
#. `Go to the Locations tab <https://atlas.urbanpiper.com/locations>`_ of your Atlas account.
|
||||
#. Select the location to activate, then click :guilabel:`Request to go Live`.
|
||||
|
||||
.. image:: online_food_delivery/go-live.png
|
||||
:alt: Request to go live button in the locations tab of the Atlas account
|
||||
|
||||
#. In the popup window:
|
||||
|
||||
#. Select the platform(s) to activate and click :guilabel:`Next`.
|
||||
#. Enter the :guilabel:`Platform ID` and :guilabel:`Platform URL` in the corresponding fields to
|
||||
establish the connection between the platform and UrbanPiper.
|
||||
#. Click the :guilabel:`Request to Go Live` button.
|
||||
|
||||
.. image:: online_food_delivery/go-live-parameters.png
|
||||
:alt: Go live parameters
|
||||
|
||||
.. note::
|
||||
To find the location's :guilabel:`Platform ID` and :guilabel:`Platform URL`,
|
||||
|
||||
#. Click the location to open its setup form.
|
||||
#. The location's parameters are available in the :guilabel:`HUB` tab.
|
||||
#. Verify that your location is live:
|
||||
|
||||
#. `Go to the Locations tab <https://atlas.urbanpiper.com/locations>`_ of your Atlas account.
|
||||
#. Select any provider in the :guilabel:`Assoc. platform(s)` column to review the status of that
|
||||
platform for this location.
|
||||
|
||||
Order flow
|
||||
==========
|
||||
|
||||
An order placed via the configured delivery platform triggers a notification. To manage these
|
||||
orders, open the orders' list view by:
|
||||
|
||||
#. Clicking :guilabel:`Review Orders` on the notification popup.
|
||||
#. Clicking the bag-shaped icon for online orders and :guilabel:`New`.
|
||||
|
||||
.. image:: online_food_delivery/cart-button.png
|
||||
:alt: Cart button
|
||||
|
||||
.. note::
|
||||
- Clicking this icon displays the number of orders at each stage: :guilabel:`New`,
|
||||
:guilabel:`Ongoing`, and :guilabel:`Done`.
|
||||
- The :guilabel:`New` button indicates newly placed orders, :guilabel:`Ongoing` is for
|
||||
accepted orders, and :guilabel:`Done` is for orders ready to be delivered.
|
||||
|
||||
Then,
|
||||
|
||||
#. Select the desired order.
|
||||
#. Click the :guilabel:`Accept` button.
|
||||
#. When an order is accepted, its :guilabel:`Order Status` switches from :guilabel:`Placed` to
|
||||
:guilabel:`Acknowledged` and is automatically displayed on the preparation display.
|
||||
|
||||
When the order is ready,
|
||||
|
||||
#. Open the orders' list view.
|
||||
#. Select the order.
|
||||
#. Click the :guilabel:`Mark as ready` button. Its :guilabel:`Order Status` switches from
|
||||
:guilabel:`Acknowledged` to :guilabel:`Food Ready`, and its :guilabel:`Status` switches from
|
||||
:guilabel:`Ongoing` to :guilabel:`Paid`.
|
||||
|
||||
Order rejection
|
||||
---------------
|
||||
|
||||
Sometimes, the shop or restaurant may want to **reject** an order. In this case, open the orders'
|
||||
list view,
|
||||
|
||||
#. Select the desired order.
|
||||
#. Click the :guilabel:`Reject` button.
|
||||
#. Select one of the reasons from the popup window.
|
||||
|
||||
.. image:: online_food_delivery/reject-order.png
|
||||
:alt: Reject order pop-up
|
||||
|
||||
.. important::
|
||||
**Swiggy** orders cannot be directly rejected. Attempting to reject one prompts Swiggy customer
|
||||
support to contact the restaurant. Similarly, **Deliveroo**, **JustEat**, and **HungerStation**
|
||||
do not allow order rejection. Always follow the respective provider's guidelines for handling
|
||||
such cases.
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
120
content/applications/sales/point_of_sale/pos_based_marketing.rst
Normal file
@@ -0,0 +1,120 @@
|
||||
==================
|
||||
Marketing features
|
||||
==================
|
||||
|
||||
Use your POS system to engage with customers directly by sending them promotional offers via email
|
||||
or WhatsApp.
|
||||
|
||||
Storing contact details
|
||||
=======================
|
||||
|
||||
This feature requires your customer's contact details, either their email address or phone number.
|
||||
|
||||
- **Email addresses**: automatically collected and saved in POS orders when sending a receipt by
|
||||
email.
|
||||
- **Phone numbers**: to store phone numbers when sending receipts on WhatsApp or by SMS,
|
||||
|
||||
#. Go to :menuselection:`Configuration --> Settings` and scroll to the :guilabel:`Bills &
|
||||
Receipts` section;
|
||||
#. Activate the :guilabel:`WhatsApp Enabled` or :guilabel:`SMS Enabled` option(s).
|
||||
|
||||
.. image:: pos_based_marketing/sms-whatsapp-enabled.png
|
||||
:alt: setting to enable to store phone numbers when sending receipts
|
||||
|
||||
If a customer’s contact information is missing, it will be automatically saved in POS orders when
|
||||
the receipt is sent via email, SMS, or WhatsApp.
|
||||
|
||||
.. tip::
|
||||
From a POS order form, navigate to the :guilabel:`Contact Info` category under the
|
||||
:guilabel:`Extra Info` tab, then click the email icon or whatsapp icon to send standalone
|
||||
marketing messages.
|
||||
|
||||
.. image:: pos_based_marketing/standalone-marketing-from-pos.png
|
||||
:alt: pos orders form's standalone marketing message option
|
||||
|
||||
Email marketing
|
||||
===============
|
||||
|
||||
To send marketing emails to your customers from POS orders,
|
||||
|
||||
#. Go to :menuselection:`Point of Sale --> Orders --> Orders`;
|
||||
#. Select the orders;
|
||||
#. Click :guilabel:`Actions`, then :guilabel:`Send Email` from the dropdown menu.
|
||||
|
||||
Doing so opens an email composing form. Fill it in and hit :guilabel:`Send`.
|
||||
|
||||
.. image:: pos_based_marketing/mail-composer.png
|
||||
:alt: mail composer view
|
||||
:scale: 50 %
|
||||
|
||||
.. tip::
|
||||
- Save some time by saving your content as a template. Click the vertical ellipsis button and
|
||||
select your template under the :guilabel:`Insert Template` section.
|
||||
- You can also save your content as template for later use. Click the vertical ellipsis button
|
||||
and select :guilabel:`Save as Template`.
|
||||
|
||||
.. note::
|
||||
- Fill in the :guilabel:`Mass Mailing Name` field to create a mass mailing and track its results
|
||||
in the :doc:`Email Marketing app <../../marketing/email_marketing>`.
|
||||
- If an email address is not related to an existing customer, a new customer is automatically
|
||||
created when sending marketing emails.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Use the email marketing app for more advanced marketing features
|
||||
<../../marketing/email_marketing>`.
|
||||
|
||||
Whatsapp marketing
|
||||
==================
|
||||
|
||||
.. _pos_based_marketing/whatsapp_config:
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
You first need to enable the related server action to send WhatsApp marketing messages from your POS
|
||||
using the phone numbers collected from POS orders. To do so,
|
||||
|
||||
#. Go to the WhatsApp application;
|
||||
#. Create a new :ref:`WhatsApp template <WhatsApp/templates>`;
|
||||
#. Configure the fields:
|
||||
|
||||
- :guilabel:`Applies to` field set to :guilabel:`Point of Sale Orders`;
|
||||
- :guilabel:`Category` field to :guilabel:`Marketing`;
|
||||
- :guilabel:`Phone Field` to either :guilabel:`Mobile` or :guilabel:`Customer > Phone`.
|
||||
#. Click :guilabel:`Submit for Approval`;
|
||||
#. Once approved, click the :guilabel:`Allow Multi` button to create a server action in the POS
|
||||
orders list view.
|
||||
|
||||
.. image:: pos_based_marketing/whatsapp-template.png
|
||||
:alt: approved and configured for marketing uses whatsapp template
|
||||
|
||||
.. warning::
|
||||
If you modify the template's content, you must request for approval again, as its status returns
|
||||
to the :guilabel:`Draft` state.
|
||||
|
||||
.. seealso::
|
||||
:doc:`WhatsApp configuration <../../productivity/whatsapp>`
|
||||
|
||||
Send WhatsApp marketing messages
|
||||
--------------------------------
|
||||
|
||||
#. Go to :menuselection:`Point of Sale --> Orders --> Orders`;
|
||||
#. Select the orders;
|
||||
#. Click :guilabel:`Actions`, then :guilabel:`WhatsApp Message` from the dropdown menu.
|
||||
|
||||
Doing so opens a WhatsApp message composing form. Select the desired marketing template in the
|
||||
:guilabel:`Template` field and hit :guilabel:`Send Message`.
|
||||
|
||||
.. image:: pos_based_marketing/whatsapp-composer.png
|
||||
:alt: whatsapp composer view
|
||||
|
||||
.. note::
|
||||
- To use WhatsApp marketing in the Point of Sale, approved marketing templates must have the
|
||||
:guilabel:`Allow Multi` option enabled and :guilabel:`Point of Sale Orders` selected in the
|
||||
:guilabel:`Applies to` field.
|
||||
- If the server action is displayed without a properly configured template, an error message
|
||||
appears. Click :guilabel:`Configure Templates` and complete the :ref:`WhatsApp setup
|
||||
<pos_based_marketing/whatsapp_config>` steps.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../productivity/whatsapp`
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 24 KiB |
109
content/applications/sales/point_of_sale/preparation.rst
Normal file
@@ -0,0 +1,109 @@
|
||||
===================
|
||||
Preparation display
|
||||
===================
|
||||
|
||||
The preparation display feature allows you to handle POS orders requiring preparation. Concretely,
|
||||
|
||||
- **For retail**: The preparation team is notified after a payment is completed at the POS to
|
||||
gather the purchased items for customer pickup.
|
||||
- **For restaurants**: POS orders inform the kitchen of the meals to be prepared.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To enable the preparation display feature,
|
||||
|
||||
#. Go to the :ref:`POS settings <configuration/settings>`.
|
||||
#. Scroll down to the :guilabel:`Preparation` section.
|
||||
#. Check the :guilabel:`Preparation Display` option.
|
||||
|
||||
.. image:: preparation/preparation-setting.png
|
||||
:alt: Setting to enable the preparation display feature
|
||||
:scale: 90 %
|
||||
|
||||
To create and set up a preparation display,
|
||||
|
||||
#. Go to :menuselection:`Point of Sale --> Orders --> Preparation Display`
|
||||
#. Click :guilabel:`New`.
|
||||
#. Give the display a descriptive :guilabel:`Name` (e.g., `Main Kitchen`, `Bar`)
|
||||
#. Set it up:
|
||||
|
||||
#. :guilabel:`Point of Sale`: Select the POS that sends orders to this display.
|
||||
#. :guilabel:`Product categories`: Specify the POS :guilabel:`Product categories` sent to this
|
||||
display.
|
||||
#. :guilabel:`Stages`: Define the steps required for the orders to be ready.
|
||||
|
||||
- Click :guilabel:`Add a line` to add a stage.
|
||||
- Assign specific colors to each stage for clarity (optional).
|
||||
- Define an :guilabel:`Alert timer (min)` for each stage to indicate the expected processing
|
||||
time.
|
||||
|
||||
.. image:: preparation/display-form.png
|
||||
:alt: preparation display set-up form
|
||||
:scale: 85 %
|
||||
|
||||
.. note::
|
||||
To edit a pre-existing preparation display, click the vertical ellipsis button
|
||||
(:icon:`fa-ellipsis-v`) on the display's card and select :guilabel:`Configure`.
|
||||
|
||||
Practical application
|
||||
=====================
|
||||
|
||||
Go to :menuselection:`Point of Sale --> Orders --> Preparation Display` to get an overview of all
|
||||
your displays.
|
||||
|
||||
.. image:: preparation/display-card.png
|
||||
:alt: Kanban view of the preparation display
|
||||
:scale: 85 %
|
||||
|
||||
The display card shows:
|
||||
|
||||
- The configured stages.
|
||||
- The number of orders currently :guilabel:`In progress`.
|
||||
- The :guilabel:`Average time` employees usually take to complete an order.
|
||||
|
||||
.. tip::
|
||||
Click the :guilabel:`Kitchen Display` app icon on your Odoo Dashboard for quicker access.
|
||||
|
||||
Using the preparation display
|
||||
-----------------------------
|
||||
|
||||
To access the preparation display, click :guilabel:`Preparation Screen`. This interface, designed
|
||||
for employees, shows:
|
||||
|
||||
- **Stages and order count**: Displays the progress of orders across stages such as `To prepare`,
|
||||
`Ready`, and `Completed`, along with the number of orders in each stage.
|
||||
- **Ordered products by category**: Lists all items in progress, grouped by POS categories (e.g.,
|
||||
`Drinks`, `Food`).
|
||||
- **Order cards**: Summarizes individual orders, including:
|
||||
|
||||
- Associated tables and order numbers.
|
||||
- Status, such as `Ready`, highlighted with the defined colors.
|
||||
- Waiting time, with visual indicators.
|
||||
|
||||
.. note::
|
||||
The duration indicator turns red if the elapsed time exceeds the predefined alert time.
|
||||
|
||||
.. image:: preparation/preparation-display.png
|
||||
:alt: the preparation display interface with orders to process.
|
||||
:scale: 80 %
|
||||
|
||||
To update order progress:
|
||||
|
||||
- Click items on the order card to cross them off individually.
|
||||
- Click the order card itself to mark all items at once.
|
||||
- The card automatically moves to the next stage once every item is crossed off.
|
||||
- Click :icon:`fa-undo` :guilabel:`Recall` to move an order back to the previous stage if you
|
||||
mistakenly sent it to the next stage.
|
||||
|
||||
Customer display
|
||||
----------------
|
||||
|
||||
In parallel, click :guilabel:`Order Status Screen` to open the customer interface. This interface,
|
||||
designed for customers, provides an overview of orders that are:
|
||||
|
||||
- :guilabel:`Ready` for pickup.
|
||||
- :guilabel:`Almost there`, indicating they are taken care of.
|
||||
|
||||
.. note::
|
||||
The order number can be found at the top of the customer's receipt.
|
||||
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 10 KiB |