Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6594917564 | |||
| c792d379de | |||
| 989f2faf9a | |||
| a9ff26efdd | |||
| 6051f2f638 | |||
| 565022703a | |||
| 8b1f8e1fc6 | |||
| f3d8007c29 | |||
| e241c7a088 | |||
| 8750d5f859 | |||
| a541383a1d | |||
| 60a0d4cdb5 | |||
| 88e1bee845 | |||
| 654970a436 | |||
| 0a329f11dc | |||
| 9917949408 | |||
| c4e0f35aa9 | |||
| 90048d2484 | |||
| cc226a7e1d | |||
| 9c5f9f7aa6 | |||
| 8f77236070 | |||
| 39f6f220e1 | |||
| e6bc52d641 | |||
| 3ab129a370 | |||
| d690755327 | |||
| bf6fe2f147 | |||
| cc6306277b | |||
| abdcb372ba | |||
| dfe54bdce3 | |||
| 2d721c04eb | |||
| 40c830298c | |||
| b22893c1bd | |||
| 3bb0b21494 | |||
| 02bcc265fb | |||
| 78b9c43030 | |||
| 04ac6de366 | |||
| 7c6aa7f2c4 | |||
| b78d7b86e6 | |||
| 983346ae6b | |||
| 84abf415bc | |||
| a37453b18f | |||
| fc83a645cf |
@@ -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",
|
||||
|
||||
@@ -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`
|
||||
@@ -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
|
||||
|
||||
@@ -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:`Print & 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
|
||||
==========
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -284,10 +284,10 @@ Transfer goods
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
*Transfers* are warehouse operations that involve the movement of goods. Examples of transfers
|
||||
include
|
||||
:doc:`deliveries and receipts <../../shipping_receiving/daily_operations/receipts_delivery_one_step>`,
|
||||
as well as :doc:`internal transfers <../../warehouses_storage/replenishment/resupply_warehouses>`
|
||||
between warehouses.
|
||||
include :doc:`deliveries and receipts
|
||||
<../../shipping_receiving/daily_operations/receipts_delivery_one_step>`, as well as
|
||||
:doc:`internal transfers <../../warehouses_storage/replenishment/resupply_warehouses>` between
|
||||
warehouses.
|
||||
|
||||
When creating a transfer for tracked products in the **Inventory** app, transfers modify the on-hand
|
||||
quantity at each location. For example, transferring five units from the internal location
|
||||
|
||||
@@ -339,6 +339,42 @@ Choose :guilabel:`Use Existing ones` if only existing lot numbers can be selecte
|
||||
|
||||
.. _inventory/product_management/lot-traceability:
|
||||
|
||||
Display lots on delivery slips
|
||||
==============================
|
||||
|
||||
When selling products tracked with lots, it is possible to include the lot numbers on the delivery
|
||||
slips sent to customers. This can be helpful to customers in cases where lot numbers are needed,
|
||||
such as filing an RMA or repair request, or registering the product.
|
||||
|
||||
To include lot 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, lot numbers
|
||||
are listed on delivery slips for products tracked by lots, once the delivery order is validated.
|
||||
|
||||
To view lot 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 lots.
|
||||
|
||||
To view the lot numbers of products included in the order, make sure the :guilabel:`Operations` tab
|
||||
is selected, then click the :icon:`oi-settings-adjust` :guilabel:`(adjust)` button 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 lot 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
|
||||
:guilabel:`Print --> Delivery Slip`. The delivery slip is then downloaded. Open the delivery slip
|
||||
using the device's browser or file manager. Lot numbers are listed next to their respective products
|
||||
in the :guilabel:`Lot/Serial Number` column.
|
||||
|
||||
.. image:: lots/delivery-slip.png
|
||||
:alt: The order lines section of a delivery slip, showing a product and its serial number.
|
||||
|
||||
Traceability
|
||||
============
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,98 +1,227 @@
|
||||
======================
|
||||
Inventory aging report
|
||||
======================
|
||||
=========================
|
||||
Stock valuation dashboard
|
||||
=========================
|
||||
|
||||
.. |SVLs| replace:: :abbr:`SVLs (stock valuation layers)`
|
||||
|
||||
The inventory aging report evaluates all items in stock, providing insights into potentially sunken
|
||||
purchase costs and delays in profitability.
|
||||
When a company has physical assets, such as inventory, they often want to know approximately how
|
||||
much has been spent on these goods, or how much they are worth at the moment. This process of
|
||||
assigning a monetary value to account for inventory is known as *stock valuation*.
|
||||
|
||||
Create customized pivot tables to analyze product, operation types, month, or company breakdowns.
|
||||
This helps identify products in stock that are at risk of passing their expiration or viability
|
||||
dates, or instances of rot/decay for fast-expiring items.
|
||||
This value is often reported for accounting purposes. For instance, an insurance company may want to
|
||||
know the value of goods stored in a warehouse, in the event of a flood or fire.
|
||||
|
||||
:doc:`Stock valuation <../../product_management/inventory_valuation/using_inventory_valuation>`
|
||||
typically utilizes one of two accounting systems:
|
||||
|
||||
- **Perpetual**: The inventory is constantly (perpetually) being updated, and the value is
|
||||
constantly changing.
|
||||
- **Periodic**: The inventory value is checked on an occasional (periodic) basis, and the value is
|
||||
set at this occasional time.
|
||||
|
||||
Using :ref:`tracked inventory <inventory/product_management/tracking-inventory>` in Odoo
|
||||
necessitates a *perpetual* inventory accounting system because of the need to know when and where
|
||||
inventory exists, and how much of it is available or forecasted. There are a few common :ref:`stock
|
||||
valuation methods <inventory/warehouses_storage/costing_methods>` used in Odoo: *standard price*,
|
||||
*average cost* (AVCO), and *first in, first out* (FIFO) accounting. It is important to know that the
|
||||
valuation method chosen for a product impacts the calculation of several fields in the stock
|
||||
valuation reports.
|
||||
|
||||
Open the dashboard
|
||||
==================
|
||||
|
||||
Odoo's *Stock Valuation* dashboard displays the financial value of all tracked inventory, according
|
||||
to each product's stock valuation method. This report can provide insights into potential issues in
|
||||
the supply chain, such as sunken purchase costs or delays in profitability. To access the dashboard,
|
||||
go to :menuselection:`Inventory app --> Reporting --> Valuation`.
|
||||
|
||||
.. important::
|
||||
The :menuselection:`Reporting`` menu in **Inventory** is only accessible to users with
|
||||
:doc:`admin access <../../../../general/users/access_rights>`.
|
||||
|
||||
This dashboard has three different views, or inventory reports — :ref:`list view
|
||||
<inventory/warehouses_storage/valuation-report>` (i.e. the default stock valuation report),
|
||||
:ref:`pivot view <inventory/warehouses_storage/aging-report>` (i.e. the stock aging report), and
|
||||
:ref:`graph view <inventory/warehouses_storage/graph-view>`. Each view can be customized with
|
||||
different fields to break down inventory valuation by product, operation type, date, or company.
|
||||
|
||||
All three views can be filtered by various fields. To apply filters, click into the search bar at
|
||||
the top of the report, or click the drop-down arrow next to it. For example, selecting the filter
|
||||
:guilabel:`Has Remaining Qty` will show only products that are currently in stock.
|
||||
|
||||
.. _inventory/warehouses_storage/valuation-report:
|
||||
|
||||
List view: stock valuation
|
||||
==========================
|
||||
|
||||
By default, the :guilabel:`Stock Valuation` dashboard displays in *list view*, represented by the
|
||||
:icon:`oi-view-list` :guilabel:`(list)` icon. This report shows a detailed record of stock movements
|
||||
and their valuations.
|
||||
|
||||
Configure
|
||||
---------
|
||||
|
||||
The following columns are displayed by default:
|
||||
|
||||
- :guilabel:`Date`: the date and time when the :ref:`stock move <inventory/warehouses_storage/svl>`
|
||||
was created. The valuation report is sorted by this field by default, emphasizing the importance
|
||||
of time when valuing inventory. To sort the report by a different column, simply click on the
|
||||
column title.
|
||||
- :guilabel:`Reference`: the reference document associated with this stock move (e.g., a warehouse
|
||||
receipt, a delivery order, or a manual inventory adjustment).
|
||||
- :guilabel:`Product`: the product that is being moved and valued.
|
||||
- :guilabel:`Quantity`: the number of units by which this product's stock has increased or
|
||||
decreased in this particular stock move.
|
||||
- :guilabel:`Total Value`: the value of the product's stock in this particular stock move,
|
||||
calculated by multiplying the :guilabel:`Quantity` and :guilabel:`Unit Value`.
|
||||
|
||||
.. note::
|
||||
The *Reporting* menu in *Inventory* is only accessible to users with :doc:`admin access
|
||||
<../../../../general/users/access_rights>`.
|
||||
If a :guilabel:`Reference` document includes several goods, there will be a separate line item
|
||||
generated on the report for each good.
|
||||
|
||||
To access the inventory aging report, go to :menuselection:`Inventory app --> Reporting -->
|
||||
Inventory Aging`.
|
||||
There are additional fields that can be added to this view to provide more insight into the stock's
|
||||
valuation. To add fields, click the :icon:`oi-settings-adjust` :guilabel:`(adjust)` icon, and select
|
||||
the desired fields:
|
||||
|
||||
- :guilabel:`Lot/Serial Number`: the uniquely identifying lot or serial number for this product.
|
||||
- :guilabel:`Company`: for businesses that operate with multiple companies, this field displays the
|
||||
company by which this stock move took place.
|
||||
- :guilabel:`Remaining Quantity`: the number of units remaining for this valuation of the product,
|
||||
after demand has been accounted for (even from other stock moves). This field can be especially
|
||||
helpful for :abbr:`FIFO (First In, First Out)` and :abbr:`AVCO (Average Cost)` accounting, as it
|
||||
conveys which units of stock came into a warehouse first and the value of said stock.
|
||||
- :guilabel:`Unit Value`: the cost of one unit of the product for the company (**not** the price to
|
||||
consumers).
|
||||
- :guilabel:`Description`: a description of the reason for this stock valuation (typically, a stock
|
||||
move has occurred). By default, this field is set as the concatenation of the
|
||||
:guilabel:`Reference` and :guilabel:`Product` fields. However, the field may also display other
|
||||
important messages for this line item, such as a note stating that the line item is an adjustment
|
||||
due to a change in the product's inventory valuation method.
|
||||
- :guilabel:`Remaining Value`: the value of this product's current stock levels for this particular
|
||||
stock move, after demand has been accounted for. Along with :guilabel:`Remaining Quantity`, this
|
||||
field can be especially helpful for :abbr:`FIFO (First In, First Out)` and
|
||||
:abbr:`AVCO (Average Cost)` accounting, as they convey which stock came into a warehouse first and
|
||||
the value of said stock.
|
||||
|
||||
.. tip::
|
||||
Some of these settings may not appear unless first enabled in Odoo's **:doc:`Settings
|
||||
<../../../general>`** application.
|
||||
|
||||
.. image:: aging/stock-valuation-report.png
|
||||
:alt: Stock valuation report.
|
||||
|
||||
.. _inventory/warehouses_storage/svl:
|
||||
|
||||
Stock valuation layers (SVLs)
|
||||
-----------------------------
|
||||
|
||||
Each line item in the :guilabel:`Stock Valuation` report represents a record in Odoo's system known
|
||||
as a *stock valuation layer (SVL)*. :abbr:`SVLs (stock move layers)` are generated when products
|
||||
move in a way that impacts their stock valuation. Specifically, the stock moves that generate
|
||||
:abbr:`SVLs (stock move layers)` are warehouse receipts, deliveries, dropshipping orders, and
|
||||
dropshipping returns. These stock moves must first be validated (by clicking the
|
||||
:guilabel:`Validate` button) for the :abbr:`SVL (stock move layer)` to be created.
|
||||
|
||||
If a product's inventory valuation method changes on the product form, new line items are generated
|
||||
on the :guilabel:`Stock Valuation` report to reflect the resulting :abbr:`SVLs (stock move layers)`.
|
||||
For example, if the valuation method changes from *standard price* to either :abbr:`AVCO (Average
|
||||
Cost)` or :abbr:`FIFO (First In, First Out)` accounting, *revaluation entries* will be
|
||||
automatically posted to reflect the change in pricing for goods that remain in stock. One entry will
|
||||
be negative to "remove" the old pricing, and the second entry will be positive to record the new
|
||||
pricing. These entries are connected to journal entries in Odoo's **Accounting** app.
|
||||
|
||||
Below is an example of what the :guilabel:`Stock Valuation` table shows when a few stock moves have
|
||||
occurred for a product using standard price accounting.
|
||||
|
||||
.. image:: aging/before-val-method-change.png
|
||||
:alt: Stock valuation table in standard price accounting.
|
||||
|
||||
Conversely, the following image depicts what the *Stock Valuation* Report table might look like
|
||||
after a product has switched from standard price to :abbr:`FIFO (First In, First Out)` accounting.
|
||||
|
||||
.. image:: aging/after-val-method-change.png
|
||||
:alt: Stock valuation table after switching from standard price to FIFO accounting.
|
||||
|
||||
.. example::
|
||||
The :guilabel:`Remaining Value` and :guilabel:`Remaining Quantity` fields are derived from what
|
||||
occurs at the :abbr:`SVL (stock move layer)` level in Odoo and, as such, are better understood
|
||||
with an example.
|
||||
|
||||
Frankie's Consignment Shop buys sweaters at the cost, or :guilabel:`Unit Value`, of `5.00`
|
||||
dollars. For the first time, Frankie's purchases and receives a :guilabel:`Quantity` of `100.00`
|
||||
sweaters in one stock move, then re-sells and delivers `-10.00` sweaters in a second stock move.
|
||||
|
||||
In the first stock move line item, the :guilabel:`Remaining Quantity` will change from `100.00`
|
||||
to `90.00`, once the second stock move is recorded. This change reflects that, although 100
|
||||
sweaters were originally purchased, only 90 of those sweaters remain in stock and should be
|
||||
counted in the valuation. Similarly, the :guilabel:`Remaining Value` will drop from `$500.00` to
|
||||
`$450.00`. The :guilabel:`Total Value` will remain at `$500.00`, regardless of subsequent
|
||||
transactions.
|
||||
|
||||
On the other hand, the :guilabel:`Remaining Quantity` of the second stock move line item will be
|
||||
recorded and remain at `0.00` because the quantity of `-10.00` was sold. In the system, because
|
||||
the :abbr:`SVL (stock move layer)` was a sale, there is no stock left that needs to be valued
|
||||
from that transaction.
|
||||
|
||||
.. image:: aging/remaining-val-quant.png
|
||||
:alt: Remaining value and quantity are calculated based on :abbr:`SVLs (stock move layers)`.
|
||||
|
||||
Change the valuation date
|
||||
-------------------------
|
||||
|
||||
To see the valuation of stock moves at a specific date and time, click the :guilabel:`Valuation At
|
||||
Date` button, located in the top-left corner of the :guilabel:`Stock Valuation` page. The report
|
||||
will show the :guilabel:`Quantity` and :guilabel:`Total Value` of each stock move.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Remaining Quantity` and :guilabel:`Remaining Value` of the stock moves will *not*
|
||||
be point-in-time for any dates chosen in the past. The stock moves shown when selecting a past
|
||||
date will still display the *current on-hand quantity and value* of the products.
|
||||
|
||||
.. example::
|
||||
A business has 100 sofas in stock on January 1st and sells 20 of those sofas on February 1st. The
|
||||
:guilabel:`Remaining Quantity` of the :abbr:`SVL (stock move layer)` will drop from `100.00` to
|
||||
`70.00` on February 1st. If no other stock moves take place, and on February 1st, the
|
||||
:guilabel:`Valuation at Date` is selected as January 1st, the :guilabel:`Remaining Quantity`
|
||||
will still show as `70.00`.
|
||||
|
||||
.. _inventory/warehouses_storage/aging-report:
|
||||
|
||||
Navigate the inventory aging report
|
||||
===================================
|
||||
Pivot view: stock aging
|
||||
=======================
|
||||
|
||||
By default, the :guilabel:`Inventory Aging` report displays a pivot table, with the month in
|
||||
columns, and product category in rows. The default filters, :guilabel:`Incoming` and :guilabel:`Has
|
||||
Remaining Qty`, show only products from receipts, and are currently in stock.
|
||||
From the :guilabel:`Stock Valuation` dashboard, access pivot view by clicking the
|
||||
:icon:`oi-view-pivot` :guilabel:`(pivot)` icon. This view is essentially a *stock aging report*, and
|
||||
it shows the on-hand quantity and value of inventory by purchase date, which can help monitor
|
||||
products with expiration dates.
|
||||
|
||||
:guilabel:`Remaining Qty` displays the number of on-hand items, and :guilabel:`Remaining Value`
|
||||
displays the total cost of purchasing these items.
|
||||
Configure
|
||||
---------
|
||||
|
||||
Clicking the :icon:`fa-plus-square` :guilabel:`(plus)` icon in each column or row reveals options to
|
||||
expand the pivot table and show a detailed breakdown of the :guilabel:`Remaining Qty` and
|
||||
:guilabel:`Remaining Value` by :guilabel:`Product`, :guilabel:`Product Category`, :guilabel:`Date`,
|
||||
or :guilabel:`Company`. Clicking the :icon:`fa-minus-square-o` :guilabel:`(minus)` icon collapses it
|
||||
back to its previous state.
|
||||
By default, the pivot view shows the value of all *product categories* by *day and month*. Clicking
|
||||
the :icon:`fa-plus-square` :guilabel:`(plus)` icon in each column or row will reveal a drop-down
|
||||
list of options to create a more granular breakdown of the inventory valuation. The drop-down
|
||||
options include: :guilabel:`Product`, :guilabel:`Lot/Serial Number`, :guilabel:`Product Category`,
|
||||
:guilabel:`Date`, :guilabel:`Company`, or :guilabel:`Add Custom Group` Clicking the
|
||||
:icon:`fa-minus-square-o` :guilabel:`(minus)` icon collapses the field back to an empty state.
|
||||
|
||||
.. figure:: aging/inventory-aging.png
|
||||
:align: center
|
||||
:alt: Inventory aging report.
|
||||
In the table, the :guilabel:`Remaining Qty` column displays the number of on-hand items, and
|
||||
:guilabel:`Remaining Value` displays the total cost of purchasing these items.
|
||||
|
||||
Inventory aging report, showing each **Product** in rows and each reception **Date** in columns,
|
||||
to better monitor products with fast expiration dates. Each row shows the the total on-hand
|
||||
quantity and inventory valuation of items purchased on each day.
|
||||
.. image:: aging/stock-aging-report.png
|
||||
:alt: Stock aging report, showing product row items and day columns.
|
||||
|
||||
.. note::
|
||||
Records in the :guilabel:`Inventory Aging` report are *stock valuation layers* (SVLs),
|
||||
representing product moves that impact stock valuation.
|
||||
.. _inventory/warehouses_storage/graph-view:
|
||||
|
||||
Inventory adjustments do **not** create |SVLs|; only items purchased from vendors do.
|
||||
Graph view
|
||||
==========
|
||||
|
||||
Generate reports
|
||||
================
|
||||
The stock value can be depicted graphically by clicking the :icon:`fa-area-chart`
|
||||
:guilabel:`(graph)` icon. By default, the graph is displayed in :icon:`fa-line-chart` line chart
|
||||
view and filtered to show the cumulative total of all inventory value over time in Odoo.
|
||||
|
||||
After learning how to :ref:`navigate the inventory aging report
|
||||
<inventory/warehouses_storage/aging-report>`, it can be used to create and share different reports.
|
||||
|
||||
A few common reports that can be created using the :guilabel:`Inventory Aging` report are detailed
|
||||
below.
|
||||
|
||||
Rotating stock report
|
||||
---------------------
|
||||
|
||||
To create a report to identify items that have been in stock for a while, follow these steps:
|
||||
|
||||
#. Navigate to :menuselection:`Inventory app --> Reporting --> Inventory Aging`.
|
||||
#. On the :guilabel:`Inventory Aging` report, click the :icon:`fa-caret-down` :guilabel:`(caret
|
||||
down)` icon in the :guilabel:`Search...` bar to see a drop-down list of :guilabel:`Filters`,
|
||||
:guilabel:`Group By`, and :guilabel:`Favorite` options.
|
||||
#. Choose :guilabel:`Product` under the :guilabel:`Group By` section. Doing so expands the pivot
|
||||
table to show a product in each row.
|
||||
#. Click the :icon:`fa-plus-square` :guilabel:`(plus)` icon to the left of the date column. Hover
|
||||
over :guilabel:`Date` from the drop-down menu and choose :guilabel:`Year`, :guilabel:`Quarter`,
|
||||
:guilabel:`Month`, :guilabel:`Week`, or :guilabel:`Day`. Doing so expands the columns to show the
|
||||
:guilabel:`Remaining Qty` and :guilabel:`Remaining Value` by the selected time period.
|
||||
|
||||
.. tip::
|
||||
For products that have a longer shelf life, choose longer time periods such as
|
||||
:guilabel:`Month` or :guilabel:`Quarter` when expanding columns by :guilabel:`Date`.
|
||||
|
||||
.. image:: aging/column-expand-icon.png
|
||||
:align: center
|
||||
:alt: Pivot table, highlighting the plus icon to expand columns.
|
||||
|
||||
#. The report now displays the on-hand stock of items, and their total purchasing cost, for each
|
||||
time period.
|
||||
|
||||
.. example::
|
||||
Inventory aging report, with the :guilabel:`Group By`: :guilabel:`Product` option selected,
|
||||
and with the :guilabel:`Date` column set to :guilabel:`Day`. It gives insight into how much
|
||||
raw fish sashimi products were purchased on each day, and how much it cost. This informs the
|
||||
business owners how much stock is at risk of rotting in stock, per day.
|
||||
|
||||
.. image:: aging/inventory-aging.png
|
||||
:align: center
|
||||
:alt: Inventory aging report, showing product row items and day columns.
|
||||
At the top of the report, a :icon:`fa-bar-chart` bar chart or :icon:`fa-pie-chart` pie chart view
|
||||
can be selected instead.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Odoo reporting essentials <../../../../essentials/reporting>`
|
||||
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -15,3 +15,4 @@ Workflows
|
||||
workflows/unbuild_orders
|
||||
workflows/byproducts
|
||||
workflows/continuous_improvement
|
||||
workflows/manufacture_lots_serials
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
========================================
|
||||
Manufacture with lots and serial numbers
|
||||
========================================
|
||||
|
||||
.. |MO| replace:: :abbr:`MO (Manufacturing Order)`
|
||||
.. |MOs| replace:: :abbr:`MOs (Manufacturing Orders)`
|
||||
|
||||
In Odoo, *lot numbers* and *serial numbers* are used to identify and track products in Odoo. Serial
|
||||
numbers are used to assign unique numbers to individual products, while lot numbers are used to
|
||||
assign a single number to multiple units of a specific product.
|
||||
|
||||
When manufacturing products tracked using lots or serial numbers, Odoo requires the lot or serial
|
||||
number to be assigned to each product before manufacturing can be completed. This ensures that each
|
||||
product is properly tracked from the moment it enters inventory.
|
||||
|
||||
Configure products for tracking
|
||||
===============================
|
||||
|
||||
By default, Odoo tracks the quantity of each product on hand, but does not track individual units of
|
||||
a product. Lot or serial number tracking must be enabled for each product individually.
|
||||
|
||||
To track a product using lots or serial numbers, begin by navigating to :menuselection:`Inventory
|
||||
--> Configuration --> Settings`, then scroll down to the :guilabel:`Traceability` section, and tick
|
||||
the :guilabel:`Lots & Serial Numbers` checkbox. Finally, click :guilabel:`Save` to save the change.
|
||||
|
||||
Next, click on :menuselection:`Products --> Products`, and select a product to track. Make sure the
|
||||
:guilabel:`Track Inventory` checkbox is ticked in the :guilabel:`General Information` tab. Since lot
|
||||
and serial number functionality is enabled, a drop-down menu appears next to the ticked checkbox.
|
||||
|
||||
Click on the :guilabel:`Track Inventory` drop-down menu. By default, :guilabel:`By Quantity` is
|
||||
selected, which only tracks the quantity on hand. Select :guilabel:`By Lots` to track the product
|
||||
using lot numbers, or :guilabel:`By Unique Serial Number` to track the product using serial numbers.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Lots <../../inventory/product_management/product_tracking/lots>`
|
||||
:doc:`Serial numbers <../../inventory/product_management/product_tracking/serial_numbers>`
|
||||
|
||||
Lot number manufacturing
|
||||
========================
|
||||
|
||||
To manufacture a product tracked with lots, begin by navigating to :menuselection:`Manufacturing -->
|
||||
Operations --> Manufacturing Orders`. Click :guilabel:`New` to create a new manufacturing order
|
||||
(MO).
|
||||
|
||||
In the :guilabel:`Product` field, select a product tracked using lots, and enter the desired
|
||||
:guilabel:`Quantity`. Click :guilabel:`Confirm` to confirm the |MO|.
|
||||
|
||||
Once the |MO| is confirmed, a :guilabel:`Lot/Serial Number` field appears in the top section of the
|
||||
|MO| form. By default, this field is empty.
|
||||
|
||||
To populate the :guilabel:`Lot/Serial Number` field with a lot number, click the
|
||||
:icon:`fa-plus-square-o` :guilabel:`(plus)` icon to the right of the field. Doing so automatically
|
||||
generates a lot, using the next available number, and enters it in the field.
|
||||
|
||||
Alternatively, click on the :guilabel:`Lot/Serial Number` field and select an existing lot number,
|
||||
or manually enter a new lot number and click :guilabel:`Create "#"` in the drop-down menu.
|
||||
|
||||
.. image:: manufacture_lots_serials/lot-sn-field.png
|
||||
:alt: The "Lot/Serial Number" field on an MO.
|
||||
|
||||
Either of these methods assign the product(s) in the |MO| a lot number before production is
|
||||
finished. It is also possible to complete production and close the |MO| by clicking
|
||||
:guilabel:`Produce All`, without assigning a lot number. Doing so automatically generates and
|
||||
assigns a lot, using the next available number.
|
||||
|
||||
Serial number manufacturing
|
||||
===========================
|
||||
|
||||
To manufacture a product tracked with serial numbers, begin by navigating to
|
||||
:menuselection:`Manufacturing --> Operations --> Manufacturing Orders`. Click :guilabel:`New` to
|
||||
create a new |MO|.
|
||||
|
||||
In the :guilabel:`Product` field, select a product tracked using serial numbers, and enter the
|
||||
desired :guilabel:`Quantity`. Click :guilabel:`Confirm` to confirm the |MO|.
|
||||
|
||||
Once the |MO| is confirmed, a :guilabel:`Lot/Serial Number` field appears in the top section of the
|
||||
|MO| form. By default, this field is empty.
|
||||
|
||||
The rest of the manufacturing process depends on how many units the |MO| contains.
|
||||
|
||||
Manufacture single unit
|
||||
-----------------------
|
||||
|
||||
If a single unit of the product is being manufactured, clicking :guilabel:`Produce All` closes the
|
||||
|MO|, and automatically generates and assigns the next available serial number, which appears in the
|
||||
:guilabel:`Lot/Serial Number` field.
|
||||
|
||||
To assign a serial number without closing the |MO|, enter a number manually in the
|
||||
:guilabel:`Lot/Serial Number` field, and click :guilabel:`Create "#"`, or click the
|
||||
:icon:`fa-plus-square-o` :guilabel:`(plus)` icon to the right of the field to auto-fill it with the
|
||||
next available number.
|
||||
|
||||
.. image:: manufacture_lots_serials/lot-sn-field.png
|
||||
:alt: The "Lot/Serial Number" field on an MO.
|
||||
|
||||
Manufacture multiple units
|
||||
--------------------------
|
||||
|
||||
.. important::
|
||||
When manufacturing a product tracked using serial numbers, an |MO| can be created for multiple
|
||||
units. However, when serial numbers are assigned to each unit, either at the end of production or
|
||||
before, the |MO| is split into multiple |MOs|, each containing one unit of the product.
|
||||
|
||||
Each of the split |MOs| is identified by a numerical tag added to the end of the original |MO|
|
||||
number.
|
||||
|
||||
.. example::
|
||||
|MO| `WH/MO/00109` contains two units of a `Chair`, a product tracked using serial numbers. A
|
||||
serial number is assigned to each unit of the chair. This causes the |MO| to be split into two
|
||||
|MOs|, each containing one unit of the chair. The |MOs| are titled `WH/MO/00109-001` and
|
||||
`WH/MO/00109-002`.
|
||||
|
||||
To assign serial numbers to each unit of an |MO|, click :guilabel:`Produce All` to open the
|
||||
:guilabel:`Batch Production` pop-up window.
|
||||
|
||||
The :guilabel:`First Lot/SN` field of the pop-up window is auto-filled with the next available
|
||||
serial number. The :guilabel:`Number of SN` field defaults to the number of units being
|
||||
manufactured. The values of either field can be changed manually.
|
||||
|
||||
Click :guilabel:`Generate` to generate the specified number of serial numbers, beginning with the
|
||||
number entered in the :guilabel:`First Lot/SN` field. The serial numbers are displayed in the text
|
||||
box at the bottom of the pop-up window, and can be manually changed after generation.
|
||||
|
||||
To assign serial numbers without completing production, click the :guilabel:`Prepare MO` button.
|
||||
Doing so splits the |MO| into individual |MOs|, one for each unit in the original |MO|. Each |MO| is
|
||||
left open, and can be closed individually.
|
||||
|
||||
To assign serial numbers and complete production, click the :guilabel:`Produce` button. Doing so
|
||||
splits the |MO| into individual |MOs|, one for each unit in the original |MO|. All of the |MOs| are
|
||||
closed, since production is complete.
|
||||
|
||||
.. image:: manufacture_lots_serials/batch-production.png
|
||||
:alt: The "Batch Production" pop-up window, from which serial numbers can be assigned.
|
||||
|
||||
After clicking :guilabel:`Prepare MO` or :guilabel:`Produce`, the :menuselection:`Manufacturing` app
|
||||
automatically shows the first of the split |MOs| (ex. `WH/MO/00109-001`). To view and access the
|
||||
rest the split |MOs|, click the :guilabel:`Backorders` smart button at the top of the screen.
|
||||
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
@@ -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,13 +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 |
@@ -21,6 +21,7 @@ Then, as the QR code type differs depending on your country, follow the correspo
|
||||
page from the following table to set them up.
|
||||
|
||||
.. list-table::
|
||||
:widths: 20 20 20 40
|
||||
:header-rows: 1
|
||||
|
||||
* - QR code types
|
||||
@@ -75,6 +76,7 @@ Create the payment method
|
||||
|
||||
.. image:: qr_code_payment/qr-payment-methods-setting.png
|
||||
:alt: QR code payment method configuration
|
||||
:scale: 85 %
|
||||
|
||||
.. important::
|
||||
At least one bank account must be defined in the journal to allow QR code payments to be
|
||||
@@ -85,6 +87,7 @@ the payment method to your POS under the :guilabel:`Payment` section.
|
||||
|
||||
.. image:: qr_code_payment/qr-configuration-setting.png
|
||||
:alt: Enable QR code payment method
|
||||
:scale: 85 %
|
||||
|
||||
Register payments using QR codes
|
||||
================================
|
||||
@@ -94,6 +97,7 @@ and displayed on the screen for the customer to scan and pay with their mobile b
|
||||
|
||||
.. image:: qr_code_payment/qr-payment-example.png
|
||||
:alt: QR code payment example
|
||||
:scale: 75 %
|
||||
|
||||
Hit :guilabel:`Confirm Payment` to validate the transaction.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
@@ -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 |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 17 KiB |
@@ -62,18 +62,6 @@ The following table lists capabilities provided by Odoo when using the Amazon Co
|
||||
| | | status synchronized from Odoo. |
|
||||
+---------------------------+----------------------------+-------------------------------------+
|
||||
|
||||
.. important::
|
||||
The stock synchronization does **not** currently support selling the same product as :abbr:`FBM
|
||||
(Fulfilled By Merchant)` *and* :abbr:`FBA (Fulfilled By Amazon)`.
|
||||
|
||||
At times, when stock is sent for all products, it triggers a stock problem with Amazon, where
|
||||
Amazon incorrectly thinks the :abbr:`FBM (Fulfilled By Merchant)` product has some quantity in
|
||||
:abbr:`FBM (Fulfilled By Merchant)`.
|
||||
|
||||
As a result, Amazon then sells it as :abbr:`FBM (Fulfilled By Merchant)`, instead of taking from
|
||||
their own warehouse. Odoo developers are currently working on resolving this issue to avoid
|
||||
future discrepancies.
|
||||
|
||||
.. note::
|
||||
The Amazon Connector is designed to synchronize the data of sales orders. Other actions, such as
|
||||
downloading monthly fees reports, handling disputes, or issuing refunds, **must** be managed from
|
||||
|
||||
@@ -2,10 +2,9 @@
|
||||
Quotation templates
|
||||
===================
|
||||
|
||||
In Odoo *Sales*, salespeople have the ability to create reusable quotation templates for common
|
||||
products or services that the business offers.
|
||||
Reusable quotation templates can be made in Odoo's **Sales** app for common products or services.
|
||||
|
||||
By using these templates, quotations can be tailored and sent to customers at a much faster pace,
|
||||
By using these templates, quotations can be tailored and sent to customers at a quicker pace,
|
||||
without having to create new quotations from scratch every time a sales negotiation occurs.
|
||||
|
||||
.. _sales/send_quotations/templates:
|
||||
@@ -13,42 +12,42 @@ without having to create new quotations from scratch every time a sales negotiat
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Begin by activating the setting in :menuselection:`Sales app --> Configuration --> Settings`, and
|
||||
scroll to the :guilabel:`Quotations \& Orders` heading.
|
||||
To use quotation templates, begin by activating the setting in :menuselection:`Sales app -->
|
||||
Configuration --> Settings`, and scroll to the :guilabel:`Quotations &_Orders` heading.
|
||||
|
||||
In that section, check the box beside the :guilabel:`Quotation Templates` option. Doing so reveals a
|
||||
new :guilabel:`Default Template` field, in which a default quotation template can be chosen from a
|
||||
Under the heading, tick the :guilabel:`Quotation Templates` checkbox. Doing so reveals a new
|
||||
:guilabel:`Default Template` field, in which a default quotation template can be chosen from the
|
||||
drop-down menu.
|
||||
|
||||
.. image:: quote_template/quotations-templates-setting.png
|
||||
:align: center
|
||||
:alt: How to enable quotation templates on Odoo Sales.
|
||||
|
||||
Also, upon activating the :guilabel:`Quotation Template` feature, an internal :guilabel:`➡️
|
||||
Quotation Templates` link appears beneath the :guilabel:`Default Template` field.
|
||||
Upon activating the :guilabel:`Quotation Template` feature, an internal :icon:`fa-arrow-right`
|
||||
:guilabel:`Quotation Templates` link appears beneath the :guilabel:`Default Template` field.
|
||||
|
||||
Clicking that link reveals the :guilabel:`Quotation Templates` page, from which templates can be
|
||||
Clicking this link reveals the :guilabel:`Quotation Templates` page, from which templates can be
|
||||
created, viewed, and edited.
|
||||
|
||||
Before leaving the :guilabel:`Settings` page, don't forget to click the :guilabel:`Save` button to
|
||||
Before leaving the :guilabel:`Settings` page, do not forget to click the :guilabel:`Save` button to
|
||||
save all changes made during the session.
|
||||
|
||||
.. _sales/send_quotations/create_templates:
|
||||
|
||||
Create quotation templates
|
||||
==========================
|
||||
|
||||
Click the :guilabel:`Quotation Templates` link on the :guilabel:`Settings` page, or navigate to
|
||||
To create a quotation template, click the :guilabel:`Quotation Templates` link on the
|
||||
:guilabel:`Settings` page once :guilabel:`Quotation templates` are enabled, or navigate to
|
||||
:menuselection:`Sales app --> Configuration --> Quotation Templates`. Both options reveal the
|
||||
:guilabel:`Quotation Templates` page, where quotation templates can be created, viewed, and edited.
|
||||
|
||||
.. image:: quote_template/quotation-templates-page.png
|
||||
:align: center
|
||||
:alt: Quotation templates page in the Odoo Sales application.
|
||||
|
||||
To create a new quotation template, click the :guilabel:`New` button, located in the upper-left
|
||||
corner. Doing so reveals a blank quotation template form that can be customized in a number of ways.
|
||||
corner. Doing so reveals a blank quotation template form that can be customized.
|
||||
|
||||
.. image:: quote_template/blank-quotation-form.png
|
||||
:align: center
|
||||
:alt: Create a new quotation template on Odoo Sales.
|
||||
|
||||
Start by entering a name for the template in the :guilabel:`Quotation Template` field.
|
||||
@@ -57,9 +56,8 @@ Then, in the :guilabel:`Quotation Validity` field, designate how many days the q
|
||||
will remain valid for, or leave the field on the default `0` to keep the template valid
|
||||
indefinitely.
|
||||
|
||||
Next, in the :guilabel:`Confirmation Mail` field, click the blank field to reveal a drop-down menu.
|
||||
From the drop-down menu, select a pre-configured email template to be sent to customers upon
|
||||
confirmation of an order.
|
||||
Next, in the :guilabel:`Confirmation Mail` field, click the blank drop-down menu to select a
|
||||
preconfigured email template to be sent to customers upon confirmation of an order.
|
||||
|
||||
.. tip::
|
||||
To create a new email template directly from the :guilabel:`Confirmation Mail` field, start
|
||||
@@ -70,13 +68,12 @@ confirmation of an order.
|
||||
|
||||
Selecting :guilabel:`Create and edit...` creates the email template, and a :guilabel:`Create
|
||||
Confirmation Mail` pop-up window appears, in which the email template can be customized and
|
||||
configured right away.
|
||||
configured immediately.
|
||||
|
||||
.. image:: quote_template/create-confirmation-mail-popup.png
|
||||
:align: center
|
||||
:alt: Create confirmation mail pop-up window from the quotation template form in Odoo Sales.
|
||||
|
||||
When all modifications are complete, click :guilabel:`Save \& Close` to save the email template
|
||||
When all modifications are complete, click :guilabel:`Save & Close` to save the email template
|
||||
and return to the quotation form.
|
||||
|
||||
If working in a multi-company environment, use the :guilabel:`Company` field to designate to which
|
||||
@@ -120,23 +117,23 @@ terms, etc.) by clicking :guilabel:`Add a note`.
|
||||
To add a product to a quotation template, click :guilabel:`Add a product` in the :guilabel:`Lines`
|
||||
tab of a quotation template form. Doing so reveals a blank field in the :guilabel:`Product` column.
|
||||
|
||||
When clicked, a drop-down menu with existing products in the database appear. Select the desired
|
||||
When clicked, a drop-down menu with existing products in the database appears. Select the desired
|
||||
product from the drop-down menu to add it to the quotation template.
|
||||
|
||||
If the desired product isn't readily visible, type the name of the desired product in the
|
||||
If the desired product is not readily visible, type the name of the desired product in the
|
||||
:guilabel:`Product` field, and the option appears in the drop-down menu. Products can also be found
|
||||
by clicking :guilabel:`Search More...` from the drop-down menu.
|
||||
|
||||
.. tip::
|
||||
In Odoo 17, it is now possible to add event-related products (booths and registrations) to
|
||||
quotation templates. To do so, click the :guilabel:`Product` field, type in `Event`, and select
|
||||
the desired event-related product from the resulting drop-down menu.
|
||||
It is possible to add event-related products (booths and registrations) to quotation templates.
|
||||
To do so, click the :guilabel:`Product` field, type in `Event`, and select the desired
|
||||
event-related product from the resulting drop-down menu.
|
||||
|
||||
.. note::
|
||||
When a product is added to a quotation template, the default :guilabel:`Quantity` is `1`, but
|
||||
that can be edited at any time.
|
||||
|
||||
Then, drag-and-drop the product to the desired position, via the :guilabel:`six squares` icon,
|
||||
Then, drag and drop the product to the desired position, via the :guilabel:`six squares` icon,
|
||||
located to the left of each line item.
|
||||
|
||||
To add a *section*, which serves as a header to organize the lines of a sales order, click
|
||||
@@ -144,57 +141,55 @@ To add a *section*, which serves as a header to organize the lines of a sales or
|
||||
which the desired name of the section can be typed. When the name has been entered, click away to
|
||||
secure the section name.
|
||||
|
||||
Then, drag-and-drop the section name to the desired position, via the :guilabel:`six squares` icon,
|
||||
located to the left of each line item.
|
||||
Then, drag and drop the section name to the desired position, via the :icon:`oi-apps`
|
||||
:guilabel:`(six squares)` icon, located to the left of each line item.
|
||||
|
||||
To add a note, which would appear as a piece of text for the customer on the quotation, click
|
||||
To add a note, which appears as a piece of text for the customer on the quotation, click
|
||||
:guilabel:`Add a note` in the :guilabel:`Lines` tab. When clicked, a blank field appears, in which
|
||||
the desired note can be typed. When the note has been entered, click away to secure the note.
|
||||
|
||||
Then, drag-and-drop the note to the desired position, via the :guilabel:`six squares` icon.
|
||||
Then, drag and drop the note to the desired position, via the :icon:`oi-apps`
|
||||
:guilabel:`(six squares)` icon.
|
||||
|
||||
To delete any line item from the :guilabel:`Lines` tab (product, section, and/or note), click the
|
||||
:guilabel:`🗑️ (trash can)` icon on the far-right side of the line.
|
||||
:icon:`fa-trash` :guilabel:`(remove record)` icon on the far-right side of the line.
|
||||
|
||||
Optional Products tab
|
||||
---------------------
|
||||
|
||||
The use of *optional products* is a marketing strategy that involves the cross-selling of products
|
||||
along with a core product. The aim is to offer useful and related products to customers, which may
|
||||
result in an increased sale.
|
||||
Using *optional products* is a marketing strategy that involves the cross-selling of products along
|
||||
with a core product. The aim is to offer useful and related products to customers, which may result
|
||||
in an increased sale.
|
||||
|
||||
For instance, if a customer wants to buy a car, they have the choice to order massaging seats, as
|
||||
well, or ignore the offer and simply buy the car. Presenting the choice to purchase optional
|
||||
products enhances the customer experience.
|
||||
.. example::
|
||||
If a customer wants to buy a car, they have the choice to order massaging seats as
|
||||
an additional product that compliments the car, or ignore the offer and buy the car alone.
|
||||
|
||||
Optional products appear as a section on the bottom of sales orders and eCommerce pages. Customers
|
||||
can immediately add them to their online sales orders themselves, if desired.
|
||||
|
||||
.. image:: quote_template/optional-products-on-sales-order.png
|
||||
:align: center
|
||||
:alt: Optional products appearing on a typical sales order with Odoo Sales.
|
||||
|
||||
In the :guilabel:`Optional Products` tab, :guilabel:`Add a line` for each cross-selling product
|
||||
related to the original items in the :guilabel:`Lines` tab, if applicable. The products added here
|
||||
ideally complement the original offering as added value for the prospective buyer.
|
||||
related to the original items in the :guilabel:`Lines` tab, if applicable.
|
||||
|
||||
Clicking :guilabel:`Add a line` reveals a blank field in the :guilabel:`Product` column.
|
||||
|
||||
When clicked, a drop-down menu with products from the database appear. Select the desired product
|
||||
from the drop-down menu to add it as an optional product to the quotation template.
|
||||
|
||||
To delete any line item from the :guilabel:`Optional Products` tab, click the :guilabel:`🗑️ (trash
|
||||
can)` icon.
|
||||
To delete any line item from the :guilabel:`Optional Products` tab, click the :icon:`fa-trash`
|
||||
:guilabel:`(remove record)` icon.
|
||||
|
||||
.. note::
|
||||
Optional products are **not** required to create a quotation template.
|
||||
|
||||
Terms \& Conditions tab
|
||||
-----------------------
|
||||
Terms & Conditions tab
|
||||
----------------------
|
||||
|
||||
The :guilabel:`Terms \& Conditions` tab provides the opportunity to add terms and conditions to the
|
||||
quotation template. To add terms and conditions, simply type (or copy/paste) the desired terms and
|
||||
conditions in this tab.
|
||||
The :guilabel:`Terms & Conditions` tab provides the opportunity to add terms and conditions to the
|
||||
quotation template. To add terms and conditions, type the desired terms and conditions in this tab.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../../finance/accounting/customer_invoices/terms_conditions`
|
||||
@@ -202,55 +197,37 @@ conditions in this tab.
|
||||
.. note::
|
||||
Terms and conditions are **not** required to create a quotation template.
|
||||
|
||||
PDF Quote Builder tab
|
||||
---------------------
|
||||
|
||||
The :guilabel:`PDF Quote Builder` tab provides options to compose an attractive quotation, with more
|
||||
information and visually-pleasing elements, to highlight products and/or services.
|
||||
|
||||
To upload customer :guilabel:`Header pages` and :guilabel:`Footer pages`, click the :guilabel:`✏️
|
||||
(pencil)` icon to the right of the respective pages. Click the :guilabel:`🗑️ (trash)` icon to delete
|
||||
an uploaded PDF.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/sales/sales/send_quotations/pdf_quote_builder`
|
||||
|
||||
Use quotation templates
|
||||
=======================
|
||||
|
||||
When creating a quotation (:menuselection:`Sales app --> New`), choose a pre-configured template in
|
||||
When creating a quotation (:menuselection:`Sales app --> New`), choose a preconfigured template in
|
||||
the :guilabel:`Quotation Template` field.
|
||||
|
||||
.. image:: quote_template/quotation-templates-field.png
|
||||
:align: center
|
||||
:alt: Quotation templates field on a standard quotation form in Odoo Sales.
|
||||
.. note::
|
||||
The order of the templates in the :guilabel:`Quotation Template` field is determined by the order
|
||||
of the templates in the Quotation Templates form. The order of the quotations in the Quotation
|
||||
Templates form does **not** affect anything else.
|
||||
|
||||
To view what the customer will see, click the :guilabel:`Preview` button at the top of the page to
|
||||
see how the quotation template appears on the front-end of the website through Odoo's customer
|
||||
portal.
|
||||
|
||||
.. image:: quote_template/quotations-templates-preview.png
|
||||
:align: center
|
||||
:alt: Customer preview of a quotation template in Odoo Sales.
|
||||
|
||||
.. tip::
|
||||
Quotation template design uses the same methodology and functionality with design building blocks
|
||||
as a typical web page design with Odoo *Website*. Be sure to check out the
|
||||
:doc:`../../../websites/website` documentation to learn more.
|
||||
When all blocks and customizations are complete, click the :guilabel:`Save` button to save the
|
||||
configuration.
|
||||
|
||||
When all blocks and customizations are complete, click the :guilabel:`Save` button to put those
|
||||
configurations into place.
|
||||
|
||||
There is also a blue banner at the top of the quotation template design with a link to quickly
|
||||
return :guilabel:`Back to edit mode`. When clicked, Odoo returns to the quotation form in the
|
||||
back-end of the *Sales* application.
|
||||
The blue banner located at the top of the quotation template preview can be used to quickly return
|
||||
:icon:`fa-arrow-right` :guilabel:`Back to edit mode`. When clicked, Odoo returns to the quotation
|
||||
form in the back-end of the *Sales* application.
|
||||
|
||||
Mass cancel quotations/sales orders
|
||||
===================================
|
||||
|
||||
Cancel multiple quotations (or sales orders) by navigating to the :menuselection:`Sales app -->
|
||||
Orders --> Quotations` dashboard, landing, by default, in the list view. Then, on the left side of
|
||||
the table, tick the preferred checkboxes for removal.
|
||||
the table, tick the checkboxes for the quotations to be canceled.
|
||||
|
||||
.. tip::
|
||||
Select all records in the table by selecting the checkbox column header at the top-left of the
|
||||
@@ -263,7 +240,6 @@ drop-down menu.
|
||||
From this drop-down menu, select :guilabel:`Cancel quotations`.
|
||||
|
||||
.. image:: quote_template/cancel-quotations.png
|
||||
:align: center
|
||||
:alt: The Cancel quotations option on the Actions drop-down menu in the Odoo Sales application.
|
||||
|
||||
.. note::
|
||||
|
||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 14 KiB |