Compare commits

...

94 Commits

Author SHA1 Message Date
Rémy Voet (ryv) fc2e3310be [IMP] orm: update changelog for the new flush strategy 2024-01-15 10:53:13 +01:00
KC (ksc) d07052aa57 [IMP] sales: updated amazon order management
closes odoo/documentation#7381

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

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

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

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

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

closes odoo/documentation#7353

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

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

taskid-3466400

closes odoo/documentation#7350

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

closes odoo/documentation#7316

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

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

Task id # 2925767

closes odoo/documentation#7276

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

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

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

closes odoo/documentation#7326

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

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

taskid-3673259

closes odoo/documentation#7320

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

taskid-3621461

closes odoo/documentation#7303

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

Forward to master.

16.3 -> Change reconciliation section

taskid-3610834

closes odoo/documentation#7273

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

Forward to master

taskid-3644544

closes odoo/documentation#7292

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

closes odoo/documentation#7282

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

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

Fixes: #7210

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

closes odoo/documentation#7274

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

closes odoo/documentation#7252

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

taskid-3658558

closes odoo/documentation#7250

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

taskid-3619104

closes odoo/documentation#7245

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

taskid-3615592

closes odoo/documentation#7242

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

16.3 & 16.4 --> Fetch Account/Reconnect

17.0 --> Reconnect

taskid-3619168

closes odoo/documentation#7234

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

closes odoo/documentation#7236

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

closes odoo/documentation#7226

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

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

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

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

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

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

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

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

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

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

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

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

task-id 3478356

closes odoo/documentation#7143

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

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

closes odoo/documentation#7145

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

closes odoo/documentation#7140

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

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

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

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

closes odoo/documentation#7115

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

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

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

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

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

closes odoo/documentation#7138

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

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

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

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

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

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

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

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

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

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

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

closes odoo/documentation#7022

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

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

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

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

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

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

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

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

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

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

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

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

closes odoo/documentation#6980

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

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

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

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

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

closes odoo/documentation#6954

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

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

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

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

closes odoo/documentation#6944

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

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

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

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

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

closes odoo/documentation#6938

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

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

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

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

closes odoo/documentation#6903

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

closes odoo/documentation#6800

X-original-commit: e5d77ee285
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-12-06 18:55:19 +00:00
1351 changed files with 32206 additions and 16032 deletions
+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
-------------------
+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
----------
+4 -4
View File
@@ -413,10 +413,10 @@ Dependencies
$ sudo npm install -g rtlcss
.. warning::
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.5
<https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5>`_ for it to support headers and
footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for
more details on the various versions.
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
for more details on the various versions.
.. _install/source/running_odoo:
@@ -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`
+23 -26
View File
@@ -39,10 +39,11 @@ An upgrade does not cover:
- Migrating from another ERP to Odoo
.. warning::
If your database contains a **custom module**, you must first upgrade its source code to be
compatible with the new version of Odoo **before upgrading**.
.. TODOUPG : once the page for developers is published, uncomment and link
.. :doc:`first upgrade its source code </developer/reference/upgrade>`
If your database contains custom modules, it cannot be upgraded until a version of your custom
modules is available for the target version of Odoo. For customers maintaining their own custom
modules, we recommend to parallelize the process by :ref:`requesting an upgraded database
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
modules </developer/howtos/upgrade_custom_db>`.
Upgrading in a nutshell
@@ -51,15 +52,15 @@ Upgrading in a nutshell
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
<upgrade/request-test-database>`).
#. If applicable, upgrade the source code of your custom module to be compatible with the new
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
<upgrade/test_your_db>`).
#. Report any issue encountered during the testing to Odoo via the `support page
<https://odoo.com/help?stage=migration>`__.
#. (If applicable) : upgrade the source code of your custom module to be compatible with the new
version of Odoo.
#. Once all issues are resolved and you are confident that the upgraded database can be used as
your main database without any issues, plan the upgrade of your production database.
@@ -69,9 +70,6 @@ Upgrading in a nutshell
#. Report any issue encountered during the upgrade to Odoo via the `support page
<https://odoo.com/help?stage=post_upgrade>`__.
.. TODOUPG: Once the page for developers is published, put this at 4)
.. (see :ref:`upgrading customizations <upgrade/upgrading_customizations>`).
.. _upgrade/request-test-database:
Obtaining an upgraded test database
@@ -136,18 +134,13 @@ project <https://odoo.sh/project>`_.
file of the upgrade process can be found in your newly upgraded staging build by going to
:file:`~/logs/upgrade.log`.
.. note::
In databases where custom modules are installed, their source code
must be up-to-date with the target version of Odoo before the upgrade
can be performed. If there are none, the "update on commit" mode is
skipped, the upgraded database is built as soon as it is transferred from the upgrade
platform, and the upgrade mode is exited.
.. important::
In databases where custom modules are installed, their source code must be up-to-date with
the target version of Odoo before the upgrade can be performed. If there are none, the
"update on commit" mode is skipped, the upgraded database is built as soon as it is
transferred from the upgrade platform, and the upgrade mode is exited.
.. TODOUPG : once the page for developers is published, uncomment
.. Check out the :doc:`upgrade for developers'
.. documentation </developer/reference/upgrade>` for more information. In
.. addition, if a module is not needed after an upgrade, :ref:`you can
.. remove customizations <upgrade/remove_customizations>`.
Check out the :doc:`/developer/howtos/upgrade_custom_db` page for more information.
.. group-tab:: On-premise
@@ -167,6 +160,11 @@ project <https://odoo.sh/project>`_.
An upgraded test database can also be requested via the `Upgrade page
<https://upgrade.odoo.com/>`_.
.. important::
In databases where custom modules are installed, their source code must be up-to-date with
the target version of Odoo before the upgrade can be performed. Check out the
:doc:`/developer/howtos/upgrade_custom_db` page for more information.
.. note::
- For security reasons, only the person who submitted the upgrade request can download it.
- For storage reasons, the database's copy is submitted without a filestore to the upgrade
@@ -291,8 +289,8 @@ the upgrade at a time when the use of the database is minimal.
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
to frequently request another upgraded test database to ensure that the upgrade process is
still successful, especially if it takes a long time to finish. Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.
still successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.**
.. important::
- Going into production without first testing may lead to:
@@ -337,9 +335,8 @@ exceptions.
The update of your custom modules must be successful to complete the entire upgrade process.
Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in
production.
.. TODOUPG : once the page for developers is published, uncomment
.. More information on how to upgrade your custom modules can be found in the :ref:`upgrading customizations documentation <upgrade/upgrading_customizations>`.
production. More information on how to upgrade your custom modules can be found on
:doc:`/developer/howtos/upgrade_custom_db`.
.. group-tab:: On-premise
+3 -2
View File
@@ -209,8 +209,7 @@ available methods are standard price, average price, :abbr:`LIFO (Last-In, First
:abbr:`FIFO (First-In, First-Out).`
.. seealso::
:doc:`View the impact of the valuation methods on transactions
<../inventory_and_mrp/inventory/management/reporting/inventory_valuation_config>`
:doc:`../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config`
Retained earnings
=================
@@ -222,6 +221,8 @@ and loss balance is automatically reported on the balance sheet report.
.. seealso::
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
.. _fiduciaries:
Fiduciaries
===========
@@ -107,9 +107,9 @@ If your connection with the proxy is disconnected, you can reconnect with the pr
:guilabel:`Fetch Account` button.
.. note::
This disconnection can be caused by the Odoo support. In this case, please contact the `support
<https://www.odoo.com/help>`_ directly with your client id or the reference of the error listed
in the chatter.
If you are unable to reconnect using the :guilabel:`Reconnect` button, please contact the
`support <https://www.odoo.com/help>`_ directly with your client id or the reference of the error
listed in the chatter.
.. _MigrationOnlineSync:
@@ -21,6 +21,8 @@ vendors because of modifications to confirmed customer invoices or vendor bills.
:doc:`return </applications/sales/sales/products_prices/returns>` if a storable product is
returned.
.. _accounting/issue-credit-note:
Issue a credit note
===================
@@ -72,6 +74,8 @@ prefilled with the same details from the original invoice.
This is the option to **modify** the content of a *validated* invoice.
.. _accounting/issue-debit-note:
Issue a debit note
==================
@@ -2,194 +2,175 @@
Deferred revenues
=================
**Deferred revenues**, or **unearned revenue**, are payments made in advance by customers for
products yet to deliver or services yet to render.
**Deferred revenues**, or **unearned revenues**, are invoices addressed to customers
for goods yet to be delivered or services yet to be rendered.
Such payments are a **liability** for the company that receives them since it still owes its
customers these products or services. The company cannot report them on the current **Profit and
Loss statement**, or *Income Statement*, since the payments will be effectively earned in the future.
The company cannot report them on the current **profit and loss statement**, or *income statement*,
since the goods and services will be effectively delivered/rendered in the future.
These future revenues must be deferred on the company's balance sheet until the moment in time they
can be **recognized**, at once or over a defined period, on the Profit and Loss statement.
These future revenues must be deferred on the company's balance sheet among the current liabilities
until they can be **recognized**, at once or over a defined period, on the profit and loss
statement.
For example, let's say we sell a five-year extended warranty for $ 350. We already receive the money
now but haven't earned it yet. Therefore, we post this new income in a deferred revenue account and
decide to recognize it on a yearly basis. Each year, for the next 5 years, $ 70 will be recognized
as revenue.
For example, let's say a business sells a software license of $1200 for 1 year. They immediately
invoice it to the customer but can't consider it earned yet, as the future months of licensing have
not yet been delivered. Therefore, they post this new revenue in a deferred revenue account and
recognize it on a monthly basis. Each month, for the next 12 months, $100 will be recognized as
revenue.
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are
automatically created in *draft mode* and then posted periodically.
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are posted
periodically.
.. note::
The server checks once a day if an entry must be posted. It might then take up to 24 hours before
you see a change from *draft* to *posted*.
you see a change from :guilabel:`Draft` to :guilabel:`Posted`.
Prerequisites
Configuration
=============
Such transactions must be posted on a **Deferred Revenue Account** rather than on the default income
account.
Make sure the default settings are correctly configured for your business. To do so, go to
:menuselection:`Accounting --> Configuration --> Settings`. The following options are available:
Configure a Deferred Revenue Account
------------------------------------
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
the deferral entries when you post a customer invoice. However, you can also choose to
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
accounts for different amounts depending on the number of days in each month.
To configure your account in the **Chart of Accounts**, go to :menuselection:`Accounting -->
Configuration --> Chart of Accounts`, click on *Create*, and fill out the form.
.. _customer_invoices/deferred/generate_on_validation:
.. image:: deferred_revenues/deferred_revenues01.png
:align: center
:alt: Configuration of a Deferred Revenue Account in Odoo Accounting
Generate deferral entries on validation
=======================================
.. tip::
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
month as the :guilabel:`Invoice Date`.
For each line of the invoice that should be deferred, specify the start and end dates of the
deferral period.
If the :guilabel:`Generate Entries` field in the **Settings** is set to :guilabel:`On invoice/bill
validation`, Odoo automatically generates the deferral entries when the invoice is validated. Click
the :guilabel:`Deferred Entries` smart button to see them.
One entry, dated on the same day as the invoice, moves the invoice amounts from the income account
to the deferred account. The other entries are deferral entries which, month after month, move
the invoice amounts from the deferred account to the income account to recognize the revenue.
.. example::
You can defer a January invoice of $1200 over 12 months by specifying a start date of 01/01/2023
and an end date of 12/31/2023. At the end of August, $800 is recognized as an income,
whereas $400 remains on the deferred account.
Reporting
=========
The deferred revenue report computes an overview of the necessary deferral entries for each account.
To access it, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue`.
To view the journal items of each account, click on the account name and then :guilabel:`Journal
Items`.
.. image:: deferred_revenues/deferred_revenue_report.png
:alt: Deferred revenue report
.. note::
This account's type must be either *Current Liabilities* or *Non-current Liabilities*
Only invoices whose accounting date is before the end of the period of the report
are taken into account.
Post an income to the right account
-----------------------------------
.. _customer_invoices/deferred/generate_manually:
Select the account on a draft invoice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Generate grouped deferral entries manually
==========================================
On a draft invoice, select the right account for all the products of which the incomes must be
deferred.
If you have a lot of deferred revenues and wish to reduce the number of journal entries created, you
can generate deferral entries manually. To do so, set the :guilabel:`Generate Entries` field in the
**Settings** to :guilabel:`Manually & Grouped`. Odoo then aggregates the deferred amounts in a
single entry.
.. image:: deferred_revenues/deferred_revenues02.png
:align: center
:alt: Selection of a Deferred Revenue Account on a draft invoice in Odoo Accounting
At the end of each month, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue` and
click the :guilabel:`Generate Entries` button. This generates two deferral entries:
Choose a different Income Account for specific products
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- One dated at the end of the month which aggregates, for each account, all the deferred amounts
of that month. This means that a part of the deferred revenue is recognized at the end of that
period.
- The reversal of this created entry, dated on the following day (i.e., the first day of the
next month) to cancel the previous entry.
Start editing the product, go to the *Accounting* tab, select the right **Income Account**, and
save.
.. example::
There are two invoices:
.. image:: deferred_revenues/deferred_revenues03.png
:align: center
:alt: Change of the Income Account for a product in Odoo
- Invoice A: $1200 to be deferred from 01/01/2023 to 12/31/2023
- Invoice B: $600 to be deferred from 01/01/2023 to 12/31/2023
.. tip::
It is possible to automate the creation of revenue entries for these products (see:
`Automate the Deferred Revenues`_).
In January
At the end of January, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
Change the account of a posted journal item
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Entry 1 dated on the 31st January:
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, select the journal item you
want to modify, click on the account, and select the right one.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 100 + 50 = **150** (recognizing 1/12 of invoice A and invoice B)
- Line 3: Deferred account 1800 - 150 = **1650** (amount that has yet to be deferred later
on)
.. image:: deferred_revenues/deferred_revenues04.png
:align: center
:alt: Modification of a posted journal item's account in Odoo Accounting
- Entry 2 dated on the 1st February, the reversal of the previous entry:
Deferred Revenues entries
=========================
- Line 1: Expense account **1800**
- Line 2: Deferred account **-150**
- Line 3: Expense account **-1650**
Create a new entry
------------------
In February
At the end of February, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
A **Deferred Revenues entry** automatically generates all journal entries in *draft mode*. They are
then posted one by one at the right time until the full amount of the income is recognized.
- Entry 1 dated on the 28th February:
To create a new entry, go to :menuselection:`Accounting --> Accounting --> Deferred Revenues`, click
on *Create*, and fill out the form.
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 200 + 100 = **300** (recognizing 2/12 of invoice A and invoice B)
- Line 3: Deferred account 1800 - 300 = **1500** (amount that has yet to be deferred later
on)
Click on **select related purchases** to link an existing journal item to this new entry. Some
fields are then automatically filled out, and the journal item is now listed under the **Related
Sales** tab.
- Entry 2 dated on the 1st March, the reversal of the previous entry.
.. image:: deferred_revenues/deferred_revenues05.png
:align: center
:alt: Deferred Revenue entry in Odoo Accounting
From March to October
The same computation is done for each month until October.
Once done, you can click on *Compute Revenue* (next to the *Confirm* button) to generate all the
values of the **Revenue Board**. This board shows you all the entries that Odoo will post to
recognize your revenue, and at which date.
In November
At the end of November, after clicking the :guilabel:`Generate Entries` button, there are the
following entries:
.. image:: deferred_revenues/deferred_revenues06.png
:align: center
:alt: Revenue Board in Odoo Accounting
- Entry 1 dated on the 30th November:
What does "Prorata Temporis" mean?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
- Line 2: Expense account 1100 + 550 = **1650** (recognizing 11/12 of invoice A and invoice
B)
- Line 3: Deferred account 1800 - 1650 = **150** (amount that has yet to be deferred later
on)
The **Prorata Temporis** feature is useful to recognize your revenue the most accurately possible.
- Entry 2 dated on the 1st December, the reversal of the previous entry.
With this feature, the first entry on the Revenue Board is computed based on the time left between
the *Prorata Date* and the *First Recognition Date* rather than the default amount of time between
recognitions.
In December
There is no need to generate entries in December. Indeed, if we do the computation for
December, we have an amount of 0 to be deferred.
For example, the Revenue Board above has its first revenue with an amount of $ 4.22 rather than
$ 70.00. Consequently, the last entry is also lower and has an amount of $ 65.78.
In total
If we aggregate everything, we would have:
Deferred Entry from the Sales Journal
-------------------------------------
- invoice A and invoice B
- two entries (one for the deferral and one for the reversal) for each month from January to
November
You can create a deferred entry from a specific journal item in your **Sales Journal**.
To do so, open your Sales Journal by going to
:menuselection:`Accounting --> Accounting --> Sales`, and select the journal item you want to defer.
Make sure that it is posted in the right account (see:
`Change the account of a posted journal item`_).
Then, click on *Action*, select **Create Deferred Entry**, and fill out the form the same way you
would do to `create a new entry`_.
.. image:: deferred_revenues/deferred_revenues07.png
:align: center
:alt: Create Deferred Entry from a journal item in Odoo Accounting
Deferred Revenue Models
=======================
You can create **Deferred Revenue Models** to create your Deferred Revenue entries faster.
To create a model, go to :menuselection:`Accounting --> Configuration --> Deferred Revenue Models`,
click on *Create*, and fill out the form the same way you would do to create a new entry.
.. tip::
You can also convert a *confirmed Deferred Revenue entry* into a model by
opening it from :menuselection:`Accounting --> Accounting --> Deferred
Revenues` and then, by clicking on the button *Save Model*.
Apply a Deferred Revenue Model to a new entry
---------------------------------------------
When you create a new Deferred Revenue entry, fill out the **Deferred Revenue Account** with the
right recognition account.
New buttons with all the models linked to that account appear at the top of the form. Clicking on a
model button fills out the form according to that model.
.. image:: deferred_revenues/deferred_revenues08.png
:align: center
:alt: Deferred Revenue model button in Odoo Accounting
.. _deferred-revenues-automation:
Automate the Deferred Revenues
==============================
When you create or edit an account of which the type is either *Current Liabilities* or *Non-current
Liabilities*, you can configure it to defer the revenues that are credited on it automatically.
You have three choices for the **Automate Deferred Revenue** field:
#. **No:** this is the default value. Nothing happens.
#. **Create in draft:** whenever a transaction is posted on the account, a draft *Deferred Revenues
entry* is created, but not validated. You must first fill out the form in
:menuselection:`Accounting --> Accounting --> Deferred Revenues`.
#. **Create and validate:** you must also select a Deferred Revenue Model (see:
`Deferred Revenue Models`_). Whenever a transaction is posted on the account, a *Deferred
Revenues entry* is created and immediately validated.
.. image:: deferred_revenues/deferred_revenues09.png
:align: center
:alt: Automate Deferred Revenue on an account in Odoo Accounting
.. tip::
You can, for example, select this account as the default **Income Account** of a product to fully
automate its sale. (see: `Choose a different Income Account for specific products`_).
.. seealso::
* :doc:`../get_started/chart_of_accounts`
* `Odoo Academy: Deferred Revenues (Recognition) <https://www.odoo.com/r/EWO>`_
Therefore, at the end of December, invoices A and B are fully recognized as income
only once in spite of all the created entries thanks to the reversal mechanism.
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

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

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

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

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

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

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

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

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 47 KiB

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

@@ -13,14 +13,15 @@ Activate checks payment methods
-------------------------------
To activate the checks payment method, go to :menuselection:`Accounting --> Configuration -->
Checks`, there you can activate the payment method as well as set up the :guilabel:`Check Layout`.
Once activated the :guilabel:`Checks` setting, the feature is automatically setup for your
:guilabel:`Outgoing Payments`.
Settings`, and scroll down to the :guilabel:`Vendor Payments` section. There, you can activate the
payment method as well as set up the :guilabel:`Check Layout`.
.. note::
Some countries require specific modules to print checks; such modules may be installed by
default. For instance, the :guilabel:`U.S. Checks Layout` module is required to print U.S.
checks.
- Once the :guilabel:`Checks` setting is activated, the **Checks** payment method is
automatically set up in the :guilabel:`Outgoing Payments` tabs of **bank** journals.
- Some countries require specific modules to print checks; such modules may be installed by
default. For instance, the :guilabel:`U.S. Checks Layout` module is required to print U.S.
checks.
Compatible check stationery for printing checks
===============================================
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 32 KiB

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

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 24 KiB

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

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

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

After

Width:  |  Height:  |  Size: 7.9 KiB

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

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 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
@@ -93,11 +93,12 @@ available on Odoo.
- :doc:`Kenya - Accounting <fiscal_localizations/kenya>`
- Lithuania - Accounting
- :doc:`Luxembourg - Accounting <fiscal_localizations/luxembourg>`
- :doc:`Malaysia - Accounting <fiscal_localizations/malaysia>`
- Maroc - Accounting
- :doc:`Mexico - Accounting <fiscal_localizations/mexico>`
- Mongolia - Accounting
- :doc:`Netherlands - Accounting <fiscal_localizations/netherlands>`
- New Zealand - Accounting
- :doc:`New Zealand - Accounting <fiscal_localizations/new_zealand>`
- Norway - Accounting
- OHADA - Accounting
- Pakistan - Accounting
@@ -146,8 +147,10 @@ available on Odoo.
fiscal_localizations/italy
fiscal_localizations/kenya
fiscal_localizations/luxembourg
fiscal_localizations/malaysia
fiscal_localizations/mexico
fiscal_localizations/netherlands
fiscal_localizations/new_zealand
fiscal_localizations/romania
fiscal_localizations/peru
fiscal_localizations/philippines
@@ -159,3 +162,4 @@ available on Odoo.
fiscal_localizations/vietnam
fiscal_localizations/united_arab_emirates
fiscal_localizations/united_kingdom
fiscal_localizations/employment_hero
@@ -2,66 +2,868 @@
Australia
=========
.. _australia/employment-hero:
.. _australia/configuration:
Employment Hero Australian Payroll
==================================
Configuration
=============
The Employment Hero module synchronizes payslip accounting entries (e.g., expenses, social charges,
liabilities, taxes) from Employment Hero to Odoo automatically. Payroll administration is still done
in Employment Hero. We only record the journal entries in Odoo.
.. list-table::
:widths: 25 25 50
:header-rows: 1
* - Module Name
- Module Key
- Description
* - :guilabel:`Australia - Accounting`
- `l10n_au`
- Installed by default when the Accounting :guilabel:`Fiscal Localization` package is set to
:guilabel:`Australia`. This module also installs the :guilabel:`ABA credit transfer` and the
:guilabel:`Remittance Advice report` module.
* - :guilabel:`Australian Reports - Accounting`
- `l10n_au_reports`
- Includes the :guilabel:`Taxable Payments Annual Reports (TPAR)` and the
:guilabel:`BAS report`.
* - :guilabel:`Australia - Payroll`
- `l10n_au_hr_payroll`
- Payroll localisation for Australia.
* - :guilabel:`Australia - Payroll with Accounting`
- `l10n_au_hr_payroll_account`
- Installs the link between Australian payroll and accounting. The module also installs the
modules: :guilabel:`Australian - Accounting`; :guilabel:`Australian Reports - Accounting`;
and :guilabel:`Australia - Payroll`.
* - :guilabel:`Accounting Customer Statements`
- `l10n_account_customer_statements`
- Allows the management and sending of monthly customer statements from the partner ledger and
the contact form. Also used in New Zealand.
.. _australia/coa:
Chart of Accounts
=================
The Australian chart of accounts is included in the **Australia - Accounting** module. Go to
:menuselection:`Accounting --> Configuration --> Chart of Accounts` to access it.
.. seealso::
:doc:`../accounting/get_started/chart_of_accounts`
.. _australia/taxes:
Taxes and GST
=============
The default Australian taxes impact the :ref:`BAS Report <australia/bas>`, which can be accessed
through :menuselection:`Accounting --> Reporting --> BAS Report`.
In Australia, the standard **Goods and Services Tax** (GST) rate is 10%, but different rates and
exemptions exist for specific categories of goods and services.
.. image:: australia/default-gst.png
:alt: Default GST of Australia
Tax Mapping
-----------
Within the Australian localisation package, tax names encompass the tax rate as an integral part of
their naming convention.
Despite the high amount of taxes in Odoo, these taxes are pretty similar (mostly 0% and 10%), with
different tax grid variations for:
- Goods
- Services
- TPAR
- TPAR without ABN
.. seealso::
:doc:`Taxes <../accounting/taxes>`
Taxes including a **TPAR** mention impact not only the **BAS** report but also the **TPAR** report.
Businesses from certain industries need to report payments made to subcontractors from relevant
services during the financial year. Odoo combines the use of taxes and fiscal positions to report
these payments on the **TPAR** report. Taxes with the mention **TPAR without ABN** are used to
record amounts withheld from subcontractors without an **ABN** for the **ATO**.
.. seealso::
:ref:`TPAR <australia/tpar>`
Here are the taxes for Australia in Odoo 17.
.. list-table::
:widths: 20 40 20 20
:header-rows: 1
* - GST Name
- Description
- GST Scope
- GST Type
* - 10%
- GST Purchases
- -
- Purchases
* - 10% INC
- GST Inclusive Purchases
- -
- Purchases
* - 10% C
- Capital Purchases
- -
- Purchases
* - 0% C
- Zero Rated Purch
- -
- Purchases
* - 100% T EX
- Purchase (Taxable Imports) - Tax Paid Separately
- -
- Purchases
* - 10% I
- Purchases for Input Taxed Sales
- -
- Purchases
* - 10% P
- Purchases for Private use or not deductible
- -
- Purchases
* - 100% EX
- GST Only on Imports
- -
- Purchases
* - 10% Adj
- Tax Adjustments (Purchases)
- -
- Purchases
* - 10%
- GST Sales
- -
- Sales
* - 10% INC
- GST Inclusive Sales
- -
- Sales
* - 0% EX
- Zero Rated (Export) Sales
- -
- Sales
* - 0% EXEMPT
- Exempt Sales
- -
- Sales
* - 0% I
- Input Taxed Sales
- -
- Sales
* - 10% Adj
- Tax Adjustments (Sales)
- -
- Sales
* - 10% TPAR
- GST Purchases
- Services
- Purchases
* - 10% TPAR NO ABN
- GST Purchases
- Services
- Purchases
* - 10% INC TPAR
- GST Inclusive Purchases
- Services
- Purchases
* - 10% INC TPAR N ABN
- GST Inclusive Purchases
- Services
- Purchases
* - 10% C TPAR
- Capital Purchases
- Services
- Purchases
* - 10% C TPAR N ABN
- Capital Purchases
- Services
- Purchases
* - 0% C TPAR
- Zero Rated Purch TPAR
- Services
- Purchases
* - 0% C TPAR N ABN
- Zero Rated Purch TPAR without ABN
- Services
- Purchases
* - 100% T EX TPAR
- Purchase (Taxable Imports) - Tax Paid Separately
- Services
- Purchases
* - 100% T EX TPAR N ABN
- Purchase (Taxable Imports) - Tax Paid Separately
- Services
- Purchases
* - 10% I TPAR
- Purchases for Input Taxed Sales
- Services
- Purchases
* - 100% I TPAR N ABN
- Purchases for Input Taxed Sales
- Services
- Purchases
* - 10% P TPAR
- Purchases for Private use or not deductible
- Services
- Purchases
* - 10% P TPAR N ABN
- Purchases for Private use or not deductible
- Services
- Purchases
* - 100% EX TPAR
- GST Only on Imports
- Services
- Purchases
* - 100% EX TPAR N ABN
- GST Only on Imports
- Services
- Purchases
* - 10% Adj TPAR
- Tax Adjustments (Purchases)
- Services
- Purchases
* - 10% Adj TPAR N ABN
- Tax Adjustments (Purchases)
- Services
- Purchases
* - 47% WH
- Tax Withheld for Partners without ABN
- Services
- Purchases
.. _australia/bas:
BAS report
==========
The **Business Activity Statement (BAS)** report is a critical tax reporting requirement for
businesses registered for **Goods and Services Tax (GST)** in Australia. The **BAS** is used to
report and remit various taxes to the **Australian Taxation Office (ATO)**. With the Odoo **BAS**
feature, businesses can report on the following:
- Goods and Services Tax (GST)
- PAYG tax withheld
.. image:: australia/bas-report.png
:alt: BAS report in Odoo
The taxes for GST are collected from the **tax grid**, which is pre-configured in the system. The
**tax grid** can also be manually set up for any additional special GST. Once the tax for each
account is set up, the system automatically slots journal items into the correct tax category. This
ensures the **BAS** report is accurate and reflective of the business's financial activities.
.. image:: australia/gst-grids.png
:alt: GST grids in Odoo
In addition, the **BAS** report includes the **PAYG** tax withheld components (**W1** to **W5**,
then **summary, section 4**). This integration ensures that all payroll-related withholding taxes
are accurately captured and reflected within the report.
.. image:: australia/payg.png
:alt: PAYG Tax Withheld and Summary of BAS report in Odoo
The module incorporates built-in rules that facilitate the automatic calculation of taxes for types
**W1** to **W5**. For a detailed walkthrough and more information on the calculation process for
these taxes, please refer to the Payroll app documentation.
.. seealso::
:ref:`Payroll <australia/payroll>`
Closing the BAS report
----------------------
When it is time to file the tax return with the **ATO**, click :guilabel:`Closing entry`. The tax
return period can be configured in :menuselection:`configuration --> Settings --> Tax Return
Periodicity`. Also, the start date of the tax return period can be defined through the **period
button** (marked by a calendar icon 📅).
.. seealso::
:doc:`Year-end closing <../accounting/reporting/year_end>`
.. note::
Odoo uses the *calendar quarter* rather than the Australian FY quarter, which means **July to
September is Q3 in Odoo**.
Before closing the entry for the first time, the default **GST payable account** and **GST
receivable account** need to be set. A notification pops up and redirects the user to tax group
configurations.
Once the **GST payable** and **GST receivable** accounts are set up, the **BAS** report generates an
accurate journal closing entry automatically, which balances out the GST balance with the GST
clearing account.
.. image:: australia/bas-report-accounts.png
:alt: GST accounts for the BAS report in Odoo.
The balance between **GST receivable** and **payable** is set against the tax clearing account
defined on the tax group. The amount to be paid to or received from the **ATO** can be reconciled
against a bank statement.
.. image:: australia/bas-taxes.png
:alt: BAS tax payment.
.. important::
KeyPay was rebranded as **Employment Hero** in March 2023.
The **BAS** report is not directly submitted to the **ATO**. Odoo helps you automatically compute
the necessary values in each section, with the possibility to audit them to better understand the
history behind these numbers. Businesses can copy these values and enter them on the `ATOs
portal <https://www.ato.gov.au/newsrooms/small-business-newsroom/lodging-your-next-bas>`_.
.. _australia/tpar:
TPAR report
===========
Odoo allows businesses to report payments made to contractors or subcontractors during the financial
year. This is done by generating a :abbr:`TPAR (Taxable Payments Annual Report)`. If you are unsure
your business needs this report, refer to the documentation provided by the `ATO <https://www.ato.gov.au/businesses-and-organisations/preparing-lodging-and-paying/reports-and-returns/taxable-payments-annual-report>`_.
You can find this report in :menuselection:`Accounting --> Reporting --> Taxable Payments Annual
Reports (TPAR)`.
Configuration
-------------
#. :ref:`Activate <general/install>` the :guilabel:`Employment Hero Australian Payroll` module
(technical name: `l10n_au_keypay`).
#. Configure the **Employment Hero API** by going to :menuselection:`Accounting --> Configuration -->
Settings`. More fields become visible after clicking on :guilabel:`Enable Employment Hero
Integration`.
Under :menuselection:`Accounting --> Customers` or :menuselection:`Accounting --> Vendors`, select a
your contractor and set a :guilabel:`Fiscal Position` under the :guilabel:`Sales & Purchase` tab.
.. image:: australia/employment-hero-integration.png
:alt: Enabling Employment Hero Integration in Odoo Accounting displays new fields in the
settings
.. image:: australia/tpar.png
:alt: TPAR fiscal position
- You can find the API Key in the :guilabel:`My Account` section of the Employment Hero platform.
Upon billing a contact with a fiscal position set to :guilabel:`TPAR` or
:guilabel:`TPAR without ABN`, the report is automatically generated in :menuselection:`Accounting
--> Reporting --> Taxable Payments Annual Reports (TPAR)`.
.. image:: australia/employment-hero-myaccount.png
:alt: "Account Details" section on the Employment Hero dashboard
The report includes the **ABN**, **Total GST**, **Gross Paid**, and **Tax Withheld** from their
**TPAR** subcontractors.
- The **Payroll URL** is pre-filled with `https://keypay.yourpayroll.com.au`. *Please do not
change it.*
- You can find the **Business ID** in the Employment Hero URL. (i.e., `189241`)
- **Total GST**: the total tax paid
- **Gross Paid amounts**: shows after registering a payment for those bills
- **Tax Withheld**: shown if the subcontractor is registered with a fiscal position set to
:guilabel:`TPAR without ABN`
.. image:: australia/employment-hero-business-id.png
:alt: The Employment Hero "Business ID" number is in the URL
The **TPAR** report can be exported to PDF, XLSX, and TPAR formats.
- You can choose any Odoo journal to post the payslip entries.
.. _australia/customer-statement:
How does the API work?
----------------------
Customer statements
===================
The API syncs the journal entries from Employment Hero to Odoo and leaves them in draft mode. The
reference includes the Employment Hero payslip entry ID in brackets for the user to easily retrieve
the same record in Employment Hero and Odoo.
Customer statements allow customers to see their financial transactions with the company over a
certain period, and overdue statement details. These statements can be sent out to customers
by email.
.. image:: australia/employment-hero-journal-entry.png
:alt: Example of a Employment Hero Journal Entry in Odoo Accounting (Australia)
.. image:: australia/customer-statement.png
:alt: Customer statement in Odoo.
By default, the synchronization happens once per week. You can fetch the records manually by going
to :menuselection:`Accounting --> Configuration --> Settings` and, in the :guilabel:`Enable
Employment Hero Integration` option, click on :guilabel:`Fetch Payruns Manually`.
There are **two** ways for customers to download these statements.
Employment Hero payslip entries also work based on double-entry bookkeeping.
#. **From the contact form:** Customer statements are under :menuselection:`Customers -->
Customers`. Select a customer, click the **gear icon (⚙)**, and then
:guilabel:`Print Customer Statements`. This prints out the statement from the beginning of the
month to today's date.
The accounts used by Employment Hero are defined in the section :guilabel:`Payroll settings`.
#. **From the partner ledger:** This option allows for more flexibility in selecting a statement's
start and end date. You can access it by going to :menuselection:`Accounting --> Reporting -->
Partner Ledger`. From here, specify a date range in the **calendar menu (📅)** for the statement,
hover over a partner, and click the :guilabel:`Customer Statements` tab.
.. image:: australia/employment-hero-chart-of-accounts.png
:alt: Chart of Accounts menu in Employment Hero
.. image:: australia/partner-ledger-statements.png
:alt: Customer statement from partner ledger report in Odoo.
For the API to work, you need to create the same accounts as the default accounts of your Employment
Hero business (**same name and same code**) in Odoo. You also need to choose the correct account
types in Odoo to generate accurate financial reports.
.. _australia/remittance:
Remittance advice
=================
A remittance advice is a document used as proof of payment to a business. In Odoo, it can be
accessed by going to :menuselection:`Accounting ‣ Vendors ‣ Payments`, selecting the payment(s), and
clicking :menuselection:`Print --> Payment Receipt`.
.. image:: australia/remitence.png
:alt: Remittance advice in Odoo.
.. _australia/peppol:
E-Invoicing via Peppol
======================
Odoo is compliant with Australia's and New Zealand's `PEPPOL requirements <https://peppol.org/learn-more/country-profiles/australia/>`_.
You can find and set up **electronic invoicing** settings per partner under
:menuselection:`Accounting --> Customers` or :menuselection:`Accounting --> Vendors`, select a
partner, and click the :guilabel:`Accounting` tab.
.. image:: australia/peppol.png
:alt: Peppol settings from a partner in Odoo.
.. important::
Validating an invoice or credit note for a partner on the PEPPOL network will download a
compliant XML file that can be manually uploaded to your PEPPOL network.
.. _australia/aba:
ABA files for batch payments
============================
Introduction
------------
An ABA file is a digital format developed by the `Australian Bankers' Association <https://www.ausbanking.org.au/>`_.
It is designed for business customers to facilitate bulk payment processing by uploading a single
file from their business management software.
The main advantage of using ABA files is to improve payment and matching efficiency. This is
achieved by consolidating numerous payments into one file for batch processing, which can be
submitted to all Australian banks.
Configuration
-------------
Settings
~~~~~~~~
To enable **batch payments**, go to :menuselection:`Accounting --> Configuration --> Setting -->
Batch Payment` and enable :guilabel:`Allow Batch Payments`.
Bank journal
~~~~~~~~~~~~
Then, go to :menuselection:`Accounting --> Configuration --> Journals` and select the
:guilabel:`Bank` journal type. In the :guilabel:`Journal Entries` tab, enter the
:guilabel:`Account Number` and click :guilabel:`Create and edit`. In the pop-up window, fill in the
following fields:
- :guilabel:`Bank`
- :guilabel:`Account Holder Name`
- :guilabel:`BSB`
- :guilabel:`Account Holder`
.. image:: australia/aba.png
:alt: Account Number settings for ABA in Odoo.
.. important::
The :guilabel:`Send Money` field must be **enabled**.
.. note::
The :guilabel:`Currency` field is optional.
Go back to the :guilabel:`Journal Entries` tab and fill in the following fields related to the ABA:
- :guilabel:`BSB`: This field is auto-formatted from the bank account
- :guilabel:`Financial Institution Code`: The official 3-letter abbreviation of the financial
institution (e.g., WBC for Westpac)
- :guilabel:`Supplying User Name`: 6-digit number provided by your bank. Contact or check your bank
website if you need to know.
- :guilabel:`Include Self-Balancing Transactions`: Selecting this option adds an additional
"self-balancing" transaction to the end of the ABA file, which some financial institutions
require when generating ABA files. Check with your bank to see if you need this option.
Then, go to the :guilabel:`Outgoing Payments` tab on the same :guilabel:`Bank` type journal. Click
:guilabel:`Add a line` and select :guilabel:`ABA Credit Transfer` as the **payment method**.
Partners bank accounts
~~~~~~~~~~~~~~~~~~~~~~~
Go to :menuselection:`Accounting --> Customers --> Customers` or :menuselection:`Accounting -->
Vendors --> Vendors` and select a partner for whom you want to add banking information. Once
selected, click the :guilabel:`Accounting` tab, and under the :guilabel:`Bank Accounts` section,
click :guilabel:`Add a line` to fill in:
- :guilabel:`Account Number` of that partner
- :guilabel:`Bank`
- :guilabel:`Account Holder Name`
- :guilabel:`BSB`
- :guilabel:`Accounter Holder`
- :guilabel:`Send Money` defines the bank account as *trusted*, which is essential for ABA files and
must be enabled if to be used.
Generate an ABA file
--------------------
To generate an **ABA** file, :guilabel:`Create` a vendor bill (manually or from a purchase order).
:guilabel:`Confirm` the bill and ensure the vendors banking information is set up correctly before
registering a payment..
Next, click :guilabel:`Register Payment` in the pop-up window: select the :guilabel:`Bank` journal,
select :guilabel:`ABA Credit Transfer` as :guilabel:`Payment Method`, and select the right
:guilabel:`Recipient Bank Account`.
Once payments are confirmed, they appear in :menuselection:`Accounting --> Vendors --> Payments`.
Tick the box of the payments to be included in the batch, then click :guilabel:`Create Batch`.
Verify all information is correct and finally :guilabel:`Validate`. Once validated, the ABA file
becomes available in the **chatter** on the right.
After uploading it to your banks portal, an ABA transaction line will appear in your bank feed at
the following bank feed iteration. You will need to reconcile it against the **batch payment** made
in Odoo.
.. seealso::
:doc:`Batch Payment <../accounting/payments/batch>`
.. _australia/buynow_paylater:
Buy Now, Pay Later solutions
============================
Buy Now, Pay Later solutions are popular payment methods for eShops in Australia. Some of these
solutions are available via the `Stripe <https://stripe.com/en-au/payments/payment-methods>`_ and
`AsiaPay <https://www.asiapay.com.au/payment.html#option>`_ payment providers.
.. seealso::
- :doc:`AsiaPay Payment Provider <../payment_providers/asiapay>`
- :doc:`Stripe Payment Provider <../payment_providers/stripe>`
POS terminals for Australia
===========================
If you wish to have a direct connection between Odoo and your PoS terminal in Australia, you *must*
have a **Stripe** terminal. Odoo supports the **EFTPOS** payment solution in Australia.
.. note::
You do not need a Stripe payment terminal to use Odoo as your main PoS system. The only drawback
of not using Stripe is that cashiers must manually enter the final payment amount on the
terminal.
.. seealso::
- :doc:`Stripe Odoo Payment Provider <../payment_providers/stripe>`
- :doc:`Stripe Odoo Payment Terminal </applications/sales/point_of_sale/payment_methods/terminals/stripe>`
- `Stripe Dashboard <https://dashboard.stripe.com/dashboard>`_
- `Stripe Terminal <https://stripe.com/docs/terminal>`_
.. _australia/payroll:
Payroll
=======
.. important::
Odoo is currently not compliant with STP Phase 2.
Create your employees
---------------------
To create an **employee form** and fill in mandatory information, go to the **Employees** app and
click :guilabel:`Create`. In the :guilabel:`HR Settings` tab, you can input the mandatory
information:
#. :guilabel:`TFN Status`: if the employee provides a TFN, make sure to add it to the “TFN” field
#. :guilabel:`Non-resident`: if the employee is a foreign resident
#. :guilabel:`Tax-free Threshold`: if the employee is below or above the threshold
#. :guilabel:`HELP / STSL`: for all types of study and training support loans (e.g. HELP, VSL, SSL…)
#. :guilabel:`Medicare levy Deduction`
#. :guilabel:`Medicare levy Exemption`
#. :guilabel:`Withholding for Extra Pay`
#. ...
Manage Australian contracts
---------------------------
Once the employee form has been created, ensure the contract is enabled by clicking the
:guilabel:`Contracts` smart button or by going to :menuselection:`Employees --> Employees -->
Contracts`.
.. note::
Only one contract can be active simultaneously per employee, but an employee can be assigned
consecutive contracts during their employment.
Contractual information related to Australia can be found in the following **three** places:
#. Before assigning a salary amount, pay frequency, and other important details to a contract,
defining the **salary structure**, **start date**, and **work entry** source is important. In
Australia, a "Salary Structure" is employed to specify the tax schedule applicable to that
contract, as defined by the Australian Taxation Office (ATO). Most contracts will fall under the
following **three structures**:
- **Regular (Schedule 1)**: the great majority of Australian employees will fall in this
category; hence, this structure is assigned by default to all contracts.
- **Working holiday makers (Schedule 15)**. When employing working holiday makers (WHMs), other
taxes apply. For detailed information on these specific tax implications, refer to the
documentation provided by the **ATO**.
- **No TFN**. Choose this structure if the employee hasnt provided a **TFN** for over **28**
days.
.. image:: australia/employee.png
:alt: Employees form in Odoo Payroll.
.. important::
The structures **Horticulture/Shearing (Schedule 2)** and **Artists and Performers (Schedule 3)**
are only partially complete, and proper tests should be performed before using them to pay
employees in your production database. Send your feedback to au-feedback@mail.odoo.com.
The field :guilabel:`Work Entry Source` is also significant and defines how **working hours** and
**days** are accounted for in the employees payslip.
- :guilabel:`Working Schedule`: work entries are automatically generated based on the employees
working schedule, starting from the contract's start date.. For example, lets assume that an
employee works 38 hours a week, and their contracts begins on January 1st. Today is January 16th,
and the user generates a pay run from January 14th to 20th. The working hours on the payslip will
be automatically calculated to be 38 hours (5 * 7.36 hours) if no leave is taken.
- :guilabel:`Attendances`: The default working schedule is ignored, and work entries are only
generated after clocking in and out of the attendance app.
- :guilabel:`Planning`: The default working schedule is ignored, and work entries are generated from
planning shifts only.
.. important::
Additional configurations are necessary to ensure that Odoos payslips automatically compute
various **penalty rates** as defined by an **award (overtime rate, public holiday rate, etc)**.
To create these configurations, create new work-entry types for each penalty rate and then
assign a penalty rate in % to each. Once this one-time configuration is done, work entries can
be manually imported for each period, and Odoo will separate the pay items and rates on the
employees payslip.
.. important::
Timesheets do not impact work entries in Odoo.
- The :guilabel:`Salary Information` tab contains a few essential fields impacting the frequency of
pay runs and the management of payslip rules in Odoo.
- :guilabel:`Wage Type`: Select the :guilabel:`Fixed Wage` pay type for full-time and part-time
employees. For casual workers and other :guilabel:`Hourly Wage` type. For employees being paid
hourly, make sure to define the correct **casual loading**.
- :guilabel:`Schedule Pay`: In Australia, only the following pay run frequencies are accepted:
**daily, weekly, bi-weekly (or fortnightly), monthly, and quarterly**.
- :guilabel:`Wage` (/period): Assign a wage to the contract according to their pay frequency.
On payslips, the corresponding annual and hourly rates will be automatically computed.
.. note::
For hourly workers, please note that the hourly wage should exclude casual loading.
- The :guilabel:`Australia` tab. Most of the fields in this tab are used for **Single Touch
Payroll** (or **STP**) reporting, which requires a thorough understanding of several details from
an employees contract. Review the information on this tab before moving forward with pay runs.
This includes the following **four** fields which impact payslip computations:
- :guilabel:`Withholding Variation`: use this field in case the employees withholding must be
varied upward or downward according to their circumstances. E.g., if employee X benefits from a
25% withholding variation, their percentage of tax withheld will vary from whatever amount
they were supposed to pay according to their salary structure and situation to a fixed 25%.
- :guilabel:`Leave Loading`: if the employee benefits from a regular leave loading, the value
set in the field :guilabel:`Leave Loading Rate` (e.g., 17.5%) is added to any amount earned
when taking annual or long service leaves.
- :guilabel:`Salary Sacrifice Superannuation`: any amount added to this field is deducted, per
pay frequency, from the employees basic salary before the computation of the gross salary.
Then, this amount is added to the super guarantee line of their payslip. E.g., if employee Y
earns 5,000 AUD per month and sacrifices 300 AUD to superannuation, their gross salary will be
4,700 AUD, and 300 AUD will be added on top of their normal super contributions.
- :guilabel:`Salary Sacrifice Other`: any amount added to this field is deducted, per pay
frequency, from the employees basic salary before the computation of the gross salary.
Once all important information has been entered, ensure the transition of the contract's status from
"New" to "Running" to facilitate its use in pay runs.
.. image:: australia/employee-au.png
:alt: "Australia" payroll tab in Odoo.
Assign superannuation accounts
------------------------------
Upon receipt of superannuation details from a new employee, ensure the creation of a new account in
:menuselection:`Payroll --> Configuration --> Super Accounts` to link it to the employee. Input the
:guilabel:`Super Fund`, :guilabel:`Member Since` date, and :guilabel:`TFN` number of the employee.
Suppose the employee uses a superannuation fund that does not exist in the database yet. In that
case Odoo creates a new one and centralises basic information about this fund, such as its **ABN**,
**address**, type (**APRA** or **SMSF**), **USI**, and **ESA**. Super funds can be created or
imported in :menuselection:`Payroll --> Configuration --> Super Funds`.
.. important::
Odoo is currently not **SuperStream-compliant**.
Create pay runs with payslips
-----------------------------
Odoo can create pay runs in **two** ways: via **batch** or via **individual** payslips.
Create a batch of payslips
~~~~~~~~~~~~~~~~~~~~~~~~~~
When preparing to generate employees draft payslips (e.g., at the end of every week, fortnight, or
month), navigate to :menuselection:`Payroll --> Payslips --> Batches` and click :guilabel:`New`.
Fill in the necessary info, click :guilabel:`Generate Payslips`, select the
:guilabel:`Salary Structure`, :guilabel:`Department`, :guilabel:`Employees`, and
:guilabel:`Generate`. This method allows the creation of multiple payslips corresponding to each
employee in a single batch.
#. Give the batch a name. (E.g., `2024 Weekly W1`)
#. Choose the pay run's start and end date. (E.g., 01/01/2024 to 07/01/2024)
#. Click on :guilabel:`Generate`. A pop-up window asks to confirm which employees should be included
in the batch. By default, all active employees are included. You can leave
:guilabel:`Salary Structure` field blank as Odoo automatically selects the structure linked to
each employees contract.
#. The batch creates as many payslips as there are employees. There is no limit to the number of
payslips created in a batch.
#. Verify important information on each payslip. After payslips from a batch have been generated,
there is no need to manually compute payslip lines; Odoo does it for you.
Create an individual payslip
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In cases where the pay run does not fall into the category of regular payslips, the option exists to
create a pay run dedicated to a single employee. Go to :menuselection:`Payroll --> Payslips --> All
Payslips` and click :guilabel:`New`. Employ this method when processing **one-time payments** for
employees, including **return-to-work** payments (**ATO Schedule 4**), **employment termination**
payments (**ATO Schedule 7 and 11**), and **commissions and bonuses** (**ATO Schedule 5**). When
generating an individual payslip, make sure to proceed with the following steps:
#. Select an :guilabel:`Employee`; their :guilabel:`Contract` will be filled out automatically
#. Add a pay :guilabel:`Period`
#. Select a salary :guilabel:`Structure` (e.g., return-to-work payment)
#. Unlike payslips generated from a batch, the payroll user must click the :guilabel:`Compute Sheet`
button to generate payslip lines
.. image:: australia/worked-days-input.png
:alt: One-time payments in Odoo Payroll.
Understand payslip features
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The same features apply no matter how payslips are created (individually or via batch).
Depending on how work entries are created, the :guilabel:`Worked Days & Inputs` table
automatically shows the number of days and hours the employee worked during the payslip period next
to the corresponding total gross amount.
.. note::
There is one line per work entry type, meaning **paid** and **unpaid time-off**, in addition to
custom **hourly penalty rates** (overtime, public holidays, etc.) which are automatically added
to the table.
.. image:: australia/worked-days-compute.png
:alt: Worked days and hours in Payroll
In the :guilabel:`Other Inputs` section, You can add entries such as **allowances** and **extra
pay** items in the :guilabel:`Other Inputs` section.
- To incorporate various **allowances** into an employee's payslip, create **allowances** in
:menuselection:`Payroll --> Configuration --> Other Input Types`. Once created, tick the
:guilabel:`Is an Allowance` checkbox for the involved allowances.
.. important::
Withholding for allowances is not computed automatically. The payroll user has to use the field
:guilabel:`Withholding for allowance` under the other inputs table to manually add the total
amount to be withheld across all allowances on that payslip.
- **Extra pay** items are other inputs added to the **payslips gross** and, as a result, to the
**withholding amount**. An example lies in regular sales commissions, taxed at the same rate as
the regular salary (unlike discretionary bonuses, which fall under the ATOs Schedule 5 and its
corresponding salary structure). To configure such a custom pay item, go to
:menuselection:`Payroll --> Configuration --> Other Input Types` and create a new entry with the
code **EXTRA**.
.. image:: australia/extra-pay-item.png
:alt: Extra pay item input type
In the :guilabel:`Salary Computation` tab, the payroll user can verify whether all the pay rules
have been computed correctly as per employee, contract and salary structure. Here are a few
guidelines to better understand the data.
.. image:: australia/salary-computation.png
:alt: Salary computation in Odoo Payroll.
#. **Basic salary:** amount from which tax-deductible lines can be subtracted
#. **Gross salary:** amount subject to the taxes defined by the salary structure
#. **Withholding:** tax amount to be paid to the **ATO**
#. **Net salary:** amount to be paid to the employees bank account
#. **Superannuation Guarantee:** amount to be provisioned for quarterly payments to the employees
super account
#. **Allowances & Extra pay items:** these lines will show if other inputs are added to the payslip.
#. **Other lines:** depending on the employee and contract specifics (Medicare, child support,
salary, sacrifice, etc.)
When satisfied with the payslip, click :guilabel:`Create Draft entry` to generate a draft accounting
journal entry that the accountant can review. Note that in the case of a payslip batch, this
accounting entry will sum up balances from all payslips.
Pay employees
-------------
After a batch or a payslips journal entry has been posted, the company can pay their employees. The
user can choose between **two** different **payment methods**.
- Pay the employee in batch via **ABA** files. This is **only** possible from the **payslip batch**
level. Ensure the batchs journal entry has been posted to generate the **ABA** file. From the
batch form view, click :guilabel:`Create ABA File` and choose the desired bank journal. The newly
generated **ABA** file becomes available for download in the field :guilabel:`ABA File`. It is
possible to re-generate the ABA file after applying corrections to existing payslips.
.. note::
It is always possible to include an individual payslip into an existing batch in an **ABA**
file.
.. important::
An ABA file can only be generated if both the companys bank account and each employees bank
account have been properly :ref:`configured <australia/aba>`.
- From the employee's payslip (:menuselection:`Payroll --> Payslips`), once the payslip's journal
entry has been posted, click :guilabel:`Register Payment`. The process is the same as
:doc:`paying vendor bills <../accounting/payments>`: select the desired bank journal and payment
method, then later reconcile the payment with the corresponding bank statement.
One-time payments
~~~~~~~~~~~~~~~~~
Certain payments, such as **Return-to-Work** payments and **Employment Termination Payments**
**(ETP)**, are processed only once and require a slightly different approach.
Return-to-Work payments
***********************
A **Return-to-Work** payment is a payment made to an employee to resume working. To process one,
create an individual payslip, select the employee, and modify its **regular structure** to
:guilabel:`Australia: Return to work`. Then, add the **gross amount** of that payment in the
:guilabel:`Other Inputs` section and compute the payslip. Odoo automatically computes the **PAYG
withholding**, the **net amount**, and the **super guarantee** corresponding to that payment.
.. image:: australia/return-to-work.png
:alt: Return-to-work payment
Termination payments
********************
Before proceeding with the employees ETP, make sure that a **Contract End Date** has been set on
that employees contract so that Odoo can automatically compute the final prorated salary of that
employee for the current month.
First, create the final salary for that employee this month. To do so, create an individual payslip.
If the contract end date is set correctly, Odoo will automatically compute the prorated salary up to
the final payslip date.
.. image:: australia/attendance.png
:alt: Termination payment worked days computation in Odoo.
.. tip::
We recommend creating a batch on the fly for that payslip, in which the ETP is added as a second
payslip of that same batch.
Create a second individual payslip and include it in the same batch. Change the salary structure on
that payslip to :guilabel:`Australia: Termination Payments`. Before computing the sheet, it is
important to provide the payslip with termination details .
.. image:: australia/termination-payment.png
:alt: Termination payment
- :guilabel:`Genuine` or :guilabel:`Non-Genuine Redundancy`. This choice impacts the amounts and
caps defined per **ETP** type.
- **ETP types**: see the full list of termination payment types in
:guilabel:`Other Input Types` by filtering by `ETP Type is Set`.
.. image:: australia/payslip-other-inputs.png
:alt: Payslip other inputs
Add the relevant **ETP type** in the :guilabel:`Other Inputs` table of the payslip, then compute the
payslip. Odoo computes the **gross ETP**, the **withholding**, the **unused leaves**, and the **net
salary** according to the rules defined on the **ETP**, the **employee**, and their **contract**.
Once payment for both payslips is ready to be processed, an **ABA** file can be created directly
from the batch.
.. _australia/employment-hero:
Employment Hero payroll
=======================
If your business is already up and running with :doc:`Employment Hero <employment_hero>`, you can
use our connector as an alternative payroll solution.
.. important::
To :ref:`configure the Employment Hero API <employment_hero/configuration>` for **Australia**,
use the following value as :guilabel:`Payroll URL`: `https://api.yourpayroll.com.au/`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

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