Compare commits

...

133 Commits

Author SHA1 Message Date
Denis Vermylen 7d43958d7b [IMP] odoo_sh: FAQ more workers 2024-01-25 18:50:31 +01:00
Donatienne (dopi) b84e81d3a1 [IMP] elearning: set prerequisite courses
taskid-3433600

closes odoo/documentation#7542

X-original-commit: 2d4a3cc883
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-01-25 14:56:28 +00:00
nni-odoo 4f098945d7 [ADD] localizations: indonesia qris
Adding QRIS documentation from the following PR https://github.com/odoo/odoo/pull/146926

closes odoo/documentation#7477

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-25 13:11:23 +00:00
“Audrey 86fac322d3 [IMP] payment_providers: payment methods + restructure doc page
task-3570280

closes odoo/documentation#7527

X-original-commit: 67894e33f6
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-01-25 05:49:20 +00:00
Julien Alardot (jual) 958fa599e1 [FIX] reference/user_interface: filter element name is mandatory
The filter element attribute 'name' is now required since
odoo/odoo/commit/4ddc3231

closes odoo/documentation#7523

X-original-commit: cbe72a69bb
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Julien Alardot (jual) <jual@odoo.com>
2024-01-24 10:52:51 +00:00
“Audrey 0604fb56f9 [IMP] Studio: new report editor
task-3553091

closes odoo/documentation#7518

X-original-commit: cf389c1c3e
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-01-24 09:20:37 +00:00
Loredana Perazzo 3fe09dd653 [IMP] pos: note about products loading
task-3095675

closes odoo/documentation#7509

X-original-commit: 5ec37fbb7f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-01-23 16:03:41 +00:00
tiku-odoo 06eaf3a0c7 [IMP]Productivity WhatsApp Enterprise Edit
closes odoo/documentation#7502

X-original-commit: 474d0b7b94
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-01-23 14:35:31 +00:00
Antoine Vandevenne (anv) 14c0438764 [IMP] reference/user_interface: reformat and clarify views reference
In particular, the following changes are made:
- Use the `class` and `attribute` admonitions along with custom
  attributes to define classes, views' root attributes, views'
  components, and attribute values. This allows re-using the responsive
  design that was made for reference lists, and getting rid of the
  previous implementation that relied on class attributes, which were not
  intended for this usage and reduce readability while hindering further
  contributions due to a lack of flexibility (no admonitions,
  sub-attributes...)
- Use definition lists to define view types to allow for clearer and
  longer descriptions.
- Rewrite and restructure the explanations when there is a lack clarity.
- Extract duplicated content to included RST files.
- Display SVG images into dedicated admonitions.
- Fix RST and English mistakes.
- Rename `view_architecture` to `view_architectures`, as it lists all
  existing architectures and doesn't describe "the architecture of a
  view".
- Replace underscores with hyphens in image file names to improve SEO.

task-3458320

closes odoo/documentation#5237

closes odoo/documentation#7497

X-original-commit: a17eaf4c6f
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-23 10:51:24 +00:00
tiku-odoo db3db3c727 [IMP] IoT Printer doc edits
closes odoo/documentation#7496

X-original-commit: bfe57fdbdd
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-23 10:51:20 +00:00
Donatienne (dopi) 1be6f341dd [IMP] Website: menus
Update screenshots to reflect V17

closes odoo/documentation#7400

X-original-commit: 7e45e144a6
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-01-23 10:51:14 +00:00
Loredana Perazzo 39541bb745 [ADD] POS: page to setup and use product combos
Task-3604850

closes odoo/documentation#7485

X-original-commit: 539435d14d
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-01-23 09:08:09 +00:00
tiku-odoo 157c1e18ea [RMV]Sales: remove snyc menu line ebay connector
closes odoo/documentation#7471

X-original-commit: 9db684fe86
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-01-22 19:21:43 +00:00
nni-odoo ab5c9feb40 [ADD] payment_providers: Xendit
Documentation for Xendit payment provider

taskid-2946329

closes odoo/documentation#7475

X-original-commit: 05637af163
Signed-off-by: Nigel Nicholas (nni) <nni@odoo.com>
2024-01-22 02:56:57 +00:00
Martin Trigaux (mat) 6c3385cf90 [I18N] *: export 16.0 translations
closes odoo/documentation#7473

X-original-commit: aecf49d6c8
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2024-01-21 08:58:23 +00:00
KC (ksc) b53427ddde [IMP] subscriptions: update renewals doc
closes odoo/documentation#7433

X-original-commit: 6a7bc2d449
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-01-20 01:18:24 +00:00
tiku-odoo e6dbd3d9e4 [IMP] Microsoft Azure Email Phrasing update
closes odoo/documentation#7462

X-original-commit: d902bbbc19
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-01-19 21:38:05 +00:00
tiku-odoo 646bfe2e2c [RMV]VOIP:Scrub Asterisk Docs
closes odoo/documentation#7445

X-original-commit: 055e332ef3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-01-19 15:05:16 +00:00
Felicious e620f27378 [ADD] inventory: least packages removal strategy
closes odoo/documentation#7417

X-original-commit: bc6c92d786
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
2024-01-18 03:28:49 +00:00
Brandon Seltenrich (BRSE) f10c8d4ad2 [IMP] barcode: update adjustments doc
closes odoo/documentation#7424

X-original-commit: a7af9a59ff
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-17 07:54:25 +00:00
Christophe Monniez b4cab2a3db [FIX] requirements: fix sphinxcontrib versions
It seems that the latest version if sphinx contrib libs needs sphinx 5.0.

closes odoo/documentation#7413

X-original-commit: 38bd71fa13
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2024-01-16 19:28:39 +00:00
Ricardo Gomes Rodrigues 999c8db465 [IMP] l10n: Codabox for Belgium
Add Codabox Belgium documentation following the introduction of the
module introduced in https://github.com/odoo/enterprise/pull/47607

task-id 3592955

closes odoo/documentation#7405

X-original-commit: 4895a3b55c
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-01-16 17:58:53 +00:00
Felicious 6ec9eb1fcc [ADD] inventory: lifo removal strategy
closes odoo/documentation#7373

X-original-commit: fd598899c2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
2024-01-16 16:40:25 +00:00
Donatienne (dopi) baab56946f [IMP] sign: tags, signing orders, reminders, expiration dates
task-3609727

New features are available in v17:
Modify tags on signed documents.
Send automatic email reminders to people who have yet to sign a document after a set delay.
Signing order available as soon as you have more than one signer
Setting expiration dates on signature requests.

closes odoo/documentation#7275

X-original-commit: 054801995e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-01-16 16:40:23 +00:00
aliya 73499c595e [IMP] accounting: peppol
In 17.0 we have introduced some additional features in Peppol:
- switching between the demo mode/test mode/live
- better UI that allows fetch peppol message status, new documents, etc from the accounting dashboard
- peppol ready filter to filter customer invoices that are ready to be sent via peppol

part of:
task-3614809

closes odoo/documentation#7402

X-original-commit: 47300c10bf
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Aliya Tastemirova (alta) <alta@odoo.com>
2024-01-16 10:03:50 +00:00
“Chiara 2c1277d0f7 [IMP] accounting: internal transfers
taskid-3663508

closes odoo/documentation#7401

X-original-commit: 9223318b05
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-16 10:03:49 +00:00
Felicious fc98af5814 [ADD] inventory: closest locations removal strat
closes odoo/documentation#7367

X-original-commit: a926fbf998
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
2024-01-16 03:09:35 +00:00
Olivier Dony d0b7363de5 [IMP] conf: special case alt lang links for legal terms
Legal terms live under specific URL as their translations are not
managed in the same manner.

Layout is like this:
  /terms/enterprise.html (EN)
  /terms/i18n/enterprise_fr.html (FR)

This commit adapts the generation of alternative languages links for each
"legal terms page", so that it targets the correct i18n link, or goes
back to the canonical EN one, depending on the target language.

closes odoo/documentation#7382

closes odoo/documentation#7384

closes odoo/documentation#7387

Signed-off-by: Olivier Dony (odo) <odo@odoo.com>
2024-01-15 22:56:16 +01:00
Olivier Dony 65f1e3ce0a [CHG] legal: make Spanish partnership contract official
Removed the "not legally binding" warning, as Odoo now has official
establishments in countries when Spanish contracts are mandatory and
need to be binding. More careful reviews of the Spanish translations
will be necessary from now on.

Part-of: odoo/documentation#7387
2024-01-15 22:56:16 +01:00
Olivier Dony a48ebe55bf [IMP] legal: update spanish Enterprise contract to v10a
Including spellchecking and proper emphasis of some important terms, and
the disambiguation of "Extra Covered Modules" and "Bug"

Removed the "not legally binding" warning, as Odoo now has official
establishments in countries when Spanish contracts are mandatory and
need to be binding. More careful reviews of the Spanish translations
will be necessary from now on.

Part-of: odoo/documentation#7387
2024-01-15 22:56:16 +01:00
Jonathan Castillo (jcs) 3d28850a40 [FIX] redirects: redirection loop on install.rst
closes odoo/documentation#7392

X-original-commit: f4bad01680
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-15 13:04:21 +00:00
Donatienne (dopi) 83a68e4b9b [MOV] geo ip installation: move page to install
Page moved from Websites to Install section

taskid-3512515

X-original-commit: a9004e844f
Part-of: odoo/documentation#7392
2024-01-15 13:04:21 +00:00
Rémy Voet (ryv) be60243eff [IMP] orm: update changelog for the new flush strategy
closes odoo/documentation#7194

Related: odoo/upgrade#5469
Related: odoo/odoo#144747
Related: odoo/enterprise#53380
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2024-01-15 13:04:08 +00:00
KC (ksc) d07052aa57 [IMP] sales: updated amazon order management
closes odoo/documentation#7381

X-original-commit: f751e9548a
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-14 21:38:51 +00:00
KC (ksc) b89d3e56c2 [IMP] sales: amazon connector features doc for 16
closes odoo/documentation#7380

X-original-commit: a43a65992e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-14 21:38:50 +00:00
Felicious 8d87bfe462 [ADD] inventory: fefo removal
closes odoo/documentation#7366

X-original-commit: 8ebfc5cd2a
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-01-14 02:15:41 +00:00
Sam Lieber (sali) b72d340b3c [FIX] l10n_cl: Chile typo corrections
closes odoo/documentation#7363

X-original-commit: 505547264e
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
Signed-off-by: Marco Antonio Iribe Sepulveda (masi) <masi@odoo.com>
2024-01-13 05:40:53 +00:00
Felicious a197b6c57d [ADD] inventory: fifo removal strategy
closes odoo/documentation#7354

X-original-commit: 5f416e028f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
2024-01-13 04:31:50 +00:00
Joren Van Onder f0cf3c68ac [IMP] accounting: direct customers to official fork of Taxcloud modules
Also improve wording a bit.

closes odoo/documentation#7353

X-original-commit: 968177ade5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Renee Carano <rca@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-01-13 03:20:49 +00:00
Tom Aarab (toaa) 1f31ba3f06 [REM] accounting: multiple payments
Removing redundant page (see task)

See PR https://github.com/odoo/documentation/pull/6645

taskid-3466400

closes odoo/documentation#7350

X-original-commit: 2ef7150ebf
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-13 03:20:48 +00:00
Marion (masp) 2f0d98c9f7 [ADD] website: address autocomplete configuration
Task-3618264

closes odoo/documentation#7316

X-original-commit: ca160e4e1a
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-01-12 16:21:15 +00:00
Nicolas Viseur (vin) 4210a31408 [REF] l10n_au_keypay: remove au dependency
Keypay, now called Employment Hero, is not limited to Australia
but also supports Singapore, Malaysia,...

This task will:
- remove dependencies to Australia, to make it usable with other
localisation.
- Rename the module and all references to keypay and au in order to
keep the module clean for future use.
- Implement better error messages when the api returns one.
- Render the api key, and url company specific to support using
two different API on two separate companies.

Task id # 2925767

closes odoo/documentation#7276

Related: odoo/enterprise#53685
Related: odoo/upgrade#5494
Signed-off-by: Nicolas Viseur (vin) <vin@odoo.com>
2024-01-12 11:22:55 +00:00
Nathan Marotte (nama) 080dc64e54 [ADD] Upgrade documentation: How-to-guide for developers
closes odoo/documentation#7336

X-original-commit: 44f4683519
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-11 17:21:54 +00:00
Felicious 95f8067ed5 [IMP] inventory: split removal strategy doc
closes odoo/documentation#7329

X-original-commit: 9c417efadc
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-01-11 05:37:14 +00:00
masi-odoo f453b2266f [IMP] payment_provider/mercado pago: content updates
This commit will add important clarifications to use and test the Mercado Pago payment provider and add visual documentation similar to other provider's documentation

closes odoo/documentation#7326

X-original-commit: 1596413d4b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Marco Antonio Iribe Sepulveda (masi) <masi@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-01-11 05:37:07 +00:00
Tom Aarab (toaa) d88b185c27 [IMP] localization: spain missing reports
Missing tax reports for

15 & 16: 347 & 349
17: 347, 349, & 390

taskid-3673259

closes odoo/documentation#7320

X-original-commit: e808a28f3a
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-10 09:02:55 +00:00
Tom Aarab (toaa) 62a4db0c7d [IMP] accounting: taxes
Updated the tax documentation for 16.4 onwards. Forward to master.

taskid-3621461

closes odoo/documentation#7303

X-original-commit: 73fc5e9be4
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-10 06:28:01 +00:00
Tom Aarab (toaa) de2999c01d [IMP] accounting: payments doc update
Updated the payments doc page.

Forward to master.

16.3 -> Change reconciliation section

taskid-3610834

closes odoo/documentation#7273

X-original-commit: 9c1efe5b20
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-08 14:23:23 +00:00
Tom Aarab (toaa) 494ae5a555 [IMP] accounting: checks
Cleared up some confusion about path menu and feature

Forward to master

taskid-3644544

closes odoo/documentation#7292

X-original-commit: c438e5a3aa
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-08 12:52:43 +00:00
Donatienne (dopi) 283c843eeb [ADD] blogs: documentation
task-3492925

closes odoo/documentation#7282

X-original-commit: 4bc2742413
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-08 12:52:42 +00:00
Julien Castiaux b0cc13d4fe [FIX] developer/reference/cli: log on stderr
Odoo is actually logging on sys.stderr and not sys.stdout[^1][^2][^3].

Remove passage about the workflows, the workflows were an OpenERP
feature removed almost a decade ago in odoo/odoo@98cb4719db.

Fixes: #7210

[^1]: https://github.com/odoo/odoo/blob/b3b9b2b49ef90d30bcce1e27a4ba0b24f888170c/odoo/netsvc.py#L156
[^2]: https://github.com/odoo/odoo/blob/b3b9b2b49ef90d30bcce1e27a4ba0b24f888170c/odoo/netsvc.py#L198
[^3]: https://docs.python.org/3/library/logging.handlers.html#logging.StreamHandler

closes odoo/documentation#7274

X-original-commit: c55e8f251a
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2024-01-04 23:00:59 +00:00
Donatienne (dopi) 6016ed4e93 [IMP] to-do: create a new to-do with ctrl k shortcut
taskid-3501306

closes odoo/documentation#7252

X-original-commit: a1eaf3af64
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-04 20:40:46 +00:00
Tom Aarab (toaa) 6c561112a8 [FIX] Project: broken URL
One of the link is broken

taskid-3658558

closes odoo/documentation#7250

X-original-commit: 0311faee2f
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-04 19:10:10 +00:00
Tom Aarab (toaa) 7a8f551d67 [IMP] accounting: Incoterms
Updated the Incoterms page to add "location" field and fixed typos

taskid-3619104

closes odoo/documentation#7245

X-original-commit: 30f5433366
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-04 19:10:09 +00:00
Tom Aarab (toaa) 67adf2fc3b [IMP] accounting: batch payments
Updated screenshots from 16.3 onwards. Forward to master.

taskid-3615592

closes odoo/documentation#7242

X-original-commit: 22012bbf3e
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-04 19:10:08 +00:00
Tom Aarab (toaa) 6f3ca9f4a3 [IMP] accounting: bank sync
Changed a note that was confusing to end users. Forward to 16.3

16.3 & 16.4 --> Fetch Account/Reconnect

17.0 --> Reconnect

taskid-3619168

closes odoo/documentation#7234

X-original-commit: f0ee3420b9
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-04 17:58:34 +00:00
“Chiara d1836f349f [IMP] accounting: withholding tax
taskid-3615963

closes odoo/documentation#7236

X-original-commit: cc03963248
Signed-off-by: Chiara Prattico (chpr) <chpr@odoo.com>
2024-01-04 14:59:39 +00:00
YStorm5 e765370016 [FW][FIX] developer/tutorials/getting_started: swap headers
I think these two header got mix up.

closes odoo/documentation#7226

Forward-port-of: odoo/documentation#7199
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-03 17:43:36 +00:00
ezoer 15beccfd50 [FW][FIX] developer/user_interface: fix typo in 'attribute'
closes odoo/documentation#7225

Forward-port-of: odoo/documentation#7190
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-03 17:43:34 +00:00
Lara Martini (larm) cec2e1f322 [ADD] fleet: add a new vehicle
closes odoo/documentation#7222

X-original-commit: 7a5d891206
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: jero-odoo <104637850+jero-odoo@users.noreply.github.com>
2024-01-02 22:09:33 +00:00
Brandon Seltenrich (BRSE) 9cb186f87b [IMP] inventory: update differences doc
closes odoo/documentation#7216

X-original-commit: 81d201efc4
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-01-02 20:36:56 +00:00
KC (ksc) 075eea9326 [IMP] sales: updated quotation template for 17
closes odoo/documentation#7198

X-original-commit: edb41d8c51
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-29 23:24:40 +00:00
KC (ksc) b5507c4940 [IMP] subscriptions: updated upsell sub doc
closes odoo/documentation#7197

X-original-commit: 648cc25775
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-29 23:24:39 +00:00
Lara Martini (larm) 64fabeb801 [IMP] Inventory: making targeted edits for 16
closes odoo/documentation#7189

X-original-commit: 04401626e5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-27 23:57:01 +00:00
Lara Martini (larm) 6667e3ec35 [ADD] Fleet: new services doc
closes odoo/documentation#7183

X-original-commit: abb6130914
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-27 23:57:00 +00:00
Brandon Seltenrich (BRSE) 7b917cd1c3 [IMP] mrp: update variants doc
closes odoo/documentation#7175

X-original-commit: f3a2865dea
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2023-12-27 14:03:06 +00:00
Lara Martini (larm) 884c1b3126 [ADD] Referrals: new doc explaining all of referrals
closes odoo/documentation#7167

X-original-commit: f2b550ab78
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2023-12-26 23:07:20 +00:00
Brandon Seltenrich (BRSE) b339573354 [IMP] barcode: update barcode operations doc
closes odoo/documentation#7166

X-original-commit: 30fd7112af
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-26 23:07:19 +00:00
Brandon Seltenrich (BRSE) 668420655f [IMP] barcode: update transfers scratch doc
closes odoo/documentation#7153

X-original-commit: df58ae965c
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-26 21:44:52 +00:00
Ricardo Gomes Rodrigues abb3589471 [IMP] accounting: Deferred revenues and expenses
Update Deferred Revenues and Expenses documentation
following the changes in https://github.com/odoo/enterprise/pull/40902

task-id 3478356

closes odoo/documentation#7143

X-original-commit: 6d6e82a158
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2023-12-26 09:53:34 +00:00
Prakash Prajapati (ppr) 588801185a [IMP] payment_providers: activate on-demand (Recurring payments) feature for Razorpay
task-3495914

closes https://github.com/odoo/documentation/pull/6732

closes odoo/documentation#7145

Related: odoo/odoo#143525
Related: odoo/odoo#147425
X-original-commit: 5be62e15e2
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Prakash Prajapati (ppr) <ppr@odoo.com>
2023-12-26 08:40:44 +00:00
aliya 78d1f23686 [IMP] accounting: peppol
task-3613395

closes odoo/documentation#7140

X-original-commit: d88148f3f6
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-12-22 21:16:41 +00:00
Lara Martini (larm) e72b21d734 [IMP] Recruitmet: updating images and text for 16 version
closes odoo/documentation#7133

X-original-commit: 55600e428d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:50:02 +00:00
Lara Martini (larm) 5ff951e927 [IMP] payroll: made targeted edits for 16
closes odoo/documentation#7132

X-original-commit: ec18f20bf5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:50:01 +00:00
Lara Martini (larm) 78b3ca7521 [IMP] employees: larm made targeted edits for 16 and updated pics
closes odoo/documentation#7131

X-original-commit: 5413bd1c5d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:50:00 +00:00
Lara Martini (larm) 9e3cb9eeaf [ADD] Attendances: new documentation needed for flow and configurations
updated section about managers for better flow

closes odoo/documentation#7115

X-original-commit: 6b9ba7f9ed
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: jero-odoo <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: jero-odoo <104637850+jero-odoo@users.noreply.github.com>
2023-12-22 19:49:59 +00:00
KC (ksc) 9115d5d7a4 [IMP] sales: updated product_images doc about Google API
closes odoo/documentation#7113

X-original-commit: 8167182ae9
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:49:58 +00:00
KC (ksc) c5b4336b52 [IMP] sales: updated import products doc for 16
closes odoo/documentation#7112

X-original-commit: ca1554271b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:49:57 +00:00
Lara Martini (larm) 78d289c677 [ADD] fleet: new configurations doc
closes odoo/documentation#7098

X-original-commit: 52a2a795a1
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2023-12-22 19:49:56 +00:00
KC (ksc) 14a9073ac9 [IMP] rental: total update of the doc for the rental app
closes odoo/documentation#7091

X-original-commit: 230461a3e8
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 19:49:55 +00:00
Nicolas Viseur (vin) 4eb1baa5c5 [IMP] l10n_au: update documentation
Provides an up-to-date documentation for the Australian localization
(Odoo 17) with all the new and upcoming features in this version.

closes odoo/documentation#7138

X-original-commit: 2bffc3d457
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-12-22 18:30:07 +00:00
Martin Trigaux a2fbef0bc9 [I18N] *: export saas-16.1 translations
closes odoo/documentation#7075

X-original-commit: a4f0e6b9b8
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-12-22 07:33:45 +00:00
Lara Martini (larm) 0f8e20e0aa [IMP] Recruitment: adding new hiring flow doc
closes odoo/documentation#7099

X-original-commit: 6704ff51de
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 04:08:56 +00:00
tiku-odoo dfc42d4b62 [IMP] Market Connectors: eBay Marketplace edits
closes odoo/documentation#7082

X-original-commit: 2048c588c4
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 01:53:10 +00:00
Jess Rogers (jero) 5bd89e30b9 [IMP] crm: update convert leads
closes odoo/documentation#7068

X-original-commit: 88a0b155e5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.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>
2023-12-22 01:53:09 +00:00
MaxKeilOdoo 35602b9f50 [IMP] sales: update win loss report documentation for Odoo 17
closes odoo/documentation#7060

X-original-commit: 554193a14b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: jero-odoo <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-12-21 07:57:52 +00:00
tiku-odoo 79fa32eb3d [IMP] Misc: Portal User Change Login Initial Commit
closes odoo/documentation#7059

X-original-commit: d423038270
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 07:57:51 +00:00
KC (ksc) 3905b642fa [IMP] marketing automation: updated testing_running campaign doc for Odoo 16
closes odoo/documentation#7040

X-original-commit: 76fc90dde7
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 07:57:50 +00:00
KC (ksc) 5b581c31a5 [IMP] marketing automation: update understanding_metrics for 16
closes odoo/documentation#7039

X-original-commit: 70050340fe
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 07:57:49 +00:00
KC (ksc) 90fffd3039 [IMP] marketing automation: updated workflow activities for 16
closes odoo/documentation#7028

X-original-commit: 6968e362da
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 07:57:48 +00:00
Valentino 6fb216f70d [IMP] l10n_br: include electronic invoicing flow
With the addition of l10n_br_edi and l10n_br_edi_sale to the previous modules, now electronic invoices for goods can be created from Odoo.

This PR includes the necessary information to use these new modules - configuration and workflows.

closes odoo/documentation#7022

X-original-commit: f23dcb7d35
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 07:57:47 +00:00
tiku-odoo d4eece9b5f [IMP] Productivity: Discuss Getting Started
closes odoo/documentation#7049

X-original-commit: cdd5dbead5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 06:49:32 +00:00
KC (ksc) 52e107681a [IMP] sales: updated variants doc for v16
closes odoo/documentation#7021

X-original-commit: c2c835c2d6
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-21 00:17:20 +00:00
KC (ksc) be6f7e1662 [IMP] social marketing: updated essentials for Odoo 16
closes odoo/documentation#7020

X-original-commit: bddbe0fd45
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-21 00:17:19 +00:00
KC (ksc) 28f9d0c02c made all of BRSE's edits
closes odoo/documentation#7009

X-original-commit: a728ac22dd
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-20 22:48:50 +00:00
Jess Rogers (jero) 643ec40050 [IMP] crm: create new quotation
closes odoo/documentation#7002

X-original-commit: 5a298f09eb
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-12-20 22:48:49 +00:00
Lara Martini (larm) 629a2852b6 [IMP] Inventory: updated for v16
closes odoo/documentation#7000

X-original-commit: 1c00f06816
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 07:11:48 +00:00
Lara Martini (larm) 77c1f6ff95 [ADD] Payroll: adding new reporting doc
closes odoo/documentation#6994

X-original-commit: fcba53839f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 00:41:24 +00:00
Géry Debongnie 045fb847e8 [IMP] Rework the JavaScript tutorials
This commit rework the entire JavaScript tutorial series with the
following improvements:

-   Each chapter is now designed to be independent, allowing learners to
    follow any chapter without the necessity of completing previous ones.
-   Each chapter has been transformed into a standalone module, enabling
    learners to create small projects from scratch within each chapter.
-   The screenshots/text/code have been updated for Odoo 17.

Currently we have 5 chapters:
- Discover Chapter 1 - Owl Components: This chapter allows to learn the
  Owl framework in the `awesome_owl` module.
- Discover Chapter 2 - Build a dashboard: This chapter allows to grasp
  the basic of the web framework by building a dashboard in the
  `awesome_dashboard` module.
- Master Chapter 1 - Build a clicker game: This chapter allows to grasp
  the web framework by building a clicker game in the `awesome_clicker`
  module.
- Master Chapter 2 - Create a gallery view: This chapter allows to learn
  how to create a new view type. The new view is a gallery of records
  pictures. It can be done in the `awesome_gallery` module.
- Master Chapter 3 - Customize a kanban view: This chapter allows to
  learn to customize a kanban view by implementing a list of customer in
  the side of a kanban view. This can be done in the `awesome_kanban`
  module.

The chapter on creating and customizing fields is deleted for now and
will be completely rewritten in a near future.
The chapter on testing is deleted, how-to guides will be written to
cover this subject.

The solutions for all exercises has been done for v17, the goal by
merging the new tutorial is to have this new branch structure in
`odoo/tutorials`:
- 16.0
- 16.0-solutions
- 17.0
- 17.0-discover-js-framework-solutions
- 17.0-master-odoo-web-framework-solutions
-   master <-- default branch, starting point for all addons
-   master-discover-js-framework-solutions
-   master-master-odoo-web-framework-solutions

closes odoo/documentation#6980

Task-id: 3623595
X-original-commit: 3d4a275196
Signed-off-by: Géry Debongnie <ged@odoo.com>
Signed-off-by: Florent Dardenne (dafl) <dafl@odoo.com>
2023-12-20 00:41:24 +00:00
Felicious b963e4c7f9 [FIX] barcode: typo in example
closes odoo/documentation#6977

X-original-commit: 72f93a84ea
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-19 20:23:46 +00:00
Julien Castiaux 3a3a224b17 [FIX] deploy: set Content-Security-Policy on static
The Content-Security-Policy[^1] http header was only set on the response
generated by controllers but it was missing from the `/<module>/static/`
route.

It is not strictly necessary to set that header on the responses comming
from that routes as it is not possible to add new static files or edit
existing ones via the interface (not even as admin). Only the developers
and system administrator can access those files.

It is also worth mentionning that using the Odoo internal web server to
deliver static files is suboptimal. Outside of a dev environment, those
files will typically be delivered via a web server[^2] and sysadmins
should configure their web server to set the CSP header on static images.

[^1]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
[^2]: https://www.odoo.com/documentation/master/administration/install/deploy.html#serving-static-files-and-attachments

closes odoo/documentation#6954

X-original-commit: f3f44fe5f2
Related: odoo/odoo#146592
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-18 20:07:53 +00:00
Julien Castiaux 86bd9fd91b [FIX] deploy: nginx forwarded-host with tcp port
Install nginx using the nginx configuration found in the documentation
and changes the `listen` port to 8080. Start Odoo in `--proxy-mode`.

    listen 8080;
    server_name mycompany.odoo.com;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    location / {
            proxy_pass http://127.0.0.1:8069;
    }

Inside your browser, access "http://mycompany.odoo.com:8080" you are
wrongly redirected to "http://mycompany.odoo.com:80".

Odoo uses the `X-Forwarded-Host` http header value to generate new URls,
in this configuration `$host` only contains the domain (=hostname using
the urllib terminology) instead of the domain+port (=netloc). The
variable that contains both the domain and the port is actually
`$http_host`.

closes odoo/documentation#6944

Closes: odoo/odoo#64643
X-original-commit: 09c42c5896
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-18 20:07:52 +00:00
KC (ksc) 6935a84404 [IMP] sales: updated entire invoicing based on milestones doc
closes odoo/documentation#6968

X-original-commit: d615bc0f6d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-17 23:12:00 +00:00
KC (ksc) 31387885d6 [IMP] sales: updated Amazon Connector setup doc for 16
closes odoo/documentation#6962

X-original-commit: 5233e05676
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: dalaOdoo <dala@odoo.com>
Co-authored-by: Demesmaeker <edm@odoo.com>
Co-authored-by: meng-odoo <meng@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
2023-12-16 23:10:41 +00:00
Brandon Seltenrich (BRSE) f8dce88995 [FIX] barcode: fix default delay number
closes odoo/documentation#6960

X-original-commit: 18aad6d5f2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-16 21:36:03 +00:00
masi-odoo 78d998f5fc [IMP] l10n_cl: Electronic Invoicing eCommerce and POS
Adding the new functionality for V17 which let's the end client to decide the electronic document to be generated for their eCommerce purchase.

Photo folder: https://drive.google.com/drive/folders/17zrIsuhZ2IAWX6X30IJ1HdFF0531gB3_

closes odoo/documentation#6938

X-original-commit: 74d5918ff3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-15 03:00:57 +00:00
Tom Aarab (toaa) 3ef14b8254 fw port
closes odoo/documentation#6916

X-original-commit: bf0ac2dffd
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2023-12-14 14:56:36 +00:00
Lara Martini (larm) 6d219133e0 [ADD] Payroll: adding detailed payslips doc
closes odoo/documentation#6930

X-original-commit: 9486fe5b62
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <ksc@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
2023-12-14 03:02:21 +00:00
Sam Lieber (sali) 2a52e0979b [IMP] accounting/l10n_mx: additional context
closes odoo/documentation#6895

X-original-commit: 9e7518ff69
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: feav-odoo <feav@odoo.com>
Co-authored-by: toaa-odoo <toaa@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2023-12-13 23:56:18 +00:00
Maximilien (malb) f72e7a25e0 [FIX] accounting: cheat sheet reconcile
Before this commit, when doing the reconciliation of the table present in the
cheat sheet, the second reconciliation was wrong because the "Invoice 1" should
be reconciled with the twos partials payment. This Pr correct that by changing
the find parameter to target the partials also.

closes odoo/documentation#6903

Task: 3633468
X-original-commit: 053fb768e6
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Maximilien La Barre (malb) <malb@odoo.com>
2023-12-13 14:39:19 +00:00
KC (ksc) c21233db05 [ADD] sales: recommend Adobe software, as suggested by JCS
closes odoo/documentation#6884

X-original-commit: d0761052da
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-11 21:55:50 +00:00
John Holton (hojo) 5d7abe69ac [REF] Inventory: Restructure Inventory scope
closes odoo/documentation#6883

X-original-commit: 59791c252b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-11 21:55:49 +00:00
KC (ksc) f18c11cb41 [IMP] sales: reinvoice expenses to customers
closes odoo/documentation#6826

X-original-commit: a4a9335dd1
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-11 21:55:47 +00:00
Ken Geis 8c4cb060f0 [FW][FIX] developer/mixins: fix typo in XMLID
closes odoo/documentation#6875

Forward-port-of: odoo/documentation#6801
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-12-07 22:05:57 +00:00
KC (ksc) 07e7787668 [IMP] sales: updated down payment doc for 16
closes odoo/documentation#6872

X-original-commit: 9fc9c2f52d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 22:05:52 +00:00
KC (ksc) d4b8665fe2 [IMP] sales: updated optional_products for 16
closes odoo/documentation#6870

X-original-commit: 22d41dc2f3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 22:05:51 +00:00
KC (ksc) 3e7c00af02 [IMP] sales: updated returns doc for v16
closes odoo/documentation#6874

X-original-commit: 4e85ef01e8
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:56 +00:00
KC (ksc) eff6545537 [IMP] sales: updated pro-forma invoice doc for 16
closes odoo/documentation#6873

X-original-commit: bbbb00e752
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:55 +00:00
KC (ksc) 41cdeab0fa [IMP] sales: update get signature to validate for 16
closes odoo/documentation#6871

X-original-commit: e1bed7ee7c
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:54 +00:00
KC (ksc) 630d4385f4 [IMP] sales: online signature confirmation doc
closes odoo/documentation#6869

X-original-commit: e6a6b9b453
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:53 +00:00
KC (ksc) 30b173ff25 [IMP] sales: fully updated currencies doc
closes odoo/documentation#6868

X-original-commit: 039dba0780
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:52 +00:00
KC (ksc) 620b50f9e2 [IMP] sales: updated time_materials for v16
closes odoo/documentation#6867

X-original-commit: 1e2a29338e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:45:51 +00:00
KC (ksc) 7612732f7f [IMP] subscriptions: products fix misleading info
closes odoo/documentation#6818

X-original-commit: ff2cabf621
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 03:31:02 +00:00
Zachary Straub (ZST) f08db8544a [IMP] sales: update quote_template for 16
closes odoo/documentation#6804

X-original-commit: 675eaa8068
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 03:31:01 +00:00
KC (ksc) de4795724b [IMP] sales: update orders and variants for 16
closes odoo/documentation#6810

X-original-commit: af7c7afa34
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 02:23:40 +00:00
Julien Castiaux 556b5c4bc3 [FIX] administration/install: wkhtmltopdf 0.12.6
Official packages for wkhtmltopdf 0.12.5 are no more released since the
release of wkhtmltopdf 0.12.6 in 2020. Debian 10 "Buster" and Ubuntu
20.04 "Focal" were the last system for which 0.12.5 was built[^1].
Installing 0.12.5 on a Ubuntu 22.04 "Jammy" (using the Focal package)
fails for outdated dependencies.

Official packages for wkhtmltopdf 0.12.6 are published on another
repository[^2] than 0.12.5 used to, it includes packages for 0.12.6 for
both Debian 11 "Bullseye" and Ubuntu 22.04 "Jammy". Version 0.12.6.1-r3
is compatible out-of-the-box with Odoo and has been used by runbot to
test all 16.x, 17.x and master branches for the past month.

This work makes it official that [wkhtmltopdf 0.12.6.1-r3] must be used
for Odoo 16.0 and onward.

[^1]: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5
[^2]: https://github.com/wkhtmltopdf/packaging/releases
[wkhtmltopdf 0.12.6.1-r3]: https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3

closes odoo/documentation#6800

X-original-commit: e5d77ee285
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-06 18:55:19 +00:00
“Chiara 0c162ecf18 [IMP] accounting: followup screenshot
taskid-3614885

closes odoo/documentation#6794

X-original-commit: 27a307cb0c
Signed-off-by: Chiara Prattico (chpr) <chpr@odoo.com>
2023-12-06 13:03:48 +00:00
Donatienne (dopi) 922f540fa6 [IMP] Website: Unsplash documentation updated
task-3498880

closes odoo/documentation#6770

X-original-commit: 88f546f2a9
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-12-06 09:46:53 +00:00
william-andre 1defbf7383 [FIX] install: do not create superuser for postgres
The preferred/safe way of running Odoo is with a standard user, with
only the right to create a database.
See https://github.com/odoo/odoo/commit/b6b73551dbbb3079f043920f21554b945fa4870e

closes odoo/documentation#6772

X-original-commit: df8114e591
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: William André (wan) <wan@odoo.com>
2023-12-06 08:16:48 +00:00
Jess Rogers (jero) fd3f3ca5cf [IMP] crm: update plan activities
closes odoo/documentation#6777

X-original-commit: e4aee350b8
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Timothy Kukulka <91896312+tiku-odoo@users.noreply.github.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>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-12-06 03:43:40 +00:00
Loredana Perazzo f10dcbdaf6 [IMP] pos: remove duplicate of set customer and update sections accordingly
task-3366190

closes odoo/documentation#6668

X-original-commit: 4118cb9bf9
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2023-12-04 11:28:51 +00:00
Julien Castiaux 883442e483 [IMP] developer/reference/cli: --proxy-mode
Many customers struggle with their web server configuration, notably
regarding the `--proxy-mode` option and the way `X-Forwarded-*` HTTP
request headers are interpreted within Odoo.

The `--proxy-mode` section has been updated to cover the most common
misunderstandings and to give guidances on how to setup a web server.

Odoo always only takes the last entry of the `X-Forwarded-*` request
header because there are situations where it is not possible to
determine which last n-th entry to use. Employees might access their
odoo database via the internal network: connecting directly to nginx,
while customers might access the database via an additional proxy such
as cloudflare. The real IP of employees would be the last inside the
`X-Forwarded-For` chain, while the real IP of customers would be the
*second* last entry inside the chain. It would be incorrect to always
take the same nth last entry inside the chain. The cloudflare's own IP
address must be discarded from the chain. Web servers usually feature
a way to ignore trusted IP from the chain, a way so that the real IP
of the user is always the last entry inside the chain. Odoo relies on
such feature to be active and configured.

Prior discussions about `X-Forwarded-For`:
* odoo/odoo#104947
* odoo/odoo#118629
* odoo/odoo#139536

All `X-Forwarded-*` headers are ignored in case the `X-Forwarded-Host`
header is missing (even with `--proxy-mode`). System admin might be
tempted to not set this header and to set `Host` instead, this is
broken as this a user-agent would be able to spoof `X-Forwarded-Host`
and Odoo would use that instead of the correct `Host`.

Prior discussions about `X-Forwarded-Host`:
* odoo/odoo#63277
* odoo/odoo#70117

closes odoo/documentation#6744

X-original-commit: 3d91c57b57
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-03 08:26:12 +00:00
Tom Aarab (toaa) 41442270a3 [IMP] accounting: checks
Update screenshots for 16.4 and up. Forward to master.

taskid-3614814

closes odoo/documentation#6711

X-original-commit: 639a56fc5c
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2023-12-01 17:37:37 +00:00
1557 changed files with 49390 additions and 24158 deletions
+16
View File
@@ -478,8 +478,24 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
_version = _version or app.config.version
_lang = _lang or app.config.language or 'en'
_canonical_page = f'{pagename}.html'
# legal translations have different URLs schemes as they are not managed on transifex
# e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
if pagename.startswith('legal/terms/'):
if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
# remove language code for current translation, set target one
_page = re.sub("_[a-z]{2}$", "", pagename)
if 'terms/i18n' not in _page:
_page = _page.replace("/terms/", "/terms/i18n/")
_canonical_page = f'{_page}_{_lang}.html'
elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
# remove language code for current translation, link to original EN one
_page = re.sub("_[a-z]{2}$", "", pagename)
_canonical_page = f'{_page.replace("/i18n/", "/")}.html'
if app.config.is_remote_build:
_canonical_page = _canonical_page.replace('index.html', '')
return f'{_root}' \
f'{f"/{_version}" if app.config.versions else ""}' \
f'{f"/{_lang}" if _lang != "en" else ""}' \
+1
View File
@@ -47,3 +47,4 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
install/deploy
install/cdn
install/email_gateway
install/geo_ip
+56 -36
View File
@@ -330,7 +330,7 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
@@ -339,7 +339,7 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
# Redirect requests to odoo backend server
location / {
# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
@@ -439,51 +439,71 @@ Odoo static files are located in each module's :file:`static/` folder, so static
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
(and file) in the various addons paths.
.. example::
Say Odoo has been installed via the **debian packages** for Community and Enterprise and the
:option:`--addons-path <odoo-bin --addons-path>` is ``'/usr/lib/python3/dist-packages/odoo/addons'``.
It is recommended to set the ``Content-Security-Policy: default-src 'none'`` header on all images
delivered by the web server. It is not strictly necessary as users cannot modify/inject content
inside of modules' :file:`static/` folder and existing images are final (they do not fetch new
resources by themselves). However, it is good practice.
Using the above NGINX (https) configuration, the following location block should be added to
serve static files via NGINX.
Using the above NGINX (https) configuration, the following ``map`` and ``location`` blocks should be
added to serve static files via NGINX.
.. code-block:: nginx
.. code-block:: nginx
location @odoo {
# copy-paste the content of the / location block
}
map $sent_http_content_type $content_type_csp {
default "";
~image/ "default-src 'none'";
}
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
root /usr/lib/python3/dist-packages/odoo/addons;
try_files $uri @odoo;
expires 24h;
}
server {
# the rest of the configuration
location @odoo {
# copy-paste the content of the / location block
}
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
# root and try_files both depend on your addons paths
root ...;
try_files ... @odoo;
expires 24h;
add_header Content-Security-Policy $content_type_csp;
}
}
The actual ``root`` and ``try_files`` directives are dependant on your installation, specifically on
your :option:`--addons-path <odoo-bin --addons-path>`.
.. example::
Say Odoo has been installed via the **source**. The two git repositories for Community and
Enterprise have been cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
respectively and the :option:`--addons-path <odoo-bin --addons-path>` is
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
Using the above NGINX (https) configuration, the following location block should be added to
serve static files via NGINX.
.. tabs::
.. code-block:: nginx
.. group-tab:: Debian package
location @odoo {
# copy-paste the content of the / location block
}
Say Odoo has been installed via the **debian packages** for Community and Enterprise, and
that the :option:`--addons-path <odoo-bin --addons-path>` is
``'/usr/lib/python3/dist-packages/odoo/addons'``.
# Serve static files right away
location ~ ^/[^/]+/static/.+$ {
root /opt/odoo;
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
expires 24h;
}
The ``root`` and ``try_files`` should be:
.. warning::
The actual NGINX configuration you need is highly dependent on your own installation. The two
above snippets only highlight two possible configurations and may not be used as-is.
.. code-block:: nginx
root /usr/lib/python3/dist-packages/odoo/addons;
try_files $uri @odoo;
.. group-tab:: Git sources
Say Odoo has been installed via the **sources**, that both the Community and Enterprise git
repositories were cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
respectively, and that the :option:`--addons-path <odoo-bin --addons-path>` is
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
The ``root`` and ``try_files`` should be:
.. code-block:: nginx
root /opt/odoo;
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
Serving attachments
-------------------
@@ -1,6 +1,9 @@
==========================================
Geo IP Installation (On-Premises Database)
==========================================
======
Geo IP
======
.. note::
This documentation only applies to On-premise databases.
Installation
============
@@ -32,8 +35,8 @@ Installation
.. seealso::
- :doc:`CLI documentation </developer/reference/cli>`.
Test GeoIP Geolocation In Odoo Website
======================================
Test GeoIP geolocation in your Odoo website
===========================================
Edit a web page to include some geo-ip information such as the country name of the current
request IP address. To do so:
+4 -4
View File
@@ -54,10 +54,10 @@ Odoo needs a `PostgreSQL <https://www.postgresql.org/>`_ server to run properly.
$ sudo systemctl start postgresql
.. warning::
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.5
<https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5>`_ for it to support headers and
footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for
more details on the various versions.
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
for more details on the various versions.
Repository
----------
+6 -6
View File
@@ -229,7 +229,7 @@ PostgreSQL user.
.. code-block:: console
$ sudo -u postgres createuser -s $USER
$ sudo -u postgres createuser -d -R -S $USER
$ createdb $USER
.. note::
@@ -254,7 +254,7 @@ PostgreSQL user.
.. code-block:: console
$ sudo -u postgres createuser -s $USER
$ sudo -u postgres createuser -d -R -S $USER
$ createdb $USER
.. note::
@@ -413,10 +413,10 @@ Dependencies
$ sudo npm install -g rtlcss
.. warning::
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.5
<https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5>`_ for it to support headers and
footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for
more details on the various versions.
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
for more details on the various versions.
.. _install/source/running_odoo:
@@ -52,7 +52,7 @@ able to read (IMAP) and send (SMTP) emails in the Microsoft 365 setup. First, cl
Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used
Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option.
In the search bar, search for the following :guilabel:`Deregulated permissions` and click
In the search bar, search for the following :guilabel:`Delegated permissions` and click
:guilabel:`Add permissions` for each one:
- :guilabel:`SMTP.Send`
@@ -129,6 +129,5 @@ users, click :guilabel:`Add more users`.
To remove users, select them and click :guilabel:`Remove`.
.. seealso::
- :doc:`../../applications/general/users/manage_users`
- :doc:`../../applications/general/users/delete_account`
- :doc:`/applications/general/users/manage_users`
- :doc:`/applications/general/users/odoo_account`
@@ -29,3 +29,24 @@ We advise that:
- Your scheduled actions should be
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
cause side-effects if they are started more often than expected.
How do I know if I need more workers ?
--------------------------------------
Workers are abstract units of resources allocated to your database. The more workers you have the more it can be accessed concurrently.
As a general rule of thumb, you should allocate about **1 worker per 25 users and 1 worker for every 5000 daily visitors**. However, this can vary considerably based on database usage, website characteristics, and code customizations.
Speed is only impacted if you have too much concurrency.
If things are getting slow, here are a couple of indications to tell if it's due to a high concurrency.
- When things gets slow, **everything is slowed down**, not just specific operations.
- **The slowness comes and goes**, typically it's better outside of business hours. (There can be other reasons for this as well.)
- :ref:`Open your monitoring <odoosh-gettingstarted-branches-tabs-monitoring>`, there is a graph indicating the number of **"concurrent requests (max)"**. This graphs is often high or shows a flat upper bound during a prolonged period of time.
- Some requests get a **"429 Too Many Requests"** response code.
If you have these symptoms it's advisable to try increasing your workers.
.. warning::
Sometimes this high concurrency is temporary or illegitimate, it's possible your website is being crawled or that you have misconfigured third party applications excessively sollicitating your database. To identify this, have a look at the IP adresses in your odoo logs to see if some are flooding.
@@ -208,6 +208,8 @@ You can also open terminals, Python consoles and even Odoo Shell consoles.
You can open multiple tabs and drag-and-drop them to arrange the layout as you wish,
for instance side by side.
.. _odoosh-gettingstarted-branches-tabs-monitoring:
Monitoring
----------
+23 -26
View File
@@ -39,10 +39,11 @@ An upgrade does not cover:
- Migrating from another ERP to Odoo
.. warning::
If your database contains a **custom module**, you must first upgrade its source code to be
compatible with the new version of Odoo **before upgrading**.
.. TODOUPG : once the page for developers is published, uncomment and link
.. :doc:`first upgrade its source code </developer/reference/upgrade>`
If your database contains custom modules, it cannot be upgraded until a version of your custom
modules is available for the target version of Odoo. For customers maintaining their own custom
modules, we recommend to parallelize the process by :ref:`requesting an upgraded database
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
modules </developer/howtos/upgrade_custom_db>`.
Upgrading in a nutshell
@@ -51,15 +52,15 @@ Upgrading in a nutshell
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
<upgrade/request-test-database>`).
#. If applicable, upgrade the source code of your custom module to be compatible with the new
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
<upgrade/test_your_db>`).
#. Report any issue encountered during the testing to Odoo via the `support page
<https://odoo.com/help?stage=migration>`__.
#. (If applicable) : upgrade the source code of your custom module to be compatible with the new
version of Odoo.
#. Once all issues are resolved and you are confident that the upgraded database can be used as
your main database without any issues, plan the upgrade of your production database.
@@ -69,9 +70,6 @@ Upgrading in a nutshell
#. Report any issue encountered during the upgrade to Odoo via the `support page
<https://odoo.com/help?stage=post_upgrade>`__.
.. TODOUPG: Once the page for developers is published, put this at 4)
.. (see :ref:`upgrading customizations <upgrade/upgrading_customizations>`).
.. _upgrade/request-test-database:
Obtaining an upgraded test database
@@ -136,18 +134,13 @@ project <https://odoo.sh/project>`_.
file of the upgrade process can be found in your newly upgraded staging build by going to
:file:`~/logs/upgrade.log`.
.. note::
In databases where custom modules are installed, their source code
must be up-to-date with the target version of Odoo before the upgrade
can be performed. If there are none, the "update on commit" mode is
skipped, the upgraded database is built as soon as it is transferred from the upgrade
platform, and the upgrade mode is exited.
.. important::
In databases where custom modules are installed, their source code must be up-to-date with
the target version of Odoo before the upgrade can be performed. If there are none, the
"update on commit" mode is skipped, the upgraded database is built as soon as it is
transferred from the upgrade platform, and the upgrade mode is exited.
.. TODOUPG : once the page for developers is published, uncomment
.. Check out the :doc:`upgrade for developers'
.. documentation </developer/reference/upgrade>` for more information. In
.. addition, if a module is not needed after an upgrade, :ref:`you can
.. remove customizations <upgrade/remove_customizations>`.
Check out the :doc:`/developer/howtos/upgrade_custom_db` page for more information.
.. group-tab:: On-premise
@@ -167,6 +160,11 @@ project <https://odoo.sh/project>`_.
An upgraded test database can also be requested via the `Upgrade page
<https://upgrade.odoo.com/>`_.
.. important::
In databases where custom modules are installed, their source code must be up-to-date with
the target version of Odoo before the upgrade can be performed. Check out the
:doc:`/developer/howtos/upgrade_custom_db` page for more information.
.. note::
- For security reasons, only the person who submitted the upgrade request can download it.
- For storage reasons, the database's copy is submitted without a filestore to the upgrade
@@ -291,8 +289,8 @@ the upgrade at a time when the use of the database is minimal.
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
to frequently request another upgraded test database to ensure that the upgrade process is
still successful, especially if it takes a long time to finish. Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.
still successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.**
.. important::
- Going into production without first testing may lead to:
@@ -337,9 +335,8 @@ exceptions.
The update of your custom modules must be successful to complete the entire upgrade process.
Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in
production.
.. TODOUPG : once the page for developers is published, uncomment
.. More information on how to upgrade your custom modules can be found in the :ref:`upgrading customizations documentation <upgrade/upgrading_customizations>`.
production. More information on how to upgrade your custom modules can be found on
:doc:`/developer/howtos/upgrade_custom_db`.
.. group-tab:: On-premise
+3 -2
View File
@@ -209,8 +209,7 @@ available methods are standard price, average price, :abbr:`LIFO (Last-In, First
:abbr:`FIFO (First-In, First-Out).`
.. seealso::
:doc:`View the impact of the valuation methods on transactions
<../inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
:doc:`../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config`
Retained earnings
=================
@@ -222,6 +221,8 @@ and loss balance is automatically reported on the balance sheet report.
.. seealso::
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
.. _fiduciaries:
Fiduciaries
===========
@@ -107,9 +107,9 @@ If your connection with the proxy is disconnected, you can reconnect with the pr
:guilabel:`Fetch Account` button.
.. note::
This disconnection can be caused by the Odoo support. In this case, please contact the `support
<https://www.odoo.com/help>`_ directly with your client id or the reference of the error listed
in the chatter.
If you are unable to reconnect using the :guilabel:`Reconnect` button, please contact the
`support <https://www.odoo.com/help>`_ directly with your client id or the reference of the error
listed in the chatter.
.. _MigrationOnlineSync:
@@ -21,6 +21,8 @@ vendors because of modifications to confirmed customer invoices or vendor bills.
:doc:`return </applications/sales/sales/products_prices/returns>` if a storable product is
returned.
.. _accounting/issue-credit-note:
Issue a credit note
===================
@@ -72,6 +74,8 @@ prefilled with the same details from the original invoice.
This is the option to **modify** the content of a *validated* invoice.
.. _accounting/issue-debit-note:
Issue a debit note
==================
@@ -2,194 +2,175 @@
Deferred revenues
=================
**Deferred revenues**, or **unearned revenue**, are payments made in advance by customers for
products yet to deliver or services yet to render.
**Deferred revenues**, or **unearned revenues**, are invoices addressed to customers
for goods yet to be delivered or services yet to be rendered.
Such payments are a **liability** for the company that receives them since it still owes its
customers these products or services. The company cannot report them on the current **Profit and
Loss statement**, or *Income Statement*, since the payments will be effectively earned in the future.
The company cannot report them on the current **profit and loss statement**, or *income statement*,
since the goods and services will be effectively delivered/rendered in the future.
These future revenues must be deferred on the company's balance sheet until the moment in time they
can be **recognized**, at once or over a defined period, on the Profit and Loss statement.
These future revenues must be deferred on the company's balance sheet among the current liabilities
until they can be **recognized**, at once or over a defined period, on the profit and loss
statement.
For example, let's say we sell a five-year extended warranty for $ 350. We already receive the money
now but haven't earned it yet. Therefore, we post this new income in a deferred revenue account and
decide to recognize it on a yearly basis. Each year, for the next 5 years, $ 70 will be recognized
as revenue.
For example, let's say a business sells a software license of $1200 for 1 year. They immediately
invoice it to the customer but can't consider it earned yet, as the future months of licensing have
not yet been delivered. Therefore, they post this new revenue in a deferred revenue account and
recognize it on a monthly basis. Each month, for the next 12 months, $100 will be recognized as
revenue.
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are
automatically created in *draft mode* and then posted periodically.
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are posted
periodically.
.. note::
The server checks once a day if an entry must be posted. It might then take up to 24 hours before
you see a change from *draft* to *posted*.
you see a change from :guilabel:`Draft` to :guilabel:`Posted`.
Prerequisites
Configuration
=============
Such transactions must be posted on a **Deferred Revenue Account** rather than on the default income
account.
Make sure the default settings are correctly configured for your business. To do so, go to
:menuselection:`Accounting --> Configuration --> Settings`. The following options are available:
Configure a Deferred Revenue Account
------------------------------------
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
the deferral entries when you post a customer invoice. However, you can also choose to
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
accounts for different amounts depending on the number of days in each month.
To configure your account in the **Chart of Accounts**, go to :menuselection:`Accounting -->
Configuration --> Chart of Accounts`, click on *Create*, and fill out the form.
.. _customer_invoices/deferred/generate_on_validation:
.. image:: deferred_revenues/deferred_revenues01.png
:align: center
:alt: Configuration of a Deferred Revenue Account in Odoo Accounting
Generate deferral entries on validation
=======================================
.. tip::
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
month as the :guilabel:`Invoice Date`.
For each line of the invoice that should be deferred, specify the start and end dates of the
deferral period.
If the :guilabel:`Generate Entries` field in the **Settings** is set to :guilabel:`On invoice/bill
validation`, Odoo automatically generates the deferral entries when the invoice is validated. Click
the :guilabel:`Deferred Entries` smart button to see them.
One entry, dated on the same day as the invoice, moves the invoice amounts from the income account
to the deferred account. The other entries are deferral entries which, month after month, move
the invoice amounts from the deferred account to the income account to recognize the revenue.
.. example::
You can defer a January invoice of $1200 over 12 months by specifying a start date of 01/01/2023
and an end date of 12/31/2023. At the end of August, $800 is recognized as an income,
whereas $400 remains on the deferred account.
Reporting
=========
The deferred revenue report computes an overview of the necessary deferral entries for each account.
To access it, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue`.
To view the journal items of each account, click on the account name and then :guilabel:`Journal
Items`.
.. image:: deferred_revenues/deferred_revenue_report.png
:alt: Deferred revenue report
.. note::
This account's type must be either *Current Liabilities* or *Non-current Liabilities*
Only invoices whose accounting date is before the end of the period of the report
are taken into account.
Post an income to the right account
-----------------------------------
.. _customer_invoices/deferred/generate_manually:
Select the account on a draft invoice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generate grouped deferral entries manually
==========================================
On a draft invoice, select the right account for all the products of which the incomes must be
deferred.
If you have a lot of deferred revenues and wish to reduce the number of journal entries created, you
can generate deferral entries manually. To do so, set the :guilabel:`Generate Entries` field in the
**Settings** to :guilabel:`Manually & Grouped`. Odoo then aggregates the deferred amounts in a
single entry.
.. image:: deferred_revenues/deferred_revenues02.png
:align: center
:alt: Selection of a Deferred Revenue Account on a draft invoice in Odoo Accounting
At the end of each month, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue` and
click the :guilabel:`Generate Entries` button. This generates two deferral entries:
Choose a different Income Account for specific products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- One dated at the end of the month which aggregates, for each account, all the deferred amounts
of that month. This means that a part of the deferred revenue is recognized at the end of that
period.
- The reversal of this created entry, dated on the following day (i.e., the first day of the
next month) to cancel the previous entry.
Start editing the product, go to the *Accounting* tab, select the right **Income Account**, and
save.
.. example::
There are two invoices:
.. image:: deferred_revenues/deferred_revenues03.png
:align: center
:alt: Change of the Income Account for a product in Odoo
- Invoice A: $1200 to be deferred from 01/01/2023 to 12/31/2023
- Invoice B: $600 to be deferred from 01/01/2023 to 12/31/2023
.. tip::
It is possible to automate the creation of revenue entries for these products (see:
`Automate the Deferred Revenues`_).
In January
At the end of January, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
Change the account of a posted journal item
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Entry 1 dated on the 31st January:
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, select the journal item you
want to modify, click on the account, and select the right one.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 100 + 50 = **150** (recognizing 1/12 of invoice A and invoice B)
- Line 3: Deferred account 1800 - 150 = **1650** (amount that has yet to be deferred later
on)
.. image:: deferred_revenues/deferred_revenues04.png
:align: center
:alt: Modification of a posted journal item's account in Odoo Accounting
- Entry 2 dated on the 1st February, the reversal of the previous entry:
Deferred Revenues entries
=========================
- Line 1: Expense account **1800**
- Line 2: Deferred account **-150**
- Line 3: Expense account **-1650**
Create a new entry
------------------
In February
At the end of February, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
A **Deferred Revenues entry** automatically generates all journal entries in *draft mode*. They are
then posted one by one at the right time until the full amount of the income is recognized.
- Entry 1 dated on the 28th February:
To create a new entry, go to :menuselection:`Accounting --> Accounting --> Deferred Revenues`, click
on *Create*, and fill out the form.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 200 + 100 = **300** (recognizing 2/12 of invoice A and invoice B)
- Line 3: Deferred account 1800 - 300 = **1500** (amount that has yet to be deferred later
on)
Click on **select related purchases** to link an existing journal item to this new entry. Some
fields are then automatically filled out, and the journal item is now listed under the **Related
Sales** tab.
- Entry 2 dated on the 1st March, the reversal of the previous entry.
.. image:: deferred_revenues/deferred_revenues05.png
:align: center
:alt: Deferred Revenue entry in Odoo Accounting
From March to October
The same computation is done for each month until October.
Once done, you can click on *Compute Revenue* (next to the *Confirm* button) to generate all the
values of the **Revenue Board**. This board shows you all the entries that Odoo will post to
recognize your revenue, and at which date.
In November
At the end of November, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
.. image:: deferred_revenues/deferred_revenues06.png
:align: center
:alt: Revenue Board in Odoo Accounting
- Entry 1 dated on the 30th November:
What does "Prorata Temporis" mean?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 1100 + 550 = **1650** (recognizing 11/12 of invoice A and invoice
B)
- Line 3: Deferred account 1800 - 1650 = **150** (amount that has yet to be deferred later
on)
The **Prorata Temporis** feature is useful to recognize your revenue the most accurately possible.
- Entry 2 dated on the 1st December, the reversal of the previous entry.
With this feature, the first entry on the Revenue Board is computed based on the time left between
the *Prorata Date* and the *First Recognition Date* rather than the default amount of time between
recognitions.
In December
There is no need to generate entries in December. Indeed, if we do the computation for
December, we have an amount of 0 to be deferred.
For example, the Revenue Board above has its first revenue with an amount of $ 4.22 rather than
$ 70.00. Consequently, the last entry is also lower and has an amount of $ 65.78.
In total
If we aggregate everything, we would have:
Deferred Entry from the Sales Journal
-------------------------------------
- invoice A and invoice B
- two entries (one for the deferral and one for the reversal) for each month from January to
November
You can create a deferred entry from a specific journal item in your **Sales Journal**.
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, and select the journal item you want to defer.
Make sure that it is posted in the right account (see:
`Change the account of a posted journal item`_).
Then, click on *Action*, select **Create Deferred Entry**, and fill out the form the same way you
would do to `create a new entry`_.
.. image:: deferred_revenues/deferred_revenues07.png
:align: center
:alt: Create Deferred Entry from a journal item in Odoo Accounting
Deferred Revenue Models
=======================
You can create **Deferred Revenue Models** to create your Deferred Revenue entries faster.
To create a model, go to :menuselection:`Accounting --> Configuration --> Deferred Revenue Models`,
click on *Create*, and fill out the form the same way you would do to create a new entry.
.. tip::
You can also convert a *confirmed Deferred Revenue entry* into a model by
opening it from :menuselection:`Accounting --> Accounting --> Deferred
Revenues` and then, by clicking on the button *Save Model*.
Apply a Deferred Revenue Model to a new entry
---------------------------------------------
When you create a new Deferred Revenue entry, fill out the **Deferred Revenue Account** with the
right recognition account.
New buttons with all the models linked to that account appear at the top of the form. Clicking on a
model button fills out the form according to that model.
.. image:: deferred_revenues/deferred_revenues08.png
:align: center
:alt: Deferred Revenue model button in Odoo Accounting
.. _deferred-revenues-automation:
Automate the Deferred Revenues
==============================
When you create or edit an account of which the type is either *Current Liabilities* or *Non-current
Liabilities*, you can configure it to defer the revenues that are credited on it automatically.
You have three choices for the **Automate Deferred Revenue** field:
#. **No:** this is the default value. Nothing happens.
#. **Create in draft:** whenever a transaction is posted on the account, a draft *Deferred Revenues
entry* is created, but not validated. You must first fill out the form in
:menuselection:`Accounting --> Accounting --> Deferred Revenues`.
#. **Create and validate:** you must also select a Deferred Revenue Model (see:
`Deferred Revenue Models`_). Whenever a transaction is posted on the account, a *Deferred
Revenues entry* is created and immediately validated.
.. image:: deferred_revenues/deferred_revenues09.png
:align: center
:alt: Automate Deferred Revenue on an account in Odoo Accounting
.. tip::
You can, for example, select this account as the default **Income Account** of a product to fully
automate its sale. (see: `Choose a different Income Account for specific products`_).
.. seealso::
* :doc:`../get_started/chart_of_accounts`
* `Odoo Academy: Deferred Revenues (Recognition) <https://www.odoo.com/r/EWO>`_
Therefore, at the end of December, invoices A and B are fully recognized as income
only once in spite of all the created entries thanks to the reversal mechanism.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

@@ -102,37 +102,176 @@ The `Peppol <https://peppol.org/about/>`_ network ensures the exchange of docume
between enterprises and governmental authorities. It is primarily used for electronic invoicing, and
its access points (connectors to the Peppol network) allow enterprises to exchange electronic
documents.
Odoo is now an **access point** enabling electronic invoicing transactions without the need to send
invoices and bills by email or post.
Configuration
-------------
Odoo is an **access point** and an :abbr:`SMP (Service Metadata Publisher)`, enabling electronic
invoicing transactions without the need to send invoices and bills by email or post.
First, :ref:`install <general/install>` the :guilabel:`Peppol` module (`account_peppol`).
If not done yet, :ref:`install <general/install>` the :guilabel:`Peppol` module (`account_peppol`).
.. image:: electronic_invoicing/peppol-module.png
:alt: Peppol module install
.. important::
- Peppol registration is **free** and available in Odoo Community
- You can send **Customer Invoices** and **Credit Notes** and receive **Vendor Bills** and
**Refunds** via Peppol.
- You can send in one of the following supported document formats: **BIS Billing 3.0, XRechnung
CIUS, NLCIUS**.
- | The following **countries** are eligible for **Peppol registration in Odoo**:
| Andorra, Albania, Austria, Bosnia and Herzegovina, Belgium, Bulgaria, Switzerland, Cyprus,
Czech Republic, Germany, Denmark, Estonia, Spain, Finland, France, United Kingdom, Greece,
Croatia, Hungary, Ireland, Iceland, Italy, Liechtenstein, Lithuania, Luxembourg, Latvia,
Monaco, Montenegro, North Macedonia, Malta, Netherlands, Norway, Poland, Portugal, Romania,
Serbia, Sweden, Slovenia, Slovakia, San Marino, Turkey, Holy See (Vatican City State)
Then, go to :menuselection:`Accounting --> Configuration --> Settings`, tick the
:guilabel:`Use PEPPOL Invoicing`, and fill in the following information:
Registration
------------
- `PEPPOL EAS <https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Code+lists/>`_
- :guilabel:`Peppol Endpoint`
Go to :menuselection:`Accounting --> Configuration --> Settings`. If you do not have the
Peppol module installed, first tick the :guilabel:`Enable PEPPOL` checkbox and then **manually
save**.
.. image:: electronic_invoicing/peppol-install.png
:alt: Peppol module installation
Fill in the following information:
- :guilabel:`Peppol EAS`. This is the Peppol Electronic Address Scheme and usually depends on your
company's country. Odoo often prefills this with the most commonly used EAS code in your country.
For example, the preferred EAS code for most companies in Belgium is 0208.
- :guilabel:`Peppol Endpoint`. This is usually a Company Registry number or a VAT number.
- :guilabel:`Phone Number`, including the country code (e.g., `+32` in Belgium)
- :guilabel:`Primary contact email`
If you are migrating from another access point, insert the :guilabel:`Migration key` from
the previous provider.
.. seealso::
- `Peppol EAS - European Commision <https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Code+lists/>`_
- `Peppol Endpoint - OpenPeppol eDEC Code Lists <https://docs.peppol.eu/edelivery/codelists/>`_
(open the "Participant Identifier Schemes" as HTML page)
If you are migrating from another access point, insert the :guilabel:`Migration key` from the
previous provider.
.. image:: electronic_invoicing/peppol-settings.png
:alt: Configuration for peppol
Finally, click on :guilabel:`Validate registration`.
Finally, click :guilabel:`Validate registration`. If you want to explore or demo Peppol, you can
choose to register in :guilabel:`Demo` mode. Otherwise, select :guilabel:`Live`.
A text message containing a code is sent to the phone number provided to finalize the registration
.. image:: electronic_invoicing/peppol-demo-mode.png
:alt: Peppol demo mode selection
.. note::
When testing Peppol, the system parameter `account_peppol.edi.mode` can be changed to `test`.
Then, a radio button appears with the option to register on the test server.
.. image:: electronic_invoicing/peppol-system-parameter.png
:alt: Peppol test mode parameter
.. image:: electronic_invoicing/peppol-test-mode-settings.png
:alt: Peppol test mode selection
Now, you can request a verification code to be sent to you by clicking :guilabel:`Verify phone
number`.
.. image:: electronic_invoicing/peppol-registration-verify.png
:alt: phone validation request verification
A text message containing a code is sent to the phone number provided to finalize the verification
process.
.. image:: electronic_invoicing/phone-registration.png
:alt: phone validation
All invoices and vendor bills are now sent directly using the Peppol network.
Once you enter the code and click :guilabel:`Confirm`, you can see that your registration is pending
activation. From this point onwards, the default journal for receiving Vendor Bills can be set.
.. image:: electronic_invoicing/peppol-registration-pending.png
:alt: pending application
It should be automatically activated within a day.
.. tip::
It is also possible to manually trigger the cron that checks the registration status by going to
:menuselection:`Settings --> Technical --> Scheduled Actions --> PEPPOL\: update participant
status`.
Your application status should be updated soon after you are registered on the Peppol network.
.. image:: electronic_invoicing/peppol-registration-active.png
:alt: active application
All invoices and vendor bills can now be sent directly using the Peppol network.
Contact verification
--------------------
Before sending an invoice to a contact using the Peppol network, it is necessary to verify that they
are also registered as a Peppol participant.
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and open the customer's
form. Then go to :menuselection:`Accounting tab --> Electronic Invoicing`, select the correct
format, and make sure their :guilabel:`Peppol EAS code` and the :guilabel:`Endpoint` are filled in.
Then, click :guilabel:`Verify`. If the contact exists on the network, their Peppol endpoint validity
is set to Valid.
.. image:: electronic_invoicing/peppol-contact-verify.png
:alt: verify contact registration
.. important::
While Odoo prefills both the EAS code and the Endpoint number based on the information available
for a contact, it is better to confirm these details directly with the contact.
It is possible to verify the Peppol participant status of several customers at once.
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and switch to the list view.
Select the customers you want to verify and then click :menuselection:`Actions --> Verify Peppol`.
Send invoices
-------------
Once ready to send an invoice via the Peppol network, simply click :guilabel:`Send & Print` on the
invoice form. To queue multiple invoices, select them in the list view and click
:menuselection:`Actions --> Send & Print`; they will be sent in a batch later on. Both
:guilabel:`BIS Billing 3.0` and :guilabel:`Send via PEPPOL` checkboxes need to be ticked.
.. image:: electronic_invoicing/peppol-send-print.png
:alt: Send peppol invoice
Posted invoices that can be sent via Peppol are marked as :guilabel:`Peppol Ready`.
To display them, use the :guilabel:`Peppol Ready` filter or access the Accounting dashboard and
click :guilabel:`Peppol ready invoices` on the corresponding sales journal.
.. image:: electronic_invoicing/peppol-ready-invoices.png
:alt: Filter Peppol ready invoices
Once the invoices are sent via Peppol, the status is changed to :guilabel:`Processing`. The
status is changed to `Done` after they have been successfully delivered to the contact's Access
Point.
.. image:: electronic_invoicing/peppol-message-processing.png
:alt: Peppol message status
.. tip::
By default, the Peppol status column is hidden on the Invoices list view. You can choose to have
it displayed by selecting it from the optional columns, accessible from the top right corner of
the Invoices list view.
A cron runs regularly to check the status of these invoices. It is possible to check the status
before the cron runs by clicking :guilabel:`Fetch Peppol invoice status` in the corresponding
sales journal on the Accounting dashboard.
.. image:: electronic_invoicing/peppol-fetch-message-status.png
:alt: Fetch invoice Peppol status
Receive vendor bills
--------------------
Once a day, a cron checks whether any new documents have been sent to you via the Peppol network.
These documents are imported, and the corresponding vendor bills are created automatically as
drafts.
.. image:: electronic_invoicing/peppol-receive-bills.png
:alt: peppol receive bills
If you want to retrieve incoming Peppol documents before the cron runs, you can do so from the
Accounting dashboard on the main Peppol purchase journal that you set up in the settings. Just click
:guilabel:`Fetch from Peppol`.
.. image:: electronic_invoicing/peppol-fetch-bills.png
:alt: Fetch bills from Peppol
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

@@ -25,7 +25,9 @@ transportation, insurance, customs clearance, and other relevant aspects of the
- **DDP**: Delivered duty paid
.. seealso::
:doc:`../reporting/intrastat`
- :doc:`../reporting/intrastat`
- :doc:`../customer_invoices`
- :doc:`../vendor_bills`
.. _incoterms/invoices:
@@ -35,6 +37,16 @@ Define an Incoterm
To define an Incoterm manually, create an invoice or bill, click the :guilabel:`Other Info` tab, and
select the :guilabel:`Incoterm`.
Incoterm location
-----------------
A location relevant to the chosen Incoterm can be added to the invoice or bill under
:guilabel:`Other Info` in the :guilabel:`Incoterm Location` field.
.. example::
If the chosen Incoterm code is `CIF` (Cost, Insurance, Freight), the associated location might be
the destination port where the goods will be delivered.
.. _incoterms/default:
Default Incoterm configuration
@@ -3,7 +3,6 @@ Average price on returned goods
===============================
.. |AVCO| replace:: :abbr:`AVCO (Average Cost Valuation)`
.. _inventory/avg_cost/definition:
*Average cost valuation* (AVCO) is an inventory valuation method that evaluates cost based on the
@@ -3,48 +3,39 @@ Chart of accounts
=================
The **chart of accounts (COA)** is the list of all the accounts used to record financial
transactions in the general ledger of an organization.
transactions in the general ledger of an organization. The chart of accounts can be found under
:menuselection:`Accounting --> Configuration --> Chart of Accounts`.
The accounts are usually listed in the order of appearance in the financial reports. Most of the
time, they are listed as follows :
When browsing your chart of accounts, you can sort the accounts by :guilabel:`Code`,
:guilabel:`Account Name`, or :guilabel:`Type`, but other options are available in the drop-down menu
- Balance Sheet accounts:
.. image:: chart_of_accounts/drop-down.png
:alt: Drop-down toggle button
- Assets
- Liabilities
- Equity
- Profit & Loss:
- Income
- Expense
When browsing your chart of accounts, you can filter the accounts by number, in the left column, and
also group them by :guilabel:`Account Type`.
.. image:: chart_of_accounts/chart-of-accounts.png
:align: center
.. image:: chart_of_accounts/chart-of-accounts-sort.png
:alt: Group the accounts by type in Odoo Accounting
Configuration of an account
===========================
The country you select at the creation of your database (or additional company on your database)
determines which **fiscal localization package** is installed by default. This package includes a
standard chart of accounts already configured according to the country's regulations. You can use
it directly or set it according to your company's needs.
The country you select during the creation of your database (or additional company in your database)
determines which :doc:`fiscal localization package <../../fiscal_localizations>` is installed by
default. This package includes a standard chart of accounts already configured according to the
country's regulations. You can use it directly or set it according to your company's needs.
To create a new account, go to :menuselection:`Accounting --> Configuration --> Chart of Accounts`,
click :guilabel:`Create`, and fill in (at the minimum) the required fields
(:guilabel:`Code, Account Name, Type`).
.. warning::
It is not possible to modify the **fiscal localization** of a company once a journal entry has
been posted.
To create a new account, go to :menuselection:`Accounting --> Configuration --> Chart of Accounts`,
click on :guilabel:`Create`, and fill out the form.
Code and name
-------------
Each account is identified by its **code** and **name**, which also indicates the account's purpose.
Each account is identified by its :guilabel:`Code` and :guilabel:`Name`, which also indicate the
account's purpose.
.. _chart-of-account/type:
@@ -59,7 +50,7 @@ Correctly configuring the **account type** is critical as it serves multiple pur
- Generate opening entries
To configure an account type, open the :guilabel:`Type` field's drop-down selector and select the
right type among the following list:
corresponding type from the following list:
+---------------+--------------+-------------------------+
| Report | Category | Account Types |
@@ -101,32 +92,33 @@ right type among the following list:
|Other | Other | Off-Balance Sheet |
+---------------+--------------+-------------------------+
Assets, deferred expenses, and deferred revenues automation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assets
~~~~~~
Some **account types** display a new field **to automate** the creation of :ref:`assets
<assets-automation>` entries, :ref:`deferred expenses <deferred-expenses-automation>` entries,
and :ref:`deferred revenues <deferred-revenues-automation>` entries.
Some **account types** can **automate** the creation of :ref:`asset <assets-automation>` entries.
To **automate** entries, click :guilabel:`View` on an account line and go to the
:guilabel:`Automation` tab.
You have three choices for the :guilabel:`Automation` field:
You have three choices for the :guilabel:`Automation` tab:
#. :guilabel:`No`: this is the default value. Nothing happens.
#. :guilabel:`Create in draft`: whenever a transaction is posted on the account, a draft entry is
created, but not validated. You must first fill out the corresponding form.
#. :guilabel:`Create and validate`: you must also select a **model**. Whenever a transaction is
posted on the account, an entry is created and immediately validated.
created but not validated. You must first fill out the corresponding form.
#. :guilabel:`Create and validate`: you must also select a :guilabel:`Deferred Expense Model`.
Whenever a transaction is posted on the account, an entry is created and immediately validated.
Default taxes
-------------
Select a **default tax** that will be applied when this account is chosen for a product sale or
purchase.
In the :guilabel:`View` menu of an account, select a **default tax** to be applied when this
account is chosen for a product sale or purchase.
Tags
----
Some accounting reports require **tags** to be set on the relevant accounts. By default, you can
choose among the tags that are used by the *Cash Flow Statement*.
Some accounting reports require **tags** to be set on the relevant accounts. To add a tag, under
:guilabel:`View`, click the :guilabel:`Tags` field and select an existing tag or :guilabel:`Create`
a new one.
Account groups
--------------
@@ -134,31 +126,29 @@ Account groups
**Account groups** are useful to list multiple accounts as *sub-accounts* of a bigger account and
thus consolidate reports such as the **Trial Balance**. By default, groups are handled automatically
based on the code of the group. For example, a new account `131200` is going to be part of the group
`131000`.
`131000`. You can attribute a specific group to an account in the :guilabel:`Group` field under
:guilabel:`View`.
Create account groups manually
------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note::
Regular users should not need to create account groups manually. The following section is only
intended for rare and advanced use cases.
To create a new account group, :ref:`developer mode <developer-mode>` and head to
:menuselection:`Accounting app --> Configuration --> Account Groups`. Here, create a new group and
enter the :guilabel:`name, code prefix, and company` to which that group account should be
available. Note that you must enter the same code prefix in both :guilabel:`From` and :guilabel:`to`
fields.
To create a new account group, activate :ref:`developer mode <developer-mode>` and head to
:menuselection:`Accounting --> Configuration --> Account Groups`. Here, create a new group and enter
the :guilabel:`name, code prefix, and company` to which that group account should be available. Note
that you must enter the same code prefix in both :guilabel:`From` and :guilabel:`to` fields.
.. image:: chart_of_accounts/account-groups.png
:align: center
:alt: Account groups creation.
To display your **Trial Balance** report with your account groups, go to :menuselection:`Accounting
app-->Reporting-->Trial Balance`, then open the :guilabel:`Options` menu and select
:guilabel:`Hierarchy and Subtotals`.
To display your **Trial Balance** report with your account groups, go to
:menuselection:`Accounting --> Reporting --> Trial Balance`, then open the :guilabel:`Options` menu
and select :guilabel:`Hierarchy and Subtotals`.
.. image:: chart_of_accounts/trial-balance.png
:align: center
.. image:: chart_of_accounts/chart-of-accounts-groups.png
:alt: Account Groups in the Trial Balance in Odoo Accounting
Allow reconciliation
@@ -171,15 +161,18 @@ For example, an invoice paid with a credit card can be marked as :guilabel:`paid
its payment. Therefore, the account used to record credit card payments needs to be configured as
**allowing reconciliation**.
To do so, check the :guilabel:`Allow Reconciliation` box in the account's settings, and save.
To do so, check the :guilabel:`Allow Reconciliation` box in the account's settings, and
:guilabel:`Save`; or enable the button from the chart of accounts view.
.. image:: chart_of_accounts/chart-of-accounts-reconciliation.png
:alt: Allow reconciliation for accounts in Odoo Accounting
Deprecated
----------
It is not possible to delete an account once a transaction has been recorded on it. You can make
them unusable by using the **Deprecated** feature.
To do so, check the :guilabel:`Deprecated` box in the account's settings, and save.
them unusable by using the **Deprecated** feature: check the :guilabel:`Deprecated` box in the
account's settings, and :guilabel:`Save`.
.. seealso::
* :doc:`cheat_sheet`
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

@@ -129,6 +129,8 @@ Example
.. placeholder
.. _cheat_sheet/journals:
Journal entries
===============
@@ -4,15 +4,15 @@
Payments
========
In Odoo, payments can either be linked automatically to an invoice or bill or be stand-alone records
for use at a later date.
In Odoo, payments can either be automatically linked to an invoice or bill or be stand-alone records
for use at a later date:
If a payment is **linked to an invoice or bill**, it reduces the amount due of the invoice. You can
have multiple payments related to the same invoice.
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due of the
invoice. You can have multiple payments related to the same invoice.
If a payment is **not linked to an invoice or bill**, the customer has an outstanding credit with
your company, or your company has an outstanding debit with a vendor. You can use those outstanding
amounts to reduce unpaid invoices/bills.
- If a payment is **not linked to an invoice or bill**, the customer has an outstanding credit with
your company, or your company has an outstanding debit with a vendor. You can use those
outstanding amounts to reduce/settle unpaid invoices/bills.
.. seealso::
- :doc:`Internal transfers <payments/internal_transfers>`
@@ -23,59 +23,54 @@ amounts to reduce unpaid invoices/bills.
Registering payment from an invoice or bill
===========================================
When clicking on :guilabel:`Register payment` in a customer invoice or vendor bill, it generates a
new journal entry and changes the amount due according to the amount of the payment. The counterpart
is reflected in an outstanding 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 statement line, the invoice or vendor bill changes to the :guilabel:`Paid` status.
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 statement line, the invoice or vendor bill changes
to the :guilabel:`Paid` status.
The information icon near the payment line displays more information about the payment. You can
access additional information, such as the related journal, by clicking on :guilabel:`View`.
access additional information, such as the related journal, by clicking :guilabel:`View`.
.. image:: payments/information-icon.png
:alt: See detailed information of a payment
:alt: See detailed information of a payment.
.. note::
- The customer invoice or vendor bill should be in the status :guilabel:`Posted` to register the
- The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the
payment.
- When clicking on :guilabel:`Register payment`, you can select the amount to pay and make a
partial or full payment.
- If your main bank account is set as :ref:`outstanding account
<bank/outstanding-accounts>`, and the payment is made in Odoo (not related to a
bank statement), invoices and bills are directly registered in the status :guilabel:`Paid`.
- If you unreconciled a payment, it still appears in your books but is no longer linked to the
- If you unreconcile a payment, it still appears in your books but is no longer linked to the
invoice.
- If you (un)reconcile a payment in a different currency, a journal entry is automatically
created to post the currency exchange gains/losses (reversal) amount.
- If you (un)reconcile a payment and an invoice having cash basis taxes, a journal entry is
automatically created to post the cash basis tax (reversal) amount.
.. seealso::
- :doc:`bank/reconciliation`
.. tip::
- If your 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 statement), invoices and bills are directly registered as :guilabel:`Paid`.
Registering payments not tied to an invoice or bill
===================================================
When a new payment is registered via the menu :menuselection:`Customers / Vendors --> Payments`, it
is not directly linked to an invoice or bill. Instead, the account receivable or the account payable
are matched with the outstanding account until they are manually matched with their related invoice
or bill.
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments` menu, it is
not directly linked to an invoice or bill. Instead, the account receivable or the account payable is
matched with the **outstanding account** until it is manually matched with its related invoice or
bill.
Matching invoices and bills with payments
-----------------------------------------
A blue banner appears when you validate a new invoice or bill and there is an outstanding payment
for this specific customer or vendor. It can easily be matched from the invoice or the bill by
clicking on :guilabel:`ADD` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
A blue banner appears when you validate a new invoice/bill and an **outstanding payment** exists for
this specific customer or vendor. It can easily be matched from the invoice or bill by clicking
:guilabel:`ADD` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
.. image:: payments/add-option.png
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with the bank
statement.
.. seealso::
- :doc:`bank/reconciliation`
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
corresponding bank statement.
.. _payments/batch-payments:
@@ -83,11 +78,11 @@ Batch payment
-------------
Batch payments allow you to group different payments to ease :doc:`reconciliation
<bank/reconciliation>`. They are also useful when you deposit checks to the bank or
for SEPA Payments. To do so, go to :menuselection:`Accounting --> Customers --> Batch Payments` or
:menuselection:`Accounting --> Vendors --> Batch Payments`. In the list view of payments, you can
select several payments and group them in a batch by clicking on :menuselection:`Action --> Create
Batch Payment`.
<bank/reconciliation>`. They are also useful when you deposit :doc:`checks <payments/checks>` to the
bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to :menuselection:`Accounting -->
Customers --> Batch Payments` or :menuselection:`Accounting --> Vendors --> Batch Payments`. In the
list view of payments, you can select and group several payments in a batch by clicking
:menuselection:`Action --> Create Batch Payment`.
.. seealso::
- :doc:`payments/batch`
@@ -99,36 +94,50 @@ Payments matching
-----------------
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
gives you the opportunity to process them all one by one, doing the matching of all their payments
and invoices at once. You can reach this tool from the :menuselection:`Accounting Dashboard -->
Customer Invoices / Vendor Bills`, and click on :guilabel:`` and select :guilabel:`Payments
Matching`, or by going to :menuselection:`Accounting --> Reconciliation`.
allows you to process them individually, matching all payments and invoices in one place. You can
reach this tool from the :menuselection:`Accounting Dashboard --> Customer Invoices / Vendor Bills`,
click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payments Matching`, or go to
:menuselection:`Accounting --> Accounting --> Reconciliation`.
.. image:: payments/payments-journal.png
:alt: Payments matching menu in the drop-down menu.
.. note::
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits
and credits does not match, there is a remaining balance. This either needs to be reconciled at a
later date or needs to be written off directly.
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits and credits does
not match, there is a remaining balance. This either needs to be reconciled at a later date or
needs to be written off directly.
Batch payments matching
-----------------------
To reconcile several outstanding payments or invoices at once, for a specific customer or vendor,
the batch reconciliation feature can be used. Go to :menuselection:`Accounting --> Reporting -->
Aged Receivable / Aged Payable`. You now see all transactions that have not been reconciled yet, and
when you select a customer or vendor, the :guilabel:`Reconcile` option is displayed.
You can use the **batch reconciliation feature** to reconcile several outstanding payments or
invoices simultaneously for a specific customer or vendor. Go to your **Accounting Dashboard** and
open your **bank journal**. In the **bank reconciliation** view, select a **transaction**, and click
the :guilabel:`Batch Payments` tab. From here, you can reconcile your
:doc:`batch payments <payments/batch>` with your outstanding payments or invoices.
.. image:: payments/reconcile-option.png
:alt: See the reconcile option
:alt: The batch payment reconcile option.
Registering a partial payment
=============================
To register a **partial payment**, click :guilabel:`Register payment` from the related invoice or
bill, and enter the amount received or paid. Upon entering the amount, a prompt appears to decide
whether to :guilabel:`Keep open` the invoice or bill, or :guilabel:`Mark as fully paid`. Select
:guilabel:`Keep open` and click :guilabel:`Create payment`. The invoice or bill is now marked as
:guilabel:`Partial`. Select :guilabel:`Mark as fully paid` if you wish to settle the invoice or bill
with a difference in the amount.
.. image:: payments/payment-difference.png
:alt: Partial payment of an invoice or bill.
Reconciling payments with bank statements
=========================================
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
next step is to reconcile it with the related bank statement line to have the transaction finalized
and the invoice or bill marked as :guilabel:`Paid`.
.. seealso::
- :doc:`bank/reconciliation`
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank statement line to
have the transaction finalized and the invoice or bill marked as :guilabel:`Paid`.
.. toctree::
:titlesonly:
@@ -141,6 +150,5 @@ and the invoice or bill marked as :guilabel:`Paid`.
payments/internal_transfers
payments/pay_sepa
payments/pay_checks
payments/multiple
payments/forecast
payments/trusted_accounts
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

@@ -25,7 +25,6 @@ window, select the :guilabel:`Journal` linked to your bank account and :guilabel
the :guilabel:`Payment Method`, and click :guilabel:`Create Payment`.
.. image:: batch/batch-payments.png
:align: center
:alt: Registering a customer payment as part of a batch deposit
Add payments to a batch deposit
@@ -36,14 +35,12 @@ Payments`, and click :guilabel:`New`. Next, select the :guilabel:`Bank` and choo
Deposit` as the :guilabel:`Payment Method`.
.. image:: batch/batch-customer-payment.png
:align: center
:alt: Filling out a new inbound batch payment form
Click :guilabel:`Add a line`. In the pop-up window, tick all payments to include in the batch
deposit, then click :guilabel:`Select`.
.. image:: batch/batch-lines-selection.png
:align: center
:alt: Selecting all payments to include in the batch deposit
Once done, click :guilabel:`Validate` to finalize the batch deposit.
@@ -60,7 +57,6 @@ Items` on the related bank account. Go to the :guilabel:`Batch Payments` tab to
batch and click :guilabel:`Validate` to finalize the process.
.. image:: batch/batch-reconciliation.png
:align: center
:alt: Reconciling the batch payment with all its transactions
.. note::
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

@@ -79,7 +79,7 @@ To know whether a customer usually pays late or not, you can set a trust level b
:guilabel:`Good Debtor`, :guilabel:`Normal Debtor`, or :guilabel:`Bad Debtor` on their follow-up
report. To do so, click on the bullet next to the customer's name and select a trust level.
.. image:: follow_up/debtors-trust-level.png
.. image:: follow_up/debtor-level.png
:alt: Set debtor's trust level
Send reminders in batches
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

@@ -2,146 +2,72 @@
Internal transfers
==================
In Odoo, internal money transfers can be made in a few clicks. You need at least either two bank
accounts, two cash journals, or one bank account and one cash journal.
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. If needed, the default :guilabel:`Internal
transfer account` can be modified by going to :menuselection:`Accounting app --> Configuration -->
Settings` and then under the :guilabel:`Default Accounts` section.
.. note::
At least two bank accounts are needed to make internal transfers. Refer to
:doc:`Bank and cash accounts section <../bank>` to see how to add an additional bank
account to your database.
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
======================================================
Let's say you have two bank accounts registered on your database and you want to transfer 1,000 USD
from Bank A to Bank B.
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.
Log an internal transfer
------------------------
The money is now booked in the transfer account and another payment is automatically created in the
destination journal.
From the Accounting Dashboard, click on the drop-down selection button (:guilabel:`⋮`) on one of
your banks. In the :guilabel:`New` column click on :guilabel:`Internal Transfer` and enter the
information related to the transfer.
.. example::
.. image:: internal_transfers/internal_transfer.png
:align: center
:alt: Fill in the information related to your internal transfer
- Bank journal (Bank A)
.. note::
Fill in the :guilabel:`Memo` field for automatic reconciliation.
.. list-table::
:header-rows: 1
:stub-columns: 1
:guilabel:`Save` and :guilabel:`Confirm` to register your internal transfer. The money is now booked
in the transfer account and another payment is **automatically** created in the destination journal
(Bank B).
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Payments account
-
- $1,000
* - **Internal transfer account**
- **$1,000**
-
Bank journal (Bank A)
~~~~~~~~~~~~~~~~~~~~~
- Bank journal (Bank B)
.. list-table::
:header-rows: 1
:stub-columns: 1
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Payments account
-
- $1,000
* - **Internal transfer account**
- **$1,000**
-
.. list-table::
:header-rows: 1
:stub-columns: 1
Automated booking - Bank journal (BANK B)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Receipts account
- $1,000
-
* - **Internal transfer account**
-
- **$1,000**
.. list-table::
:header-rows: 1
:stub-columns: 1
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.
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Receipts account
- $1,000
-
* - **Internal transfer account**
-
- **$1,000**
.. note::
There are 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.
.. image:: internal_transfers/outstanding-payments-receipts.png
:align: center
:alt: Outstanding Payments/Receipts pending bank statement booking
.. _interbank/import-and-reconcile:
Manage and reconcile bank statements
------------------------------------
The next step is to book the bank statements to finalize the transaction by creating,
:doc:`importing <../bank/transactions>`, or :doc:`synchronizing <../bank/bank_synchronization>` your
:guilabel:`Transactions lines`. Fill in the :guilabel:`Ending balance` and click on the
:guilabel:`Reconcile` button.
.. image:: internal_transfers/transactions-line.png
:align: center
:alt: Transaction lines to be filled in prior to reconciliation
Once this is done, you can book and reconcile your bank statement lines as usual.
.. seealso::
:doc:`../bank/reconciliation`
In the next window, choose counterparts for the payment - in this example, the outstanding payment
account - then click :guilabel:`Validate`.
.. image:: internal_transfers/bank-reconciliation.png
:align: center
:alt: Reconcile your payment
Bank journal entry
~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:stub-columns: 1
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Payment
- $1,000
-
* - Bank Account (BANK A)
-
- **$1,000**
The same steps must be repeated once you receive the bank statement related to Bank B. Book and
reconcile your bank statement lines.
Bank journal entry
~~~~~~~~~~~~~~~~~~
.. list-table::
:header-rows: 1
:stub-columns: 1
* - **Account**
- **Debit**
- **Credit**
* - Outstanding Receipt
-
- $1,000
* - Bank Account (BANK B)
- **$1,000**
-
Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

@@ -1,53 +0,0 @@
=========================
Pay several bills at once
=========================
Odoo offers the possibility of grouping multiple bills' payments into one, facilitating the
reconciliation process.
.. seealso::
- :doc:`/applications/inventory_and_mrp/purchase/manage_deals/manage`
- :doc:`/applications/finance/accounting/bank/reconciliation`
Group payments
==============
To register the payment of multiple bills at once, go to :menuselection:`Accounting app -->
Vendors --> Bills`. Then, select the bills you wish to register a payment for by **ticking** the
boxes next to the bills. When done, either click :guilabel:`Register Payment` or
:menuselection:`Action --> Register Payment`.
.. image:: multiple/register-payment-button.png
:align: center
:alt: Register payment button.
.. note::
Payments can only be registered for :guilabel:`posted` bills.
When registering the payments, a **pop-up window** appears. From here, you can either create
**separate payments** for each bill all at once by clicking :guilabel:`Create Payment`, *or* create
one payment by combining **all** bills' payments. To **combine** all payments, tick the
:guilabel:`Group Payments` box.
.. note::
The :guilabel:`Group Payments` option only appears when selecting two or more bills.
.. image:: multiple/multiple-group-payments.png
:align: center
:alt: Group payments options when registering a payment.
When selecting :guilabel:`Group Payments`, the :guilabel:`amount, currency, date and memo` are all
set automatically, but you can modify them according to your needs.
Partial group payments with cash discounts
------------------------------------------
In case of **partial group payments with cash discounts**, you can follow the steps found on the
:doc:`cash discount documentation page
</applications/finance/accounting/customer_invoices/cash_discounts>`. Make sure to
apply the :doc:`payment terms
</applications/finance/accounting/customer_invoices/payment_terms>` to the **bills**
*instead* of the invoices.
.. seealso::
:doc:`/applications/finance/accounting/customer_invoices/payment_terms`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -20,11 +20,11 @@ method, making the payment process much easier.
Configuration
=============
Make sure your :ref:`Payment Providers are correctly configured <payment_providers/configuration>`.
Make sure your :doc:`payment providers are correctly configured <../../payment_providers>`.
.. note::
By default, ":doc:`Wire Transfer </applications/finance/payment_providers/wire_transfer>`" is the only
Payment Provider activated, but you still have to fill out the payment details.
By default, ":doc:`Wire Transfer </applications/finance/payment_providers/wire_transfer>`" is the
only payment provider activated, but you still have to fill out the payment details.
To activate the Invoice Online Payment, go to :menuselection:`Accounting --> Configuration -->
Settings --> Customer Payments`, enable **Invoice Online Payment**, and click on *Save*.
@@ -13,14 +13,15 @@ Activate checks payment methods
-------------------------------
To activate the checks payment method, go to :menuselection:`Accounting --> Configuration -->
Checks`, there you can activate the payment method as well as set up the :guilabel:`Check Layout`.
Once activated the :guilabel:`Checks` setting, the feature is automatically setup for your
:guilabel:`Outgoing Payments`.
Settings`, and scroll down to the :guilabel:`Vendor Payments` section. There, you can activate the
payment method as well as set up the :guilabel:`Check Layout`.
.. note::
Some countries require specific modules to print checks; such modules may be installed by
default. For instance, the :guilabel:`U.S. Checks Layout` module is required to print U.S.
checks.
- Once the :guilabel:`Checks` setting is activated, the **Checks** payment method is
automatically set up in the :guilabel:`Outgoing Payments` tabs of **bank** journals.
- Some countries require specific modules to print checks; such modules may be installed by
default. For instance, the :guilabel:`U.S. Checks Layout` module is required to print U.S.
checks.
Compatible check stationery for printing checks
===============================================
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 32 KiB

+136 -121
View File
@@ -13,36 +13,34 @@ supports all kinds of uses and computations.
Default taxes
=============
**Default Taxes** define which taxes are automatically selected when creating a new product. They
**Default taxes** define which taxes are automatically selected when creating a new product. They
are also used to prefill the :guilabel:`Taxes` field when adding a new line on an invoice in
**Accounting Firms** mode.
.. image:: taxes/default-taxes-product.png
:alt: Odoo fills out the Tax field automatically according to the Default Taxes
To change your **Default Taxes**, go to :menuselection:`Accounting --> Configuration --> Settings
--> Taxes --> Default Taxes`, select the appropriate taxes for your default **Sales Tax** and
**Purchase Tax**, and click on *Save*.
:ref:`Accounting Firms <fiduciaries>` mode.
.. image:: taxes/default-configuration.png
:alt: Odoo fills out the Tax field automatically according to the Default Taxes
To change your **default taxes**, go to :menuselection:`Accounting --> Configuration --> Settings
--> Taxes --> Default Taxes`, select the appropriate taxes for your default sales tax and purchase
tax, and click on :guilabel:`Save`.
.. image:: taxes/default-taxes.png
:alt: Define which taxes to use by default on Odoo
.. note::
**Default Taxes** are automatically set up according to the country selected at the creation of
**Default taxes** are automatically set up according to the country selected at the creation of
your database, or when you set up a :ref:`fiscal localization package
<fiscal_localizations/packages>` for your company.
.. _taxes/list_activation:
Activate Sales Taxes from the List view
Activate sales taxes from the list view
=======================================
As part of your :ref:`fiscal localization package <fiscal_localizations/packages>`, most of your
country's sales taxes are already preconfigured on your database. However, only a few of them are
activated by default, so that you can activate only the ones relevant for your business.
To activate Sale Taxes, go to :menuselection:`Accounting --> Configuration --> Taxes` and use the
*Activate* toggle button to activate or deactivate a tax.
country's sales taxes are already preconfigured on your database. However, only a few taxes are
activated by default. To activate taxes relevant to your business, go to :menuselection:`Accounting
--> Configuration --> Taxes` and enable the toggle button under the :guilabel:`Active` column.
.. image:: taxes/list.png
:alt: Activate pre-configured taxes in Odoo Accounting
@@ -52,46 +50,32 @@ To activate Sale Taxes, go to :menuselection:`Accounting --> Configuration --> T
Configuration
=============
To edit or create a **Tax**, go to :menuselection:`Accounting --> Configuration --> Taxes` and open
a tax or click on *Create*.
To edit or create a **tax**, go to :menuselection:`Accounting --> Configuration --> Taxes` and open
a tax or click on :guilabel:`New`.
.. image:: taxes/edit.png
:alt: Edition of a tax in Odoo Accounting
.. _taxes/labels:
.. important::
Taxes have three different labels, each one having a specific use. Refer to the following table to
see where they are displayed.
+------------------+-------------------------+-------------------------+
| :ref:`Tax Name | :ref:`Label on Invoice | :ref:`Tax Group |
| <taxes/name>` | <taxes/label-invoices>` | <taxes/tax-group>` |
+==================+=========================+=========================+
| Back end | *Taxes* column on | Above the *Total* line |
| | exported invoices | on exported invoices |
+------------------+-------------------------+-------------------------+
Basic Options
Basic options
-------------
.. _taxes/name:
Tax Name
Tax name
~~~~~~~~
The **Tax Name** as you want to display it for backend users. This is the :ref:`label
<taxes/labels>` you see while editing Sales Orders, Invoices, Products, etc.
The **tax name** is displayed for backend users in the :guilabel:`Taxes` field in
:doc:`sales orders <../../sales/sales>`, :doc:`invoices <customer_invoices>`, product forms, etc.
.. _taxes/computation:
Tax Computation
Tax computation
~~~~~~~~~~~~~~~
- **Group of Taxes**
The tax is a combination of multiple sub-taxes. You can add as many taxes you want, in the order
you want them to be applied.
The tax is a combination of multiple sub-taxes. You can add as many taxes as you want, in the
order you want them to be applied.
.. important::
Make sure that the tax sequence is correct, as the order in which they are may impact the
@@ -101,75 +85,93 @@ Tax Computation
- **Fixed**
The tax has a fixed amount in the default currency. The amount remains the same, regardless of the
Sales Price.
sales price.
For example, a product has a Sales Price of $1000, and we apply a *$10 fixed* tax. We then have:
.. example::
A product has a sales price of $1000, and we apply a $10 *fixed* tax. We then have:
+-------------+-------------+----------+----------+
| Product's | Price | Tax | Total |
| Sales Price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 10 | 1,010.00 |
+-------------+-------------+----------+----------+
+-------------+-------------+----------+----------+
| Product | Price | Tax | Total |
| sales price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 10 | 1,010.00 |
+-------------+-------------+----------+----------+
- **Percentage of Price**
- **Percentage of price**
The *Sales Price* is the taxable basis: the tax's amount is computed by multiplying the Sales
Price by the tax's percentage.
The *sales price* is the taxable basis: the tax amount is computed by multiplying the sales price
by the tax percentage.
For example, a product has a Sales Price of $1000, and we apply a *10% of Price* tax. We then
have:
.. example::
A product has a sales price of $1000, and we apply a *10% of Price* tax. We then have:
+-------------+-------------+----------+----------+
| Product's | Price | Tax | Total |
| Sales Price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 100 | 1,100.00 |
+-------------+-------------+----------+----------+
+-------------+-------------+----------+----------+
| Product | Price | Tax | Total |
| sales price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 100 | 1,100.00 |
+-------------+-------------+----------+----------+
- **Percentage of Price Tax Included**
The *Total* is the taxable basis: the tax's amount is a percentage of the Total.
The **total** is the taxable basis: the tax amount is a percentage of the total.
For example, a product has a Sales Price of $1000, and we apply a *10% of Price Tax Included* tax.
We then have:
.. example::
A product has a Sales Price of $1000, and we apply a *10% of Price Tax Included* tax. We then
have:
+-------------+-------------+----------+----------+
| Product's | Price | Tax | Total |
| Sales Price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 111.11 | 1,111.11 |
+-------------+-------------+----------+----------+
+-------------+-------------+----------+----------+
| Product | Price | Tax | Total |
| sales price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 1,000 | 111.11 | 1,111.11 |
+-------------+-------------+----------+----------+
- **Python code**
A tax defined as **Python code** consists of two snippets of Python code that are executed in a
local environment containing data such as the unit price, product or partner.
:guilabel:`Python Code` defines the amount of the tax, and :guilabel:`Applicable Code` defines if
the tax is to be applied. The formula is found at the bottom of the :guilabel:`Definition` tab.
.. example::
:guilabel:`Python Code`: `result = price_unit * 0.10`
:guilabel:`Applicable Code`: `result = true`
.. _taxes/active:
Active
~~~~~~
Only **Active** taxes can be added to new documents.
Only **active** taxes can be added to new documents.
.. important::
It is not possible to delete taxes that have already been used. Instead, you can deactivate them
to prevent future use.
.. note::
This field can be modified from the *List View*. See :ref:`above <taxes/list_activation>` for
more information.
This field can be modified from the :ref:`list view <taxes/list_activation>`.
.. _taxes/scope:
Tax Scope
~~~~~~~~~
Tax type
~~~~~~~~
The **Tax Scope** determines the tax's application, which also restricts where it is displayed.
The :guilabel:`Tax Type` determines the tax application, which also restricts where it is displayed.
- **Sales**: Customer Invoices, Product's Customer Taxes, etc.
- **Purchase**: Vendor Bills, Product's Vendor Taxes, etc.
- **Sales**: Customer invoices, product customer taxes, etc.
- **Purchase**: Vendor bills, product vendor taxes, etc.
- **None**
.. tip::
You can use **None** for taxes that you want to include in a :ref:`Group of Taxes
<taxes/computation>` but that you don't want to list along with other Sales or Purchase taxes.
You can use :guilabel:`None` for taxes that you want to include in a :ref:`Group of Taxes
<taxes/computation>` but that you do not want to list along with other sales or purchase taxes.
Tax scope
~~~~~~~~~
The :guilabel:`Tax Scope` restricts the use of taxes to a type of product, either **goods** or
**services**.
.. _taxes/definition-tab:
@@ -177,105 +179,118 @@ Definition tab
--------------
Allocate with precision the amount of the taxable basis or percentages of the computed tax to
multiple accounts and Tax Grids.
multiple accounts and tax grids.
.. image:: taxes/definition.png
:alt: Allocate tax amounts to the right accounts and tax grids
- **Based On**:
- Base: the price on the invoice line
- % of tax: a percentage of the computed tax.
- :guilabel:`Base`: the price on the invoice line
- :guilabel:`% of tax`: a percentage of the computed tax.
- **Account**: if defined, an additional Journal Item is recorded.
- **Tax Grids**: used to generate :doc:`Tax Reports <reporting/tax_returns>`
- **Account**: if defined, an additional journal item is recorded.
- **Tax Grids**: used to generate :doc:`tax reports <reporting/tax_returns>`
automatically, according to your country's regulations.
.. _taxes/advanced-tab:
Advanced Options tab
Advanced options tab
--------------------
.. _taxes/label-invoices:
Label on Invoices
Label on invoices
~~~~~~~~~~~~~~~~~
The label of the tax, as displayed on each invoice line in the **Taxes** column. This is the
:ref:`label <taxes/labels>` visible to *front end* users, on exported invoices, on their Customer
Portals, etc.
The tax label is displayed on each invoice line in the :guilabel:`Taxes` column. This is visible to
*front-end* users on exported invoices, in customer portals, etc.
.. image:: taxes/invoice-label.png
:alt: The Label on Invoices is displayed on each invoice line
:alt: The label on invoices is displayed on each invoice line
.. _taxes/tax-group:
Tax Group
Tax group
~~~~~~~~~
Select to which **Tax Group** the tax belongs. The Tax Group name is the :ref:`label
<taxes/labels>` displayed above the *Total* line on exported invoices, and the Customer Portals.
Select which **tax group** the tax belongs to. The tax group name is the displayed above the
**total** line on exported invoices and in customer portals.
Tax groups include different iterations of the same tax. This can be useful when you must record
differently the same tax according to :doc:`Fiscal Positions <taxes/fiscal_positions>`.
the same tax differently according to :doc:`fiscal positions <taxes/fiscal_positions>`.
.. image:: taxes/invoice-tax-group.png
:alt: The Tax Group name is different from the Label on Invoices
.. example::
In the example above, we see a 0% tax for Intra-Community customers in Europe. It records amounts on
specific accounts and with specific tax grids. Still, to the customer, it is a 0% tax. That's why
the :ref:`Label on the Invoice <taxes/label-invoices>` indicates *0% EU*, and the Tax Group name,
above the *Total* line, indicates *0%*.
.. image:: taxes/invoice-tax-group.png
:alt: The Tax Group name is different from the Label on Invoices
In the example above, the :guilabel:`0% EU S` tax for intra-community customers in Europe records
the amount on specific accounts and tax grids. However, it remains a 0% tax to the customer. This
is why the label indicates :guilabel:`0% EU S`, and the tax group name above the
:guilabel:`Total` line indicates :guilabel:`VAT 0%`.
.. important::
Taxes have three different labels, each one having a specific use. Refer to the following table
to see where they are displayed.
+------------------+-------------------------+-------------------------+
| :ref:`Tax Name | :ref:`Label on Invoice | :ref:`Tax Group |
| <taxes/name>` | <taxes/label-invoices>` | <taxes/tax-group>` |
+==================+=========================+=========================+
| Backend | :guilabel:`Taxes` column| Above the |
| | on exported invoices | :guilabel:`Total` line |
| | | on exported invoices |
+------------------+-------------------------+-------------------------+
.. _taxes/analytic-cost:
Include in Analytic Cost
Include in analytic cost
~~~~~~~~~~~~~~~~~~~~~~~~
With this option activated, the tax's amount is assigned to the same **Analytic Account** as the
With this option activated, the tax amount is assigned to the same **analytic account** as the
invoice line.
.. _taxes/included-in-price:
Included in Price
Included in price
~~~~~~~~~~~~~~~~~
With this option activated, the total (including the tax) equals the **Sales Price**.
With this option activated, the total (including the tax) equals the **sales price**.
:dfn:`Total = Sales Price = Computed Tax-Excluded price + Tax`
`Total = Sales Price = Computed Tax-Excluded price + Tax`
For example, a product has a Sales Price of $1000, and we apply a *10% of Price* tax, which is
*included in the price*. We then have:
.. example::
A product has a sales price of $1000, and we apply a *10% of Price* tax, which is *included in
the price*. We then have:
+-------------+-------------+----------+----------+
| Product's | Price | Tax | Total |
| Sales Price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 900.10 | 90.9 | 1,000.00 |
+-------------+-------------+----------+----------+
+-------------+-------------+----------+----------+
| Product | Price | Tax | Total |
| sales price | without tax | | |
+=============+=============+==========+==========+
| 1,000 | 900.10 | 90.9 | 1,000.00 |
+-------------+-------------+----------+----------+
.. note::
If you need to define prices accurately, both tax-included and tax-excluded, please refer to the
following documentation: :doc:`taxes/B2B_B2C`.
.. note::
- **Invoices**: By default, the Line Subtotals displayed on your invoices are *Tax-Excluded*. To
display *Tax-Included* Line Subtotals, go to :menuselection:`Accounting --> Configuration -->
Settings --> Customer Invoices`, and select *Tax-Included* in the **Line Subtotals Tax
Display** field, then click on *Save*.
- **eCommerce**: By default, the prices displayed on your eCommerce website are *Tax-Excluded*.
To display *Tax-Included* prices, go to :menuselection:`Website --> Configuration --> Settings
--> Pricing`, and select *Tax-Included* in the **Product Prices** field, then click on *Save*.
By default, only the :guilabel:`Tax excluded` column is displayed on invoices. To display the
:guilabel:`Tax included` column, click the **dropdown toggle** button and check
:guilabel:`Tax incl.`.
.. image:: taxes/toggle-button.png
.. _taxes/base-subsequent:
Affect Base of Subsequent Taxes
Affect base of subsequent taxes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
With this option, the total tax-included becomes the taxable basis for the other taxes applied to
the same product.
You can configure a new :ref:`Group of Taxes <taxes/computation>` to include this tax, or add it
You can configure a new :ref:`group of taxes <taxes/computation>` to include this tax or add it
directly to a product line.
.. image:: taxes/subsequent-line.png
@@ -293,9 +308,9 @@ directly to a product line.
:alt: The taxes' sequence in Odoo determines which tax is applied first
.. seealso::
- :doc:`taxes/fiscal_positions`
- :doc:`taxes/B2B_B2C`
- :doc:`taxes/taxcloud`
- :doc:`reporting/tax_returns`
.. toctree::
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 24 KiB

@@ -2,69 +2,41 @@
Withholding taxes
=================
A withholding tax, also called a retention tax, is a government
requirement for the payer of a customer invoice to withhold or deduct
tax from the payment, and pay that tax to the government. In most
jurisdictions, withholding tax applies to employment income.
With normal taxes, the tax is added to the subtotal to give you the
total to pay. As opposed to normal taxes, withholding taxes are deducted
from the amount to pay, as the tax will be paid by the customer.
As, an example, in Colombia you may have the following invoice:
.. image:: retention/retention03.png
:align: center
In this example, the **company** who sent the invoice owes $20 of taxes to
the **government** and the **customer** owes $10 of taxes to the **government**.
A **withholding tax**, also known as retention tax, mandates the payer of a customer invoice to
deduct a tax from the payment and remit it to the government. Typically, a tax is included in the
subtotal to calculate the total amount paid, while withholding taxes are directly subtracted from
the payment.
Configuration
=============
In Odoo, a withholding tax is defined by creating a negative tax. For a
retention of 10%, you would configure the following tax (accessible
through :menuselection:`Configuration --> Taxes`):
In Odoo, a withholding tax is defined by creating a negative tax. To create one, go
to :menuselection:`Accounting --> Configuration --> Taxes` and, in the :guilabel:`Amount` field,
enter a negative amount.
.. image:: retention/retention04.png
:align: center
.. image:: retention/negative-amount.png
:alt: negative tax amount in field
In order to make it appear as a retention on the invoice, you should set
a specific tax group **Retention** on your tax, in the **Advanced Options**
tab.
Then, go to the :menuselection:`Advanced Options` tab and create a retention :guilabel:`Tax Group`.
.. image:: retention/retention02.png
:align: center
Once the tax is defined, you can use it in your products, sales order or
invoices.
.. image:: retention/tax-group.png
:alt: tax group for retention tax.
.. tip::
If the retention is a percentage of a regular tax, create a Tax with a
**Tax Computation** as a **Tax Group** and set the two taxes in this group
(normal tax and retention).
If the retention is a percentage of a regular tax, create a :guilabel:`Tax` with a
:guilabel:`Tax Computation` as a :guilabel:`Group of Taxes`. Then, set both the regular tax and
the retention one in the :guilabel:`Definition` tab.
Applying retention taxes on invoices
====================================
Retention taxes on invoices
===========================
Once your tax is created, you can use it on customer forms, sales order
or customer invoices. You can apply several taxes on a single customer
invoice line.
Once the retention tax has been created, it can be used on customer forms, sales orders, and
customer invoices.
Several taxes can be applied on a single customer invoice line.
.. image:: retention/retention01.png
:align: center
.. note::
When you see the customer invoice on the screen, you get only a
**Taxes line** summarizing all the taxes (normal taxes & retentions).
But when you print or send the invoice, Odoo does the correct
grouping amongst all the taxes.
The printed invoice will show the different amounts in each tax group.
.. image:: retention/retention03.png
:align: center
.. image:: retention/invoice-tax.png
:alt: invoice lines with taxes
.. seealso::
* :doc:`../taxes`
:doc:`../taxes`
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

@@ -3,9 +3,12 @@ TaxCloud integration
====================
.. warning::
The Odoo TaxCloud integration has begun its decommissioning, starting in Odoo 17. New
installations are prohibited in Odoo 17, and in Odoo 18, the TaxCloud module(s) won't exist at
all. Odoo recommends the use of the Avatax platform.
The out-of-the-box Odoo TaxCloud integration has begun its decommissioning. Starting in Odoo 17,
new installations are prohibited, and in Odoo 18 the TaxCloud module(s) won't exist at all. Odoo
recommends the use of the Avatax platform.
If you are hosted on-premise or on Odoo.SH and you wish to use Taxcloud, you can contact them
directly `here <https://taxcloud.com/blog/odoo-integration/>`_.
.. seealso::
:doc:`avatax`
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

@@ -1,195 +1,176 @@
=================================
Deferred expenses and prepayments
=================================
=================
Deferred expenses
=================
**Deferred expenses** and **prepayments** (also known as **prepaid expense**), are both costs that
have already occurred for unconsumed products or services yet to receive.
**Deferred expenses** and **prepayments** (also known as **prepaid expenses**) are both costs that
have already occurred for products or services yet to be received.
Such costs are **assets** for the company that pays them since it already paid for products and
services still to receive or that are yet to be used. The company cannot report them on the current
**Profit and Loss statement**, or *Income Statement*, since the payments will be effectively
expensed in the future.
services but has either not yet received them or not yet used them. The company cannot report them
on the current **profit and loss statement**, or *income statement*, since the payments will be
effectively expensed in the future.
These future expenses must be deferred on the company's balance sheet until the moment in time they
can be **recognized**, at once or over a defined period, on the Profit and Loss statement.
can be **recognized**, at once or over a defined period, on the profit and loss statement.
For example, let's say we pay $ 1200 at once for one year of insurance. We already pay the cost now
For example, let's say we pay $1200 at once for one year of insurance. We already pay the cost now
but haven't used the service yet. Therefore, we post this new expense in a *prepayment account* and
decide to recognize it on a monthly basis. Each month, for the next 12 months, $ 100 will be
decide to recognize it on a monthly basis. Each month, for the next 12 months, $100 will be
recognized as an expense.
Odoo Accounting handles deferred expenses and prepayments by spreading them in multiple entries that
are automatically created in *draft mode* and then posted periodically.
Odoo Accounting handles deferred expenses by spreading them across multiple entries that are
posted periodically.
.. note::
The server checks once a day if an entry must be posted. It might then take up to 24 hours before
you see a change from *draft* to *posted*.
you see a change from :guilabel:`Draft` to :guilabel:`Posted`.
Prerequisites
Configuration
=============
Such transactions must be posted on a **Deferred Expense Account** rather than on the default
expense account.
Make sure the default settings are correctly configured for your business. To do so, go to
:menuselection:`Accounting --> Configuration --> Settings`. The following options are available:
Configure a Deferred Expense Account
------------------------------------
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <vendor_bills/deferred/generate_on_validation>`
the deferral entries when you post a vendor bill. However, you can also choose to
:ref:`generate them manually <vendor_bills/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation recognizes $100 each month, while the :guilabel:`Based on days` computation recognizes
different amounts depending on the number of days in each month.
To configure your account in the **Chart of Accounts**, go to :menuselection:`Accounting -->
Configuration --> Chart of Accounts`, click on *Create*, and fill out the form.
.. _vendor_bills/deferred/generate_on_validation:
.. image:: deferred_expenses/deferred_expenses01.png
:align: center
:alt: Configuration of a Deferred Expense Account in Odoo Accounting
Generate deferral entries on validation
=======================================
.. tip::
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
month as the :guilabel:`Bill Date`.
For each line of the bill that should be deferred, specify the start and end dates of the deferral
period.
If the :guilabel:`Generate Entries` field is set to :guilabel:`On invoice/bill validation`, Odoo
automatically generates the deferral entries when the bill is validated. Click on the
:guilabel:`Deferred Entries` smart button to see them.
One entry, dated on the same day as the bill, moves the bill amounts from the expense account to
the deferred account. The other entries are deferral entries which will, month after month, move the
bill amounts from the deferred account to the expense account to recognize the expense.
.. example::
You can defer a January bill of $1200 over 12 months by specifying a start date of 01/01/2023
and an end date of 12/31/2023. At the end of August, $800 is recognized as an expense,
whereas $400 remains on the deferred account.
Reporting
=========
The deferred expense report computes an overview of the necessary deferral entries for each account.
To access it, go to :menuselection:`Accounting --> Reporting --> Deferred Expense`.
To view the journal items of each account, click on the account name and then :guilabel:`Journal
Items`.
.. image:: deferred_expenses/deferred_expense_report.png
:alt: Deferred expense report
.. note::
This account's type must be either *Current Assets* or *Prepayments*
Only bills whose accounting date is before the end of the period of the report
are taken into account.
Post an expense to the right account
------------------------------------
.. _vendor_bills/deferred/generate_manually:
Select the account on a draft bill
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generate grouped deferral entries manually
==========================================
On a draft bill, select the right account for all the products of which the expenses must be
deferred.
If you have a lot of deferred revenues and wish to reduce the number of journal entries created, you
can generate deferral entries manually. To do so, set the :guilabel:`Generate Entries` field in the
**Settings** to :guilabel:`Manually & Grouped`. Odoo then aggregates the deferred amounts in a
single entry.
.. image:: deferred_expenses/deferred_expenses02.png
:align: center
:alt: Selection of a Deferred Expense Account on a draft bill in Odoo Accounting
At the end of each month, go to the Deferred Expenses report and click the
:guilabel:`Generate Entries` button. This generates two deferral entries:
Choose a different Expense Account for specific products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- One dated at the end of the month which aggregates, for each account, all the deferred amounts
of that month. This means that at the end of that period, a part of the deferred expense is
recognized.
- The reversal of this created entry, dated on the following day (i.e., the first day of the
next month) to cancel the previous entry.
Start editing the product, go to the *Accounting* tab, select the right **Expense Account**, and
save.
.. example::
.. image:: deferred_expenses/deferred_expenses03.png
:align: center
:alt: Change of the Expense Account for a product in Odoo
There are two bills:
.. tip::
It is possible to automate the creation of expense entries for these products (see:
`Automate the Deferred Expenses`_).
- Bill A: $1200 to be deferred from 01/01/2023 to 12/31/2023
- Bill B: $600 to be deferred from 01/01/2023 to 12/31/2023
Change the account of a posted journal item
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In January
At the end of January, after clicking the :guilabel:`Generate Entries` button,
there are the following entries:
To do so, open your Purchases Journal by going to :menuselection:`Accounting --> Accounting -->
Purchases`, select the journal item you want to modify, click on the account, and select the right
one.
- Entry 1 dated on the 31st January:
.. image:: deferred_expenses/deferred_expenses04.png
:align: center
:alt: Modification of a posted journal item's account in Odoo Accounting
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both bills)
- Line 2: Expense account 100 + 50 = **150** (recognizing 1/12 of bill A and bill B)
- Line 3: Deferred account 1800 - 150 = **1650** (amount that has yet to be deferred later
on)
Deferred Expenses entries
=========================
- Entry 2 dated on the 1st February, the reversal of the previous entry:
Create a new entry
------------------
- Line 1: Expense account **1800**
- Line 2: Deferred account **-150**
- Line 3: Expense account **-1650**
A **Deferred Expense entry** automatically generates all journal entries in *draft mode*. They are
then posted one by one at the right time until the full amount of the expense is recognized.
In February
At the end of February, after clicking the :guilabel:`Generate Entries` button,
there are the following entries:
To create a new entry, go to :menuselection:`Accounting --> Accounting --> Deferred Expense`, click
on *Create*, and fill out the form.
- Entry 1 dated on the 28th February:
Click on **select related purchases** to link an existing journal item to this new entry. Some
fields are then automatically filled out, and the journal item is now listed under the **Related
Expenses** tab.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both bills)
- Line 2: Expense account 200 + 100 = **300** (recognizing 2/12 of bill A and bill B)
- Line 3: Deferred account 1800 - 300 = **1500** (amount that has yet to be deferred later
on)
.. image:: deferred_expenses/deferred_expenses05.png
:align: center
:alt: Deferred Expense entry in Odoo Accounting
- Entry 2 dated on the 1st March, the reversal of the previous entry.
Once done, you can click on *Compute Deferral* (next to the *Confirm* button) to generate all the
values of the **Expense Board**. This board shows you all the entries that Odoo will post to
recognize your expense, and at which date.
From March to October
The same computation is done for each month until October.
.. image:: deferred_expenses/deferred_expenses06.png
:align: center
:alt: Expense Board in Odoo Accounting
In November
At the end of November, after clicking the :guilabel:`Generate Entries` button,
there are the following entries:
What does "Prorata Temporis" mean?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Entry 1 dated on the 30th November:
The **Prorata Temporis** feature is useful to recognize your expense the most accurately possible.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both bills)
- Line 2: Expense account 1100 + 550 = **1650** (recognizing 11/12 of bill A and bill B)
- Line 3: Deferred account 1800 - 1650 = **150** (amount that has yet to be deferred later
on)
With this feature, the first entry on the Expense Board is computed based on the time left between
the *Prorata Date* and the *First Recognition Date* rather than the default amount of time between
recognitions.
- Entry 2 dated on the 1st December, the reversal of the previous entry.
For example, the Expense Board above has its first expense with an amount of $ 70.97 rather than
$ 100.00. Consequently, the last entry is also lower and has an amount of $ 29.03.
In December
There is no need to generate entries in December. Indeed, if we do the computation for
December, we will have an amount of 0 to be deferred.
Deferred Entry from the Purchases Journal
-----------------------------------------
In total
If we aggregate everything, we would have:
You can create a deferred entry from a specific journal item in your **Purchases Journal**.
- bill A and bill B
- two entries (one for the deferral and one for the reversal) for each month from January to
November
To do so, open your Purchases Journal by going to :menuselection:`Accounting --> Accounting -->
Purchases`, and select the journal item you want to defer. Make sure that it is posted in the right
account (see: `Change the account of a posted journal item`_).
Then, click on *Action*, select **Create Deferred Entry**, and fill out the form the same way you
would do to `create a new entry`_.
.. image:: deferred_expenses/deferred_expenses07.png
:align: center
:alt: Create Deferred Entry from a journal item in Odoo Accounting
Deferred Expense Models
=======================
You can create **Deferred Expense Models** to create your Deferred Expense entries faster.
To create a model, go to :menuselection:`Accounting --> Configuration --> Deferred Expense Models`,
click on *Create*, and fill out the form the same way you would do to create a new entry.
.. tip::
You can also convert a *confirmed Deferred Expense entry* into a model by opening it from
:menuselection:`Accounting --> Accounting --> Deferred Expenses` and then, by clicking on the
button *Save Model*.
Apply a Deferred Expense Model to a new entry
---------------------------------------------
When you create a new Deferred Expense entry, fill out the **Deferred Expense Account** with the
right recognition account.
New buttons with all the models linked to that account appear at the top of the form. Clicking on a
model button fills out the form according to that model.
.. image:: deferred_expenses/deferred_expenses08.png
:align: center
:alt: Deferred Expense model button in Odoo Accounting
.. _deferred-expenses-automation:
Automate the Deferred Expenses
==============================
When you create or edit an account of which the type is either *Current Assets* or *Prepayments*,
you can configure it to defer the expenses that are credited on it automatically.
You have three choices for the **Automate Deferred Expense** field:
#. **No:** this is the default value. Nothing happens.
#. **Create in draft:** whenever a transaction is posted on the account, a draft *Deferred Expenses
entry* is created, but not validated. You must first fill out the form in
:menuselection:`Accounting --> Accounting --> Deferred Expenses`.
#. **Create and validate:** you must also select a Deferred Expense Model (see: `Deferred Expense
Models`_). Whenever a transaction is posted on the account, a *Deferred Expenses entry* is
created and immediately validated.
.. image:: deferred_expenses/deferred_expenses09.png
:align: center
:alt: Automate Deferred Expense on an account in Odoo Accounting
.. tip::
You can, for example, select this account as the default **Expense Account** of a product to
fully automate its purchase. (see: `Choose a different Expense Account for specific
products`_).
.. seealso::
* :doc:`../get_started/chart_of_accounts`
Therefore, at the end of December, bills A and B are fully recognized as expense only once in
spite of all the created entries thanks to the reversal mechanism.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

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