Compare commits

...

143 Commits

Author SHA1 Message Date
Donatienne (dopi) 7993f21829 [IMP] Website: updating seo documentation
taskid-3499195
2024-02-06 14:52:29 +01:00
Loredana Perazzo cf63a97952 [IMP] POS: path to configure payment terminals
task-3684488

closes odoo/documentation#7601

X-original-commit: 57be14567e
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-02-06 10:12:46 +00:00
John Holton (hojo) 1bf87a0db9 [ADD] Quality: Control points doc
closes odoo/documentation#7203

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-02-04 02:53:51 +00:00
Odoo Translation Bot 49b057b80d [I18N] Update translation terms from Transifex 2024-02-04 01:41:35 +01:00
tiku-odoo c1ba4c61ae [IMP] Productivity IoT Windows Add Admonition Block
closes odoo/documentation#7577

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-02-01 19:00:47 +00:00
tiku-odoo 64afeaebb0 [IMP] Misc Auth LDAP Typo Edits
closes odoo/documentation#7583

X-original-commit: 03678233c5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-01-30 15:47:28 +00:00
“Audrey 03e9a8fd2b [IMP] payment_providers: restructure doc page
task-3702587

Based on https://github.com/odoo/documentation/pull/7414
Up to saas-16.4

closes odoo/documentation#7545

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-01-29 12:56:28 +00:00
Odoo Translation Bot 4cbbd98dee [I18N] Update translation terms from Transifex 2024-01-28 01:41:02 +01:00
Augusto Perez 16a209c750 [ADD] Upgrade documentation: Upgrade scripts and Util package
closes odoo/documentation#7330

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-25 12:56:20 +00:00
Lara Martini (larm) a838df1660 [ADD] Time Off: new documentation needed
closes odoo/documentation#7520

X-original-commit: 572a54b396
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-01-24 22:31:52 +00:00
Loredana Perazzo 5ec37fbb7f [IMP] pos: note about products loading
task-3095675

closes odoo/documentation#7425

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-01-23 09:05:42 +00:00
tiku-odoo 95cbc584f4 [IMP] IoT Printer doc edits
closes odoo/documentation#7489

X-original-commit: bfe57fdbdd
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-23 01:11:33 +00:00
tiku-odoo c9dc6dc195 [RMV]Sales: remove snyc menu line ebay connector
closes odoo/documentation#7464

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 16:20:48 +00:00
Donatienne (dopi) 9f09422920 [IMP] accounting: reconciliation models update
task-3377307

closes odoo/documentation#5943

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-01-22 15:02:15 +00:00
Odoo Translation Bot f3b40b5399 [I18N] Update translation terms from Transifex 2024-01-21 01:41:19 +01:00
tiku-odoo c608df663b [IMP] Microsoft Azure Email Phrasing update
closes odoo/documentation#7455

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:49 +00:00
tiku-odoo f097e22df0 [RMV]VOIP:Scrub Asterisk Docs
closes odoo/documentation#7438

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:16:18 +00:00
Martin Trigaux (mat) 786df1f373 [I18N] *: export 16.0 translations
closes odoo/documentation#7446

X-original-commit: 1b1941563d
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2024-01-19 09:13:13 +00:00
Brandon Seltenrich (BRSE) a7af9a59ff [IMP] barcode: update adjustments doc
closes odoo/documentation#7352

X-original-commit: 7d56862e53
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-17 02:24:51 +00:00
Christophe Monniez 38bd71fa13 [FIX] requirements: fix sphinxcontrib versions
It seems that the latest version if sphinx contrib libs needs sphinx 5.0.

closes odoo/documentation#7403

Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
2024-01-16 12:59:56 +00:00
Olivier Dony 9c16edbf7b [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 18:16:01 +00:00
Olivier Dony 73c08327d4 [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 18:16:00 +00:00
Olivier Dony 4b98180756 [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 18:16:00 +00:00
Odoo Translation Bot 2e1d337ed0 [I18N] Update translation terms from Transifex 2024-01-14 01:41:12 +01:00
KC (ksc) b01133bfef [IMP] sales: updated amazon order management
closes odoo/documentation#6363

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-13 19:37:45 +00:00
KC (ksc) a61189725a [IMP] sales: amazon connector features doc for 16
closes odoo/documentation#6265

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-13 18:31:11 +00:00
Jonathan Castillo (jcs) cce392c303 [FIX] redirects: redirection loop on install.rst
closes odoo/documentation#7356

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-12 15:21:48 +00:00
Donatienne (dopi) 955ec07a4d [MOV] geo ip installation: move page to install
Page moved from Websites to Install section

taskid-3512515

Part-of: odoo/documentation#7356
2024-01-12 15:21:48 +00:00
Sam Lieber (sali) 505547264e [FIX] l10n_cl: Chile typo corrections
closes odoo/documentation#7339

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-12 15:21:46 +00:00
Tom Aarab (toaa) 2ef7150ebf [REM] accounting: multiple payments
Removing redundant page (see task)

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

taskid-3466400

closes odoo/documentation#7343

X-original-commit: 6a66644abe
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-11 19:08:10 +00:00
Nathan Marotte (nama) 44f4683519 [ADD] Upgrade documentation: How-to-guide for developers
closes odoo/documentation#6757

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-01-10 17:25:59 +00:00
Tom Aarab (toaa) 53656d7065 [IMP] localization: spain missing reports
Missing tax reports for

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

taskid-3673259

closes odoo/documentation#7310

X-original-commit: fecb587e78
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-10 10:03:48 +00:00
masi-odoo 1596413d4b [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#5525

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-01-09 15:04:04 +00:00
Marion (masp) ca160e4e1a [ADD] website: address autocomplete configuration
Task-3618264

closes odoo/documentation#6984

Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-01-09 14:00:02 +00:00
Tom Aarab (toaa) 3c3c559d3b [IMP] accounting: payments doc update
Updated the payments doc page.

Forward to master.

16.3 -> Change reconciliation section

taskid-3610834

closes odoo/documentation#7258

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

Forward to master

taskid-3644544

closes odoo/documentation#7285

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 09:46:51 +00:00
Tom Aarab (toaa) e2029ce5f7 [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#7228

X-original-commit: 50e9083274
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-08 09:46:50 +00:00
Odoo Translation Bot 69a9a03e1a [I18N] Update translation terms from Transifex 2024-01-07 01:40:57 +01:00
Donatienne (dopi) 4bc2742413 [ADD] blogs: documentation
task-3492925

closes odoo/documentation#5801

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-01-05 15:15:38 +00:00
Julien Castiaux 4073e9dfb1 [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#7259

X-original-commit: c55e8f251a
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2024-01-05 09:05:13 +00:00
Tom Aarab (toaa) 2a32362e28 [IMP] accounting: reporting
Updated the reporting section.

Forward to 16.3

closes odoo/documentation#7257

X-original-commit: d0b0cdfcf5
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-01-05 08:03:52 +00:00
Tom Aarab (toaa) 0311faee2f [FIX] Project: broken URL
One of the link is broken

taskid-3658558

closes odoo/documentation#7193

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-01-04 09:32:35 +00:00
Lara Martini (larm) 7a5d891206 [ADD] fleet: add a new vehicle
closes odoo/documentation#7205

X-original-commit: e3d4c2f843
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: jero-odoo <104637850+jero-odoo@users.noreply.github.com>
2024-01-02 18:49:57 +00:00
Brandon Seltenrich (BRSE) 81d201efc4 [IMP] inventory: update differences doc
closes odoo/documentation#7147

X-original-commit: 3908516bfb
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-01-02 17:47:54 +00:00
Odoo Translation Bot d311926f37 [I18N] Update translation terms from Transifex 2023-12-31 01:40:57 +01:00
Lara Martini (larm) faa88b6a3f [ADD] Fleet: new services doc
closes odoo/documentation#7177

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

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 13:57:59 +00:00
Lara Martini (larm) 04401626e5 [IMP] Inventory: making targeted edits for 16
closes odoo/documentation#4381

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-26 20:47:47 +00:00
Lara Martini (larm) 4f03fc59d4 [ADD] Referrals: new doc explaining all of referrals
closes odoo/documentation#7155

X-original-commit: f2b550ab78
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2023-12-26 19:39:58 +00:00
Brandon Seltenrich (BRSE) 30fd7112af [IMP] barcode: update barcode operations doc
closes odoo/documentation#7135

X-original-commit: 170eda0d18
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2023-12-26 18:04:11 +00:00
Brandon Seltenrich (BRSE) df58ae965c [IMP] barcode: update transfers scratch doc
closes odoo/documentation#7137

X-original-commit: 13807f75ae
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2023-12-26 17:05:07 +00:00
Odoo Translation Bot 110146cb2d [I18N] Update translation terms from Transifex 2023-12-24 01:41:05 +01:00
Lara Martini (larm) 6d5f38fa88 [ADD] fleet: new configurations doc
closes odoo/documentation#7085

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:15:16 +00:00
Lara Martini (larm) 2f2d3d2267 [IMP] Recruitment: adding new hiring flow doc
closes odoo/documentation#7086

X-original-commit: 6704ff51de
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 02:47:47 +00:00
tiku-odoo 911cb2c26e [IMP] Market Connectors: eBay Marketplace edits
closes odoo/documentation#7076

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 02:47:45 +00:00
Jess Rogers (jero) 5cfe3dbf3f [IMP] crm: update convert leads
closes odoo/documentation#7062

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 02:47:45 +00:00
Lara Martini (larm) 55600e428d [IMP] Recruitmet: updating images and text for 16 version
closes odoo/documentation#6213

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 02:47:43 +00:00
Lara Martini (larm) ec18f20bf5 [IMP] payroll: made targeted edits for 16
closes odoo/documentation#5449

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 02:47:42 +00:00
Lara Martini (larm) 5413bd1c5d [IMP] employees: larm made targeted edits for 16 and updated pics
closes odoo/documentation#5040

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-22 02:47:41 +00:00
KC (ksc) 8167182ae9 [IMP] sales: updated product_images doc about Google API
closes odoo/documentation#6251

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 21:25:38 +00:00
KC (ksc) ca1554271b [IMP] sales: updated import products doc for 16
closes odoo/documentation#5861

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 21:25:37 +00:00
tiku-odoo 5e7b7e6098 [IMP] Misc: Portal User Change Login Initial Commit
closes odoo/documentation#7053

X-original-commit: d423038270
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 06:50:47 +00:00
tiku-odoo 648f20a832 [IMP] Productivity: Discuss Getting Started
closes odoo/documentation#7043

X-original-commit: cdd5dbead5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-21 06:50:47 +00:00
KC (ksc) 70050340fe [IMP] marketing automation: update understanding_metrics for 16
closes odoo/documentation#5161

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 23:58:47 +00:00
KC (ksc) 76fc90dde7 [IMP] marketing automation: updated testing_running campaign doc for Odoo 16
closes odoo/documentation#5157

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 23:58:46 +00:00
KC (ksc) 6968e362da [IMP] marketing automation: updated workflow activities for 16
closes odoo/documentation#5130

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 22:47:47 +00:00
KC (ksc) c2c835c2d6 [IMP] sales: updated variants doc for v16
closes odoo/documentation#5942

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-20 19:58:40 +00:00
KC (ksc) bddbe0fd45 [IMP] social marketing: updated essentials for Odoo 16
closes odoo/documentation#5218

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-20 19:58:39 +00:00
KC (ksc) a728ac22dd made all of BRSE's edits
closes odoo/documentation#5093

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2023-12-20 18:53:44 +00:00
Lara Martini (larm) 1c00f06816 [IMP] Inventory: updated for v16
closes odoo/documentation#4379

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 03:58:02 +00:00
Lara Martini (larm) fabe484b75 [ADD] Payroll: adding new reporting doc
closes odoo/documentation#6988

X-original-commit: fcba53839f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-20 00:29:41 +00:00
Felicious 229e65a5aa [FIX] barcode: typo in example
closes odoo/documentation#6971

X-original-commit: 72f93a84ea
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-19 20:25:15 +00:00
Martin Trigaux b9a9da8808 [I18N] *: export 16.0 translations
closes odoo/documentation#6981

X-original-commit: 0101876db6
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2023-12-19 11:14:43 +00:00
Odoo Translation Bot 2edce38648 [I18N] Update translation terms from Transifex 2023-12-17 01:40:29 +01:00
KC (ksc) d615bc0f6d [IMP] sales: updated entire invoicing based on milestones doc
closes odoo/documentation#5574

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-16 21:54:49 +00:00
Brandon Seltenrich (BRSE) 18aad6d5f2 [FIX] barcode: fix default delay number
closes odoo/documentation#6951

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-15 22:19:40 +00:00
Julien Castiaux f3f44fe5f2 [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#5485

Related: odoo/odoo#131700
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-15 10:26:41 +00:00
Julien Castiaux 09c42c5896 [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#6932

Closes: odoo/odoo#64643
X-original-commit: 8d1642984f
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-15 09:23:31 +00:00
KC (ksc) 6cf4d56153 [IMP] sales: updated Amazon Connector setup doc for 16
closes odoo/documentation#6288

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-15 01:10:17 +00:00
Tom Aarab (toaa) a7c3f818da [IMP] accounting: updated chart of accounts page
Updated the chart of accounts page. Forward to master.

16.3 -> Change "ellipsis" menu button
17 -> Change "Setup" to "View"

taskid-3609365

closes odoo/documentation#6910

X-original-commit: b617b47ab2
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2023-12-14 12:28:07 +00:00
Lara Martini (larm) cb87e208bf [ADD] Payroll: adding detailed payslips doc
closes odoo/documentation#6924

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 02:06:39 +00:00
Maximilien (malb) 053fb768e6 [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#6896

Task: 3633468
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-12-12 12:46:16 +00:00
Sam Lieber (sali) a28339b44b [IMP] accounting/l10n_mx: additional context
closes odoo/documentation#6888

X-original-commit: 1cca645f17
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-11 16:06:05 +00:00
Odoo Translation Bot ba95cb33d5 [I18N] Update translation terms from Transifex 2023-12-10 01:40:26 +01:00
John Holton (hojo) 59791c252b [REF] Inventory: Restructure Inventory scope
closes odoo/documentation#5700

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 20:11:38 +00:00
KC (ksc) 4e85ef01e8 [IMP] sales: updated returns doc for v16
closes odoo/documentation#6258

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:46 +00:00
KC (ksc) bbbb00e752 [IMP] sales: updated pro-forma invoice doc for 16
closes odoo/documentation#5553

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:45 +00:00
KC (ksc) 9fc9c2f52d [IMP] sales: updated down payment doc for 16
closes odoo/documentation#5523

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:44 +00:00
KC (ksc) e6a6b9b453 [IMP] sales: online signature confirmation doc
closes odoo/documentation#5437

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:43 +00:00
KC (ksc) e1bed7ee7c [IMP] sales: update get signature to validate for 16
closes odoo/documentation#5434

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:42 +00:00
KC (ksc) 22d41dc2f3 [IMP] sales: updated optional_products for 16
closes odoo/documentation#5409

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:41 +00:00
KC (ksc) 1e2a29338e [IMP] sales: updated time_materials for v16
closes odoo/documentation#5083

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:40 +00:00
KC (ksc) 039dba0780 [IMP] sales: fully updated currencies doc
closes odoo/documentation#4534

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 04:05:39 +00:00
KC (ksc) a4a9335dd1 [IMP] sales: reinvoice expenses to customers
closes odoo/documentation#5590

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 02:55:47 +00:00
KC (ksc) ff2cabf621 [IMP] subscriptions: products fix misleading info
closes odoo/documentation#5560

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 01:49:11 +00:00
KC (ksc) af7c7afa34 [IMP] sales: update orders and variants for 16
closes odoo/documentation#5456

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-07 00:38:45 +00:00
Julien Castiaux e5d77ee285 [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#6751

Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-06 12:25:24 +00:00
“Chiara 27a307cb0c [IMP] accounting: followup screenshot
taskid-3614885

closes odoo/documentation#6697

Signed-off-by: Chiara Prattico (chpr) <chpr@odoo.com>
2023-12-06 10:12:45 +00:00
Zachary Straub (ZST) f9013a6309 [IMP] sales: update quote_template for 16
closes odoo/documentation#5873

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-12-06 01:49:52 +00:00
Jess Rogers (jero) ade6af5b30 [IMP] crm: update plan activities
closes odoo/documentation#6769

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-05 17:58:18 +00:00
william-andre df8114e591 [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#6728

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-12-05 15:20:02 +00:00
Donatienne (dopi) 88f546f2a9 [IMP] Website: Unsplash documentation updated
task-3498880

closes odoo/documentation#5823

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-12-05 15:19:57 +00:00
Julien Castiaux a2f895f644 [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#6738

X-original-commit: 3d91c57b57
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-03 08:27:52 +00:00
Odoo Translation Bot 80f195831e [I18N] Update translation terms from Transifex 2023-12-03 01:40:34 +01:00
“Audrey a4b3008101 [ADD] website: mail groups
task-2845181

closes odoo/documentation#6700

X-original-commit: 632039fa74
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2023-11-28 13:35:14 +00:00
Sam Lieber (sali) c1fe28dd50 [IMP] accounting/l10n_co: additional context
closes odoo/documentation#6685

X-original-commit: 6045a60dd5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: dade-odoo <87431108+dade-odoo@users.noreply.github.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2023-11-27 22:31:45 +00:00
Jess Rogers (jero) 33a9e1f017 [IMP] crm: update manage lost opps
closes odoo/documentation#6676

X-original-commit: 21f0ad60f8
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2023-11-27 19:05:44 +00:00
Marion (masp) 4b7668d6a8 [IMP] Contributing: typo seealso admonition
closes odoo/documentation#6637

X-original-commit: 70d5a55909
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2023-11-27 17:34:06 +00:00
Loredana Perazzo 4118cb9bf9 [IMP] pos: remove duplicate of set customer and update sections accordingly
task-3366190

closes odoo/documentation#6606

Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2023-11-27 06:09:50 +00:00
Odoo Translation Bot 2377fa1bb8 [I18N] Update translation terms from Transifex 2023-11-26 01:40:34 +01:00
Donatienne (dopi) 71446b0668 [IMP] sign: update for 16.0
task-3433578

closes odoo/documentation#5558

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-24 13:37:38 +00:00
Xavier (XPL) 3ead6e0f99 [IMP] reporting: improve grammar and remove image centering
closes odoo/documentation#6644

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-24 10:28:27 +00:00
Xavier (XPL) a149164866 [IMP] outlook: remove note about multi-user sync spam
task-3575806

closes odoo/documentation#6619

X-original-commit: b4302e4023
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 16:07:15 +00:00
Claire Bretton (clbr) 620508fb29 [FIX] getting_started: remove useless lambda
The lambda function here is useless and makes newdooers think
they need to use it everytime.
`default=fields.Date.add(fields.Date.today(), months=3))`
should do the trick, no lambda involved.

closes odoo/documentation#6607

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-23 13:07:05 +00:00
Claire Bretton (clbr) 8707609b38 [FIX] getting_started: invalid addons-path
The "../technical-training-sandbox" is added too early in the path since
its still empty, and results into an "invalid addons-path" error.

Part-of: odoo/documentation#6607
2023-11-23 13:07:05 +00:00
Xavier (XPL) e413418e1e [FIX] accounting: update link to getting started video tutorial
task-3608613

closes odoo/documentation#6609

X-original-commit: c0653112a1
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 12:04:38 +00:00
Xavier (XPL) 12670b1299 [IMP] paypal: add note about supported currencies
task-3608056

closes odoo/documentation#6566

X-original-commit: 5f1881a88a
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-23 07:54:39 +00:00
Felicious 4e2b634a50 [IMP] inventory: update delivery methods from 12 to 16
closes odoo/documentation#6287

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-23 02:55:09 +00:00
Felicious 56cda37610 [IMP] barcode: add zebra scanner section
add more figures

closes odoo/documentation#5827

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>
2023-11-23 02:55:08 +00:00
Felicious 32900efbb9 [ADD] inventory: cluster picking
closes odoo/documentation#5732

Signed-off-by: Zachary Straub (zst) <zst@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: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
2023-11-23 01:57:56 +00:00
John Holton (hojo) 5612ce8dd8 [ADD] Quality: Take a Picture Check
closes odoo/documentation#5939

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-23 00:53:50 +00:00
KC (ksc) 75c24e7e88 [IMP] sales: updated deadline doc for 16
closes odoo/documentation#5438

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-22 21:52:08 +00:00
John Holton (hojo) 78713f1637 [ADD] Quality: Measure quality check
closes odoo/documentation#5760

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-22 20:50:48 +00:00
Xavier (XPL) b96de8b50e [IMP] upgrade: add note on bank synch neutralization
task-3605690

closes odoo/documentation#6557

X-original-commit: dc48273e7e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-22 15:10:02 +00:00
John Holton (hojo) 1a11e3c35c [ADD] Quality: Pass - Fail quality checks
closes odoo/documentation#5884

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-21 19:46:28 +00:00
Xavier (XPL) f38bae5e8d [FIX] payroll: add missing show-content metadata
Without the :show-content: metadata markup, it is not possible to open the
page by navigating from the toctree.

closes odoo/documentation#6524

X-original-commit: 16e339a7a3
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-21 16:34:52 +00:00
Donatienne (dopi) cd11937f43 [IMP] website: use plausible.io servers and account
This addition explains how to create and connect an existing plausible.io account in Odoo.

task-3540753

closes odoo/documentation#6495

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-21 16:34:47 +00:00
Mathieu (mano) d287d0807a [IMP] odoo_theme: toctrees-l1,l2 design improvement
Issue 1:
========
The toctrees in the documentation are visually inconsistent because of
the content. Sometimes we have titles that are also links and visually
collides with the rest of the toc making it hard to read. This applies
to toctree-l1 and toctree-l2.

Fix 1:
========
When we have a link and title toctree-l2 in a list containing other
nested toc, we apply another styling displaying it with the same color
as a title, but with an icon and hover behavior indicating that it is a
link. (This commit also changes the direction of the i-link icon to make
it standard).

Issue 2:
========
When we have only have toctree-l1 links without nested toc the toctree
is uselessly taking a lot of space.

Fix: 2
========

In these scenario we add a class to the toctree wrapper to replace the
toctree-l1 style with a toctree-l2.

task-3138525
task-3138563

part of

task-3059178

closes odoo/documentation#6502

X-original-commit: c62bf21987
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-21 11:59:59 +00:00
Jess Rogers (jero) a11fa7e5b2 [REM] crm: google spreadsheet integration
closes odoo/documentation#6394

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2023-11-21 11:59:53 +00:00
Odoo Translation Bot 815f4c89b7 [I18N] Update translation terms from Transifex 2023-11-19 01:40:48 +01:00
Felicious 9081e45aab [IMP] barcode: split docs + hone in on language
closes odoo/documentation#6492

X-original-commit: e7cd792466
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2023-11-17 20:19:31 +00:00
oco-odoo 1a32165180 [IMP] accounting: new tag selector for custom reports
https://github.com/odoo/enterprise/commit/0c0cf8ebc943a8dc2d9bdd952dc7b5c2dabbd60a
added a new way to select accounts in the account_codes engine. This
commit adds some explanation in the doc on how to use this new syntax.

closes odoo/documentation#6494

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2023-11-17 17:19:27 +00:00
tiku-odoo 17f958aa80 [IMP] Productivity: Outlook Plugin edits
closes odoo/documentation#6472

X-original-commit: 71aabb2618
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2023-11-15 18:46:37 +00:00
Felicious 9761eb44dc [IMP] inventory: expand on accounting and math
closes odoo/documentation#6458

X-original-commit: 058515ee91
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: toaa <104567387+toaa-odoo@users.noreply.github.com>
Co-authored-by: meng-odoo <101904966+meng-odoo@users.noreply.github.com>
2023-11-15 17:21:52 +00:00
Rémy Voet (ryv) f1960a250c [IMP] orm: update changelog
closes odoo/documentation#1611

Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-11-15 10:40:22 +00:00
Felicious a20952ccfa [IMP] inventory: fwport removal strategy
closes odoo/documentation#6442

X-original-commit: ba34f754ce
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-14 00:14:39 +00:00
John Holton (hojo) f0b895fdb2 [ADD] Quality: Instructions quality check
closes odoo/documentation#5689

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-13 21:03:12 +00:00
Sam Lieber (sali) e0b8f766a1 [IMP] tests: make review UX and resource files
closes odoo/documentation#6428

X-original-commit: 25e204adcd
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-13 17:57:05 +00:00
Yaroslav Soroko (yaso) bc98b8c491 [IMP] Pos: iot six module part added to the six doc
This PR adds the documentation for a new Pos IoT Six module which will
soon replace the old Six module.

task-3555605

closes odoo/documentation#5912

Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Co-authored-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
2023-11-13 15:57:36 +00:00
Odoo Translation Bot 3e3198af2c [I18N] Update translation terms from Transifex 2023-11-12 01:41:18 +01:00
John Holton (hojo) b2dbd4b466 [ADD] Inventory: Use locations to manage inventory
closes odoo/documentation#6417

X-original-commit: 889e95037d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-11 20:45:43 +00:00
KC (ksc) a113d83fea [IMP] sales: complete rewrite for pricing doc
closes odoo/documentation#4521

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2023-11-11 00:04:19 +00:00
John Holton (hojo) efde0488a6 [ADD] MRP: Three-step manufacturing
closes odoo/documentation#5163

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2023-11-10 17:37:59 +00:00
1557 changed files with 842964 additions and 397313 deletions
+3 -2
View File
@@ -86,12 +86,13 @@ static: $(HTML_BUILD_DIR)/_static/style.css
# Called by runbot for the ci/documentation_guideline check.
test:
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer $(SOURCE_DIR)/services redirects
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer redirects
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
review:
@read -p "Enter content path: " path; read -p "Enter max line length (default: 100): " line_length; \
@read -p "Enter relative content path: " path; read -p "Enter max line length (default: 100): " line_length; \
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \
if echo $$path | grep -q 'content/'; then path=`echo $$path | sed 's|content/||'`; fi; \
if [ -z "$$line_length" ]; then line_length=100; fi; \
export REVIEW=1; \
python tests/main.py --max-line-length=$$line_length $(SOURCE_DIR)/$$path
+16
View File
@@ -479,8 +479,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
============
@@ -40,7 +43,7 @@ Installation
1. See `GeoLite Legacy databases are now discontinued
<https://support.maxmind.com/geolite-legacy-discontinuation-notice/>`_
How To Test GeoIP Geolocation In Your Odoo Website
How to test GeoIP geolocation in your Odoo website
==================================================
1. Go to your website. Open the web page that you want to test ``GeoIP``.
@@ -53,7 +56,7 @@ How To Test GeoIP Geolocation In Your Odoo Website
You should end up with a dictionary indicating the location of the IP address.
.. image:: on-premise_geo-ip-installation/on-premise_geo-ip-installation01.png
.. image:: geo_ip/on-premise_geo-ip-installation01.png
:align: center
.. note::
+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
@@ -225,7 +225,7 @@ PostgreSQL user.
.. code-block:: console
$ sudo -u postgres createuser -s $USER
$ sudo -u postgres createuser -d -R -S $USER
$ createdb $USER
.. note::
@@ -250,7 +250,7 @@ PostgreSQL user.
.. code-block:: console
$ sudo -u postgres createuser -s $USER
$ sudo -u postgres createuser -d -R -S $USER
$ createdb $USER
.. note::
@@ -409,10 +409,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`
+25 -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
@@ -210,6 +208,8 @@ upgrade goes live.
#. Scheduled actions are disabled.
#. Outgoing mail servers are disabled by archiving the existing ones and adding a fake one.
#. Payment providers and delivery carriers are reset to the test environment.
#. Bank synchronization is disabled. Should you want to test the synchronization, contact your
bank synchronization provider to get sandbox credentials.
Testing as many of your business flows as possible is strongly recommended to ensure they are
working correctly and to get more familiar with the new version.
@@ -289,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:
@@ -335,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
+1 -2
View File
@@ -203,8 +203,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
=================
@@ -106,9 +106,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:`Fetch Account` 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:
@@ -53,7 +53,7 @@ Resulting entry
The resulting entry section on the top right displays the selected bank transaction matched with
the counterpart entries and includes any remaining debits or credits. In this section, you can
validate the reconciliation or mark it as :guilabel:`To Check`. Any :ref:`reconciliation model
buttons <reconciliation_models_button>` are also available in the resulting entry section.
buttons <reconciliation/button>` are also available in the resulting entry section.
Reconcile transactions
======================
@@ -62,13 +62,13 @@ Transactions can be matched automatically with the use of :doc:`reconciliation m
<reconciliation_models>`, or they can be matched with :ref:`existing entries
<reconciliation/existing-entries>`, :ref:`batch payments <reconciliation/batch-payments>`,
:ref:`manual operations <reconciliation/manual-operations>`, and :ref:`reconciliation model buttons
<reconciliation_models_button>`.
<reconciliation/button>`.
#. Select a transaction among unmatched bank transactions.
#. Define the counterpart. There are several options for defining a counterpart, including
:ref:`matching existing entries <reconciliation/existing-entries>`, :ref:`manual operations
<reconciliation/manual-operations>`, :ref:`batch payments <reconciliation/batch-payments>`, and
:ref:`reconciliation model buttons <reconciliation_models_button>`.
:ref:`reconciliation model buttons <reconciliation/button>`.
#. If the resulting entry isn't fully balanced, balance it by adding another existing counterpart
entry or writing it off with a :ref:`manual operation <reconciliation/manual-operations>`.
#. Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next
@@ -90,8 +90,8 @@ Match existing entries
----------------------
This tab contains matching entries Odoo automatically pre-selects according to the reconciliation
models. The entry order is based on :ref:`reconciliation models <reconciliation_models_suggestion>`,
with suggested entries appearing first.
models. The entry order is based on :doc:`reconciliation models <reconciliation_models>`, with
suggested entries appearing first.
.. tip::
The search bar within the :guilabel:`Match Existing Entries` tab allows you to search for
@@ -126,10 +126,11 @@ of the relevant optional fields.
.. image:: reconciliation/fully-paid.png
:alt: Click on fully paid to manually set an invoice as entirely paid.
.. _reconciliation/button:
Reconciliation model buttons
----------------------------
Use a :ref:`reconciliation model button <reconciliation_models_button>` for manual operations that
are frequently used. These custom buttons allow you to quickly reconcile bank transactions manually
and can also be used in combination with existing entries.
Use a :doc:`reconciliation model <reconciliation_models>` button for manual operations that are
frequently used. These custom buttons allow you to quickly reconcile bank transactions manually and
can also be used in combination with existing entries.
@@ -1,129 +1,123 @@
=====================
Reconciliation Models
Reconciliation models
=====================
Once the bank statements are correctly imported, it is essential to *reconcile* the records properly
and ensure all *Journal Entries* are balanced and in agreement. To ease and speed up the
reconciliation process, you can configure **Reconciliation Models**, which are particularly useful
with recurrent entries such as bank fees.
Reconciliation models are used to automate the :doc:`bank reconciliation <reconciliation>` process,
which is especially handy when dealing with recurring entries like bank fees. Reconciliation models
can also be helpful in handling :doc:`cash discounts <../customer_invoices/cash_discounts>`.
.. todo:: Add a link to the Reconciliation process in the paragraph above, once the doc will have
been updated.
.. note::
Reconciliation Models are also useful to handle *Cash Discounts*. Please refer to
:doc:`this documentation <../customer_invoices/cash_discounts>` for more
information.
.. _reconciliation_models_types:
Types of Reconciliation Models
==============================
There are three types of Reconciliation Models:
#. :ref:`Write-off Button <reconciliation_models_button>`
#. :ref:`Suggestion of counterpart values <reconciliation_models_suggestion>`
#. :ref:`Match existing invoices/bills <reconciliation_models_match>`
.. _reconciliation_models_button:
Manually create a write-off on clicked button
---------------------------------------------
When you are reconciling an entry with an *Open Balance*, you can use the buttons available under
the *Manual Operations* tab to pre-fill all the values automatically, before validating the
reconciliation. Each button is a different Reconciliation Model.
.. image:: reconciliation_models/reconciliation_models_button.png
:align: center
:alt: Example of a Reconciliation Model with a write-off button in Odoo Accounting
.. _reconciliation_models_suggestion:
Suggest counterpart values
--------------------------
This type of Reconciliation Model suggests immediately counterpart values that only need to be
validated. This automation is based on a set of rules defined in the reconciliation model.
.. image:: reconciliation_models/reconciliation_models_suggestion.png
:align: center
:alt: Example of a Reconciliation Model that suggests counterpart values in Odoo Accounting
.. _reconciliation_models_match:
Match existing invoices/bills
-----------------------------
This type of Reconciliation Model automatically selects the right Customer Invoice or Vendor Bill
that matches the payment. All that is left to do is to validate the entry. This automation is based
on a set of rules defined in the reconciliation model.
.. image:: reconciliation_models/reconciliation_models_match.png
:align: center
:alt: Example of a Reconciliation Model that matches existing invoices and bills automatically
in Odoo Accounting
Configuration
=============
To manage or create new **Reconciliation Models**, go to :menuselection:`Accounting -->
Reconciliation --> Reconciliation Models`. Alternatively, you can also open this menu from the
Accounting Overview, by going to your Bank Journal card, clicking on the three little dots, and then
on *Reconciliation Models*.
.. image:: reconciliation_models/reconciliation_models_overview.png
:align: center
:alt: Open the Reconciliation Model menu from the overview dashboard in Odoo Accounting
.. important::
The first entry, named *Invoices Matching Rule*, is the one responsible for the current matching
of invoices and bills. Therefore, it is advised to leave it at the top of the list and not to
delete it.
Open the model you want to modify, or click on *Create* to create a new one, then fill out the form.
Type
----
See :ref:`above <reconciliation_models_types>` for an explanation about the different types of
Reconciliation Models.
.. note::
If the *Documents* application is installed on your database, an additional **Activity type**
field appears when *To check* is ticked. Selecting the value *Reconciliation request* implies
that, whenever you use this model, a *Request Document* window pops up to request a document from
a user.
Conditions on Bank Statement Line
---------------------------------
Define here all the conditions that are required for a Reconciliation Model to be applied.
.. important::
If a record matches with several Reconciliation Models, the first one in the *sequence* of models
will be applied. The sequence is simply the order of the models in the *list view*. They can be
rearranged by dragging-and-dropping the handle next to the name.
.. image:: reconciliation_models/reconciliation_models_conditions.png
:align: center
:alt: Conditions for the Reconciliation Model to be applied in Odoo Accounting
Counterpart Values
------------------
This section comprises the values that are applied by the Reconciliation Model.
If the value to reconcile needs to be written-off in two separate accounts, click on *Add a second
line*.
.. image:: reconciliation_models/reconciliation_models_counterparts.png
:align: center
:alt: Counterparts values of a Reconciliation Model in Odoo Accounting
Each model is created based on a :ref:`model type <models/type>` and :guilabel:`bank transaction
conditions`.
.. seealso::
- :doc:`reconciliation`
- :doc:`bank_synchronization`
- :doc:`../customer_invoices/cash_discounts`
- `Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-1841?fullscreen=1>`_
.. _models/type:
Reconciliation model types
==========================
The reconciliation models are available by going to :menuselection:`Accounting --> Configuration
--> Banks: Reconciliation Models`. For each reconciliation model, a :guilabel:`Type` must be set.
Three types of models exist:
- :guilabel:`Button to generate counterpart entry`: a button is created in the resulting entry
section of the bank reconciliation view. If clicked, this button generates a counterpart entry to
reconcile with the active transaction based on the rules set in the model. The rules specified in
the model determine the counterpart entry's account(s), amount(s), label(s), and analytic
distribution;
- :guilabel:`Rule to suggest counterpart entry`: used for recurring transactions to match the
transaction to a new entry based on conditions that must match the information on the transaction;
- :guilabel:`Rule to match invoices/bills`: used for recurring transactions to match the transaction
to existing invoices, bills, or payments based on conditions that must match the information on
the transaction.
Default reconciliation models
=============================
In Odoo, different models are available by default depending on the company's fiscal localization.
These can be updated if needed. Users can also create their own reconciliation models by clicking
:guilabel:`New`.
.. important::
If a record matches with several reconciliation models, the first one in the *sequence* of models
is applied. You can rearrange the order by dragging and dropping the handle next to the name.
.. image:: reconciliation_models/list-view.png
:alt: Rearrange the sequence of models in the list view.
Invoices/Bills perfect match
----------------------------
This model should be at the top of the *sequence* of models, as it enables Odoo to suggest matching
existing invoices or bills with a bank transaction based on set conditions.
.. image:: reconciliation_models/invoices-bills-perfect-match.png
:alt: Set rules to trigger the reconciliation.
Odoo automatically reconciles the payment when the :guilabel:`Auto-validate` option is selected, and
the model conditions are perfectly met. In this case, it expects to find on the bank statement's
line the invoice/payment's reference (as :guilabel:`Label` is selected) and the partner's name
(as :guilabel:`Partner is set` is selected) to suggest the correct counterpart entry and reconcile
the payment automatically.
Invoices/Bills partial match if underpaid
-----------------------------------------
This model suggests a customer invoice or vendor bill that partially matches the payment when the
amount received is slightly lower than the invoice amount, for example in the case of
**cash discounts**. The difference is reconciled with the account indicated in the
:guilabel:`counterpart entries` tab.
The reconciliation model :guilabel:`Type` is :guilabel:`Rule to match invoices/bills`, and the
:guilabel:`Payment tolerance` should be set.
.. image:: reconciliation_models/partial-match.png
:alt: Set rules to trigger the reconciliation.
.. note::
The :guilabel:`Payment tolerance` is only applicable to lower payments. It is disregarded when an
overpayment is received.
.. seealso::
:doc:`../customer_invoices/cash_discounts`
Line with bank fees
-------------------
This model suggests a counterpart entry according to the rules set in the model. In this case, the
reconciliation model :guilabel:`Type` is :guilabel:`Rule to suggest counterpart entry`, and the
:guilabel:`Label` can be used for example, to identify the information referring to the
:guilabel:`Bank fees` in the label of the transaction.
.. image:: reconciliation_models/bank-fees.png
:alt: Set rules to trigger the reconciliation.
.. note::
`Regular expressions <https://regexone.com/>`_, often abbreviated as **Regex**, can be used in
Odoo in various ways to search, validate, and manipulate data within the system. Regex can be
powerful but also complex, so it's essential to use it judiciously and with a good understanding
of the patterns you're working with.
To use regular expressions in your reconciliation models, set the :guilabel:`Transaction Type`
to :guilabel:`Match Regex` and add your expression. Odoo automatically retrieves the
transactions that match your Regex expression and the conditions specified in your model.
.. image:: reconciliation_models/regex.png
:alt: Using Regex in Odoo
Partner mapping
===============
Partner mapping allows you to establish rules for automatically matching transactions to the correct
partner account, saving time and reducing the risk of errors that can occur during manual
reconciliation. For example, you can create a partner mapping rule for incoming payments with
specific reference numbers or keywords in the transaction description. When an incoming payment
meets these criteria, Odoo automatically maps it to the corresponding customer's account.
To create a partner mapping rule, go to the :guilabel:`Partner Mapping` tab and enter the
:guilabel:`Find Text in Label`, :guilabel:`Find Text in Notes`, and :guilabel:`Partner`.
.. image:: reconciliation_models/partner-mapping.png
:alt: defining partner mapping
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -187,7 +187,8 @@ Send yourself a sample invoice by email to make sure everything is correctly con
* :doc:`get_started/chart_of_accounts`
* :doc:`bank/bank_synchronization`
* :doc:`../fiscal_localizations`
* `Odoo Tutorials: Accounting Basics <https://www.odoo.com/r/lsZ>`_
* `Odoo Tutorials: Accounting and Invoicing - Getting started [video]
<https://www.odoo.com/slides/slide/getting-started-1692>`_
.. toctree::
:titlesonly:
@@ -1,167 +1,439 @@
=================================
Inventory average price valuation
=================================
===============================
Average price on returned goods
===============================
As stated in the :doc:`inventory valuation page
</applications/inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`,
one of the possible costing method you can use in perpetual stock
valuation, is the average cost.
.. |AVCO| replace:: :abbr:`AVCO (Average Cost Valuation)`
.. _inventory/avg_cost/definition:
This document answers to one recurrent question for companies using that
method to make their stock valuation: how does a shipping returned to
its supplier impact the average cost and the accounting entries? This
document is **only** for the specific use case of a perpetual valuation (as
opposed to the periodic one) and in average price costing method (as
opposed to standard of FIFO).
*Average cost valuation* (AVCO) is an inventory valuation method that evaluates cost based on the
total cost of goods bought or produced during a period, divided by the total number of items
on-hand. Inventory valuation is used to:
Definition of average cost
==========================
- reflect the value of a company's assets;
- keep track of the amount of unsold goods;
- account for monetary value in goods that have yet to generate profit;
- report on flow of goods throughout the quarter.
The average cost method calculates the cost of ending inventory and cost
of goods sold on the basis of weighted average cost per unit of
inventory.
Because |AVCO| uses the weighted average to evaluate the cost, it is a good fit for companies that
sell only a few different products in large quantities. In Odoo, this costing analysis is
*automatically updated* each time products are received.
The weighted average cost per unit is calculated using the following
formula:
Thus, when shipments are returned to their supplier, Odoo automatically generates accounting entries
to reflect the change in inventory valuation. However, Odoo does **not** automatically update the
|AVCO| calculation, because :ref:`this can potentially create inconsistencies with inventory
valuation <inventory/avg_price/leaving_inventory>`.
- When new products arrive in a warehouse, the new average cost is
recomputed as:
.. note::
This document addresses a specific use case for theoretical purposes. Navigate :ref:`here
<inventory/management/inventory_valuation_config>` for instructions on how to set up and use
|AVCO| in Odoo.
.. image:: avg_price_valuation/avg01.png
.. seealso::
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
Configuration
=============
To use average cost inventory valuation on a product, navigate to :menuselection:`Inventory -->
Configuration --> Product Categories` and select the category that will be using |AVCO|. On the
product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` and
:guilabel:`Inventory Valuation` to `Automated`.
.. seealso::
:ref:`Inventory valuation configuration <inventory/management/inventory_valuation_config>`
Using average cost valuation
============================
The average cost method adjusts the inventory valuation when products are received in the warehouse.
This section explains how it works, but if the explanation is unnecessary, skip to the :ref:`return
to supplier use case <inventory/avg_cost/return>` section.
.. _inventory/avg_cost/formula:
Formula
-------
When new products arrive, the new average cost for each product is recomputed using the formula:
.. math::
Avg~Cost = \frac{(Old~Qty \times Old~Avg~Cost) + (Incoming~Qty \times Purchase~Price)}{Final~Qty}
- **Old Qty**: product count in stock before receiving the new shipment;
- **Old Avg Cost**: calculated average cost for a single product from the previous inventory
valuation;
- **Incoming Qty**: count of products arriving in the new shipment;
- **Purchase Price**: estimated price of products at the reception of products (since vendor bills
may arrive later). The amount includes not only the price for the products, but also added costs,
such as shipping, taxes, and :ref:`landed costs <inventory/reporting/landed_costs>`. At reception
of the vendor bill, this price is adjusted;
- **Final Qty**: quantity of on-hand stock after the stock move.
.. _inventory/avg_cost/definite_rule:
.. important::
When products leave the warehouse, the average cost **does not** change. Read about why the
average cost valuation is **not** adjusted :ref:`here <inventory/avg_price/leaving_inventory>`.
.. _inventory/avg_cost/math_table:
Compute average cost
--------------------
To understand how the average cost of a product changes with each shipment, consider the following
table of warehouse operations and stock moves. Each is a different example of how the average cost
valuation is affected.
+--------------------------------+---------------+-------------------+---------------+------------+
| Operation | Incoming Value| Inventory Value | Qty On Hand | Avg Cost |
+================================+===============+===================+===============+============+
| | | $0 | 0 | $0 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Receive 8 tables at $10/unit | 8 * $10 | $80 | 8 | $10 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Receive 4 tables at $16/unit | 4 * $16 | $144 | 12 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Deliver 10 tables | -10 * $12 | $24 | 2 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
.. _inventory/avg_cost/ex-1:
.. exercise::
Ensure comprehension of the above computations by reviewing the "Receive 8 tables at $10/unit"
example.
Initially, the product stock is 0, so all values are $0.
In the first warehouse operation, `8` tables are received at `$10` each. The average cost is
calculated using the :ref:`formula <inventory/avg_cost/formula>`:
.. math::
Avg~Cost = \frac{0 + 8 \times $10}{8} = \frac{$80}{8} = $10
- Since the *incoming quantity* of tables is `8` and the *purchase price* for each is `$10`,
- The inventory value in the numerator is evaluated to `$80`;
- `$80` is divided by the total amount of tables to store, `8`;
- `$10` is the average cost of a single table from the first shipment.
To verify this in Odoo, in the *Purchase* app, order `8` quantities of a new product, `Table`,
with no previous stock moves, for `$10` each.
In the table's :guilabel:`Product Category` field in the :guilabel:`General Information` tab of
the product form, click the :guilabel:`➡️ (arrow)` icon, to open an :guilabel:`External Link` to
edit the product category. Set the :guilabel:`Costing Method` to `Average Cost (AVCO)` and
:guilabel:`Inventory Valuation` to `Automated`.
Then, return to the purchase order. Click :guilabel:`Confirm Order`, and click :guilabel:`Receive
Products` to confirm receipt.
Next, check the inventory valuation record generated by the product reception by navigating to
:menuselection:`Inventory --> Reporting --> Inventory Valuation`. Select the drop-down for
`Table`, and view the :guilabel:`Total Value` column for the *valuation layer* (:dfn:`inventory
valuation at a specific point in time = on-hand quantity * unit price`). The 8 tables in-stock
are worth $80.
.. image:: avg_price_valuation/inventory-val-8-tables.png
:align: center
:alt: Show inventory valuation of 8 tables in Odoo.
.. tip::
When the product category's :guilabel:`Costing Method` is set to :guilabel:`AVCO`, then the
average cost of a product is also displayed on the :guilabel:`Cost` field, under the
:guilabel:`General Information` tab, on the product page itself.
Product delivery (use case)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
For outgoing shipments, :ref:`outbound products have no effect on the average cost valuation
<inventory/avg_cost/definite_rule>`. Although the average cost valuation is not recalculated, the
inventory value still decreases because the product is removed from stock and delivered to the
customer location.
.. exercise::
To demonstrate that the average cost valuation is not recalculated, examine the "Deliver 10
tables" example.
.. math::
Avg~Cost = \frac{12 \times $12 + (-10) \times $12}{12-10} = \frac{24}{2} = $12
#. Because 10 tables are being sent out to customers, the *incoming quantity* is `-10`. The
previous average cost (`$12`) is used in lieu of a vendor's *purchase price*;
#. The *incoming inventory value* is `-10 * $12 = -$120`;
#. The old *inventory value* (`$144`) is added to the *incoming inventory value* (`-$120`), so
`$144 + -$120 = $24`;
#. Only `2` tables remain after shipping out `10` tables from `12`. So the current *inventory
value* (`$24`) is divided by the on-hand quantity (`2`);
#. `$24 / 2 = $12`, which is the same average cost as the previous operation.
To verify this in Odoo, sell `10` tables in the *Sales* app, validate the delivery, and then
review the inventory valuation record by going to in :menuselection:`Inventory --> Reporting -->
Inventory Valuation`. In the topmost valuation layer, delivering `10` tables reduces the
product's value by `-$120`.
**Note**: What is not represented in this stock valuation record is the revenue made from this
sale, so this decrease is not a loss to the company.
.. image:: avg_price_valuation/inventory-val-send-10-tables.png
:align: center
:alt: Show how deliveries decrease inventory valuation.
.. _inventory/avg_cost/return:
Return items to supplier (use case)
===================================
Because the price paid to suppliers can differ from the price the product is valued at with the
|AVCO| method, Odoo handles returned items in a specific way.
#. Products are returned to suppliers at the original purchase price, but;
#. The internal cost valuation remains unchanged.
The above :ref:`example table <inventory/avg_cost/math_table>` is updated as follows:
+--------------------------------+---------------+-------------------+---------------+------------+
| Operation | Qty*Avg Cost | Inventory Value | Qty On Hand | Avg Cost |
+================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
| Return 1 table bought at $10 | -1 * $12 | $12 | 1 | $12 |
+--------------------------------+---------------+-------------------+---------------+------------+
In other words, returns to vendors are perceived by Odoo as another form of a product exiting the
warehouse. To Odoo, because the table is valued at $12 per unit, the inventory value is reduced by
`$12` when the product is returned; the initial purchase price of `$10` is unrelated to the table's
average cost.
.. example::
To return a single table that was purchased for `$10`, navigate to the receipt in the *Inventory*
app for the :ref:`8 tables purchased in Exercise 1 <inventory/avg_cost/ex-1>` by going to the
:guilabel:`Inventory Overview`, clicking on :guilabel:`Receipts`, and selecting the desired
receipt.
Then, click :guilabel:`Return` on the validated delivery order, and modify the quantity to `1` in
the reverse transfer window. This creates an outgoing shipment for the table. Select
:guilabel:`Validate` to confirm the outgoing shipment.
Return to :menuselection:`Inventory --> Reporting --> Inventory Valuation` to see how the
outgoing shipment decreases the inventory value by $12.
.. image:: avg_price_valuation/inventory-valuation-return.png
:align: center
:alt: Inventory valuation for return.
.. _inventory/avg_price/leaving_inventory:
Eliminate stock valuation errors in outgoing products
-----------------------------------------------------
Inconsistencies can occur in a company's inventory when the average cost valuation is recalculated
on outgoing shipments.
To demonstrate this error, the table below displays a scenario in which 1 table is shipped to a
customer and another is returned to a supplier at the purchased price.
+------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Qty*Price | Inventory Value | Qty On Hand | Avg Cost |
+==========================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
| Ship 1 product to customer | -1 \* $12 | $12 | 1 | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
| Return 1 product initially bought at $10 | -1 \* $10 | **$2** | **0** | $12 |
+------------------------------------------+---------------+-------------------+---------------+------------+
In the final operation above, the final inventory valuation for the table is `$2` even though there
are `0` tables left in stock.
.. admonition:: Correct method
Use the average cost to value the return. This does not mean the company gets $12 back for a $10
purchase; the item returned for $10 is valued internally at $12. The inventory value change
represents a product worth $12 no longer being accounted for in company assets.
Anglo-Saxon accounting
======================
In addition to using |AVCO|, companies that use **Anglo-Saxon accounting** also keep a holding
account that tracks the amount to be paid to vendors. Once a vendor delivers an order, **inventory
value** increases based on the vendor price of the products that have entered the stock. The holding
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
.. seealso::
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
The table below reflects journal entries and accounts. The *stock input* account stores the money
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
returning products that have a price difference between the price the product is **valued at** and
the price it was bought for, a *price difference* account is created.
.. _inventory/avg_price/price-table:
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Operation | Stock Input | Price Diff | Inventory Value | Qty On Hand | Avg Cost |
+=========================================+===============+==============+===================+===============+============+
| | | | $0 | 0 | $0 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 8 tables at $10 | ($80) | | $80 | 8 | $10 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $80 | $0 | | $80 | 8 | $10 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 4 tables at $16 | ($64) | | $144 | 12 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $64 | $0 | | $144 | 12 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Deliver 10 tables to customer | $0 | | $24 | 2 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Return 1 table initially bought at $10 | **$10** | **$2** | **$12** | 1 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor refund $10 | $0 | $2 | $12 | 1 | $12 |
+-----------------------------------------+---------------+--------------+-------------------+---------------+------------+
Product reception
-----------------
Summary
~~~~~~~
At product reception, Odoo ensures companies can pay for goods that were purchased by preemptively
moving an amount matching the price of received goods into the :doc:`liability account
</applications/finance/accounting/get_started/cheat_sheet>`, **Stock Input**. Then, once the bill
has been received, the amount in the holding account is transferred to *Accounts Payable*. Transfers
into this account means the bill has been paid. **Stock Input** is reconciled once the vendor bill
is received.
Inventory valuation is a method of calculating how much each in-stock product is worth internally.
Since there is a difference between the price the product is **valuated at** and the price the
product was actually **purchased for**, the **Inventory Valuation** account is unrelated to the
crediting and debiting operations of the **Stock Input** account.
To conceptualize all this, follow the breakdown below.
Accounts balanced at received products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In this example, a company starts with zero units of a product, `table`, in stock. Then, 8 tables
are received from the vendor:
#. The **Stock Input** account stores `$80` of credit owed to the vendor. The amount in this account
is unrelated to the inventory value.
#. `$80` worth of tables came **in** (**debit** the *Inventory Value* account `$80`), and
#. `$80` must be paid **out** for received goods (**credit** the *Stock Input* account `$80`).
In Odoo
*******
Odoo generates an accounting journal entry when shipments that use |AVCO| costing method are
received. Configure a :guilabel:`Price Difference Account` by selecting the :guilabel:`➡️ (arrow)`
icon next to the :guilabel:`Product Category` field on the product page.
Under :guilabel:`Account Properties`, create a new :guilabel:`Price Difference Account` by typing in
the name of the account and clicking :guilabel:`Create and Edit`. Then set the account
:guilabel:`Type` as `Expenses`, and click :guilabel:`Save`.
.. image:: avg_price_valuation/create-price-difference.png
:align: center
:alt: Create price difference account.
- When products leave the warehouse: the average cost **does not** change
Then, receive the shipment in the *Purchase* app or *Inventory* app, and navigate to the
:menuselection:`Accounting app --> Accounting --> Journal Entries`. In the list, find the
:guilabel:`Reference` that matches the warehouse reception operation for the relevant product.
Defining the purchase price
---------------------------
.. image:: avg_price_valuation/search-for-entry-of-tables.png
:align: center
:alt: Show accounting entry of 8 tables from the list.
The purchase price is estimated at the reception of the products (you
might not have received the vendor bill yet) and reevaluated at the
reception of the vendor bill. The purchase price includes the cost you
pay for the products, but it may also includes additional costs, like
landed costs.
Click on the line for 8 tables. This accounting journal entry shows that when the 8 tables were
received, the `Stock Valuation` account increased by `$80`. Conversely, the **Stock Input** account
(set as `Stock Interim (Received)` account by default) is credited `$80`.
Average cost example
====================
.. image:: avg_price_valuation/accounting-entry-8-tables.png
:align: center
:alt: Debit stock valuation and credit stock input 80 dollars.
+-----------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+=============================+===============+===================+===============+============+
| | | $0 | 0 | $0 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Receive 8 Products at $10 | +8\*$10 | $80 | 8 | $10 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Receive 4 Products at $16 | +4\*$16 | $144 | 12 | $12 |
+-----------------------------+---------------+-------------------+---------------+------------+
| Deliver 10 Products | -10\*$12 | $24 | 2 | $12 |
+-----------------------------+---------------+-------------------+---------------+------------+
+-----------------------------+---------------+-------------------+---------------+------------+
Accounts balanced at received vendor bill
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At the beginning, the Avg Cost is set to 0 set as there is no product in
the inventory. When the first reception is made, the average cost
becomes logically the purchase price.
In this example, a company starts with zero units of a product, table, in stock. Then, 8 tables are
received from the vendor. When the bill is received from vendor for 8 tables:
At the second reception, the average cost is updated because the total
inventory value is now ``$80 + 4*$16 = $144``. As we have 12 units on
hand, the average price per unit is ``$144 / 12 = $12``.
#. Use `$80` in the **Stock Input** account to pay the bill. This cancels out and the account now
holds `$0`.
#. Debit **Stock Input** `$80` (to reconcile this account).
#. Credit **Accounts payable** `$80`. This account stores the amount the company owes others, so
accountants use the amount to write checks to vendors.
By definition, the delivery of 10 products does not change the average
cost. Indeed, the inventory value is now $24 as we have only 2 units
remaining of each ``$24 / 2 = $12``.
In Odoo
*******
Purchase return use case
========================
Once the vendor requests payment, navigate to the :menuselection:`Purchase app --> Orders -->
Purchase` and select the :abbr:`PO (Purchase Order)` for 8 tables. Inside the :abbr:`PO (Purchase
Order)`, select :guilabel:`Create Bill`.
In case of a product returned to its supplier after reception, the
inventory value is reduced using the average cost formulae (not at the
initial price of these products!).
Switch to the :guilabel:`Journal Items` tab to view how `$80` is transferred from the holding
account, `Stock Interim (Received)` to `Accounts Payable`. :guilabel:`Confirm` the bill to record
the payment to the vendor.
Which means that the above table will be updated as follow:
.. image:: avg_price_valuation/receive-8-table-bill.png
:align: center
:alt: Show bill linked to the purchase order for 8 tables.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
On product delivery
-------------------
Explanation: counter example
----------------------------
In the :ref:`above example table <inventory/avg_price/price-table>`, when 10 products are delivered
to a customer, the **Stock Input** account is untouched because there are no new products coming in.
To put it simply:
Remember the definition of **Average Cost**, saying that we do not update
the average cost of a product leaving the inventory. If you break this
rule, you may lead to inconsistencies in your inventory.
#. **Inventory valuation** is credited `$120`. Subtracting from inventory valuation represents
`$120` worth of products exiting the company.
#. Debit **Accounts Receivable** to record revenue from the sale.
As an example, here is the scenario when you deliver one piece to the
customer and return the other one to your supplier (at the cost you
purchased it). Here is the operation:
.. image:: avg_price_valuation/sell-10-tables.png
:align: center
:alt: Show journal items linked to sale order.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Customer Shipping 1 product | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$10 | **$2** | **0** | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
.. spoiler:: Understand Anglo-Saxon expensing
As you can see in this example, this is not correct: an inventory
valuation of $2 for 0 pieces in the warehouse.
In the accounting journal entry invoicing a customer for 10 tables, the accounts **Product
Sales**, **Tax Received**, and **Accounts Receivable** all pertain to the sale of the product.
**Accounts Receivable** is the account where the customer payment will be received.
The correct scenario should be to return the goods at the current
average cost:
Anglo-Saxon accounting recognizes the cost of goods sold (COGS) once the sale is made. So, up
until the product is sold, scrapped, or returned, costs of keeping the product in stock are not
accounted for. The **Expense** account is debited `$120` to log the costs of storing 10 tables
during this period of time.
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Operation | Delta Value | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+===================+===============+============+
| | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Customer Shipping 1 product | -1\*$12 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | -1\*$12 | **$0** | **0** | $12 |
+-----------------------------------------------+---------------+-------------------+---------------+------------+
On product return
-----------------
On the other hand, using the average cost to value the return ensure a
correct inventory value at all times.
In the :ref:`above example table <inventory/avg_price/price-table>`, when returning 1 product to a
vendor purchased at `$10`, a company expects `$10` in the **Accounts Payable** account from the
vendor. However, **Stock Input** account must be debited `$12` because the average cost is `$12` at
the time of the return. The missing `$2` is accounted for in the :guilabel:`Price Difference
Account`, which is set up in the product's :guilabel:`Product Category`.
Further thoughts on anglo saxon mode
------------------------------------
.. note::
Behavior of *price difference accounts* varies from localization. In this case, the account is
intended to store differences between vendor price and *automated* inventory valuation methods.
For people in using the **anglo saxon accounting** principles, there is
another concept to take into account: the stock input account of the
product, which is intended to hold at any time the value of vendor bills
to receive. So the stock input account will increase on reception of
incoming shipments and will decrease when receiving the related vendor
bills.
Summary:
Back to our example, we see that when the return is valued at the
average price, the amount booked in the stock input account is the
original purchase price:
#. Debit **Stock Input** account `$10` to move the table from stock to stock input. This move is to
indicate that the table is to be processed for an outgoing shipment.
#. Debit **Stock Input** an additional `$2` to account for the **Price Difference**.
#. Credit **Stock Valuation** `$12` because the item is leaving the stock.
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Operation | stock input | price diff | Inventory Value | Qty On Hand | Avg Cost |
+===============================================+===============+==============+===================+===============+============+
| | | | $0 | 0 | $0 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 8 Products at $10 | ($80) | | $80 | 8 | $10 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $80 | $0 | | $80 | 8 | $10 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive 4 Products at $16 | ($64) | | $144 | 12 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor bill $64 | $0 | | $144 | 12 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Deliver 10 Products | $0 | | $24 | 2 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Return of 1 Product initially bought at $10 | **$10** | **$2** | **$12** | 1 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
| Receive vendor refund $10 | $0 | $2 | $12 | 1 | $12 |
+-----------------------------------------------+---------------+--------------+-------------------+---------------+------------+
.. image:: avg_price_valuation/expensing-price-difference-account.png
:align: center
:alt: 2 dollar difference expensed in Price Difference account.
This is because the vendor refund will be made using the original
purchase price, so to zero out the effect of the return in the stock
input in last operation, we need to reuse the original price. The price
difference account located on the product category is used to book the
difference between the average cost and the original purchase price.
Once the vendor's refund is received,
#. Credit **Stock Input** account `$10` to reconcile the price of the table.
#. Debit **Accounts Payable** `$10` to have the accountants collect and register the payment in
their journal.
.. image:: avg_price_valuation/return-credit-note.png
:align: center
:alt: Return to get 10 dollars back.
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -3,48 +3,37 @@ 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
:guilabel:`(⋮)`.
- Balance Sheet accounts:
- 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 +48,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 |
@@ -104,29 +93,31 @@ right type among the following list:
Assets, deferred expenses, and deferred revenues automation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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:`assets <assets-automation>` entries,
:ref:`deferred expenses <deferred-expenses-automation>` entries, and
:ref:`deferred revenues <deferred-revenues-automation>` entries. To **automate** entries, click
:guilabel:`Setup` 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:`Setup` 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:`Setup`, click the :guilabel:`Tags` field and select an existing tag or :guilabel:`Create`
a new one.
Account groups
--------------
@@ -134,31 +125,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:`Setup`.
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 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.
.. 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 +160,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.

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 :menuselection:`Accounting --> Reporting -->
Aged Receivable / Aged Payable`. You can see all transactions that have not been reconciled yet for
that partner, and when you select a customer or vendor, the :guilabel:`Reconcile` option is
displayed.
.. image:: payments/reconcile-option.png
:alt: See the reconcile option
:alt: See the 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,5 +150,4 @@ and the invoice or bill marked as :guilabel:`Paid`.
payments/internal_transfers
payments/pay_sepa
payments/pay_checks
payments/multiple
payments/forecast
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.3 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

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

@@ -7,9 +7,8 @@ Reporting
Main reports available
======================
Besides the reports created specifically in each localisation module, a
few very useful **generic** and **dynamic reports** are available for all
countries :
Odoo includes **generic** and **dynamic** reports available for all countries, regardless of the
:doc:`localization package <../../finance/fiscal_localizations>` installed:
- **Balance Sheet**
- **Profit and Loss**
@@ -19,136 +18,136 @@ countries :
- **Aged Receivable**
- **Cash Flow Statement**
- **Tax Report**
- **Bank Reconciliation**
You can annotate every reports to print them and report to your adviser.
Export to xls to manage extra analysis. Drill down in the reports to see
more details (payments, invoices, journal items, etc.).
Reports can be **annotated, printed, and drilled down** to see details (payments, invoices,
journal items, etc.) by clicking the **down** arrow. Reports can also be exported to **PDF** or
**XLSX** format by clicking :guilabel:`PDF` or :guilabel:`XLSX` at the top of the page.
You can also compare values with another period. Choose how many periods
you want to compare the chosen time period with. You can choose up to 12
periods back from the date of the report if you don't want to use the
default **Previous 1 Period** option.
.. image:: reporting/reporting-annotate.png
:alt: Annotate reports.
You can compare values across periods by using the :guilabel:`Comparison` menu and selecting the
periods you want to compare.
.. image:: reporting/reporting-comparison.png
:alt: Comparison menu to compare time periods.
.. _reporting/balance-sheet:
Balance Sheet
-------------
The **Balance Sheet** shows a snapshot of the assets, liabilities and equity
of your organisation as at a particular date.
The **Balance Sheet** shows a snapshot of your organization's assets, liabilities, and equity at a
particular date.
.. image:: reporting/main_reports09.png
.. image:: reporting/reporting-balance-sheet.png
:alt: Balance sheet report of Odoo.
.. _reporting/profit-and-loss:
Profit and Loss
---------------
The **Profit and Loss** report (or **Income Statement**) shows your
organisation's net income, by deducting expenses from revenue for the
report period.
The **Profit and Loss** report (or **Income Statement**) shows your company's net income by
deducting expenses from revenue for the reporting period.
.. image:: reporting/main_reports10.png
.. image:: reporting/reporting-profit-and-loss.png
:alt: Profit and Loss report of Odoo
.. _reporting/executive-summary:
Executive Summary
-----------------
The **Executive Summary** allows for a quick look at all the important
figures you need to run your company.
The **Executive Summary** allows a quick look at all the important figures to run your company.
In very basic terms, this is what each of the items in this section is
reporting :
In basic terms, this is what each item in the following section reports:
- **Performance:**
- **Gross profit margin:**
The contribution each individual sale made
by your business less any direct costs needed to make those sales
(things like labour, materials, etc).
The contribution of all sales made by your business **minus** any direct costs needed to
make those sales (labor, materials, etc.).
- **Net profit margin:**
The contribution each individual sale made by
your business less any direct costs needed to make those sales,
as well as any fixed overheads your company has (things like
rent, electricity, taxes you need to pay as a result of those
sales).
- **Return on investment (p.a.):**
The ratio of net profit made, to the
amount of assets the company used to make those profits.
The contribution of all sales made by your business **minus** any direct costs needed to
make those sales *and* fixed overheads your company has (electricity, rent, taxes
to be paid as a result of those sales, etc.).
- **Return on investment (per annum):**
The ratio of net profit made to the amount of assets the company used to make those profits.
- **Position:**
- **Average debtor days:**
The average number of days it takes your
customers to pay you (fully), across all your customer invoices.
- **Average creditor days:**
The average number of days it takes you to
pay your suppliers (fully) across all your bills.
- **Short term cash forecast:**
How much cash is expected in or out of
your organisation in the next month i.e. balance of your **Sales
account** for the month less the balance of your **Purchases account**
for the month.
- **Average debtors days:**
The average number of days it takes your customers to (fully) pay you across all your
customer invoices.
- **Average creditors days:**
The average number of days it takes you to (fully) pay your suppliers across all your bills.
- **Short-term cash forecast:**
How much cash is expected in or out of your business in the next month, i.e., the balance of
your **Sales account** for the month **minus** the balance of your **Purchases account** for
the month.
- **Current assets to liabilities:**
Also referred to as **current ratio**, this is the ratio
of current assets (assets that could be
turned into cash within a year) to the current liabilities
(liabilities which will be due in the next year). This is
typically used as as a measure of a company's ability to service
its debt.
Also referred to as **current ratio**, this is the ratio of current assets (:dfn:`assets
that could be turned into cash within a year`) to the current liabilities (:dfn:`liabilities
that will be due in the next year`). It is typically used to measure a company's ability to
service its debt.
.. image:: reporting/main_reports01.png
.. image:: reporting/reporting-executive-summary.png
:alt: Executive summary report in Odoo.
.. _reporting/general-ledger:
General Ledger
--------------
The **General Ledger Report** shows all transactions from all accounts for a
chosen date range. The initial summary report shows the totals for each
account and from there you can view a detailed transaction report or any
exceptions. This report is useful for checking every transaction that
occurred during a certain period of time.
The **General Ledger Report** shows all transactions from all accounts for a chosen date range. The
initial summary report shows each account's totals; from here, you can view a detailed transaction
report or any exceptions. This report helps check every transaction that occurred during a specific
period.
.. image:: reporting/main_reports05.png
.. image:: reporting/reporting-general-ledger.png
:alt: General Ledger report in Odoo.
.. _reporting/aged-payable:
Aged Payable
------------
Run the **Aged Payable Details** report to display information on individual
bills, credit notes and overpayments owed by you, and how long these
have gone unpaid.
Run the **Aged Payable Details** report to display information on individual bills, credit notes,
and overpayments you owe and how long these have gone unpaid.
.. image:: reporting/main_reports02.png
.. image:: reporting/reporting-aged-payable.png
:alt: Aged Payable report in Odoo.
.. _reporting/aged-receivable:
Aged Receivable
---------------
The **Aged Receivables** report shows the sales invoices that were awaiting
payment during a selected month and several months prior.
The **Aged Receivables** report shows the sales invoices awaiting payment during a selected month
and several months prior.
.. image:: reporting/main_reports07.png
.. image:: reporting/reporting-aged-receivable.png
:alt: Aged Receivable report in Odoo.
.. _reporting/cash-flow-statement:
Cash Flow Statement
-------------------
The **Cash Flow Statement** shows how changes in balance sheet accounts and
income affect cash and cash equivalents, and breaks the analysis down to
operating, investing and financing activities.
The **Cash Flow Statement** shows how changes in balance sheet accounts and income affect cash and
cash equivalents and breaks the analysis down to operating, investing, and financing activities.
.. image:: reporting/main_reports03.png
.. image:: reporting/reporting-cash-flow-statement.png
:alt: Cash Flow Statement report in Odoo.
.. _reporting/tax-report:
Tax Report
----------
This report allows you to see the **net** and **tax amounts** for all the taxes
grouped by type (sale/purchase).
This report allows you to see the **net** and **tax amounts** for all the taxes grouped by type
(sale/purchase).
.. image:: reporting/main_reports04.png
Bank Reconciliation
-------------------
.. image:: reporting/main_reports06.png
.. image:: reporting/reporting-tax-report.png
:alt: Tax report in Odoo.
.. toctree::
:titlesonly:
@@ -220,6 +220,42 @@ To match the letter `C` or `D` in a prefix and not use it as a suffix, use an em
| `21D\\()`
| This formula matches accounts whose code starts with `21D`, regardless of their balance sign.
In addition to using code prefixes to include accounts, you can also match them with **account
tags**. This is especially useful, for example, if your country lacks a standardized chart of
accounts, where the same prefix might be used for different purposes across companies.
.. example::
| `tag(25)`
| This formula matches accounts whose associated tags contain the one with id *25*.
If the tag you reference is defined in a data file, an xmlid can be used instead of the id.
.. example::
| `tag(my_module.my_tag)`
| This formula matches accounts whose associated tags include the tag denoted by
*my_module.my_tag*.
You can also use arithmetic expressions with tags, possibly combining them with prefix selections.
.. example::
| `tag(my_module.my_tag) + tag(42) + 10`
| The balances of accounts tagged as *my_module.my_tag* will be summed with those of accounts
linked to the tag with ID *42* and accounts with the code prefix `10`
`C` and `D` suffixes can be used in the same way with tags.
.. example::
| `tag(my_module.my_tag)C`
| This formula matches accounts with the tag *my_module.my_tag* and a credit balance.
Prefix exclusion also works with tags.
.. example::
| `tag(my_module.my_tag)\\(10)`
| This formula matches accounts with the tag *my_module.my_tag* and a code not starting with
`10`.
'External Value' engine
-----------------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+2 -3
View File
@@ -40,9 +40,8 @@ drop-down menu (most products will be set to :guilabel:`Units`).
The *Sales* app is where specification on the units of measure are created and edited (e.g.
units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and
ensure `Units of Measure` is enabled in the `Product Catalog` section. Click on the
:guilabel:`Units of Measure` internal link to view, create, and edit the units of measure. Refer
to :doc:`this document </applications/inventory_and_mrp/inventory/management/products/uom>` to
learn more about units of measure and how to configure them.
:guilabel:`Units of Measure` internal link to :doc:`view, create, and edit the units of measure
<../inventory_and_mrp/inventory/product_management/product_replenishment/uom>`.
.. image:: expenses/new-expense-product.png
:align: center
@@ -37,7 +37,7 @@ localization.
* - :guilabel:`Chile - Accounting Reports`
- `l10n_cl_reports`
- Adds the *Propuesta F29* and *Balance Tributario (8 columnas)* reports.
* - :guilabel:`Chile - E-invoiving`
* - :guilabel:`Chile - E-invoicing`
- `l10n_cl_edi`
- Includes all technical and functional requirements to generate and receive electronic
invoices online based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
@@ -45,7 +45,7 @@ localization.
- `l10n_cl_boletas`
- Includes all technical and functional requirements to generate and receive electronic
invoices digitally based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
* - :guilabel:`Electronic Esports of Goods for Chile`
* - :guilabel:`Electronic Exports of Goods for Chile`
- `l10n_cl_edi_exports`
- Includes technical and functional requirements to generate electronic invoices for exporting
goods based on the :abbr:`SII (Servicio de Impuestos Internos)` and customs regulations.
@@ -53,10 +53,6 @@ localization.
- `l10n_cl_edi_stock`
- Includes all technical and functional requirements to generate delivery guides via web
service based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
* - :guilabel:`Chile - E-Invoicing Delivery Guide`
- `l10n_cl_edi_stock`
- Includes all technical and functional requirements to generate delivery guides online based
on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
.. note::
- Odoo automatically installs the appropriate package for the company according to the country
@@ -4,15 +4,16 @@ Colombia
.. |DIAN| replace:: :abbr:`DIAN (Dirección de Impuestos y Aduanas Nacionales)`
Odoo's Colombian localization package provides accounting, fiscal and legal features in Colombia
such as chart of accounts, taxes and electronic invoicing.
Odoo's Colombian localization package provides accounting, fiscal, and legal features for databases
in Colombia such as chart of accounts, taxes, and electronic invoicing.
In addition, we have a series of videos covering how to start from scratch, configuration, main
workflows, and specific use cases.
In addition, a series of videos on the subject is also available. These videos cover how to start
from scratch, set up configurations, complete common workflows, and provide in-depth looks at some
specific use cases as well.
.. seealso::
`Odoo Colombian localization videos
<https://www.youtube.com/playlist?list=PL1-aSABtP6ABxZshems3snMjx7bj_7ZsZ>`_.
`Smart Tutorial - Colombian Localization
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-colombia-132>`_.
.. _colombia/configuration:
@@ -36,74 +37,78 @@ localization:
- `l10n_co`
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`. This module adds
the base accounting features for the Colombian localization: chart of accounts, taxes,
withholdings, identification document type.
withholdings, and identification document type.
* - :guilabel:`Colombian - Accounting Reports`
- `l10n_co_reports`
- Includes accounting reports for sending certifications to suppliers for withholdings applied.
* - :guilabel:`Electronic invoicing for Colombia with Carvajal`
- `l10n_co_edi`
- This module includes the features that are required for the integration with Carvajal and
generates the electronic invoices and support document related to the vendor bills based on
- This module includes the features required for integration with Carvajal, and
generates the electronic invoices and support documents related to the vendor bills, based on
|DIAN| regulations.
* - :guilabel:`Colombian - Point of Sale`
- `l10n_co_pos`
- Includes Point of Sale Receipt for Colombian Localization.
- Includes Point of Sale receipts for Colombian localization.
.. note::
When a database is created from scratch selecting :guilabel:`Colombia` as the country, Odoo
automatically installs the base modules *Colombia - Accounting* and *Colombia - Accounting
Reports*.
When `Colombia` is selected for a company's :guilabel:`Fiscal Localization`, Odoo automatically
installs certain modules.
Company configuration
---------------------
To configure your company information, go to the :menuselection:`Contacts` app and search for your
company. Alternatively, activate :ref:`developer mode <developer-mode>` and navigate to
To configure your company information, go to the :menuselection:`Contacts` app, and search for your
company.
Alternatively, activate :ref:`developer mode <developer-mode>` and navigate to
:menuselection:`General Setting --> Company --> Update Info --> Contact`. Then, edit the contact
form to configure the following information:
form and configure the following information:
- :guilabel:`Company Name`.
- :guilabel:`Address`: Including :guilabel:`City`, :guilabel:`Department` and :guilabel:`Zip Code`.
- :guilabel:`Tax ID`: When it is a `NIT`, it must have the *verification digit* at the end of the ID
followed by a hyphen (`-`).
- :guilabel:`Address`: Including :guilabel:`City`, :guilabel:`Department` and :guilabel:`ZIP` code.
- :guilabel:`Identification Number`: Select the :guilabel:`Identification Type` (`NIT`, `Cédula de
Ciudadanía`, `Registro Civil`, etc.). When the :guilabel:`Identification Type` is `NIT`, the
:guilabel:`Identification Number` **must** have the *verification digit* at the end of the ID
prefixed by a hyphen (`-`).
Next, configure the :guilabel:`Fiscal Information` in the :guilabel:`Sales & Purchase` tab:
- :guilabel:`Obligaciones y Responsabilidades`: Select the fiscal responsibility for the company
(:guilabel:`O-13` Gran Contribuyente, :guilabel:`O-15` Autorretenedor, :guilabel:`O-23` Agente de
retención IVA, :guilabel:`O-47` Regimen de tributación simple, :guilabel:`R-99-PN` No Aplica).
(`O-13` Gran Contribuyente, `O-15` Autorretenedor, `O-23` Agente de retención IVA, `O-47` Regimen
de tributación simple, `R-99-PN` No Aplica).
- :guilabel:`Gran Contribuyente`: If the company is *Gran Contribuyente* this option should be
selected.
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (:guilabel:`IVA`,
:guilabel:`INC`, :guilabel:`IVA e INC`, :guilabel:`No Aplica`)
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (`IVA`, `INC`, `IVA e INC`,
or `No Aplica`)
- :guilabel:`Commercial Name`: If the company uses a specific commercial name, and it needs to be
displayed in the invoice.
Carjaval credentials configuration
----------------------------------
Once the modules installed, the user credentials must be configured in order to connect with
Carvajal Web Service. Navigate to :menuselection:`Accounting --> Configuration --> Settings` and
scroll to the :guilabel:`Colombian Electronic Invoicing` section. Then, fill in the required
configuration information provided by Carvajal:
Once the modules are installed, the user credentials **must** be configured, in order to connect
with Carvajal Web Service. To do so, navigate to :menuselection:`Accounting --> Configuration -->
Settings` and scroll to the :guilabel:`Colombian Electronic Invoicing` section. Then, fill in the
required configuration information provided by Carvajal:
- :guilabel:`Username` and :guilabel:`Password`: Correspond to the username and password provided
by Carvajal to the company.
- :guilabel:`Username` and :guilabel:`Password`: Username and password (provided by Carvajal) to the
company.
- :guilabel:`Company Registry`: Company's NIT number *without* the verification code.
- :guilabel:`Account ID`: Company ID followed by `_01`.
- :guilabel:`Colombia Template Code`: Select one of the two available templates (:guilabel:`CGEN03`
or :guilabel:`CGNE04`) to be used in the PDF format of the electronic invoice.
- :guilabel:`Account ID`: Company's NIT number followed by `_01`.
- :guilabel:`Colombia Template Code`: Select one of the two available templates (`CGEN03` or
`CGNE04`) to be used in the PDF format of the electronic invoice.
Enable the :guilabel:`Test mode` checkbox to connect with the Carvajal testing environment.
Once Odoo and Carvajal are fully configured and ready for production, deactivate the :guilabel:`Test
mode` checkbox to use the production database.
.. image:: colombia/carvajal-configuration.png
:align: center
:alt: Configure credentials for Carvajal web service in Odoo.
.. note::
Check the :guilabel:`Test mode` checkbox to connect with the Carvajal testing environment. Once
Odoo and Carvajal are fully configured and ready for production, uncheck the :guilabel:`Test
mode` checkbox to use the production database.
.. important::
:guilabel:`Test mode` must be used **only** on replicated databases, **not** the production
:guilabel:`Test mode` must **only** be used on duplicated databases, **not** the production
environment.
Report data configuration
@@ -112,8 +117,17 @@ Report data configuration
Report data can be defined for the fiscal section and bank information of the PDF as part of the
configurable information sent in the XML.
Navigate to :menuselection:`Accounting --> Configuration --> Settings` and scroll to the
:guilabel:`Colombian Electronic Invoicing` section.
Navigate to :menuselection:`Accounting --> Configuration --> Settings`, and scroll to the
:guilabel:`Colombian Electronic Invoicing` section, in order to find the :guilabel:`Report
Configuration` fields. Here the header information for each report type can be configured.
- :guilabel:`Gran Contribuyente`
- :guilabel:`Tipo de Régimen`
- :guilabel:`Retenedores de IVA`
- :guilabel:`Autorretenedores`
- :guilabel:`Resolución Aplicable`
- :guilabel:`Actividad Económica`
- :guilabel:`Bank Information`
.. _colombia/master-data:
@@ -123,67 +137,85 @@ Master data configuration
Partner
~~~~~~~
Partner contacts can be created in the *Contacts* app. To do so, navigate to
:menuselection:`Contacts`, and click the :guilabel:`Create` button.
Then, name the contact, and using the radio buttons, select the contact type, either
:guilabel:`Individual` or :guilabel:`Company`.
Complete the full :guilabel:`Address`, including the :guilabel:`City`, :guilabel:`State`, and
:guilabel:`ZIP` code. Then, complete the identification and fiscal information.
Identification information
**************************
Document types defined by the |DIAN| are available on the partner form as part of the Colombian
localization. Colombian partners must have their :guilabel:`Identification Number` (VAT) and
:guilabel:`Document Type` set.
Identification types, defined by the |DIAN|, are available on the partner form, as part of the
Colombian localization. Colombian partners **must** have their :guilabel:`Identification Number`
(VAT) and :guilabel:`Document Type` set.
.. tip::
When the :guilabel:`Document Type` is `NIT`, the :guilabel:`Identification Number` needs to be
configured in Odoo, including the *verification digit*; Odoo splits this number when the data to
is sent to the third party.
configured in Odoo, including the *verification digit at the end of the ID, prefixed by a hyphen
(`-`)*.
Fiscal information
******************
The partner's responsibility codes (section 53 in the RUT document) are included as part of the
electronic invoicing module, as it is required by the |DIAN|.
The partner's responsibility codes (section 53 in the :abbr:`RUT (Registro único tributario)`
document) are included as part of the electronic invoicing module, as it is required by the |DIAN|.
The required fields can be found under :menuselection:`Partner --> Sales & Purchase Tab --> Fiscal
Information`:
Information section`:
- :guilabel:`Obligaciones y Responsabilidades`: Select the fiscal responsibility for the company
(:guilabel:`O-13` Gran Contribuyente, :guilabel:`O-15` Autorretenedor, :guilabel:`O-23` Agente de
retención IVA, :guilabel:`O-47` Regimen de tributación simple, :guilabel:`R-99-PN` No Aplica).
(`O-13` Gran Contribuyente, `O-15` Autorretenedor, `O-23` Agente de retención IVA, `O-47` Regimen
de tributación simple, or `R-99-PN` No Aplica).
- :guilabel:`Gran Contribuyente`: If the company is *Gran Contribuyente* this option should be
selected.
- :guilabel:`Fiscal Regimen`: Select the Tribute Name for the company (:guilabel:`IVA`,
:guilabel:`INC`, :guilabel:`IVA e INC`, :guilabel:`No Aplica`)
- :guilabel:`Fiscal Regimen`: Select the tribute name for the company (`IVA`, `INC`, `IVA e INC`, or
`No Aplica`)
- :guilabel:`Commercial Name`: If the company uses a specific commercial name, and it needs to be
displayed in the invoice.
Products
~~~~~~~~
In addition to adding general information (in the :guilabel:`General Information` tab) on the
product form, either the :guilabel:`UNSPSC Category`, :guilabel:`Barcode`, or :guilabel:`Internal
Reference` field must also be configured.
To manage products, navigate to :menuselection:`Accounting --> Customers --> Products`, then click
on a product.
When adding general information on the product form, it is required that either the
:guilabel:`UNSPSC Category` (:guilabel:`Accounting` tab), or :guilabel:`Internal Reference`
(:guilabel:`General Information` tab) field is configured. Be sure to :guilabel:`Save` the product
once configured.
Taxes
~~~~~
If sales transactions include products with taxes, the :guilabel:`Value Type` field in the
:guilabel:`Advanced Options` tab needs to be configured per tax. To do so, go to
:menuselection:`Accounting --> Configuration --> Taxes`, and select the related tax.
To create or modify taxes, go to :menuselection:`Accounting --> Configuration --> Taxes`, and select
the related tax.
Retention tax types (:guilabel:`ICA`, :guilabel:`IVA`, :guilabel:`Fuente`) are also included. This
configuration is used to display taxes in the invoice PDF correctly.
If sales transactions include products with taxes, the :guilabel:`Value Type` field in the
:guilabel:`Advanced Options` tab needs to be configured per tax. Retention tax types
(:guilabel:`ICA`, :guilabel:`IVA`, :guilabel:`Fuente`) are also included. This configuration is used
to display taxes correctly in the invoice PDF.
.. image:: colombia/retention-tax-types.png
:align: center
:alt: The ICA, IVA and Fuente fields in the Advanced Options tab in Odoo.
.. _co-journals:
Sales journals
~~~~~~~~~~~~~~
.. _co-journals:
Once the |DIAN| has assigned the official sequence and prefix for the electronic invoice resolution,
the sales journals related to the invoice documents must be updated in Odoo. To do so, navigate to
:menuselection:`Accounting --> Configuration --> Journals`.
the sales journals related to the invoice documents **must** be updated in Odoo. To do so, navigate
to :menuselection:`Accounting --> Configuration --> Journals`, and select an existing sales journal,
or create a new one with the :guilabel:`Create` button.
Configure the following data in the :guilabel:`Advanced Settings` tab:
On the sales journal form, input the :guilabel:`Journal Name`, :guilabel:`Type`, and set a unique
:guilabel:`Short Code` in the :guilabel:`Journals Entries` tab. Then, configure the following data
in the :guilabel:`Advanced Settings` tab:
- :guilabel:`Electronic invoicing`: Enable :guilabel:`UBL 2.1 (Colombia)`.
- :guilabel:`Invoicing Resolution`: Resolution number issued by |DIAN| to the company.
@@ -193,32 +225,31 @@ Configure the following data in the :guilabel:`Advanced Settings` tab:
- :guilabel:`Range of Numbering (maximum)`: Last authorized invoice number.
.. note::
The sequence and resolution of the journal must match the one configured in Carvajal and the
The sequence and resolution of the journal **must** match the one configured in Carvajal and the
|DIAN|.
Invoice sequence
****************
The invoice sequence and prefix must be correctly configured when the first document is created.
The invoice sequence and prefix **must** be correctly configured when the first document is created.
.. note::
Odoo automatically assigns a prefix and sequence to the following documents.
Odoo automatically assigns a prefix and sequence to the following invoices.
Purchase journals
*****************
Once the |DIAN| has assigned the official sequence and prefix for the support document related to
Once the |DIAN| has assigned the official sequence and prefix for the *support document* related to
vendor bills, the purchase journals related to their supporting documents need to be updated in
Odoo. The process is similar to the configuration of the :ref:`sales journals <co-journals>`.
Chart of accounts
*****************
The :doc:`chart of accounts
</applications/finance/accounting/get_started/chart_of_accounts>` is installed by default as part of
the localization module, the accounts are mapped automatically in taxes, default account payable,
and default account receivable. The chart of accounts for Colombia is based on the PUC (Plan Unico
de Cuentas).
The :doc:`chart of accounts </applications/finance/accounting/get_started/chart_of_accounts>` is
installed by default as part of the localization module, the accounts are mapped automatically in
taxes, default account payable, and default account receivable. The chart of accounts for Colombia
is based on the PUC (Plan Unico de Cuentas).
.. _colombia/workflows:
@@ -228,18 +259,38 @@ Main workflows
Electronic invoices
-------------------
The following is a breakdown of the main workflow for electronic invoices with the Colombian
localization:
#. Sender creates an invoice.
#. Electronic invoice provider generates the legal XML file.
#. Electronic invoice provider creates the CUFE (Invoice Electronic Code) with the electronic
signature.
#. Electronic invoice provider sends a notification to |DIAN|.
#. |DIAN| validates the invoice.
#. |DIAN| accepts or rejects the invoice.
#. Electronic invoice provider generates the PDF invoice with a QR code.
#. Electronic invoice provider sends invoice to the acquirer.
#. Acquirer sends a receipt of acknowledgement, and accepts or rejects the invoice.
#. Sender downloads a :file:`.zip` file with the PDF and XML.
.. image:: colombia/workflow-electronic-invoice.png
:align: center
:alt: Electronic invoice workflow for Colombian localization.
.. _colombia/invoice-creation:
Invoice creation
~~~~~~~~~~~~~~~~
.. note::
The functional workflow taking place before an invoice validation does not alter the main changes
introduced with the electronic invoice.
The functional workflow taking place before an invoice validation does **not** alter the main
changes introduced with the electronic invoice.
Electronic invoices are generated and sent to both the |DIAN| and customer through Carvajal's web
service integration. These documents can be created from your sales order or manually. Go to
:menuselection:`Accounting --> Customers --> Invoices` and configure:
service integration. These documents can be created from your sales order or manually generated. To
create a new invoice, go to :menuselection:`Accounting --> Customers --> Invoices`, and select
:guilabel:`Create`. On the invoice form configure the following fields:
- :guilabel:`Customer`: Customer's information.
- :guilabel:`Journal`: Journal used for electronic invoices.
@@ -259,9 +310,10 @@ invoice is then processed asynchronously by the E-invoicing service UBL 2.1 (Col
also displayed in the chatter.
.. image:: colombia/invoice-sent.png
:align: center
:alt: Carvajal XML invoice file in Odoo chatter.
The :guilabel:`Electronic Invoice Name` field is now displayed in the :guilabel:`EDI Documents` tab
The :guilabel:`Electronic Invoice Name` field is now displayed in the :guilabel:`EDI Documents` tab,
with the name of the XML file. Additionally, the :guilabel:`Electronic Invoice Status` field is
displayed with the initial value :guilabel:`To Send`. To process the invoice manually, click on the
:guilabel:`Process Now` button.
@@ -271,7 +323,7 @@ displayed with the initial value :guilabel:`To Send`. To process the invoice man
Reception of legal XML and PDF
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The electronic invoice vendor (Carvajal) receives the XML file and proceeds to validate its
The electronic invoice vendor (Carvajal) receives the XML file, and proceeds to validate its
structure and information.
After validating the electronic invoice, proceed to generate a legal XML which includes a digital
@@ -279,10 +331,11 @@ signature and a unique code (CUFE), a PDF invoice that includes a QR code and th
generated. If everything is correct the :guilabel:`Electronic Invoicing` field value changes to
:guilabel:`Sent`.
A ZIP containing the legal electronic invoice in XML format and the invoice in PDF format is
downloaded and displayed in the invoice chatter:
A :file:`.zip` containing the legal electronic invoice (in XML format) and the invoice in (PDF
format) is downloaded and displayed in the invoice chatter:
.. image:: colombia/invoice-zip.png
:align: center
:alt: ZIP file displayed in the invoice chatter in Odoo.
The electronic invoice status changes to :guilabel:`Accepted`.
@@ -292,7 +345,7 @@ Credit notes
The process for credit notes is the same as for invoices. To create a credit note with reference to
an invoice, go to :menuselection:`Accounting --> Customers --> Invoices`. On the invoice, click
:guilabel:`Add Credit Note` and complete the following information:
:guilabel:`Add Credit Note`, and complete the following information:
- :guilabel:`Credit Method`: Select the type of credit method.
@@ -316,7 +369,7 @@ Debit notes
The process for debit notes is similar to credit notes. To create a debit note with reference to an
invoice, go to :menuselection:`Accounting --> Customers --> Invoices`. On the invoice, click the
:guilabel:`Add Debit Note` button and complete the following information:
:guilabel:`Add Debit Note` button, and enter the following information:
- :guilabel:`Reason`: Type the reason for the debit note.
- :guilabel:`Debit note date`: Select the specific options.
@@ -331,7 +384,7 @@ Support document for vendor bills
---------------------------------
With master data, credentials, and the purchase journal configured for support documents related to
vendor bills, you can start using support documents.
vendor bills, you can start using *support documents*.
Support documents for vendor bills can be created from your purchase order or manually. Go to
:menuselection:`Accounting --> Vendors --> Bills` and fill in the following data:
@@ -372,6 +425,7 @@ Commerce (ICA) tax. The report can be found under :menuselection:`Accounting -->
Colombian Statements --> Certificado de Retención en ICA`.
.. image:: colombia/ica-report.png
:align: center
:alt: Certificado de Retención en ICA report in Odoo Accounting.
Certificado de Retención en IVA
@@ -382,6 +436,7 @@ can be found under :menuselection:`Accounting --> Reporting --> Colombian Statem
de Retención en IVA`.
.. image:: colombia/iva-report.png
:align: center
:alt: Certificado de Retención en IVA report in Odoo Accounting.
Certificado de Retención en la Fuente
@@ -392,4 +447,5 @@ be found under :menuselection:`Accounting --> Reporting --> Colombian Statements
Retención en Fuente`.
.. image:: colombia/fuente-report.png
:align: center
:alt: Certificado de Retención en Fuente report in Odoo Accounting.
Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@@ -175,7 +175,7 @@ Make sure your products are correctly configured so your e-invoices are valid:
- :guilabel:`Product Type`: storable products, consumables, or services.
- :guilabel:`Unit of Measure`: if you also use Odoo Inventory and have enabled :doc:`Units of
Measure </applications/inventory_and_mrp/inventory/management/products/uom>`.
Measure <../../inventory_and_mrp/inventory/product_management/product_replenishment/uom>`.
- :guilabel:`Barcode`: **GS1** or **EGS** barcode
- :guilabel:`ETA Item code` (under the :menuselection:`Accounting` tab): if the barcode doesn't
match your ETA item code.
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 30 KiB

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