Compare commits

...

54 Commits

Author SHA1 Message Date
Tanya Bouman
6f5c7adce1 [FIX] mobile: SS0 -> SSO typo
X-original-commit: b8f2514f93
2025-01-29 18:22:53 +00:00
Tiffany Chang (tic)
beb619bef1 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#11908

X-original-commit: 4fc13ed595
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2025-01-29 09:37:26 +00:00
Loredana Perazzo
6e27b30a30 [IMP] POS: move configuration in toctree
task-4512527

closes odoo/documentation#11882

X-original-commit: 92b968d337
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2025-01-28 10:18:42 +00:00
sk-nada
4805579882 [FW][FIX] tutorials/server_framework_101: update link for example of list
previous link was for code that used tree in xml. The tree tag throws Traceback error in 18.0. This commit will provide the correct example with list tag instead of tree tag.

closes odoo/documentation#11866

Forward-port-of: odoo/documentation#11865
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2025-01-27 21:40:03 +00:00
Erwin Zoer
6fff0024b4 [FW][FIX] developer/howtos/upgrade_custom_db: fix typo
Changed the word devolopments to developments

closes odoo/documentation#11881

Forward-port-of: odoo/documentation#11864
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2025-01-27 19:21:19 +00:00
mcsi-odoo
5421a9b64d [IMP] accounting: order of fiscal localizations updated in toc
task-4285498

closes odoo/documentation#11879

X-original-commit: f3d8007c29
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Siobhan McGonigle (mcsi) <mcsi@odoo.com>
2025-01-27 14:17:05 +00:00
mcsi-odoo
bf8cbad52b [IMP] accounting: ocr free iap test credits for enterprise users
task-4328876

closes odoo/documentation#11878

X-original-commit: 058e379a40
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Siobhan McGonigle (mcsi) <mcsi@odoo.com>
2025-01-27 14:17:03 +00:00
“Chiara
fbbda69eef [IMP] accounting: italian localization typo
closes odoo/documentation#11880

X-original-commit: 8b1f8e1fc6
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Chiara Prattico (chpr) <chpr@odoo.com>
2025-01-27 14:17:01 +00:00
Loredana Perazzo
b2d74f9060 [ADD] POS: how to configure and use the preparation display
task-3604858

closes odoo/documentation#11854

X-original-commit: 2eb1deaf11
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2025-01-27 09:21:15 +00:00
dikd-odoo
a362a5295c [IMP] sales: removing the warning message for Amazon connector
closes odoo/documentation#11805

X-original-commit: e6bc52d641
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Dina Klarisse Dugar (dikd) <dikd@odoo.com>
2025-01-25 02:44:17 +00:00
samueljlieber
02c2c56118 [IMP] sales: update simplified pricelist settings
closes odoo/documentation#11810

X-original-commit: a0c8570226
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Dina Klarisse Dugar (dikd) <dikd@odoo.com>
2025-01-25 02:44:16 +00:00
jero-odoo
82511641ca [IMP] Inventory: wave transfers 18
closes odoo/documentation#11859

X-original-commit: 60a0d4cdb5
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2025-01-25 01:19:42 +00:00
“Dallas”
5344283f88 [IMP] accounting/bank: outstanding accounts
Update bank doc to better explain suspense and outstanding accounts and to explain that payments don't create journal entries without outstanding accounts.

task-3474209

closes odoo/documentation#11848

X-original-commit: 88e1bee845
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2025-01-24 12:45:00 +00:00
jero-odoo
bf03a68576 [IMP] Inventory: Batch Picking 18
closes odoo/documentation#11840

X-original-commit: 9917949408
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Liz Bender <92882399+benderliz@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2025-01-24 12:44:59 +00:00
jero-odoo
89ef206c76 [IMP] Inventory: cluster picking
closes odoo/documentation#11839

X-original-commit: c4e0f35aa9
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: dikd-odoo <dikd@odoo.com>
2025-01-24 12:44:58 +00:00
William Braeckman
ff6f55ae20 [IMP] developer/reference/cli: --limit-time-cron-conn
Document the newly created config option.

closes odoo/documentation#11843

See: https://github.com/odoo/odoo/pull/194141
X-original-commit: ea9c8bd807
Related: odoo/odoo#194957
Signed-off-by: William Braeckman (wbr) <wbr@odoo.com>
2025-01-24 11:18:16 +00:00
Meet Jivani [MEJI]
ce598c8f4f [ADD] point_of_sale: documentation for urbanPiper Integration
In this commit:
- Added detailed documentation on configuring online food delivery using
UrbanPiper integration.
- Provides step-by-step guidance for setting up the system.

Task-4263288

closes odoo/documentation#11826

X-original-commit: 8f77236070
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
Co-authored-by: Meet Jivani <meji@odoo.com>
2025-01-24 09:45:45 +00:00
Doh (KIDO)
39d6762690 [FIX] l10n_my: MyInvois credential update for preproduction
Despite registering ODOO S.A. as the name for both production and preproduction environment, MyInvois force changed pre-production to OXXX_XXXXO S.A. requiring an update on the credential for usage.

closes odoo/documentation#11819

X-original-commit: eba8e6028e
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Kim Dohyun (kido) <kido@odoo.com>
2025-01-24 06:32:24 +00:00
“Dallas”
85db99c793 [IMP] l10n_spain: update FACe configuration
Update configration as the location of the config changed in 18.0.

task-4327068

closes odoo/documentation#11829

X-original-commit: cc226a7e1d
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2025-01-23 23:30:24 +00:00
mcsi-odoo
91103976f7 [FIX] studio: can duplicate feature - list
task-4444001

closes odoo/documentation#11828

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2025-01-23 14:52:41 +00:00
lase@odoo.com
d2f5f224fd [IMP] marketing: match the Display Timezone description with tooltips
Issue:

The current descriptions and naming of the `Date` fields (`date_begin`,
`date_end`) and the `Timezone` field (`date_tz`) can be confusing in the
form view of the event model. Specifically:

The timezone used for converting the form dates to the database is
determined by the context and not by the `Timezone` field present on the
form. However, this `Timezone` field determines the timezone used
for displaying the event's date/time on the website. This change
clarifies the situation according to the update done in the community PR

opw-4323142

closes odoo/documentation#11815

X-original-commit: fe9d186b54
Related: odoo/odoo#194671
Signed-off-by: Lancelot Semal (lase) <lase@odoo.com>
2025-01-22 21:25:56 +00:00
Antoine Vandevenne (anv)
ca88450e9e [FIX] Makefile: output built HTML files in saas-18.1/ instead of master/
closes odoo/documentation#11814

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2025-01-22 21:25:47 +00:00
Antoine Vandevenne (anv)
818a633089 [IMP] supported_versions: release saas-18.1
closes odoo/documentation#11804

X-original-commit: 9b7d3d559b
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2025-01-21 18:21:12 +00:00
benderliz
97ae039524 [FIX] Inventory: Fixing reordering rules navigation for 18.0
closes odoo/documentation#11710

X-original-commit: b6b6cf9de8
Signed-off-by: Liz Bender (beli) <beli@odoo.com>
2025-01-21 18:21:09 +00:00
“Chiara
325d5cda17 [IMP] accounting: einvoicing by country mention
closes odoo/documentation#11792

X-original-commit: 3ab129a370
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Chiara Prattico (chpr) <chpr@odoo.com>
2025-01-21 15:37:36 +00:00
mcsi-odoo
c8b5ec9b8b [IMP] studio: can duplicate feature
task-4444001

closes odoo/documentation#11795

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2025-01-21 15:37:33 +00:00
xpl-odoo
01f3e490e2 [IMP] database: update status of supported versions
task-4485068

closes odoo/documentation#11785

X-original-commit: 36d407830e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2025-01-20 11:20:09 +00:00
“Dallas”
beb10a0649 [FIX] accounting:update internal transfers doc to 18.0
Internal transfers are now handled via reconciliation model button instead of through payments. This PR moves the internal transfers documentation from the Payments section to the Bank section and updates it to reflect the process in 18.0.

task-4331744

closes odoo/documentation#11777

X-original-commit: cc6306277b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2025-01-18 12:22:16 +00:00
xpl-odoo
584221de4b [IMP] l10n: odoo 18 update of the german l10n
Based on information from CBE and PR #11417

closes odoo/documentation#11771

X-original-commit: abdcb372ba
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2025-01-17 12:07:24 +00:00
jero-odoo
43226c1c1d [IMP] General: Outbound email servers correction
closes odoo/documentation#11763

X-original-commit: dfe54bdce3
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2025-01-16 14:40:31 +00:00
John Holton (hojo)
213a8b5272 [IMP] Inventory: add delivery slip setting to serial numbers
closes odoo/documentation#11736

X-original-commit: 78b9c43030
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2025-01-15 19:32:15 +00:00
fvz-odoo
9e0440653f [IMP] accounting/l10n_uy: clarify onboarding
Currently, users are having a hard time setting up their Uruware account. With the improvement to the documentation we are adding clarifications to simplify the onboarding process as well as adding a see also section so users have more documentation and smart classes/eLearning available.

closes odoo/documentation#11757

X-original-commit: 2628303bc4
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: dade-odoo <87431108+dade-odoo@users.noreply.github.com>
2025-01-15 19:32:13 +00:00
Christoforus Surjoputro
bc1e3def1d [FIX] payment_providers/xendit: remove step to enable optional 3ds
Enabling optional 3DS should not part of the official step. This configuration
is specific to cards payment, by default should perform 3DS, and only eligible
merchant able to perform cards payment with optional 3DS enabled.

closes odoo/documentation#11716

Forward-port-of: #11712
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2025-01-15 10:32:18 +00:00
Aaron Bohy
fd6286996d [IMP] javascript reference: document domain field options
Before this commit, options of the domain field weren't documented.
Now, they are.

closes odoo/documentation#11734

X-original-commit: 04ac6de366
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2025-01-15 07:39:53 +00:00
Florian Gilbert
69a5e540ea [IMP] account/bank: Consistent number for available banks
The aim of this commit is making sure that we have the same number of available banks.
 
no task id

closes odoo/documentation#11750

X-original-commit: 40c830298c
Signed-off-by: Florian Gilbert (flg) <flg@odoo.com>
2025-01-14 17:02:35 +00:00
Zuzanna Luczynska
8c334b663f [ADD] project/dashboard: project dashboard
task-id 4384333

closes odoo/documentation#11744

X-original-commit: 37d9b31da5
Signed-off-by: Zuzanna Luczynska (zulu) <zulu@odoo.com>
2025-01-13 13:28:15 +00:00
emmi-odoo
95e4fee78f [IMP] essentials/import data: add Import files section
task-4043639

closes odoo/documentation#11722

X-original-commit: 983346ae6b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Emmanuel Minga (EMMI) <emmi@odoo.com>
2025-01-11 00:33:15 +00:00
jero-odoo
cd9a550691 [IMP] Helpdesk: Helpcenter updates
closes odoo/documentation#11723

X-original-commit: b78d7b86e6
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2025-01-10 22:13:35 +00:00
jero-odoo
deabf8bcb2 [IMP] Helpdesk: Update SLAs
closes odoo/documentation#11724

X-original-commit: 7c6aa7f2c4
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: dikd-odoo <dikd@odoo.com>
2025-01-10 22:13:34 +00:00
Donatienne (dopi)
7346b921e1 [IMP] ecommerce: delivery methods
taskid-4016678

closes odoo/documentation#11717

X-original-commit: 84abf415bc
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2025-01-09 14:21:37 +00:00
Zuzanna Luczynska
82d326b89c [IMP] project/tasks: correction in what triggers reccurence + icon
closes odoo/documentation#11705

Task-id: 3601222
X-original-commit: cb0cce2498
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Zuzanna Luczynska (zulu) <zulu@odoo.com>
2025-01-08 14:32:45 +00:00
paan-odoo
71c6e2c728 [ADD] point_of_sale: documentation for pos-based marketing
This PR adds the documentation needed to use pos-based marketing.

In this PR, we introduce configuration and flow related to Email
and WhatsApp marketing in Point of Sale from storing contact details
to sending emails and WhatsApp messages from the point of sale.

task-4053075

closes odoo/documentation#11641

X-original-commit: 2bb0fa8e68
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Co-authored-by: Anantkumar Parmar <paan@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
2025-01-08 14:32:39 +00:00
guillaume gallant (guga)
87250c8510 [ADD] project: task dependencies
task-4413833

closes odoo/documentation#11669

X-original-commit: a8959a121a
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2025-01-08 11:15:41 +00:00
“Dallas”
ffa8f068b3 [FIX] accounting/tax-return: fix tax return menu path
Fix the menu navigation path of the tax return and update for 18.0 UI

task-4424499

closes odoo/documentation#11687

X-original-commit: 27bddd133b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2025-01-07 15:31:28 +00:00
jero-odoo
25ee78901b [IMP] Helpdesk: update basics 18
closes odoo/documentation#11699

X-original-commit: 21eb260fc8
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Liz Bender <92882399+benderliz@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
2025-01-06 22:58:57 +00:00
Sylvain Francis
b678d14483 [FIX] Egypt fiscal localizations: Update proxy install instructions
Since Odoo 16, to install the local proxy, users need to select the
"Odoo IoT" option install of the "Local Proxy Mode" to install the local
proxy.

This commit updates both the text and accompanying screenshot

closes odoo/documentation#11668

X-original-commit: beeeff9068
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Sylvain Francis (syf) <syf+odoo@odoo.com>
2025-01-06 15:05:07 +00:00
Felicious
ba6083172a [IMP] inventory: add bpost link
closes odoo/documentation#11681

X-original-commit: e38438c0ae
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2025-01-06 08:53:09 +00:00
gmz-odoo
4142841a43 [IMP] accounting/l10n_pe: PLE 12.1 and PLE 13.1 inventory reports
Add new section for reports
Content based on V17
Images : [ADD]Inventory Reports: PLE 12.1 and PLE 13.1 - Images
Expected section to be added: [l10n_pe][USER DOC][ADD]Inventory Reports: PLE 12.1 and PLE 13.1

closes odoo/documentation#11695

X-original-commit: 1aac8f8dc6
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2025-01-02 23:31:39 +00:00
jero-odoo
85cbb4349f [IMP] Helpdesk: receiving tickets
closes odoo/documentation#11688

X-original-commit: 5dea50eef0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2025-01-02 19:36:38 +00:00
Tiffany Chang (tic)
267ed1371c [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#11672

X-original-commit: d4841aee90
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2025-01-02 08:32:23 +00:00
gmz-odoo
8cbe296a12 [IMP] accounting/l10n_pe: update GRE credentials section
closes odoo/documentation#11640

Context: after Odoo17 the menu changes on the settings from Accounting to Inventory, as this workflow is related to stock moves
X-original-commit: f3969af47e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Gabriela Enriquez Manzano (gmz) <gmz@odoo.com>
2024-12-30 17:36:30 +00:00
Felicious
7b1341bb6c [ADD] inventory: compare packs and uom
closes odoo/documentation#11649

X-original-commit: 1ac6e5e975
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-12-27 00:41:56 +00:00
Parish Bracha
e6a052c4dd [IMP] Subscriptions: Contract in exception
closes odoo/documentation#11642

X-original-commit: ea2fc6dbc4
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-12-24 16:25:04 +00:00
Christophe Monniez
6b399d13d1 [REL] saas-18.1 2024-12-24 10:21:00 +00:00
168 changed files with 12619 additions and 6779 deletions

View File

@@ -27,7 +27,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-18.1
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)

View File

@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
# `version` is the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = 'saas-18.1'
# `current_branch` is the technical name of the current branch.
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
@@ -231,6 +231,7 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'saas-18.1': "Odoo Online",
'18.0': "Odoo 18",
'saas-17.4': "Odoo Online",
'saas-17.2': "Odoo Online",

View File

@@ -64,4 +64,4 @@ The Odoo mobile apps are available for download on the `Google Play Store
.. important::
The iOS app cannot be updated and will be deprecated at some point in the future.
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
While the store apps support multi-accounts, they are not compatible with SSO authentication.

View File

@@ -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|

View File

@@ -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
----------------------------

View File

@@ -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 dont 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -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:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@@ -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 countrys 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`

View File

@@ -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

View File

@@ -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:

View File

@@ -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 countrys 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`

View File

@@ -35,9 +35,6 @@ To do so, go to :menuselection:`Accounting --> Configuration --> Settings`. Unde
- :guilabel:`Reminder`: define when Odoo should remind you to submit your tax return;
- :guilabel:`Journal`: select the journal in which to record the tax return.
.. image:: tax_returns/tax_return_periodicity.png
:align: center
:alt: Configure how often tax returns have to be made in Odoo Accounting
.. note::
This is usually configured during the :doc:`app's initial set up <../get_started>`.
@@ -53,16 +50,11 @@ You can see the :guilabel:`Tax Grids` by opening the :guilabel:`Journal Items` t
invoice and bill.
.. image:: tax_returns/tax_return_grids.png
:align: center
:alt: see which tax grids are used to record transactions in Odoo Accounting
To configure your tax grids, go to :menuselection:`Accounting --> Configuration --> Taxes`,
and open the tax you want to modify. There, you can edit your tax settings, along with the tax
grids that are used to record invoices or credit notes.
.. image:: tax_returns/tax_return_taxes.png
:align: center
:alt: Configure taxes and their tax grids in Odoo Accounting
grids that are used to record invoices or refunds.
.. note::
Taxes and reports are usually already pre-configured in Odoo: a :ref:`fiscal localization package
@@ -76,40 +68,41 @@ Close a tax period
.. _tax-returns/lock-date:
Tax Lock Date
Tax lock date
-------------
Any new transaction whose accounting date prior to the :guilabel:`Tax Lock Date` has its tax values
moved to the next open tax period. This is useful to make sure that no change can be made to a
report once its period is closed.
Any new transaction whose accounting date prior to the :guilabel:`Lock Tax Return` date has its tax
values moved to the next open tax period. This is useful to make sure that no change can be made to
a report once its period is closed.
Therefore, we recommend locking your tax date before working on your
:guilabel:`Closing Journal Entry`.
This way, other users cannot modify or add transactions that would have an impact on the
:guilabel:`Closing Journal Entry`, which can help you avoid some tax declaration errors.
To check the current :guilabel:`Tax Lock Date`, or to edit it, go to
:menuselection:`Accounting --> Accounting --> Actions: Lock Dates`.
.. image:: tax_returns/tax_return_lock.png
:align: center
:alt: Lock your tax for a specific period in Odoo Accounting
To check the current :guilabel:`Lock Tax Return` date, or to edit it, go to
:menuselection:`Accounting --> Accounting --> Lock Dates`.
.. _tax-returns/report:
Tax Report
Tax return
----------
Once all the transactions involving taxes have been posted for the period you want to report, open
your :guilabel:`Tax Report` by going to :menuselection:`Accounting --> Reporting -->
Audit Reports: Tax Report`. Make sure to select the right period you want to declare by using the
date filter, this way you can have an overview of your tax report. From this view, you can easily
access different formats of your tax report, such as `PDF` and XLSX. These include all the values to
report to the tax authorities, along with the amount you have to pay or be refunded.
the :guilabel:`Tax Return` report by going to :menuselection:`Accounting --> Reporting --> Tax
Return`. Select the period you want to declare using the date filter to have an overview of the tax
return. Then, click :guilabel:`Closing Entry` to create a tax closing journal entry. Odoo
automatically proposes the details of the journal entry. Make any necessary changes and click
:guilabel:`Post`.
.. image:: tax_returns/tax_return_report.png
:align: center
:alt: download the PDF with your Tax Report in Odoo Accounting
From the report, click :guilabel:`PDF` to download a PDF of the tax return. Alternatively, click the
:icon:`fa-cog` (:guilabel:`gear`) icon, then click :guilabel:`Download Excel` to download an XLSX of
the tax return. To save the report to the Documents app, click the :icon:`fa-cog` (:guilabel:`gear`)
icon, then click :guilabel:`Copy to Documents`. Select the format to :guilabel:`Export to`, the
:guilabel:`Documents Name`, the :guilabel:`Folder` to store it in, and add any :guilabel:`Tags`.
The report includes all the values to report to the tax authorities, along with the amount to be
paid or refunded.
.. note::
If you forgot to lock your tax date before clicking on :guilabel:`Closing Journal Entry`, then

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -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.

View File

@@ -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>`_

View File

@@ -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

View File

@@ -24,6 +24,10 @@ localization.
- `l10n_at_saft`
- Adds the SAF-T export.
.. seealso::
:doc:`Documentation on e-invoicings legality and compliance in Austria
<../accounting/customer_invoices/electronic_invoicing/austria>`
Financial reports
=================

View File

@@ -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-invoicings legality and compliance in Belgium
<../accounting/customer_invoices/electronic_invoicing/belgium>`
.. _belgium/coa:
Chart of accounts

View File

@@ -205,11 +205,11 @@ An Odoo local server works as a bridge between your computer and your Odoo datab
Download the Odoo Community installer from the page https://www.odoo.com/page/download and start the
installation on your computer.
Select :guilabel:`Local Proxy Mode` as the type of install.
Select :guilabel:`Odoo IoT` as the type of install.
.. image:: egypt/install-odoo-local-proxy.png
:align: center
:alt: Selection of "Local Proxy Mode" during the installation of Odoo Community.
:alt: Selection of "Odoo IoT" during the installation of Odoo Community.
.. note::
This installation of Odoo only works as a server and does not install any Odoo apps on your

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -2,6 +2,10 @@
France
======
.. seealso::
:doc:`Documentation on e-invoicings legality and compliance in France
<../accounting/customer_invoices/electronic_invoicing/france>`
.. _localization/france/fec:
FEC - Fichier des Écritures Comptables

View File

@@ -2,222 +2,154 @@
Germany
=======
German Chart of Accounts
========================
Accounting
==========
The chart of accounts SKR03 and SKR04 are both supported in Odoo. You can choose the
one you want by going in :menuselection:`Accounting --> Configuration` then choose the
package you want in the Fiscal Localization section.
.. seealso::
:doc:`Documentation on e-invoicing's legality and compliance in Germany
<../accounting/customer_invoices/electronic_invoicing/germany>`
Be careful, you can only change the accounting package as long as you have not created any accounting entry.
Chart of accounts
-----------------
.. tip::
Both SKR03 and SKR04 charts of accounts are supported in Odoo. When you create a new Odoo Online
database, SKR03 is installed by default.
When you create a new Odoo Online database, the SKR03 is installed by default.
Verify which is installed by going to :menuselection:`Accounting --> Configuration --> Settings`
and checking the :guilabel:`Package` field under the :guilabel:`Fiscal Localization` section.
German Accounting Reports
=========================
.. warning::
Selecting another package is only possible if you have not created an accounting entry. If one
was posted, a new company or database must be set up to select another package. In
addition, all journal entries will need to be created again.
Here is the list of German-specific reports available on Odoo Enterprise:
Reports
-------
The following German-specific reports available on Odoo Enterprise:
- Balance Sheet
- Profit & Loss
- Tax Report (Umsatzsteuervoranmeldung)
- Partner VAT Intra
- EC Sales List
- Intrastat
Export from Odoo to Datev
=========================
Exporting entries from Odoo to DATEV
------------------------------------
It is possible to export your accounting entries from Odoo to Datev. To be able to use this
feature, the german accounting localization needs to be installed on your Odoo Enterprise database.
Then you can go in :menuselection:`Accounting --> Reporting --> General Ledger` then click on the
**Export Datev (csv)** button.
Provided that one of the German :ref:`fiscal localization packages
<fiscal_localizations/accounting>` is installed, you can export your accounting entries from Odoo to
DATEV from the general ledger.
.. _germany/pos:
Point of Sale in Germany: Technical Security System
===================================================
The **Kassensicherungsverordnung** (The Act on Protection against Manipulation of Digital Records)
requires that electronic record-keeping systems - including the :doc:`point of sale
</applications/sales/point_of_sale>` systems - must be equipped with a **Technical Security System**
(also called **TSS** or **TSE**).
Odoo offers a service that is compliant with the help of `fiskaly <https://fiskaly.com>`_, a
*cloud-based solution*.
.. important::
Since this solution is cloud-based, a working internet connection is required.
Two types of exports are needed: first the DATEV ATCH export, then the DATEV DATA export.
.. note::
The only VAT rates allowed are given by fiskaly. You can check these rates by consulting:
`fiskaly DSFinV-K API: VAT Definition
<https://developer.fiskaly.com/api/dsfinvk/v0/#tag/VAT-Definition>`_.
Both are needed at different stages to transfer the data correctly to DATEV, as DATEV works with
two interfaces, one for clients (DUO - DATEV Unternehmen Online) and one for tax advisors (DATEV
Rechnungswesen).
Configuration
-------------
1. DATEV ATCH
~~~~~~~~~~~~~
Modules installation
~~~~~~~~~~~~~~~~~~~~
Go to :menuselection:`Accounting --> Reporting --> General Ledger`, click the :icon:`fa-cog`
(:guilabel:`Actions`) button, and select :guilabel:`Datev ATCH (zip)`.
#. If your database was created before June 2021, :ref:`upgrade <general/upgrade>` your **Point of
Sale** app (`point_of_sale`) and the **Restaurant** module (`pos_restaurant`).
#. :ref:`Install <general/install>` the **Germany - Certification for Point of Sale**
(`l10n_de_pos_cert`) and **Germany - Certification for Point of Sale of type restaurant**
(`l10n_de_pos_res_cert`) modules.
.. image:: germany/datev-export.png
:alt: General ledger's actions menu with DATEV exports
.. tip::
If these modules are not listed, :ref:`update the app list <general/install>`.
Upload the downloaded ZIP file via the `DATEV Belegtransfer software <https://www.datev.de/web/de/service-und-support/software-bereitstellung/download-bereich/betriebliches-rechnungswesen/belegtransfer>`_.
.. image:: germany/pos-upgrade.png
:align: center
:alt: Upgrading Odoo Point of Sale from the Apps dashboard
If you do not have the DATEV Belegtransfer software installed on your computer, ask your tax advisor
to help you with this.
Register your company at the financial authority
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. warning::
The DATEV ATCH ZIP file includes the files (reports) linked to an Odoo invoice or bill. For
customer invoices, the file must have been generated by using the :guilabel:`Send` button. For
vendor bills, the file must have been received via an email alias or uploaded by using the
:guilabel:`Upload` button.
To register your company, go to :menuselection:`Settings --> General Settings --> Companies -->
Update Info`, fill out the following fields and *Save*.
.. admonition:: DATEV ATCH ZIP file
- **Company name**
- Valid **address**
- **VAT** number
- **St.-Nr** (Steuernummer): this number is assigned by the tax office to every taxable natural or
legal person. (e.g., `2893081508152`)
- **W-IdNr** (Wirtschafts-Identifikationsnummer): this number is used as a permanent
identification number for economically active persons.
The ZIP file contains two types of files:
You can then **register your company through fiskaly** by opening the *fiskaly* tab and clicking on
the *fiskaly Registration* button.
- the individual invoice/bill files (PDF, JPEG, etc.) for the selected period on the general
ledger, and
- a :file:`document.xml` file used to generate a unique ID (GUID) for each file.
.. image:: germany/fiskaly-registration.png
:align: center
:alt: Button to register a company through fiskaly in Odoo
These unique IDs are essential as they allow DATEV to automatically link the files to the
individual journal items, which will be imported with the DATEV DATA file in the next step.
.. tip::
If you do not see the *fiskaly Registration* button, make sure that you *saved* your company
details and are not in *editing mode* anymore.
2. DATEV DATA
~~~~~~~~~~~~~
Once the registration has been finalized, new fields appear:
Go to :menuselection:`Accounting --> Reporting --> General Ledger`, click the :icon:`fa-cog`
(:guilabel:`Actions`) button, and select :guilabel:`Datev DATA (zip)`.
- **fiskaly organization ID** refers to the ID of your company at the fiskaly side.
- **fiskaly API key** and **secret** are the credentials the system uses to access the services
offered by fiskaly.
Transfer the downloaded ZIP file to your tax advisor. They should import the ZIP file into DATEV
Rechnungswesen.
.. image:: germany/fiskaly-keys.png
:align: center
:alt: fiskaly keys as displayed on Odoo
Check with your tax advisor how often they need these files.
.. note::
It is possible to request new credentials if there is any issue with the current ones.
.. admonition:: DATEV ATCH ZIP file
Create and link a Technical Security System to your PoS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ZIP file contains three CSV files:
.. image:: germany/create-tss.png
:align: right
:alt: Create TSS option from a point of sale
To use your point of sale in Germany, you first have to create a :abbr:`TSS (Technical Security
System)` for it.
To do so, go to :menuselection:`Point of Sale --> Configuration --> Point of Sale`, open the point
of sale you want to edit, then check the box next to **Create TSS** and *Save*.
.. image:: germany/tss-ids.png
:align: right
:alt: Example of TSS ID and Client ID from fiskaly in Odoo Point of Sale
Once the creation of the TSS is successful, you can find your **TSS ID** and **Client ID** under the
*fiskaly API* section.
- **TSS ID** refers to the ID of your TSS at fiskaly's side.
- **Client ID** refers to your PoS but at fiskaly's side.
DSFinV-K
--------
.. image:: germany/dsfinv-k-export.png
:align: right
:alt: Menu to export DSFinV-K
Whenever you close a PoS session, the orders' details are sent to the :abbr:`DSFinV-K (Digitale
Schnittstelle der Finanzverwaltung für Kassensysteme)` service of fiskaly.
In case of an audit, you can export the data sent to DSFinV-K by going to :menuselection:`Point of
Sale --> Orders --> DSFinV-k exports`.
These fields are mandatory:
- **Name**
- **Start Datetime** (export data with dates larger than or equal to the given start date)
- **End Datetime** (export data with dates smaller than or equal to the given end date)
Leave the **Point of Sale** field blank if you want to export the data of all your points of sale.
Specify a Point of Sale if you want to export this specific PoS' data only.
The creation of a DSFinV-K export triggers on export at fiskaly's side.
.. image:: germany/dsfinv-k-export-fields.png
:align: center
:alt: Pending DSFinV-K export on Odoo
As you can see, the **State** is *Pending*. This means that the export has been successfully
triggered and is being processed. You have to click on *Refresh State* to check if it is ready.
- the :file:`EXTF_customer_accounts.csv` file containing all information related to your
customers,
- the :file:`EXTF_vendor_accounts.csv` file containing all information related to your vendors,
and
- the :file:`EXTF_accounting_entries.csv` containing all journal items for the period defined on
the general ledger, as well as the unique IDs (GUID) so that the journal items can be linked to
the files inside the DATEV ATCH ZIP file.
.. _germany/gobd:
German Tax Accounting Standards: Odoo's guide to GoBD Compliance
================================================================
GoBD compliance
---------------
**GoBD** stands for *Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*. In short, it is a
guideline for the proper management and storage of books, records, and documents in electronic form,
as well as for data access, that is relevant for the German tax authority, tax declaration, and
balance sheet.
These principles have been written and published by the Federal Ministry of Finance (BMF) in
November 2014. Since January 2015, **they have become the norm** and replace previously accepted
practices linked to computer-based accounting. Several changes have been made by the BMF in 2019 and
January 2020 to specify some of the content and due to the development of digital solutions (cloud
hosting, paperless companies, etc.).
November 2014. Since January 2015, **they have become the norm** and have replaced previously
accepted practices linked to computer-based accounting. Several changes have been made by the BMF in
2019 and January 2020 to specify some of the content due to the development of digital solutions
(cloud hosting, paperless companies, etc.).
.. important::
Odoo gives you **the means to be compliant with GoBD**.
Odoo is certified **GoBD-compliant**.
What do you need to know about GoBD when relying on accounting software?
------------------------------------------------------------------------
Understanding GoBD in relation to accounting software
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note::
If you can, the best way to understand GoBD is to Read the `Official GoBD text
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
It is a bit long but quite readable for non-experts. But in short, here is what to expect:
The **GoBD is binding for companies that have to present accounts, which includes SMEs, freelancers,
and entrepreneurs, to the financial authorities**. As such, **the taxpayer himself is the sole
responsible** for the complete and exhaustive keeping of fiscal-relevant data (above-mentioned
The **GoBD is binding for companies that have to present accounts**, which includes SMEs,
freelancers, and entrepreneurs, to the financial authorities. As such, **the taxpayer himself is the
sole responsible** for the complete and exhaustive keeping of fiscal-relevant data (above-mentioned
financial and related data).
Apart from software requirements, the user is required to ensure Internal control systems (*in
Apart from software requirements, the user is required to ensure internal control systems (*in
accordance with sec. 146 of the Fiscal Code*):
- Access rights control;
- Segregation of Duties, Functional separating;
- Entry controls (error notifications, plausibility checks);
- Reconciliation checks at data entry;
- Processing controls;
- Measures to prevent intentional or unintentional manipulation of software, data, or documents.
- access rights control;
- segregation of duties, functional separating;
- entry controls (error notifications, plausibility checks);
- reconciliation checks at data entry;
- processing controls; and
- measures to prevent intentional or unintentional manipulation of software, data, or documents.
The user must distribute tasks within its organization to the relevant positions (*control*) and
The user must distribute tasks within their organization to the relevant positions (*control*) and
verify that the tasks are properly and completely performed (*supervision*). The result of these
controls must be recorded (*documentation*), and should errors be found during these controls,
appropriate measures to correct the situation should be put into place (*prevention*).
What about data security?
-------------------------
Data security
~~~~~~~~~~~~~
**The taxpayer must secure the system against any data loss due to deletion, removal, or theft of
any data**. If the entries are not sufficiently secured, the bookkeeping will be regarded as not in
The taxpayer must **secure the system against any data loss** due to deletion, removal, or theft of
any data. If the entries are not sufficiently secured, the bookkeeping will be regarded as not in
accordance with the GoBD guidelines.
Once bookings have been finally posted, they can no longer be changed or deleted via the
@@ -229,104 +161,183 @@ application.
.. seealso::
`Odoo Cloud Hosting - Service Level Agreement <https://www.odooo.com/cloud-sla>`_
- If the server is operated locally, it is the responsibility of the user to create the necessary
backup infrastructure.
- If the server is operated locally, the user is responsible for creating the necessary backup
infrastructure.
.. important::
In some cases, data has to be kept for ten years or more, so always have backups saved. It is
even more important if you decide to change software provider.
Responsibility of the software editor
-------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Considering GoBD only applies between the taxpayer and the financial authority, **the software
editor can by no means be held responsible for the accurate and compliant documentation of financial
transactional data of their users**. It can merely provide the necessary tools for the user to
respect the software related guidelines described in the GoBD.
Considering GoBD applies only to the taxpayer, **the software editor can by no means be held
responsible for the accurate and compliant documentation of their users' financial transactional
data**. It can merely provide the necessary tools for the user to respect the software-related
guidelines described in the GoBD.
How can Odoo help you achieve Compliance?
-----------------------------------------
Ensuring compliance through Odoo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The key words, when it comes to GoBD, are: **traceable, verifiable, true, clear, and continuous**.
In short, you need to have audit-proof archiving in place and Odoo provides you with the means to
The keywords, when it comes to GoBD are: **traceable, verifiable, true, clear, and continuous**.
In short, you need to have audit-proof archiving in place, and Odoo provides you with the means to
achieve all of these objectives:
#. | **Traceability and verifiability**
| Each record in Odoo is stamped with the creator of the document, the creation date, the
modification date, and who modified it. In addition, relevant fields are tracked thus it can be
seen which value was changed by whom in the chatter of the relevant object.
modification date, and who modified it. In addition, relevant fields are tracked. Thus, it can
be seen which value was changed by whom in the chatter of the relevant object.
#. | **Completeness**
| All financial data must be recorded in the system, and there can be no gaps. Odoo ensures that
there is no gap in the numbering of the financial transactions. It is the responsibility of the
user to encode all financial data in the system. As most financial data in Odoo is generated
user to encode all financial data in the system. As most financial data in Odoo is generated
automatically, it remains the responsibility of the user to encode all vendor bills and
miscellaneous operations completely.
#. | **Accuracy**
| Odoo ensures with the correct configuration that the correct accounts are used. In addition,
| Odoo ensures that, with the correct configuration, the correct accounts are used. In addition,
the control mechanisms between purchase orders and sales orders and their respective invoices
reflect the business reality. It is the responsibility of the user to scan and attach the
paper-based vendor bill to the respective record in Odoo. *Odoo Document helps you automate
this task*.
reflect the reality of the business. It is the responsibility of the user to scan and attach
the paper-based vendor bill to the respective record in Odoo. *Odoo Documents helps you
automate this task*.
#. | **Timely booking and record-keeping**
| As most financial data in Odoo is generated by the transactional objects (for example, the
invoice is booked at confirmation), Odoo ensures out-of-the-box timely record-keeping. It is
the responsibility of the user to encode all incoming vendor bills in a timely manner, as well
as the miscellaneous operations.
#. | **Order**
| Financial data stored in Odoo is per definition ordered and can be reordered according to most
fields present in the model. A specific ordering is not enforced by the GoBD, but the system
must ensure that a given financial transaction can be quickly found by a third-party expert.
Odoo ensures this out-of-the-box.
| Financial data stored in Odoo is, per definition, ordered and can be reordered according to
most fields present in the model. A specific ordering is not enforced by the GoBD, but the
system must ensure that a given financial transaction can be quickly found by a third-party
expert. Odoo ensures this out-of-the-box.
#. | **Inalterability**
| With the German Odoo localization, Odoo is in standard configured in such a way that the
inalterability clause can be adhered to without any further customization.
Do you need a GoBD-Export?
--------------------------
GoBD export
~~~~~~~~~~~
In the case of fiscal control, the fiscal authority can request three levels of access to the
accounting system (Z1, Z2, Z3). These levels vary from direct access to the interface to the
handover of the financial data on a storage device.
In case of a handover of the financial data on a storage device, the format is **not** enforced by
the GoBD. It can be, for example, in XLS, CSV, XML, Lotus 123, SAP-format, AS/400-format, or else.
Odoo supports the CSV and XLS-export of financial data out-of-the-box. The GoBD **recommends** the
export in a specific XML-based GoBD-format (see "Ergänzende Informationen zur
Datenntträgerüberlassung" §3) but it is not binding.
In the case of a handover of financial data to a storage device, the GoBD does **not** enforce the
format. It can be, for example, in XLS, CSV, XML, Lotus 123, SAP-format, AS/400-format, or else.
Odoo supports the CSV and XLS export of financial data out of the box. The GoBD **recommends** the
export in a specific XML-based GoBD format (see "Ergänzende Informationen zur
Datenträgerüberlassung" §3), but it is not binding.
What is the role and meaning of the compliance certification?
-------------------------------------------------------------
Non-compliance
~~~~~~~~~~~~~~
The GoBD clearly states that due to the nature of a state of the art accounting software, their
configuration possibilities, changing nature, and various forms of use, **no legally binding
certification can be given**, nor can the software be made liable towards a public authority.
Third-party certificates can indeed have **an informative value** for customers to make software
buying decisions but are by no means legally binding or of any other legal value (A. 12, § 181).
In the event of an infringement, you can expect a fine and a court order demanding the
implementation of specific measures.
A GoBD certificate states nothing more than that if you use the software according to its
guidelines, the software will not refrain you from respecting the GoBD. These certifications are
very expensive in terms of time and cost, and their value is very relative. Thus we focus our
efforts on ensuring GoBD compliance rather than pay for a marketing tool which does not, however,
offer our customer any legal certainty.
.. _germany/pos:
Point of Sale
=============
Technical security system
-------------------------
The **Kassensicherungsverordnung** (The Act on Protection against Manipulation of Digital Records)
requires that electronic record-keeping systems - including the :doc:`point of sale
</applications/sales/point_of_sale>` systems - must be equipped with a **technical security system**
(also called **TSS** or **TSE**).
Odoo offers a service that is compliant with the help of `fiskaly <https://fiskaly.com>`_, a
*cloud-based solution*.
.. important::
The BMF actually states the following in the `Official GoBD text
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_:
Since this solution is cloud-based, a working internet connection is required.
- 180. Positive attestations on the correctness of the bookkeeping - and thus on the correctness
of IT-based bookkeeping systems - are not issued either in the context of a tax field audit or
in the context of binding information.
- 181. "Certificates" or "attestations" from third parties can serve as a decision criterion for
the company when selecting a software product, but develop from the in margin no. 179 is not
binding on the tax authorities.
.. note::
The only VAT rates allowed are given by fiskaly. You can check these rates by consulting
`fiskaly DSFinV-K API: VAT Definition
<https://developer.fiskaly.com/api/dsfinvk/v0/#tag/VAT-Definition>`_.
.. note::
The previous content was `automatically translated from German with Google Translate
<https://translate.google.com/?sl=de&tl=en&text=180.%0APositivtestate%20zur%20Ordnungsm%C3%A4%C3%9Figkeit%20der%20Buchf%C3%BChrung%20-%20und%20damit%20zur%20Ordnungsm%C3%A4%C3%9Figkeit%20DV-gest%C3%BCtzter%20Buchf%C3%BChrungssysteme%20-%20werden%20weder%20im%20Rahmen%20einer%20steuerlichen%20Au%C3%9Fenpr%C3%BCfung%20noch%20im%20Rahmen%20einer%20verbindlichen%20Auskunft%20erteilt.%0A%0A181.%0A%E2%80%9EZertifikate%E2%80%9C%20oder%20%E2%80%9ETestate%E2%80%9C%20Dritter%20k%C3%B6nnen%20bei%20der%20Auswahl%20eines%20Softwareproduktes%20dem%20Unternehmen%20als%20Entscheidungskriterium%20dienen%2C%20entfalten%20jedoch%20aus%20den%20in%20Rz.%20179%20genannten%20Gr%C3%BCnden%20gegen%C3%BCber%20der%20Finanzbeh%C3%B6rde%20keine%20Bindungswirkung.%20&op=translate>`_.
Configuration
~~~~~~~~~~~~~
:ref:`Install <general/install>` the **Germany - Certification for Point of Sale**
(`l10n_de_pos_cert`) and **Germany - Certification for Point of Sale of type restaurant**
(`l10n_de_pos_res_cert`) modules.
What happens if you are not compliant?
--------------------------------------
.. tip::
If these modules are not listed, :ref:`update the app list <general/install>`.
In the event of an infringement, you can expect a fine but also a court order demanding the
implementation of specific measures.
Company registration at the financial authority
***********************************************
To register your company, open the :guilabel:`Settings` app, click :guilabel:`Update Info` under the
:guilabel:`Companies` section, and fill in the following fields:
- :guilabel:`Company Name`
- :guilabel:`Address`
- :guilabel:`VAT`
- :guilabel:`St.-Nr.` (Steuernummer) this number is assigned by the tax office to every taxable
natural or legal person (e.g., `2893081508152`).
- :guilabel:`W-IdNr.` (Wirtschafts-Identifikationsnummer) this number is used as a permanent
identification number for economically active persons.
You can then **register your company through fiskaly** by opening the :guilabel:`Fiskaly` tab and
clicking the :guilabel:`Fiskaly Registration` button.
.. tip::
If you do not see the :guilabel:`Fiskaly Registration` button, make sure that you *saved* your
company details and are not in *editing mode* anymore.
Once the registration has been finalized, new fields appear:
- :guilabel:`Fiskaly Organization ID` refers to the ID of your company on fiskaly's side.
- :guilabel:`Fiskaly API Key` and :guilabel:`Fiskaly API Secret` are the credentials the system
uses to access the services offered by fiskaly.
.. image:: germany/fiskaly-registration.png
:alt: Fiskaly registration tab
.. note::
It is possible to request new credentials if there is any issue with the current ones by clicking
the :guilabel:`New keys` button.
Create a technical security system and link it to a POS
*******************************************************
To use a point of sale in Germany, first create a :abbr:`TSS (Technical Security System)` by going
to :menuselection:`Point of Sale --> Configuration --> Point of Sale`, selecting the
:guilabel:`Point of Sale` to edit, then checking the :guilabel:`Create TSS` box under the
:guilabel:`Fiskaly API` section.
Once the creation of the TSS is successful, you can find the:
- :guilabel:`TSS ID`, which refers to the ID of your TSS on fiskaly's side, and
- :guilabel:`Fiskaly Client ID`, which refers to your POS on fiskaly's side.
.. image:: germany/fiskaly-tss.png
:alt: Fiskaly API section
DSFinV-K export
~~~~~~~~~~~~~~~
Whenever you close a PoS session, the details of the orders are sent to the :abbr:`DSFinV-K
(Digitale Schnittstelle der Finanzverwaltung für Kassensysteme)` service of fiskaly.
In case of an audit, you can export the data sent to DSFinV-K by going to :menuselection:`Point of
Sale --> Orders --> DSFinV-K Exports --> New`.
.. image:: germany/pos-orders-menu.png
:alt: Menu to export DSFinV-K
These fields are mandatory:
- :guilabel:`Start Datetime`: export data with dates larger than or equal to the given start date
- :guilabel:`End Datetime`: export data with dates smaller than or equal to the given end date
Leave the :guilabel:`Point of Sale` field blank to export the data of all your points of sale;
specify one if you want to export data for this specific POS only.
.. image:: germany/dsfinv-k-export.png
:alt: Exporting DSFinV-K
When an export is successfully triggered and is being processed, the :guilabel:`State` field should
mention :guilabel:`Pending`. Click :guilabel:`Refresh State` to check if it is ready.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -33,6 +33,10 @@ localization:
- `l10n_it_stock_ddt`
- Transport documents - Documento di Trasporto (DDT)
.. seealso::
:doc:`Documentation on e-invoicings 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`.

View File

@@ -32,6 +32,10 @@ localization:
Installing the module :guilabel:`Luxembourg - Accounting Reports` installs all three modules at
once.
.. seealso::
:doc:`Documentation on e-invoicings legality and compliance in Luxembourg
<../accounting/customer_invoices/electronic_invoicing/luxembourg>`
Standard Chart of Accounts - PCN 2020
=====================================

View File

@@ -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:

View File

@@ -2,6 +2,10 @@
Netherlands
===========
.. seealso::
:doc:`Documentation on e-invoicings legality and compliance in the Netherlands
<../accounting/customer_invoices/electronic_invoicing/netherlands>`
XAF Export
==========

View File

@@ -7,6 +7,7 @@ Peru
.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)`
.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)`
.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)`
.. |PLE| replace:: :abbr:`PLE (Programa de Libros Electrónico)`
Modules
=======
@@ -57,6 +58,10 @@ Peruvian localization.
- Adds the delivery guide (Guía de Remisión), which is needed as proof that you are sending
goods between A and B. It is only when a delivery order is validated that the delivery guide
can be created.
* - :guilabel:`Peru - Stock Reports`
- `l10n_pe_reports_stock`
- Enables the :ref:`PLE reports <peru/reports-ple>` for permanent inventory record in physical
units and permanent valued inventory records.
* - :guilabel:`Peruvian eCommerce`
- `l10n_pe_website_sale`
- Enables the identification type in eCommerce checkout forms and the ability to generate
@@ -724,14 +729,22 @@ and the :ref:`master data <peru-master_data>`, :ref:`install <general/install>`
Next, you need to retrieve the *client ID* and *client secret* from |SUNAT|. To do so, follow the
`manual de servicios web plataforma nueva GRE
<https://cpe.sunat.gob.pe/sites/default/files/inline-files/Manual_Servicios_GRE.pdf>`_.
<https://cpe.sunat.gob.pe/sites/default/files/inline-files/Manual_Servicios_GRE%20%281%29.pdf>`_.
.. note::
In the |SUNAT| portal, it is important to have the correct access rights enabled, as they may
differ from the user set for electronic invoicing.
These credentials should be used to configure the delivery guide general settings from
:menuselection:`Accounting --> Configuration --> Settings --> Peruvian Electronic Invoicing`.
:menuselection:`Inventory --> Configuration --> Settings`, and scroll down to the :guilabel:`Peru
Delivery Guide` section.
Configure the following :guilabel:`Sunat Delivery Guide API` fields:
- :guilabel:`Guide Client ID`: the unique API *client ID* generated in the |SUNAT| portal
- :guilabel:`Guide Client Secret`: the unique API *client secret* generated in the |SUNAT| portal
- :guilabel:`Guide SOL User`: the RUC Number + SOL username
- :guilabel:`Guide SOL Password`: the SOL user password
.. image:: peru/gre-fields-example.png
:alt: Example for the SUNAT Delivery Guide API section configuration.
@@ -940,5 +953,100 @@ based on their tax ID (RUC/DNI). The invoice must then :ref:`be sent to the OSE
<peru-electronic-invoice-status>`. By default, all published invoices are sent once a day through
a scheduled action, but you can also send each invoice manually if needed.
Once the invoice is validated with |SUNAT|, customers can download the :file:`.zip` with the CDR,
XML, and PDF files directly from the customer portal by clicking the :guilabel:`Download` button.
Once the invoice is validated with |SUNAT|, customers can download the .zip file with the CDR, XML,
and PDF files directly from the customer portal by clicking the :guilabel:`Download` button.
Reports
=======
.. _peru/reports-ple:
Permanent inventory reports: |PLE| 12.1 and |PLE| 13.1
------------------------------------------------------
Odoo can produce two permanent inventory reports as `.txt` files for Peruvian accounting: |PLE| 12.1
and |PLE| 13.1. All inventory transactions made need to be reported.
- |PLE| 12.1 **only tracks inventory in physical units**, focusing on the inflow and outflow of
goods for effective management and planning.
- |PLE| 13.1 tracks **both physical quantities and monetary values of inventory**, providing a
comprehensive view for tax and management purposes.
Both reports must be maintained semi-annually (January-June and July-December), with monthly
transaction details reported within these periods. The submission deadlines are October 1st for the
first semester and April 1st for the second semester, in accordance with the *Resolución de
Superintendencia N° 169-2015*.
Configuration
~~~~~~~~~~~~~
Before generating the |PLE| 12.1 or |PLE| 13.1 reports, make sure the :guilabel:`Peru - Stock
Reports` (`l10n_pe_reports_stock`) module is installed, then update the fields for:
- :ref:`Products <peru/reports-ple-products>`
- :ref:`Warehouses <peru/reports-ple-warehouses>`
- :ref:`Inventory transfers <peru/reports-ple-transfers>`
.. _peru/reports-ple-products:
Products
********
Several configurations related to the product or product category are necessary for |PLE| reporting:
- **Type of existence**: For all products needing |PLE| reporting, go to the product record's
:guilabel:`Accounting` tab and select the :guilabel:`Type of Existence` according to |SUNAT|'s
table 5 for inventory reporting.
- **Automatic inventory valuation**: For storable goods (:dfn:`products with tracked inventory`),
use :doc:`automatic inventory valuation
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`.
Once automatic inventory valuation is enabled, this valuation method can be enabled for
a product's :ref:`product category <inventory/warehouses_storage/valuation-on-product-category>`.
- **Costing method:** Storable goods must use a :doc:`costing method
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/inventory_valuation_config>`
**other** than :guilabel:`Standard Price`, as the journal entries generated from stock moves are
used to populate the |PLE| reports.
.. _peru/reports-ple-warehouses:
Warehouses
**********
When :doc:`setting up a warehouse
<../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses>`, the
:guilabel:`Annex Establishment Code` field must be filled. This code acts as a unique ID for each
warehouse and should only be a numeric combination, containing between 4 to 7 digits.
.. _peru/reports-ple-transfers:
Inventory transfers
*******************
Transferring inventory is a key process captured in the |PLE| 12.1 and |PLE| 13.1 reports.
:doc:`Inventory transfers <../../inventory_and_mrp/inventory/shipping_receiving/daily_operations>`
include both incoming and outgoing shipments.
When validating an inventory transfer (either on a warehouse receipt or delivery order), select the
:guilabel:`Type of Operation (PE)` performed according to |SUNAT|'s table 12 for permanent inventory
reporting.
Generate a .txt file for permanent inventory Kardex reports
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|PLE| 12.1 and 13.1 come as two separate books. The books need to be downloaded in `.txt` file
format from Odoo, and then they should be submitted to the |SUNAT| |PLE| software.
On the :ref:`Inventory Valuation Report <inventory/management/reporting/valuation-report>`, click
the :guilabel:`PLE Reports` button. Then, select the :guilabel:`Period` and choose a report to
export: either the :guilabel:`PLE 12.1` or :guilabel:`PLE 13.1`. Odoo generates a `.txt` file
for the chosen report.
.. image:: peru/l10n-ple-export-button.png
:alt: Export Buttons selection
.. note::
Only a download of the report in `.txt` format is available. There is no preview or visualization
available within Odoo.

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -24,6 +24,10 @@ localization.
.. image:: romania/romania-modules.png
:alt: Modules for the Romanian localization
.. seealso::
:doc:`Documentation on e-invoicings legality and compliance in Romania
<../accounting/customer_invoices/electronic_invoicing/romania>`
D.406 declaration
=================

View File

@@ -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-invoicings legality and compliance in Spain
<../accounting/customer_invoices/electronic_invoicing/spain>`
- :doc:`Documentation on e-invoicings 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
--------

View File

@@ -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
-----------

View File

@@ -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.

View File

@@ -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
=====================

View File

@@ -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

View File

@@ -1,9 +1,166 @@
:nosearch:
:show-content:
.. |UoM| replace:: :abbr:`UoM (Unit of Measure)`
.. |UoMs| replace:: :abbr:`UoMs (Units of Measure)`
=================
Configure product
=================
A group of products in Odoo can be further defined using:
- :doc:`Units of measure (UoM) <configure/uom>`: a standard quantity for specifying product amounts
(e.g., meters, yards, kilograms). Enables automatic conversion between measurement systems in
Odoo, such as centimeters to feet.
- *Ex: Purchasing fabric measured in meters but receiving it in yards from a vendor.*
- :doc:`configure/package`: A physical container used to group products together, regardless of
whether they are the same or different.
- *Ex: A box containing assorted items for delivery, or a storage box of two hundred buttons on a
shelf.*
- :doc:`configure/packaging`: groups the *same* products together to receive or sell them in
specified quantities.
- *Ex: Cans of soda sold in packs of six, twelve, or twenty-four.*
Comparison
==========
This table provides a detailed comparison of units of measure, packages, and packaging to help
businesses evaluate which best suits their requirements.
.. list-table::
:header-rows: 1
:stub-columns: 1
* - Feature
- Unit of measure
- Packages
- Packaging
* - Purpose
- Standardized measurement for product units (e.g., cm, lb, L)
- Tracks the specific physical container and its contents
- Groups a fixed number of items together for easier management (e.g., packs of 6, 12 or 24)
* - Product uniformity
- Defined per product; saved as one |UoM| in the database
- Allows mixed products
- Same products only
* - Flexible
- Converts between vendor/customer |UoMs| and database |UoM|
- Items can be added or removed from the container
- Quantities are fixed (e.g., always packs of 6, 12 or 24)
* - Complexity
- Simplest for unit conversions
- More complex due to container-level inventory tracking
- Simpler; suitable for uniform product groupings
* - Inventory tracking
- Tracks product quantities within the warehouse in the specific |UoM| defined in the product
form
- Tracks package location and contents within the warehouse
- Tracks grouped quantities but not individual items' locations
* - Smooth barcode operations
- Not available
- Requires scanning both the package and individual items for reception. (even if there are 30
items in a package). Can enable the :ref:`Move Entire Packages
<inventory/product_management/move-entire-pack>` feature to update the package's contained
items' locations, when moving the package
- Scanning a packaging barcode automatically records all included units. (e.g. 1 pack = 12
units)
* - Product lookup
- Not available
- Scanning a product's barcode identifies its typical storage location in the Odoo database
- Barcode identifies grouped quantity, not storage location
* - Unique barcodes
- Not available
- Unique barcodes for individual packages (e.g. Pallet #12)
- Barcodes set at the packaging type level (e.g. for a pack of 6)
* - Reusability
- Not applicable
- Can be disposable or reusable, configured via the :ref:`Package Use
<inventory/warehouses_storage/cluster-pack>` field
- Disposable only
* - Container weight
- Not applicable
- Weight of the container itself is included in the *Shipping Weight* field of a package
(:menuselection:`Inventory app --> Products --> Packages`)
- Weight of the container is defined in the *Package Type* settings
* - Lot/serial number tracking
- Requires manual adjustments to track |UoMs| via lots (See :ref:`use case
<inventory/product_management/lots-uom>` for details)
- Applies only to contained products
- Applies to both contained products and the container
* - Custom routes
- Cannot be set
- Cannot be set
- Routes can define specific warehouse paths for a particular packaging type
Use cases
=========
After comparing the various features, consider how these businesses, with various inventory
management and logistics workflows, came to their decision.
Pallets of items using packaging
--------------------------------
A warehouse receives shipments of soap organized on physical pallets, each containing 96 bars. These
pallets are used for internal transfers and are also sold as standalone units. For logistical
purposes, the pallet's weight must be included in the total shipping weight for certain deliveries.
Additionally, the pallet requires a barcode to facilitate tracking, and the number of individual
bars of soap must be included in the stock count when the pallet is received.
After evaluating various options, *product packaging* was the most suitable solution. Packaging
enables assigning a barcode to a pallet, identifying it as a "pallet type" containing 96 soap bars.
This barcode streamlines operations by automatically registering the grouped quantity. Key
distinctions include:
- **Warehouse tracking limitations**: Odoo tracks only the total quantity, not the number of
packagings. For instance, if a pallet with 12 and 24 quantities is received, Odoo records 36
quantities, not the pallet details.
- **Packaging barcodes are type-specific, not unique**: Barcodes represent packaging types (e.g.,
"pallet of 96 soap bars") but do not uniquely identify individual pallets, such as Pallet #1 or
Pallet #2.
Capture product information using barcode
-----------------------------------------
An Odoo user expects the **Barcode** app to display the typical storage location of a product by
scanning a barcode for a container.
*Packages* was the most suitable. When the :ref:`appropriate setting is enabled
<inventory/warehouses_storage/enable-package>`, scanning a package barcode displays its contents in
the **Barcode** app.
Packages represent physical containers, enabling detailed tracking of the items they hold.
Scanning a package provides visibility into its contents and facilitates operations, like inventory
moves.
.. _inventory/product_management/lots-uom:
Track different units of measure in storage
-------------------------------------------
A fruit juice distributor tracks multiple |UoMs| for their operations:
- Fruits are purchased in tons.
- Juice is produced and stored in kilograms.
- Small samples are stored in grams for recipe testing.
*Unit of Measure* was most suitable. Odoo automatically converts tons to kilograms during
receipts. However, since Odoo tracks only one |UoM| per product in the database, the company uses
lot numbers to differentiate |UoMs|:
- LOT1: Grams (g)
- LOT2: Kilograms (kg)
Manual inventory adjustments are required to convert between lots, such as subtracting 1 kg from
LOT2 to add 1,000 g to LOT1. While functional, this workaround can be time-consuming and prone to
errors.
.. toctree::
:titlesonly:

View File

@@ -45,6 +45,17 @@ the :guilabel:`Operations` heading, activate the :guilabel:`Packages` feature. T
:align: center
:alt: Activate the *Packages* setting in Inventory > Configuration > Settings.
.. _inventory/product_management/move-entire-pack:
When moving packages internally, the *Move Entire Packages* feature can be enabled on an operation
type to update a package's contained item's location upon updating the package's location.
To do that, go to :menuselection:`Inventory app --> Configuration --> Operations Types` and select
the desired operation this feature will apply to (may have to set it for multiple).
On the operation type page, in the :guilabel:`Packages` section, tick the :guilabel:`Move Entire
Packages` checkbox.
.. _inventory/warehouses_storage/pack:
Pack items

View File

@@ -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
========================

View File

@@ -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`.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -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
orders 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:

View File

@@ -6,8 +6,8 @@ Set up the *Bpost* shipping connector in Odoo to manage Bpost shipments to clien
Odoo. To configure it, complete these steps:
#. Create a Bpost account.
#. Get the :ref:`Account ID and passphrase <inventory/shipping/Bpost-account>`.
#. Set up the shipping method in Odoo.
#. Get the :ref:`Account ID and passphrase <inventory/shipping_receiving/bpost-account>`.
#. :ref:`Set up the shipping method in Odoo <inventory/shipping_receiving/bpost-method>`.
Upon completion, it is possible to calculate the cost of shipping, based on package size and weight,
have the charges applied directly to a Bpost business account, and automatically print Bpost
@@ -19,8 +19,8 @@ tracking labels through Odoo.
- :doc:`dhl_credentials`
- :doc:`ups_credentials`
Bpost account setup
===================
Account setup
=============
To begin, go to the `Bpost website <https://parcel.bpost.be/en/home/business>`_ to create, or log
into, the company's Bpost business account. When creating the Bpost account, have the company's VAT
@@ -30,25 +30,24 @@ Follow the website's steps to complete registration, and sign up for shipping se
submits a request to enter a contractual business relationship between the company and Bpost.
.. important::
Odoo **cannot** be integrated with `non-business Bpost
<https://bpost.freshdesk.com/support/solutions/articles/174847-account-id-and-passphrase>`_
accounts.
Odoo **cannot** be integrated with `non-business Bpost <https://www.odoo.com/r/Z4wZ>`_ accounts.
After completing the setup, get the Bpost account ID and passphrase, by navigating to the
:guilabel:`Shipping Manager` menu item.
.. _inventory/shipping/bpost-account:
.. _inventory/shipping_receiving/bpost-account:
On the :guilabel:`Shipping Manager` page, go to the :guilabel:`Admin` tab, then the
:guilabel:`General Settings` tab, to find the :guilabel:`Account ID` and :guilabel:`Passphrase`
needed to configure Odoo's shipping method.
.. image:: bpost/credentials.png
:align: center
:alt: In the *Admin* tab, show the Account ID and Passphrase.
Configure Bpost shipping method
===============================
.. _inventory/shipping_receiving/bpost-method:
Shipping method configuration
=============================
With those necessary credentials, configure the Bpost shipping method in Odoo by going to
:menuselection:`Inventory app --> Configuration --> Shipping Methods`.
@@ -69,23 +68,20 @@ Product`, refer to the :doc:`Configure third-party carrier <third_party_shipper>
In the :guilabel:`Bpost Configuration` tab, complete the following fields:
- :guilabel:`Bpost Account Number` (required field): enter the company's unique :ref:`account ID
<inventory/shipping/bpost-account>` from the Bpost website.
<inventory/shipping_receiving/bpost-account>` from the Bpost website.
- :guilabel:`Passphrase` (required field): enter the :ref:`passphrase
<inventory/shipping/bpost-account>` from the Bpost website.
<inventory/shipping_receiving/bpost-account>` from the Bpost website.
- :guilabel:`Bpost Delivery Nature`: select either :guilabel:`Domestic` or :guilabel:`International`
shipping services. Choosing :guilabel:`Domestic` shows the :guilabel:`Options` section, while
:guilabel:`International` enables the :guilabel:`Bpost Shipment Type` and :guilabel:`Bpost Parcel
Return Instructions` fields.
- :guilabel:`Bpost Package Type`: select the type of shipping service from the drop-down menu.
For `domestic delivery
<https://help.shipmondo.com/en/articles/6092265-bpost-belgium-parcel-types-and-requirements>`_,
the options are: :guilabel:`bpack 24h Pro`, :guilabel:`bpack 24h business`, or :guilabel:`bpack
Bus`.
For `domestic delivery <https://www.odoo.com/r/uOVM>`_, the options are: :guilabel:`bpack 24h
Pro`, :guilabel:`bpack 24h business`, or :guilabel:`bpack Bus`.
For `international delivery <https://www.bpost.be/en/business-parcels-send/international>`_, the
options are: :guilabel:`bpack World Express Pro`, :guilabel:`bpack World Business`, or
:guilabel:`bpack Europe Business`.
For `international delivery <https://www.odoo.com/r/s6G>`_, the options are: :guilabel:`bpack
World Express Pro`, :guilabel:`bpack World Business`, or :guilabel:`bpack Europe Business`.
- :guilabel:`Bpost Shipment Type` (required field): for international deliveries, declare the type
of goods in the package as :guilabel:`SAMPLE`, :guilabel:`GIFT`, :guilabel:`GOODS`,
:guilabel:`DOCUMENTS`, or :guilabel:`OTHER`.
@@ -105,6 +101,5 @@ For domestic deliveries, these features are available in the :guilabel:`Options`
validating the delivery order.
.. image:: bpost/bpost.png
:align: center
:alt: Show Bpost shipping method.

View File

@@ -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

View File

@@ -38,7 +38,7 @@ The following is a list of available shipping connectors in Odoo:
- United States of America
* - :doc:`Sendcloud <sendcloud_shipping>`
- Some European countries (see details below)
* - Bpost
* - :doc:`Bpost <bpost>`
- Belgium
* - Easypost
- North America

View File

@@ -26,19 +26,17 @@ In order to use reordering rules for a product, it must first be correctly confi
navigating to :menuselection:`Inventory app --> Products --> Products`, then select an existing
product, or create a new one by clicking :guilabel:`New`.
On the product form, under the :guilabel:`General Information` tab, make sure the :guilabel:`Product
Type` is set to :guilabel:`Storable Product`. This is necessary because Odoo only tracks stock
quantities for storable products, and this number is used to trigger reordering rules.
On the product form, under the :guilabel:`General Information` tab, make sure the
:guilabel:`Track Inventory` checkbox is ticked. This is necessary for Odoo to track the product's
stock levels and trigger reordering rules.
.. image:: reordering_rules/product-type.png
:align: center
:alt: Set the Product Type as Storable.
Next, click on the :guilabel:`Inventory` tab and select one or more routes from the
:guilabel:`Routes` section. Doing so tells Odoo which route to use to replenish the product.
.. image:: reordering_rules/select-routes.png
:align: center
:alt: Select one or more routes on the Inventory tab.
If the product is reordered using the :guilabel:`Buy` route, confirm that the :guilabel:`Can be
@@ -47,7 +45,6 @@ appear. Click on the :guilabel:`Purchase` tab, and specify at least one vendor,
they sell the product for, so that Odoo knows which company the product should be purchased from.
.. image:: reordering_rules/specify-vendor.png
:align: center
:alt: Specify a vendor and price on the Purchase tab.
If the product is replenished using the :guilabel:`Manufacture` route, it needs to have at least one
@@ -59,30 +56,40 @@ If a :abbr:`BoM (Bill of Materials)` does not already exist for the product, sel
:guilabel:`New` to configure a new :abbr:`BoM (Bill of Materials)`.
.. image:: reordering_rules/bom-smart-button.png
:align: center
:alt: The Bill of Materials smart button on a product form.
Create new reordering rules
===========================
To create a new reordering rule, navigate to :menuselection:`Inventory app --> Configuration -->
Reordering Rules`, then click :guilabel:`New`, and fill out the new line as follows:
To create a new reordering rule, navigate to :menuselection:`Inventory app --> Operations -->
Replenishment`, then click :guilabel:`New`, and fill out the following fields for the new reordering
rule line item:
- :guilabel:`Product`: The product that is replenished by the rule.
- :guilabel:`Location`: The location where the product is stored.
- :guilabel:`Min Quantity`: The minimum quantity that can be forecasted without the rule being
- :guilabel:`Min`: The minimum quantity that can be forecasted without the rule being
triggered. When forecasted stock falls below this number, a replenishment order for the product is
created.
- :guilabel:`Max Quantity`: The maximum quantity that stock is replenished up to.
- :guilabel:`Multiple Quantity`: Specify if the product should be replenished in batches of a
certain quantity (e.g., a product could be replenished in batches of 20).
- :guilabel:`Max`: The maximum quantity at which the stock is replenished.
- :guilabel:`To Order`: The number of units, according to the *UoM*, that should be replenished for
this reordering rule (e.g., a product could be replenished in batches of 20).
- :guilabel:`UoM`: The unit of measure used for reordering the product. This value can simply be
`Units` or a specific unit of measurement for weight, length, etc.
.. image:: reordering_rules/reordering-rule-form.png
:align: center
:alt: The form for creating a new reordering rule.
.. note::
Two other fields are automatically populated: :guilabel:`On Hand` (the number of units currently
available in inventory) and :guilabel:`Forecast` (the number of units expected to be available in
inventory after all orders are taken into account). These numbers will only change when an
:doc:`inventory adjustment <../inventory_management/count_products>` is made.
Also, additional fields can be accessed by clicking the :icon:`oi-settings-adjust`
:guilabel:`(additional options slider icon)`. For example, :guilabel:`Multiple Quantity`
specifies if the product should be replenished in batches of a certain quantity (e.g., a product
could be replenished in batches of 20).
.. tip::
Reordering rules can also be created from each product form. To do so, navigate to
:menuselection:`Inventory app --> Products --> Products`, and select a product. Then, click the
@@ -137,7 +144,6 @@ In the :guilabel:`Min Quantity` field and :guilabel:`Max Quantity` field, leave
`0.00`. In the :guilabel:`To Order` field, enter a value of `1.00`.
.. image:: reordering_rules/001-rule.png
:align: center
:alt: A 0/0/1 reordering rule.
With the reordering rule configured using these values, each time an |SO| causes the forecasted
@@ -183,7 +189,6 @@ titles, and enable the :guilabel:`Trigger` option from the additional options dr
appears.
.. image:: reordering_rules/enable-trigger.png
:align: center
:alt: Enable the Trigger field by toggling it in the additional options menu
In the :guilabel:`Trigger` column, select :guilabel:`Auto` or :guilabel:`Manual`. Refer to the
@@ -215,7 +220,6 @@ Automatic reordering rules, configured by setting the reordering rule's :guilabe
:guilabel:`Forecast` is `55.00`, the reordering rule is **not** triggered.
.. image:: reordering_rules/auto.png
:align: center
:alt: Show automatic reordering rule from the Reordering Rule page.
If the :guilabel:`Buy` route is selected, then an :abbr:`RFQ (Request for Quotation)` is generated.
@@ -252,7 +256,6 @@ When a product appears on the replenishment dashboard, clicking the :guilabel:`O
generates the purchase or manufacturing order with the specified amounts :guilabel:`To Order`.
.. image:: reordering_rules/manual.png
:align: center
:alt: Click the Order Once button on the replenishment dashboard to replenish stock.
.. _inventory/product_management/visibility-days:
@@ -284,11 +287,10 @@ advance.
is February 27th.
.. image:: reordering_rules/need-dates.png
:align: center
:alt: Graphic representing when the need appears on the replenishment dashboard: Feb 27th.
To see the product on the replenishment dashboard for the current date, February 20, set
the :guilabel:`Visibility Days` to `7.00`.
To see the product on the replenishment dashboard for the current date, February 20, set the
:guilabel:`Visibility Days` to `7.00`.
To determine the amount of visibility days needed to see a product on the replenishment dashboard,
subtract *today's date* from the *date the need appears* on the replenishment dashboard.
@@ -307,7 +309,6 @@ subtract *today's date* from the *date the need appears* on the replenishment da
the need **not** appearing on the replenishment dashboard.
.. image:: reordering_rules/visibility-days.png
:align: center
:alt: Show the replenishment dashboard with the correct and incorrect visibility days set.
.. _inventory/product_management/route:
@@ -332,7 +333,6 @@ Click inside of the column on the row of a reordering rule, and a drop-down menu
routes for that rule. Select one to set it as the preferred route.
.. image:: reordering_rules/select-preferred-route.png
:align: center
:alt: Select a preferred route from the drop-down.
.. important::

View File

@@ -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.

View File

@@ -178,12 +178,15 @@ the **POS dashboard**.
.. toctree::
:titlesonly:
point_of_sale/configuration
point_of_sale/employee_login
point_of_sale/receipts_invoices
point_of_sale/preparation
point_of_sale/combos
point_of_sale/configuration
point_of_sale/shop
point_of_sale/restaurant
point_of_sale/pricing
point_of_sale/payment_methods
point_of_sale/pos_based_marketing
point_of_sale/online_food_delivery
point_of_sale/reporting

View File

@@ -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 23 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 23 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,120 @@
==================
Marketing features
==================
Use your POS system to engage with customers directly by sending them promotional offers via email
or WhatsApp.
Storing contact details
=======================
This feature requires your customer's contact details, either their email address or phone number.
- **Email addresses**: automatically collected and saved in POS orders when sending a receipt by
email.
- **Phone numbers**: to store phone numbers when sending receipts on WhatsApp or by SMS,
#. Go to :menuselection:`Configuration --> Settings` and scroll to the :guilabel:`Bills &
Receipts` section;
#. Activate the :guilabel:`WhatsApp Enabled` or :guilabel:`SMS Enabled` option(s).
.. image:: pos_based_marketing/sms-whatsapp-enabled.png
:alt: setting to enable to store phone numbers when sending receipts
If a customers contact information is missing, it will be automatically saved in POS orders when
the receipt is sent via email, SMS, or WhatsApp.
.. tip::
From a POS order form, navigate to the :guilabel:`Contact Info` category under the
:guilabel:`Extra Info` tab, then click the email icon or whatsapp icon to send standalone
marketing messages.
.. image:: pos_based_marketing/standalone-marketing-from-pos.png
:alt: pos orders form's standalone marketing message option
Email marketing
===============
To send marketing emails to your customers from POS orders,
#. Go to :menuselection:`Point of Sale --> Orders --> Orders`;
#. Select the orders;
#. Click :guilabel:`Actions`, then :guilabel:`Send Email` from the dropdown menu.
Doing so opens an email composing form. Fill it in and hit :guilabel:`Send`.
.. image:: pos_based_marketing/mail-composer.png
:alt: mail composer view
:scale: 50 %
.. tip::
- Save some time by saving your content as a template. Click the vertical ellipsis button and
select your template under the :guilabel:`Insert Template` section.
- You can also save your content as template for later use. Click the vertical ellipsis button
and select :guilabel:`Save as Template`.
.. note::
- Fill in the :guilabel:`Mass Mailing Name` field to create a mass mailing and track its results
in the :doc:`Email Marketing app <../../marketing/email_marketing>`.
- If an email address is not related to an existing customer, a new customer is automatically
created when sending marketing emails.
.. seealso::
:doc:`Use the email marketing app for more advanced marketing features
<../../marketing/email_marketing>`.
Whatsapp marketing
==================
.. _pos_based_marketing/whatsapp_config:
Configuration
-------------
You first need to enable the related server action to send WhatsApp marketing messages from your POS
using the phone numbers collected from POS orders. To do so,
#. Go to the WhatsApp application;
#. Create a new :ref:`WhatsApp template <WhatsApp/templates>`;
#. Configure the fields:
- :guilabel:`Applies to` field set to :guilabel:`Point of Sale Orders`;
- :guilabel:`Category` field to :guilabel:`Marketing`;
- :guilabel:`Phone Field` to either :guilabel:`Mobile` or :guilabel:`Customer > Phone`.
#. Click :guilabel:`Submit for Approval`;
#. Once approved, click the :guilabel:`Allow Multi` button to create a server action in the POS
orders list view.
.. image:: pos_based_marketing/whatsapp-template.png
:alt: approved and configured for marketing uses whatsapp template
.. warning::
If you modify the template's content, you must request for approval again, as its status returns
to the :guilabel:`Draft` state.
.. seealso::
:doc:`WhatsApp configuration <../../productivity/whatsapp>`
Send WhatsApp marketing messages
--------------------------------
#. Go to :menuselection:`Point of Sale --> Orders --> Orders`;
#. Select the orders;
#. Click :guilabel:`Actions`, then :guilabel:`WhatsApp Message` from the dropdown menu.
Doing so opens a WhatsApp message composing form. Select the desired marketing template in the
:guilabel:`Template` field and hit :guilabel:`Send Message`.
.. image:: pos_based_marketing/whatsapp-composer.png
:alt: whatsapp composer view
.. note::
- To use WhatsApp marketing in the Point of Sale, approved marketing templates must have the
:guilabel:`Allow Multi` option enabled and :guilabel:`Point of Sale Orders` selected in the
:guilabel:`Applies to` field.
- If the server action is displayed without a properly configured template, an error message
appears. Click :guilabel:`Configure Templates` and complete the :ref:`WhatsApp setup
<pos_based_marketing/whatsapp_config>` steps.
.. seealso::
:doc:`../../productivity/whatsapp`

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,109 @@
===================
Preparation display
===================
The preparation display feature allows you to handle POS orders requiring preparation. Concretely,
- **For retail**: The preparation team is notified after a payment is completed at the POS to
gather the purchased items for customer pickup.
- **For restaurants**: POS orders inform the kitchen of the meals to be prepared.
Configuration
=============
To enable the preparation display feature,
#. Go to the :ref:`POS settings <configuration/settings>`.
#. Scroll down to the :guilabel:`Preparation` section.
#. Check the :guilabel:`Preparation Display` option.
.. image:: preparation/preparation-setting.png
:alt: Setting to enable the preparation display feature
:scale: 90 %
To create and set up a preparation display,
#. Go to :menuselection:`Point of Sale --> Orders --> Preparation Display`
#. Click :guilabel:`New`.
#. Give the display a descriptive :guilabel:`Name` (e.g., `Main Kitchen`, `Bar`)
#. Set it up:
#. :guilabel:`Point of Sale`: Select the POS that sends orders to this display.
#. :guilabel:`Product categories`: Specify the POS :guilabel:`Product categories` sent to this
display.
#. :guilabel:`Stages`: Define the steps required for the orders to be ready.
- Click :guilabel:`Add a line` to add a stage.
- Assign specific colors to each stage for clarity (optional).
- Define an :guilabel:`Alert timer (min)` for each stage to indicate the expected processing
time.
.. image:: preparation/display-form.png
:alt: preparation display set-up form
:scale: 85 %
.. note::
To edit a pre-existing preparation display, click the vertical ellipsis button
(:icon:`fa-ellipsis-v`) on the display's card and select :guilabel:`Configure`.
Practical application
=====================
Go to :menuselection:`Point of Sale --> Orders --> Preparation Display` to get an overview of all
your displays.
.. image:: preparation/display-card.png
:alt: Kanban view of the preparation display
:scale: 85 %
The display card shows:
- The configured stages.
- The number of orders currently :guilabel:`In progress`.
- The :guilabel:`Average time` employees usually take to complete an order.
.. tip::
Click the :guilabel:`Kitchen Display` app icon on your Odoo Dashboard for quicker access.
Using the preparation display
-----------------------------
To access the preparation display, click :guilabel:`Preparation Screen`. This interface, designed
for employees, shows:
- **Stages and order count**: Displays the progress of orders across stages such as `To prepare`,
`Ready`, and `Completed`, along with the number of orders in each stage.
- **Ordered products by category**: Lists all items in progress, grouped by POS categories (e.g.,
`Drinks`, `Food`).
- **Order cards**: Summarizes individual orders, including:
- Associated tables and order numbers.
- Status, such as `Ready`, highlighted with the defined colors.
- Waiting time, with visual indicators.
.. note::
The duration indicator turns red if the elapsed time exceeds the predefined alert time.
.. image:: preparation/preparation-display.png
:alt: the preparation display interface with orders to process.
:scale: 80 %
To update order progress:
- Click items on the order card to cross them off individually.
- Click the order card itself to mark all items at once.
- The card automatically moves to the next stage once every item is crossed off.
- Click :icon:`fa-undo` :guilabel:`Recall` to move an order back to the previous stage if you
mistakenly sent it to the next stage.
Customer display
----------------
In parallel, click :guilabel:`Order Status Screen` to open the customer interface. This interface,
designed for customers, provides an overview of orders that are:
- :guilabel:`Ready` for pickup.
- :guilabel:`Almost there`, indicating they are taken care of.
.. note::
The order number can be found at the top of the customer's receipt.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More