Compare commits

...

158 Commits

Author SHA1 Message Date
Victor Feyens b0f322ffd6 [FIX] core: import jquery 2024-08-02 16:27:16 +02:00
Victor Feyens 00d78c39e4 [IMP] core: lazy load images (poc) 2024-08-02 15:39:18 +02:00
Victor Feyens 74c00734f0 fixup! [wip] 2024-08-02 15:34:59 +02:00
Xavier-Do 1a4e3d6163 [wip] 2024-07-31 16:42:31 +02:00
KC (ksc) b9cdeb304a [ADD] sales: create quotations doc
closes odoo/documentation#10431

X-original-commit: 1aee294219
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-30 01:38:27 +00:00
Parish Bracha 18be17dada [ADD] Subscriptions: Wire transfer
closes odoo/documentation#10425

X-original-commit: d8cd13b659
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-07-29 21:32:46 +00:00
jero-odoo 682a290793 [IMP] General: Multi-Company Limitations
closes odoo/documentation#10419

X-original-commit: bed068f95a
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-29 20:09:56 +00:00
Lara Martini (larm) 649b6bcd5c [ADD] Expenses: new expese reports doc
closes odoo/documentation#10411

X-original-commit: 3b40e6c1ec
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-29 18:55:11 +00:00
jero-odoo 9d4fc6cd55 [IMP] Essentials:  Export and Import
closes odoo/documentation#10410

X-original-commit: d2497d2b14
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-07-29 16:22:51 +00:00
Tom Aarab (toaa) fb1f81f735 [IMP] mexico: broken url
Removing a dead URL

taskid-3636231

closes odoo/documentation#10355

X-original-commit: 0451d1f2a8
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-29 10:32:14 +00:00
Marion (masp) 50d0d32bf6 [IMP] website: complete google search console doc
task-3799063

closes odoo/documentation#10346

X-original-commit: bea85886d4
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-07-29 10:32:13 +00:00
Sam Lieber (sali) f84c00cb0d [FW][FIX] accounting/l10n_cl: remove company image
closes odoo/documentation#10402

X-original-commit: 44c2b65fa0
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-07-26 22:59:57 +00:00
bve-odoo 70701aa589 [FIX] microsoft_outlook: redirect URL error if not matching
_compute_outlook_uri is using get_base_url, providing the
web.base.url of the database that is subject to changed as
stated on the website documentation: if the user logging-in
is using another URL to connect to the db, and has the
Administration/Settings access right (res.groups: base.group_system)

opw-4056377

closes odoo/documentation#10378

X-original-commit: 1f7c0a9b2e
Signed-off-by: Baptiste Vergote (bve) <bve@odoo.com>
2024-07-26 16:16:08 +00:00
Tom Aarab (toaa) 85cb4170af [IMP] argentina: menu move
taskid-3962220

closes odoo/documentation#10372

X-original-commit: ee8aed02c8
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-26 14:59:00 +00:00
rps-odoo a8292df22f [IMP] accounting/l10n_ec: point of sale invoicing
closes odoo/documentation#10367

X-original-commit: 7ecaf74124
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-26 12:35:09 +00:00
Donatienne (dopi) 8ab0935d74 [IMP] Sign: signing order to be updated
taskid-4058926

closes odoo/documentation#10340

X-original-commit: acf8d5e4a7
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-26 09:53:54 +00:00
Lara Martini (larm) 9486fece94 [ADD] Recruitment: adding new recruitment flow doc
closes odoo/documentation#10359

X-original-commit: afbc491940
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-25 17:31:53 +00:00
guillaume gallant (guga) cd31079f69 [IMP] Field_Service: Creating tasks page
taskid-4043610

closes odoo/documentation#10329

X-original-commit: 036593f1e1
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-25 06:38:50 +00:00
Felicious 2935c3b2df [IMP] inventory: switch valuation to auto
closes odoo/documentation#10271

X-original-commit: cb51299cf1
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-07-24 22:09:05 +00:00
guillaume gallant (guga) b00ae1f3b0 [IMP] Field_Service: add product to the task
taskid-4043214

closes odoo/documentation#10321

X-original-commit: 93a0f41756
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-24 07:27:06 +00:00
Tiffany Chang (tic) 0f87ffef1a [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#10316

X-original-commit: bf9bbff058
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-07-24 07:27:05 +00:00
Lara Martini (larm) 23e773f31e [ADD] spreadsheet: global filters
closes odoo/documentation#10317

X-original-commit: 32976cdd84
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Samuel Lieber <sali@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-07-23 17:35:01 +00:00
Parish Bracha a1371aee87 [ADD] crm: add marketing attribution doc
Apply suggestions from code review

closes odoo/documentation#10284

X-original-commit: 53f8dcd991
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-07-23 16:22:49 +00:00
jero-odoo f2f9b32a1d [ADD] Members: members analysis
closes odoo/documentation#10301

X-original-commit: 00e96e5635
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-23 13:30:13 +00:00
Donatienne (dopi) ad06489c98 [MOV] ecommerce: moving product management page
taskid-4056328

closes odoo/documentation#10255

X-original-commit: d03b45c6f9
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-23 06:03:43 +00:00
Felicious 86fa534deb [IMP] inventory: refactor WH and locations
closes odoo/documentation#10297

X-original-commit: c4fd10f94e
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-22 21:56:28 +00:00
John Holton (hojo) 3667e71c92 [ADD] Manufacturing: OEE
closes odoo/documentation#10289

X-original-commit: 63ba53a942
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-22 17:17:52 +00:00
jero-odoo 599e50159e [IMP] Users: Enforce two-factor authentication
closes odoo/documentation#10285

X-original-commit: 634a5af824
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-22 13:00:15 +00:00
Donatienne (dopi) cc7857b363 [IMP] Sign: reminders
taskid-4053507

closes odoo/documentation#10275

X-original-commit: 9ac8eedf8a
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-22 08:00:05 +00:00
KC (ksc) 4b3fecf2cb [ADD] events: event booths doc (17)
closes odoo/documentation#10267

X-original-commit: a42a88bf7c
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-19 16:30:13 +00:00
jero-odoo 1f788bf750 [ADD] Users: Facebook OAuth
closes odoo/documentation#10262

X-original-commit: 8cea31c24d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-07-19 16:30:12 +00:00
Lara Martini (larm) 0edc606b42 [ADD] Referrals: new points doc
closes odoo/documentation#10258

X-original-commit: 17ee273d7f
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-19 16:30:06 +00:00
Donatienne (dopi) 8377f9f068 [IMP] Documents: email alias
taskid-3898917

closes odoo/documentation#10252

X-original-commit: b2ba466e61
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-19 15:01:56 +00:00
nni-odoo b81c06ecef [IMP] payment_xendit: tokenization
Tokenization is introduced in https://github.com/odoo/odoo/pull/158445 and needs extra configuration to setup for credit card payment.
We require optional 3DS to be enabled and dynamic 3DS to be disabled

closes odoo/documentation#10248

X-original-commit: bd06b95cbe
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Nigel Nicholas (nni) <nni@odoo.com>
2024-07-19 15:01:53 +00:00
jero-odoo 36de103e3a [FIX] VoIP: Correct Axivox Link
closes odoo/documentation#10244

X-original-commit: e238e63240
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-07-19 11:55:57 +00:00
Felicious 3d920ded85 [IMP] inventory: sendcloud shipping rules
closes odoo/documentation#10198

X-original-commit: 21779a5eb6
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-18 06:15:22 +00:00
KC (ksc) 2b6fa74e40 [FIX] subscriptions: corrected invoicing info
closes odoo/documentation#10201

X-original-commit: 1f88f9dd67
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-17 18:15:04 +00:00
Felicious 7674dbdbbc [IMP] inventory: bpost customer accounts
closes odoo/documentation#10173

X-original-commit: 2250cd9c78
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-07-17 18:15:03 +00:00
guillaume gallant (guga) a76635c09c [IMP] Field Service: Correction on Itinerary doc
task 4053589

closes odoo/documentation#10228

X-original-commit: 79745b702f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-07-17 15:33:58 +00:00
Donatienne (dopi) d4565c6c20 [IMP] Website: link to be updated
taskid-4047508

closes odoo/documentation#10223

X-original-commit: baf1e9b464
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-17 15:33:56 +00:00
Donatienne (dopi) 81b1a9fd8e [IMP] website: translations
taskid-3617120

closes odoo/documentation#10221

X-original-commit: fda2534a74
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-17 14:01:48 +00:00
Lara Martini (larm) d91cead9e7 [ADD] Recruitment: offer job positions
closes odoo/documentation#10212

X-original-commit: 11a2af286d
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-17 10:36:00 +00:00
Lara Martini (larm) 4827f3fe20 [ADD] Time off: new allocations doc
closes odoo/documentation#10207

X-original-commit: 7c10386675
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-17 09:14:47 +00:00
lejeune quentin 4a24238376 [ADD] point_of_sale: Documentation for Viva wallet
This PR add the documentation needed to use viva wallet payment method in Point Of Sale.
task-3667968

closes odoo/documentation#10188

X-original-commit: 7598c57f48
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
Co-authored-by: lejeune quentin <qle@odoo.com>
Co-authored-by: Perazzo Loredana <lrpz@odoo.com>
2024-07-17 06:56:57 +00:00
Parish Bracha e6d68071fc [IMP] crm: add quotation product catalog
closes odoo/documentation#10150

X-original-commit: 9af6b453fe
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-07-17 06:56:55 +00:00
Parish Bracha bce2a875c5 [IMP] CRM: Inactive lost leads
closes odoo/documentation#10139

X-original-commit: 11ef368a58
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-07-17 06:56:54 +00:00
Parish Bracha b738a4e002 [IMP] sales: 100 percent down section
closes odoo/documentation#10125

X-original-commit: 9d228fc301
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-07-17 06:56:53 +00:00
“Audrey 3da71625f1 [ADD] Studio: approval rules
task-3553095

closes odoo/documentation#10146

X-original-commit: 28d5856640
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-16 17:59:46 +00:00
John Holton (hojo) 833109636a [ADD] Manufacturing: Continuous product improvement
closes odoo/documentation#10154

X-original-commit: d4fe1eb4d1
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-15 19:04:46 +00:00
John Holton (hojo) 044670f15e [ADD] Manufacturing: MO costs
closes odoo/documentation#10127

X-original-commit: 2de0593eb7
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-15 19:04:45 +00:00
Donatienne (dopi) 1bb11f0654 [IMP] documents: new changes in V17
closes odoo/documentation#10181

Taskid: 3491654
X-original-commit: 3b573b0e60
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-12 12:46:00 +00:00
Aaron Bohy 63789b0aa7 [IMP] reference/user_interface: adapt list width attr doc
This commit rewrittes the documentation of the `width` attribute
in list views, following recent changes [1]

[1] odoo/odoo#170511

closes odoo/documentation#10160

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2024-07-11 17:14:12 +00:00
Zuzanna Luczynska 04aacf8863 [ADD] project: new task creation and statuses docs
task-4010729

closes odoo/documentation#10037

X-original-commit: 5938ac0931
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Zuzanna Luczynska (zulu) <zulu@odoo.com>
2024-07-11 06:49:02 +00:00
guillaume gallant (guga) e180e1066f [ADD] field_service: create new page about worksheet
task-3991994

closes odoo/documentation#10085

X-original-commit: 18ca6d9f80
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-07-09 15:53:40 +00:00
KC (ksc) 7f09bae364 [IMP] sales: added important admonition to amazon docs
closes odoo/documentation#10109

X-original-commit: 03f5c0660e
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-08 15:31:57 +00:00
jero-odoo ce069df416 [IMP] IoT: clear printer cache
closes odoo/documentation#10128

X-original-commit: 6e18b6f7de
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-08 12:10:00 +00:00
jero-odoo d55739b2c5 [IMP] Helpdesk: merge tickets
closes odoo/documentation#10111

X-original-commit: f56dce3a15
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-08 12:09:59 +00:00
Tom Aarab (toaa) 32c7993e1c [IMP] loca kenya: remove screenshot
Removing a leftover screenshot.

closes odoo/documentation#10089

X-original-commit: 5a151eafd5
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-07-08 07:41:49 +00:00
Felicious c1ea6d7a38 [FIX] inventory: UoM redirect rules
closes odoo/documentation#10094

X-original-commit: 58990cb4c6
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-07-05 10:53:44 +00:00
“Dallas” abb2e04f10 [FIX] german localization: Fixed broken GoBD link
If merged, this commit will replace the broken GoBD link with the correct link.

task ID: 4034487

closes odoo/documentation#10081

X-original-commit: 0e783b0dfa
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2024-07-05 06:51:03 +00:00
Krzysztof Magusiak (krma) 479ab2028e [IMP] core: remove 'inselect' operator
PR odoo/odoo#171371

closes odoo/documentation#10026

Related: odoo/enterprise#65796
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-07-05 05:39:11 +00:00
xpl-odoo e8c6f3421c [FIX] sign: line break after 100 characters
closes odoo/documentation#10073

X-original-commit: 50b8a2100d
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-07-05 04:25:38 +00:00
Lara Martini (larm) 54a9fedea2 [ADD] Appraisals: new appraisal doc
closes odoo/documentation#10060

X-original-commit: 9c5cee3f96
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-04 01:12:38 +00:00
Lara Martini (larm) 3806da48e7 [ADD] Lunch: new vendors doc
closes odoo/documentation#10056

X-original-commit: 4072bf6ece
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-03 17:37:02 +00:00
jero-odoo f836a2c5ad [ADD] General: Multi Company
closes odoo/documentation#10050

X-original-commit: 0e82e60673
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-07-03 17:37:00 +00:00
Audrey (auva) f7fd7b09df [IMP] payment_providers: availability report on payment form
task-3827488

closes odoo/documentation#10048

X-original-commit: 81d0fd06d4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-03 15:31:52 +00:00
xpl-odoo 01f78636f8 [ADD] sign: legality
task-4008122

closes odoo/documentation#10044

X-original-commit: fa64368f21
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-07-03 08:48:13 +00:00
Tom Aarab (toaa) 54064a06ef [IMP] loca: Kenya menu update
Menus moved around since last PR. This updates it.

taskid-4028177

closes odoo/documentation#10038

X-original-commit: 18c7aa4c47
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-07-03 08:48:10 +00:00
John Holton (hojo) 7d92fb64f3 [IMP] Manufacturing: Update MPS
closes odoo/documentation#9979

X-original-commit: e79a2e674d
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-02 16:23:50 +00:00
Lara Martini (larm) 6435abfbad [ADD] Fleet: new models doc
closes odoo/documentation#10023

X-original-commit: 0752255be8
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-01 14:36:09 +00:00
jero-odoo 1ed9dd99d8 [ADD] Members: Overview
closes odoo/documentation#10022

X-original-commit: 35500f8035
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-01 13:06:04 +00:00
Donatienne (dopi) a04bb90354 [IMP] General: Change language
taskid-3964562

closes odoo/documentation#9985

X-original-commit: 8f5909a0cb
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-01 11:50:52 +00:00
jero-odoo 22c18c0165 [IMP] CRM: merge leads improvements
closes odoo/documentation#10014

X-original-commit: fc144a96fd
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-28 20:38:46 +00:00
Sam Lieber (sali) b8e1f50ea6 [ADD] data cleaning: overview
closes odoo/documentation#10013

X-original-commit: 8ca247d9dd
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-28 20:38:45 +00:00
Lara Martini (larm) 89a11e2e96 [IMP] Attendances: updating hardware to include badges
closes odoo/documentation#10012

X-original-commit: 9ae3ffc925
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 20:38:45 +00:00
jero-odoo 5df8a40c6e [IMP] Live Chat: Canned responses
closes odoo/documentation#10002

X-original-commit: 6d74ff585b
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-28 19:23:51 +00:00
jero-odoo 07ac9eda1f [ADD] Live chat: participate
closes odoo/documentation#10001

X-original-commit: 9ed575b01e
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@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>
2024-06-28 19:23:50 +00:00
Lara Martini (larm) 27a3014633 [ADD] Attendances: new kiosk mode doc
closes odoo/documentation#10000

X-original-commit: d383da505d
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 19:23:49 +00:00
Rodrigo Alfaro Domínguez c94ab5301c [IMP] sales: market connectors eBay marketplace
Added how to configure the policies of the product in order to prevent the error ```Input data for tag <Item.SellerProfiles.SellerPaymentProfile.PaymentProfileID> is invalid or missing.````from appearing when the user is listing the product. Also changed the section of listing images to indicate that they are necessary to prevent error ```A description is required.(106)Add at least 1 photo. More photos are better! Show off your item from every angle and zoom in on details.(21919136)``` from appearing. The first error is really common when a user is listing products and there have been multiple help tickets opened for the same reason

closes odoo/documentation#9999

X-original-commit: 4e5ae3ea87
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-28 19:23:48 +00:00
Lara Martini (larm) b593192db4 [ADD] Recruitment: schedule interviews
closes odoo/documentation#9980

X-original-commit: 217ca237bf
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 15:38:55 +00:00
jero-odoo 4f198849bb [ADD] Contacts: Merge Contacts
closes odoo/documentation#9981

X-original-commit: 9584fed709
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: pabr-odoo <pabr@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-28 12:50:59 +00:00
jero-odoo 7a388707bc [ADD] IoT: SSH Connection
closes odoo/documentation#9968

X-original-commit: cac8d8a558
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2024-06-28 12:50:59 +00:00
Donatienne (dopi) 813dba5b92 [IMP] Documents: share section to be improved
taskid-3898917

closes odoo/documentation#9950

X-original-commit: 3acda8ef04
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-06-27 08:10:46 +00:00
Tom Aarab (toaa) 96f521a160 [IMP] Kenya loca: adding onboarding steps explanations
Adding a fews steps to sign up on eTIMS and link Odoo.

taskid-3835

closes odoo/documentation#9957

X-original-commit: 0d28e54c4a
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-06-26 15:51:11 +00:00
Lara Martini (larm) edffa80d3c [ADD] Referrals: new rewards doc
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
X-original-commit: 9feca1b4e4

[ADD] Referrals: new rewards doc

closes odoo/documentation#9615

closes odoo/documentation#9943

X-original-commit: f0a3f4cb41
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-25 16:42:56 +00:00
Tiffany Chang (tic) 7d608d8a0e [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#9934

X-original-commit: 06b380921b
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-06-24 17:47:46 +00:00
Donatienne (dopi) d9441dcf1c [ADD] wesbite: responsiveness
taskid-3725615

closes odoo/documentation#9929

X-original-commit: 1bad5cebaf
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-06-24 17:47:43 +00:00
John Holton (hojo) 8ad9f28f24 [ADD] Manufacturing: Allocation reports
closes odoo/documentation#9924

X-original-commit: 54de7881a2
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-24 17:47:34 +00:00
Lara Martini (larm) 80dbfbdd15 [ADD] Time off: new my time doc
closes odoo/documentation#9920

X-original-commit: 2ed1db8304
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-24 16:25:14 +00:00
John Holton (hojo) a6e04372a8 [IMP] Inventory: Reordering rules 001 update
closes odoo/documentation#9906

X-original-commit: da4186c1c2
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-24 16:25:11 +00:00
XPL dd93828247 [IMP] upgrade: remove ticket go-live mention
The phrase is confusing and leads customers to contact support to carry out
the upgrade for them.

closes odoo/documentation#9909

X-original-commit: 8e143196f1
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-06-24 10:09:54 +00:00
guillaume gallant (guga) baf256fc40 [IMP] point_of_sale: improve text and replace pictures for Vantiv
task-3005157

closes odoo/documentation#9865

X-original-commit: cc4aa47012
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-24 07:12:49 +00:00
Adrien Widart (awt) fbadb8cca0 [IMP] supported_versions: end of saas-16.4
closes odoo/documentation#9907

X-original-commit: 37ca3f1917
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Adrien Widart (awt) <awt@odoo.com>
2024-06-22 09:26:48 +00:00
John Holton (hojo) 9f94e19837 [IMP] Maintenance: update add new equipment
closes odoo/documentation#9877

X-original-commit: d25d62d1c0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-22 00:05:38 +00:00
Felicious 11f3f830a8 [IMP] inventory: automatic config instructions
closes odoo/documentation#9914

X-original-commit: d31b997900
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: toaa <104567387+toaa-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-21 19:58:21 +00:00
Lara Martini (larm) 19058c1876 [ADD] Lunch: New products doc
closes odoo/documentation#9905

X-original-commit: 2ae0e15982
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-21 18:31:09 +00:00
Lara Martini (larm) 33d781c5a5 [ADD] Time Off: New management doc
closes odoo/documentation#9889

X-original-commit: 7dfcac709d
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-21 17:12:09 +00:00
KC (ksc) 467e2f2550 [IMP] sales: add event prods to quote templates
closes odoo/documentation#9878

X-original-commit: 55f2d86800
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-21 15:54:53 +00:00
jero-odoo 0dadc8e580 [IMP] Contacts: partner webpage edit
closes odoo/documentation#9870

X-original-commit: 14a91520df
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-21 12:20:45 +00:00
Donatienne (dopi) 90bab61e66 [IMP] website: cookies bar
taskid-3961318

closes odoo/documentation#9857

X-original-commit: eb1eb38cce
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-06-21 10:28:08 +00:00
aliya 862d07ba5b [IMP] accounting: peppol
Recently the Peppol registration flow has been updated and new features were added.
This commit:
- Updates the registration flow description in Peppol documentation
- Explains the decoupling between a sender and a receiver

task-3964853

closes odoo/documentation#9850

X-original-commit: 969a6d940a
Signed-off-by: Aliya Tastemirova (alta) <alta@odoo.com>
2024-06-18 17:10:46 +00:00
Lara Martini (larm) 757c4ec23e [ADD] Recruitment: new applicant doc
closes odoo/documentation#9846

X-original-commit: d83af483ba
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-18 14:12:00 +00:00
Lara Martini (larm) 47a9da91ac [ADD] Referrals: new rewards doc
closes odoo/documentation#9686

X-original-commit: 148549b3d0
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-18 02:24:51 +00:00
John Holton (hojo) b846ff3a57 [IMP] Inventory: Update dropshipping doc
closes odoo/documentation#9836

X-original-commit: 62bc2eda35
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-17 23:21:55 +00:00
John Holton (hojo) a0e0e994a6 [ADD] Manufacturing: By-Products
closes odoo/documentation#9842

X-original-commit: 4975afda0d
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-17 16:21:22 +00:00
Sam Lieber (sali) 03d435ea31 [IMP] reference/user_interface: 17.0 odoo ui icons
closes odoo/documentation#9830

X-original-commit: d506554ed0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-17 14:46:20 +00:00
jero-odoo 201c82d9c9 [ADD] CRM: Resellers
closes odoo/documentation#9829

X-original-commit: 594f3573d9
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-17 14:46:19 +00:00
Aaron Bohy a164b8ab65 [IMP] reference/user interface: remove kanban-tooltip doc
This feature has been dropped.

(Part of) task `3650117`

closes odoo/documentation#9604

Related: odoo/odoo#167751
Related: odoo/enterprise#63714
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2024-06-17 11:35:45 +00:00
Aaron Bohy 05500b1416 [IMP] reference/user interface: kanban: color attribute
(Part of) task `3650117`

Part-of: odoo/documentation#9604
Related: odoo/odoo#167751
Related: odoo/enterprise#63714
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2024-06-17 11:35:45 +00:00
Aaron Bohy ce5a8d554d [IMP] reference/user interface: kanban: can_open attribute
(Part of) task `3650117`

Part-of: odoo/documentation#9604
Related: odoo/odoo#167751
Related: odoo/enterprise#63714
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2024-06-17 11:35:45 +00:00
Felicious 0d624f6c3e [ADD] inventory: bpost
closes odoo/documentation#9811

X-original-commit: 886e1dc19c
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: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-15 16:33:45 +00:00
KC (ksc) 93b07b8a25 [IMP] sales: add expense category context to reinvoice
closes odoo/documentation#9819

X-original-commit: 68ecabb435
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-14 14:31:03 +00:00
KC (ksc) b93a4f78dd [FIX] sales: corrected ecommerce category field issue
closes odoo/documentation#9818

X-original-commit: d21e9d8c12
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-14 14:31:02 +00:00
jero-odoo b774e6f99b [IMP] Contacts: memberships and partners tabs
closes odoo/documentation#9807

X-original-commit: 8beae0b9e5
Signed-off-by: Jessica Rogers (jero) <jero@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: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-13 19:07:52 +00:00
KC (ksc) 6cf5d44380 [IMP] events: added supplemental content to create events
closes odoo/documentation#9806

X-original-commit: 636441b94c
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-13 19:07:51 +00:00
jero-odoo 14a5b77169 [IMP] Discuss: Chatter icons
closes odoo/documentation#9799

X-original-commit: 9aa160f042
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-06-13 17:47:09 +00:00
Brandon Seltenrich (BRSE) fff0e0f2a7 [IMP] purchase: update vendor bills copy
closes odoo/documentation#9794

X-original-commit: 118e31d96a
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-13 14:31:15 +00:00
Tom Aarab (toaa) e04e586ef4 [IMP] Localization: Kenya
Updating and expanding the Kenyan localization.

taskid-3794719

closes odoo/documentation#9787

X-original-commit: 5d87049d92
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-06-13 10:43:37 +00:00
Felicious 16d2e1582f [IMP] inventory: fix landed costs note
closes odoo/documentation#9777

X-original-commit: 6fe36eacc4
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-06-12 23:40:43 +00:00
jero-odoo cbd8f2e8d9 [IMP] email faqs: email limit
closes odoo/documentation#9732

X-original-commit: 57212a6798
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-12 13:49:47 +00:00
Lara Martini (larm) 410ee3fe39 [ADD] Appraisals: new reporting doc
closes odoo/documentation#9698

X-original-commit: 55d3d59a64
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-12 13:49:46 +00:00
KC (ksc) cd19ebd5ac [FIX] crm: typo in gamification doc
closes odoo/documentation#9625

X-original-commit: a99c1cd7e1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-12 13:49:45 +00:00
guillaume gallant (guga) 047cf49add [FIX] point_of_sale: replace receipt image
task-3834714

closes odoo/documentation#9772

X-original-commit: 3320f52cdd
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-06-12 07:43:14 +00:00
Brandon Seltenrich (BRSE) c8f509746d [IMP] inventory: update 3 step delivery doc
closes odoo/documentation#9778

X-original-commit: a77f2cf3b1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-06-11 18:54:57 +00:00
John Holton (hojo) c74b788b8f [ADD] Quality: Failure locations
closes odoo/documentation#9682

X-original-commit: 3b1f9f6df2
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-11 18:54:55 +00:00
Audrey (auva) 9b93e7788e [FIX] voip: broken contact link
Changed https://www.axivox.com/contact into https://www.axivox.com/en/contact
as it didn't exist (anymore).

closes odoo/documentation#9766

X-original-commit: f9ab7b716b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 16:06:32 +00:00
Loredana Perazzo b306f91ed4 [IMP] pos: remove Epson TM-20 from list of compatible
task-3925551

closes odoo/documentation#9660

X-original-commit: 2e47b6a600
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 10:39:34 +00:00
Felicious ce5973e335 [MOV] inventory: shipping labels
closes odoo/documentation#9739

X-original-commit: 928e3bb43e
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-11 01:19:45 +00:00
Felicious e68deaf9d6 [IMP] inventory: reserve full vs partial packaging
closes odoo/documentation#9737

X-original-commit: dc0dec9d65
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-10 23:40:13 +00:00
Sam Lieber (sali) a18a378a87 [ADD] accounting/l10n_us: usa accounting
closes odoo/documentation#9753

X-original-commit: 5272e38c26
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: tiku-odoo <tiku@odoo.com>
Co-authored-by: larm-odoo <larm@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-06-10 20:05:11 +00:00
Nguyen Minh Tran Manh Cuong 64db022a95 [FW][FIX] tutorials/server_framework_101: position of form's notebook element
The notebook element should be nested in the sheet element.

closes odoo/documentation#9748

Forward-port-of: odoo/documentation#9744
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-10 18:50:00 +00:00
Serge Bayet (seba) 48bc8793a3 [ADD] administration: neutralized databases doc
This commit updates the documentation for neutralized databases to
include information about how search engine indexing is prevented for
these databases.

task-3895772

closes odoo/documentation#9714

X-original-commit: c770eb5618
Signed-off-by: Serge Bayet (seba) <seba@odoo.com>
2024-06-10 08:10:26 +00:00
tong-odoo 1695ad998b [IMP] accounting: employment hero added taxes mapping descriptions
Impacted Versions:

- saas-17.1 and above

closes odoo/documentation#9722

X-original-commit: b9695b0e5d
Related: odoo/enterprise#64143
Signed-off-by: Tommy Ng (tong) <tong@odoo.com>
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
2024-06-10 06:51:14 +00:00
Lara Martini (larm) 0557514788 [ADD] Recruitment: New refuse applicants doc
closes odoo/documentation#9723

X-original-commit: cd32574f88
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-07 22:04:03 +00:00
jero-odoo 2e7f7b0dc5 [ADD] CRM: Forecast report
closes odoo/documentation#9716

X-original-commit: f6994a1047
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-07 22:04:00 +00:00
guillaume gallant (guga) 2b98d9c304 [ADD] Field service: adding itinerary planning page
Added a new page to plan itinerary maps

taskid-3959000

closes odoo/documentation#9630

X-original-commit: 4983adb63f
Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-06-07 08:20:07 +00:00
Parish Bracha b10d17af6a [IMP] sales: add discounts section to pricing doc
closes odoo/documentation#9697

X-original-commit: 6c74ac42f9
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-06 21:50:39 +00:00
Parish Bracha 11b77ac549 [IMP] crm: add equation explanation in leads doc
closes odoo/documentation#9690

X-original-commit: 96f3a3e846
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-06-06 20:21:55 +00:00
Enmanuel Otero Montano f9f855cd2e [FW][FIX] howtos/javascript_view: fix typo
A typo was found. The word "customeKanbanView" is misspelled and should be "customKanbanView", which is the constant exported correctly in the code. Therefore, the corrected line would be:

closes odoo/documentation#9676

Forward-port-of: odoo/documentation#9661
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-06 16:27:19 +00:00
Sam Lieber (sali) 4734ddb7be [ADD] marketing automation: double opt-in template
closes odoo/documentation#9668

X-original-commit: 2341f42d4a
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-06 16:27:16 +00:00
Felicious 3606b35230 [IMP] inventory: carrier label and export doc
closes odoo/documentation#9650

X-original-commit: fe3281523c
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-05 18:55:20 +00:00
KC (ksc) 33244724b0 [MOV] surveys: rename time_random to questions
closes odoo/documentation#9645

X-original-commit: 011ef11978
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-05 12:50:12 +00:00
KC (ksc) 6535c1d587 [IMP] events: full rewrite of essentials
closes odoo/documentation#9644

X-original-commit: 184dd5f93f
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-05 12:50:11 +00:00
jero-odoo 99e8ebf5de [IMP] essentials: activities updates
closes odoo/documentation#9635

X-original-commit: 5f566009c7
Signed-off-by: Jessica Rogers (jero) <jero@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: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-04 19:06:06 +00:00
John Holton (hojo) f83fce2125 [ADD] Manufacturing: Basic subcontracting lead times
closes odoo/documentation#9519

X-original-commit: 36da7b90a4
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-04 16:29:27 +00:00
Ray Carnes 93e76fe08b [IMP] eCommerce: fix digital file location on portal
Corrected the part of the Customer Portal where digital products can be found after purchase.

closes odoo/documentation#9452

X-original-commit: eca1b7ffd3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-06-04 16:29:26 +00:00
Donatienne (dopi) 4ee7077ac8 [IMP] website: multiple website
taskid- 3716945

closes odoo/documentation#9503

X-original-commit: da6d3e6740
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-04 13:22:32 +00:00
Naman Shah e9b1f18822 [ADD] accounting/l10n: add section in GSTR-1 report (India)
In this commit added the flow of generate spreadsheet view of GSTR-1 report.

task-3884120

closes odoo/documentation#9613

X-original-commit: 90fe2b31b1
Signed-off-by: Naman Shah (nash) <nash@odoo.com>
2024-06-04 04:39:43 +00:00
KC (ksc) f6107b4858 [IMP] events: full rewrite of sell tickets
closes odoo/documentation#9601

X-original-commit: 4d21807379
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-03 19:53:46 +00:00
Lara Martini (larm) dbf69f4019 [ADD] Attendances: moving check in section to new doc
closes odoo/documentation#9569

X-original-commit: aef490c600
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-03 19:53:43 +00:00
Alice Gaudon b0627464e5 [IMP] tutorials: add example code for LazyComponent
js framework/Build a Dashboard/part 8 (LazyComponent)

There is no explicit instructions on how to use `LazyComponent`.

- add an example code snippet for minimal use of `LazyComponent`
- add the `.js` extension to the file you're supposed to create to make it a bit more intuitive
- fix `actions` registry name (missing an s)
- reword instructions in a more straightforward way

closes odoo/documentation#9596

X-original-commit: 15c6bb8b0e
Signed-off-by: Florent Dardenne (dafl) <dafl@odoo.com>
Signed-off-by: Alice Gaudon (agau) <agau@odoo.com>
2024-06-03 12:04:58 +00:00
Tiffany Chang (tic) 3bfd593757 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#9587

X-original-commit: f1d8cb8f16
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-06-03 08:45:22 +00:00
Lara Martini (larm) 35931b493d [IMP] Payroll: add necessary contract modules
closes odoo/documentation#9595

X-original-commit: 9a0e87e861
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-01 17:48:06 +00:00
jero-odoo 2c38a625e1 [ADD] Purchase: procurement expenses report
closes odoo/documentation#9565

X-original-commit: ab659db849
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-01 16:32:20 +00:00
tiku-odoo 9dac99024f [ADD] essentials: contacts
closes odoo/documentation#9562

X-original-commit: 3d5841894d
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-01 16:32:19 +00:00
Xavier-Do d11dcd33d1 [IMP] adapt documentation for new install script
closes odoo/documentation#9559

X-original-commit: f1bd4ec134
Related: odoo/odoo#167454
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-06-01 16:32:16 +00:00
Vincent Larcin 59afd5062d [IMP] *: standardize spelling of “cancelled” across documentation
In https://github.com/odoo/odoo/pull/129722, we settled on using the spelling “cancelled”,
and removed all occurrences of “canceled” from the codebase.

This commit does the same for the documentation.

Task-3951276

closes odoo/documentation#9494

Signed-off-by: Vincent Larcin (vila) <vila@odoo.com>
2024-06-01 16:32:07 +00:00
jero-odoo 88880b8915 [IMP] Purchase: vendor costs report 17.0
closes odoo/documentation#9554

X-original-commit: f46dda5e61
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-31 20:14:38 +00:00
697 changed files with 40663 additions and 17586 deletions
+5 -4
View File
@@ -41,9 +41,8 @@ current_major_version = current_major_branch.replace('.0', '')
# The minimal Sphinx version required to build the documentation.
needs_sphinx = '3.0.0'
# The default language in which the documentation is written. It is set to `None` because Sphinx
# considers that no language means 'en'.
language = None
# The default language in which the documentation is written.
language = 'en'
# The suffix of source filenames.
source_suffix = '.rst'
@@ -65,6 +64,8 @@ exclude_patterns = [
# See https://docutils.sourceforge.io/docs/ref/rst/roles.html#standard-roles for other roles.
default_role = 'literal'
# Global config to lazy load images by default
image_loading = 'lazy'
# Whether scaled down images should be be wrapped in a `<a/>` tag linking to the image file or not.
html_scaled_image_link = False
@@ -498,7 +499,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
_root = app.config.project_root
else:
# Project root like .../documentation/_build/html/14.0/fr
_root = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', app.outdir)
_root = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', str(app.outdir))
# If the canonical version is not set, assume that the project has a single version
_canonical_version = app.config.canonical_version or app.config.version
_version = _version or app.config.version
@@ -21,7 +21,7 @@ turned into a testing environment.
Deactivated features
====================
Here is a non-exhaustive list of the deactivated parameters:
Here is a non-exhaustive list of the deactivated features:
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
- outgoing emails
@@ -29,6 +29,7 @@ Here is a non-exhaustive list of the deactivated parameters:
- payment providers
- delivery methods
- :abbr:`IAP (In-App Purchase)` tokens
- website visibility (prevent search engines from indexing your site)
.. note::
**A red banner at the top of the screen is displayed on the neutralized database so that it can
+9 -5
View File
@@ -277,18 +277,22 @@ Dependencies
.. tab:: Debian/Ubuntu
For Debian-based systems, the packages are listed in the `debian/control
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
On Debian/Ubuntu, the following commands should install the required packages:
.. code-block:: console
$ cd /CommunityPath
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
$ cd odoo #CommunityPath
$ sudo ./setup/debinstall.sh
The `setup/debinstall.sh` script will parse the `debian/control
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
.. tab:: Install with pip
.. warning::
Using pip may lead to security issues and broken dependencies; only do this if you
know what you are doing.
As some of the Python packages need a compilation step, they require system libraries to
be installed.
@@ -50,7 +50,7 @@ This matrix shows the support status of every version.
- November 2023
- October 2026 (planned)
* - Odoo saas~16.4
- |green|
- |red|
- N/A
- N/A
- August 2023
-3
View File
@@ -272,9 +272,6 @@ Upgrading the production database
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
database can be used as your main database without any issues, it is time to plan the go-live day.
It can be planned in coordination with Odoo's upgrade support analysts by `submitting a ticket for
an issue related to my future upgrade (I am testing an upgrade)
<https://odoo.com/help?stage=migration>`_.
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
the upgrade at a time when the use of the database is minimal.
+1
View File
@@ -7,5 +7,6 @@ Odoo essentials
essentials/activities
essentials/reporting
essentials/search
essentials/contacts
essentials/export_import_data
essentials/in_app_purchase
+40 -44
View File
@@ -2,20 +2,22 @@
Activities
==========
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
*Activities* are follow-up tasks tied to a record in an Odoo database.
.. _activities/important:
The icon used to display activities varies depending on the :ref:`activity type <activities/types>`:
The icon used to display activities varies, depending on the :ref:`activity type
<activities/types>`:
- :guilabel:`🕘 (clock)`: the default icon, which appears if nothing is scheduled.
- :guilabel:`📞 (phone)`: this icon appears if a phone call is scheduled.
- :guilabel:`✉️ (envelope)`: this icon appears if an email is scheduled.
- :guilabel:`✔️ (checkmark)`: this icon appears if a to-do is scheduled.
- :guilabel:`(group of people)`: this icon appears if a meeting is scheduled.
- :guilabel:`(arrow pointing up above a line)`: this icon appears if a document is scheduled to be
uploaded.
- :guilabel:`(pencil in a box)`: this icon appears if a signature request is scheduled.
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
Schedule activities
===================
@@ -44,13 +46,9 @@ Schedule Activity form <activities/form>`.
Kanban view
-----------
Another way that activities are created is from the Kanban view in an application.
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
.. image:: activities/kanban.png
:align: center
:alt: The Kanban icon in the top menu, highlighted.
To do so, click on the :guilabel:`🕘 (clock)` icon located at the bottom of an individual record.
To do so, click on the |clock| located at the bottom of an individual record.
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
<activities/form>`.
@@ -60,28 +58,26 @@ Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Sch
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. _activities/list:
List view
---------
Activities can also be created from a list view.
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
If the :guilabel:`Activities` column is hidden, reveal it using the :guilabel:`(additional options
toggle)` icon in the far-right of the top row, represented by two horizontal lines with two dots.
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
:guilabel:`(settings adjust)` icon in the far-right of the top row.
Then, click on the :guilabel:`🕘 (clock)` icon for the record the activity is being added to, then
click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form
<activities/form>` that appears.
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
appears.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. image:: activities/schedule-list-activity.png
:align: center
@@ -92,10 +88,10 @@ click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule
Activity view
-------------
Most applications in Odoo have an *Activity* view available. If available, a :guilabel:`🕘 (clock)`
activity icon is visible in the top-right of the main menu bar.
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
the top-right corner of the main menu bar, amongst the other view option icons.
To open the activity view, click the :guilabel:`🕘 (clock)` activity icon.
To open the activity view, click the |clock|.
.. image:: activities/activities.png
:align: center
@@ -114,12 +110,12 @@ If multiple activity types are scheduled for a record, a number appears in the b
total number of scheduled activities.
.. note::
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
regardless of the activity type, or the view.
To schedule an activity for a record, hover over the corresponding field, and a :guilabel:` (plus
sign)` appears. Click the :guilabel:` (plus sign)`, and then :ref:`fill out the Schedule Activity
form <activities/form>`.
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
<activities/form>`.
.. image:: activities/activity-view.png
:align: center
@@ -140,12 +136,6 @@ Enter the following information on the form:
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
Depending on what other applications are installed, additional options may be available.
.. note::
Individual applications have a list of dedicated :ref:`activity types <activities/types>`. For
example, installing the *Sales* application makes :guilabel:`Order Upsell` available, while
installing the *Sign* application makes :guilabel:`Request Signature` available.
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
@@ -187,11 +177,11 @@ buttons:
All scheduled activities
========================
To view a consolidated list of activities, organized by application, click the :guilabel:`🕘
(clock)` icon in the header menu, located in the top-right.
To view a consolidated list of activities, organized by application, click the |clock| in the header
menu, located in the top-right corner.
If any activities are scheduled, the number of activities appear in a red bubble on the
:guilabel:`🕘 (clock)` icon.
|clock|.
All activities for each application are further divided into subsections, indicating where in the
application the activity is to be completed. Each sub-section lists the number of scheduled
@@ -252,6 +242,11 @@ To view the currently configured types of activities in the database, navigate t
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
.. tip::
Individual applications have a list of *Activity Types* dedicated to that application. For
example, to view and edit the activities available for the *CRM* application, go to
:menuselection:`CRM app --> Configuration --> Activity Types`.
.. image:: activities/activity-list.png
:align: center
:alt: The list of activity types already configured and available.
@@ -264,7 +259,7 @@ activity type form loads.
Make any desired changes to the activity type form. The form automatically saves, but it can be
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
:guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
Create new activity types
-------------------------
@@ -347,3 +342,4 @@ It is possible to have another activity either suggested or triggered. To do so,
.. seealso::
- :doc:`../productivity/discuss`
- :doc:`../productivity/discuss/team_communication`
- :doc:`../sales/crm/optimize/utilize_activities`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,263 @@
:show-content:
========
Contacts
========
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
the company does business with through Odoo. A contact is a repository of vital business
information, facilitating communication and business transactions.
Contact form
============
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
:guilabel:`Create`. A new form appears where various contact information can be added.
Contact type
------------
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
Name
----
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
appears throughout the database. This field is **mandatory**.
.. tip::
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
first name field.
Address
-------
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
.. tip::
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
Address`.
Additional fields
-----------------
Additional details are included on the initial form. The following fields are available:
- :guilabel:`VAT`: Value Added Tax number.
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
on :guilabel:`Individual`).
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
:guilabel:`Individual`).
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
message by hovering over the field on the saved form, and clicking the desired option.
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
- :guilabel:`Email`: enter the email address with the domain.
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
menu, and selecting one. To create a new one, type the new tag in the field, and click
:guilabel:`Create` from the resulting drop-down menu.
Contacts & Addresses tab
------------------------
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
example, a specific contact person for the company can be listed here.
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
.. image:: contacts/contact-form-add-address.png
:align: center
:alt: Add a contact/address to the contact form.
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
Address` field at the top to reveal a drop-down menu of address-related options.
Select any of the following options:
- :guilabel:`Contact`: adds another contact to the existing contact form.
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
- :guilabel:`Private Address`: adds a private address to the existing contact form.
.. image:: contacts/create-contact-window.png
:align: center
:alt: Create a new contact/address on a contact form.
Once an option is selected, enter the corresponding contact information that should be used for the
specified address type.
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
selected. This is similar to the :guilabel:`Individual` contact.
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
applicable to the customer or contact.
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
Sales & Purchase tab
--------------------
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
**or** *Point of Sale* applications are installed.
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
:guilabel:`Fiscal Position` from the drop-down menu.
Sales section
~~~~~~~~~~~~~
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
Point Of Sale section
~~~~~~~~~~~~~~~~~~~~~
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
of a *Loyalty Program*.
Purchase section
~~~~~~~~~~~~~~~~
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
Misc section
~~~~~~~~~~~~
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
information for this contact. If this contact should only be accessible for one company in a
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
*Helpdesk* SLA policy to this contact.
Accounting tab
--------------
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
Identifier, if necessary.
Internal Notes tab
------------------
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
left on this contact form, just like on the contact form noted above.
Partner Assignment tab
----------------------
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
Review` configurations. These are **only** present when the *Resellers* module is installed.
.. seealso::
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
information on publishing partners on the website.
Membership tab
--------------
Finally, there is the :guilabel:`Membership` tab on contact forms, which can help users manage any
memberships that are being offered to this specific contact. It should be noted that this tab
**only** appears when the *Members* application is installed.
Activate membership
~~~~~~~~~~~~~~~~~~~
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
when both fields are filled in.
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
:guilabel:`Membership` tab of a contact form.
.. seealso::
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
members on the website.
Smart buttons
=============
At the top of the contact form, there are some additional options available, known as *smart
buttons*.
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
Odoo integrates information from every single app, so there are many smart buttons.
.. example::
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
related to this customer from the *CRM* app are accessible.
.. tip::
If the corresponding applications are installed, their related smart buttons appear
automatically on a contact form.
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
this, should there be any outstanding/on-file for this contact.
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
clicking the :guilabel:`Go to Website` smart button.
Archive contacts
----------------
If a user decides they no longer want to have this contact active, the record can be archived. To do
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
:guilabel:`Archive`.
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
With this contact successfully archived, as indicated by a banner at the top, they do not show up
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
.. tip::
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
the contact is restored.
.. seealso::
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
- `Odoo's eLearning Contacts tutorial
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
.. toctree::
:titlesonly:
contacts/merge
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,78 @@
==============
Merge contacts
==============
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
information in the process. This keeps the database organized, and prevents contacts from being
contacted by more than one salesperson.
.. _contacts/merge-duplicate:
Merge duplicate contacts
========================
.. danger::
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
should be combined.
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
.. image:: merge/merge-menu.png
:align: center
:alt: The merge contacts option in the Contacts application.
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
confirming they should be merged. If any contacts in the list should **not** be merged, click the
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
.. tip::
Click the individual contact to open the record for that contact, and view additional
information.
.. image:: merge/merge-window.png
:align: center
:alt: The merge pop-up window in the Contacts application.
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
field defaults to the contact record that was created first in the system.
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
Deduplicate contacts
====================
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
duplicated records, based on selected criteria, and merges them automatically, or after manual
approval.
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
Contacts` pop-up window.
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
be searched, based on the following criteria:
- :guilabel:`Email`
- :guilabel:`Name`
- :guilabel:`Is Company`
- :guilabel:`VAT`
- :guilabel:`Parent Company`
.. note::
If more than one field is selected, only records that have **all** fields in common are suggested
as duplicates.
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
duplicates can be excluded from the search, based on the following criteria:
- :guilabel:`A user associated to the contact`
- :guilabel:`Journal Items associated to the contact`
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
above <contacts/merge-duplicate>`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -2,6 +2,9 @@
Export and import data
======================
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
modification. This document covers the export and import of data into and out of Odoo.
@@ -20,9 +23,9 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
each available application.
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
(:guilabel:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
select the records that should be exported. To select a record, tick the checkbox next to the
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
(|list|), on the items that need to be exported, then select the records that should be exported. To
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
then :guilabel:`Export`.
.. image:: export_import_data/list-view-export.png
:align: center
@@ -36,9 +39,10 @@ several options for the data to export:
:alt: Overview of options to consider when exporting data in Odoo..
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
only shows the fields that can be imported. This is helpful in the case where the existing
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
field options because it shows all the fields, not just the ones that can be imported.
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
unticked, gives many more field options because it shows all the fields, not just the ones that
can be imported.
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
items are separated by a comma, while `.xls` holds information about all the worksheets in a
file, including both content and formatting.
@@ -70,7 +74,8 @@ Import data into Odoo
=====================
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
be updated in bulk. The following documentation covers how to import data into an Odoo database.
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
data into an Odoo database.
.. warning::
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
@@ -158,6 +163,9 @@ Once the template is downloaded, proceed to follow these steps:
using the fields that should be imported. This way, if there is not a sample import template,
the names are accurate.
.. _essentials/external-id:
Import from another application
-------------------------------
@@ -166,7 +174,8 @@ from previous software to facilitate the transition to Odoo.
Setting an ID is not mandatory when importing, but it helps in many cases:
- Update imports: import the same file several times without creating duplicates.
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
creating duplicates.
- :ref:`Import relation fields <export_import_data/relation-fields>`.
To recreate relationships between different records, the unique identifier from the original
@@ -176,10 +185,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
the original unique identifier. This record can also be found using its name.
.. warning::
It should be noted that there will be a conflict if two or more records have the same name.
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
Field missing to map column
---------------------------
@@ -476,3 +482,43 @@ The two files produced are ready to be imported in Odoo without any modification
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
companies (the first two contacts are linked to the first company). Keep in mind to first import
the companies, and then the people.
.. _essentials/update-data:
Update data in Odoo
===================
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
<essentials/external-id>` remains consistent.
Prepare data export
-------------------
To update data through an import, first navigate to the data to be updated, and select the |list| to
activate list view. On the far-left side of the list, tick the checkbox for any record to be
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
menu.
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
to update data (import-compatible export)`. This automatically includes the *External ID* in the
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
that are able to be imported.
.. note::
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
Select the required fields to be included in the export using the :ref:`options <export-data>` on
the pop-up window, then click :guilabel:`Export`.
Import updated data
-------------------
After exporting, make any necessary changes to the data file. When the file is ready, it can be
:ref:`imported <import-data>` by following the same process as a normal data import.
.. danger::
When updating data, it is extremely important that the *External ID* remain consistent, as
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
duplicate record, instead of updating the existing one.
@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
.. seealso::
:doc:`Cash basis <accounting/taxes/cash_basis>`
.. _accounting/multi-company:
Multi-company
=============
@@ -112,8 +112,8 @@ If not done yet, :ref:`install <general/install>` the :guilabel:`Peppol` module
- 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**.
- You can send and receive 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,
@@ -126,79 +126,102 @@ Registration
Go to :menuselection:`Accounting --> Configuration --> Settings`. If you do not have the
Peppol module installed, first tick the :guilabel:`Enable PEPPOL` checkbox and then **manually
save**.
save**. Click :guilabel:`Start sending via Peppol` to open the registration form.
.. image:: electronic_invoicing/peppol-install.png
:alt: Peppol module installation
.. note::
This registration form also pops up if you choose to :guilabel:`Send & Print` an
invoice via Peppol without completing the registration process.
.. image:: electronic_invoicing/peppol-registration-settings.png
:alt: Peppol registration button
You can register either as a sender or a receiver. A sender can only send invoices and credit notes
on Odoo via Peppol, without ever registering as a Peppol participant on Odoo SMP. If you have an
existing Peppol registration elsewhere that you want to keep, but want to send invoices from your
Odoo database and receive other documents in another software, register as a **sender**.
.. tip::
- You can always register as a sender first and register to receive documents later.
- When registering, you can specify if you would also like to receive documents.
.. image:: electronic_invoicing/peppol-registration-wizard.png
:alt: Peppol registration form
Fill in the following information:
- :guilabel:`Peppol EAS`. This is the Peppol Electronic Address Scheme and usually depends on your
- Check the receiver box if you want to register on Odoo SMP. If you are migrating from another
service provider, insert the :guilabel:`Migration key` from the previous provider (the field
becomes visible after you tick the checkbox).
- :guilabel:`E-Address Scheme`: the Peppol Electronic Address Scheme 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`
For example, the preferred EAS code for most companies in Belgium is `0208`.
- :guilabel:`Endpoint`: this is usually a Company Registry number or a VAT number.
- :guilabel:`Phone`: phone number including the country code (e.g., `+32` in Belgium).
- :guilabel:`Email`: this is the email Odoo can use to contact you regarding your Peppol
registration.
If you want to explore or demo Peppol, you can choose to register in :guilabel:`Demo` mode.
Otherwise, select :guilabel:`Live`.
.. tip::
- Selecting :guilabel:`Demo` simulates everything in Odoo. There is no sending, receiving, or
partner verification.
- For **advanced users only**, it is possible to run tests on Peppol's test network. The server
allows to register on Peppol and send/receive test invoices to/from other participants.
To do so, enable the :ref:`developer-mode`, open the **Settings** app, go to
:menuselection:`Technical --> System Parameters`, and search for `account_peppol.edi.mode`.
Click the parameter and change the :guilabel:`Value` to `test`. Go back to the Peppol setup
menu in the **Settings** app. The option :guilabel:`Test` is now available.
.. image:: electronic_invoicing/peppol-system-parameter.png
:alt: Peppol test mode parameter
.. 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.
When set up, request a verification code to be sent to you by clicking :guilabel:`Send a
registration code by SMS`. A text message containing a code is sent to the phone number provided to
finalize the verification process.
.. image:: electronic_invoicing/peppol-settings.png
:alt: Configuration for peppol
Finally, click :guilabel:`Validate registration`. If you want to explore or demo Peppol, you can
choose to register in :guilabel:`Demo` mode. Otherwise, select :guilabel:`Live`.
.. image:: electronic_invoicing/peppol-demo-mode.png
:alt: Peppol demo mode selection
.. note::
When testing Peppol, the system parameter `account_peppol.edi.mode` can be changed to `test`.
Then, a radio button appears with the option to register on the test server.
.. image:: electronic_invoicing/peppol-system-parameter.png
:alt: Peppol test mode parameter
.. image:: electronic_invoicing/peppol-test-mode-settings.png
:alt: Peppol test mode selection
Now, you can request a verification code to be sent to you by clicking :guilabel:`Verify phone
number`.
.. image:: electronic_invoicing/peppol-registration-verify.png
:alt: phone validation request verification
A text message containing a code is sent to the phone number provided to finalize the verification
process.
.. image:: electronic_invoicing/phone-registration.png
.. image:: electronic_invoicing/peppol-phone-verification.png
:alt: phone validation
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.
Once you enter the code and click :guilabel:`Register`, your Peppol participant status is updated.
If you chose to only send documents, then the status changes to :guilabel:`Can send but
not receive`.
If you opted to receive documents as well, the status changes to :guilabel:`Can send, pending
registration to receive`. In that case, it should be automatically activated within a day.
.. image:: electronic_invoicing/peppol-registration-pending.png
:alt: pending application
It should be automatically activated within a day.
Then, set the default journal for receiving vendor bills in the :guilabel:`Incoming Invoices
Journal`.
.. 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`.
To manually trigger the cron that checks the registration status, enable the
:ref:`developer-mode`, then go to :menuselection:`Settings --> Technical --> Scheduled Actions`,
and search for the :guilabel:`PEPPOL: update participant status` action.
Your application status should be updated soon after you are registered on the Peppol network.
Your receiver application status should be updated soon after you are registered on the Peppol
network.
.. image:: electronic_invoicing/peppol-registration-active.png
:alt: active application
.. image:: electronic_invoicing/peppol-receiver.png
:alt: receiver application
All invoices and vendor bills can now be sent directly using the Peppol network.
.. important::
To update the email that Odoo can use to contact you, modify the email and click
:guilabel:`Update contact details`.
Configure Peppol services
-------------------------
Once you are registered on Odoo SMP, the :guilabel:`Configure Peppol Services` button
becomes visible to allow you to enable or disable document formats that other participants
can send you via Peppol. By default, all document formats supported by Odoo are enabled (depending
on the installed modules).
Contact verification
--------------------
@@ -222,6 +245,13 @@ It is possible to verify the Peppol participant status of several customers at o
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and switch to the list view.
Select the customers you want to verify and then click :menuselection:`Actions --> Verify Peppol`.
If the participant is registered on the Peppol network but cannot receive the format you selected
for them, the :guilabel:`Peppol endpoint validity` label changes to :guilabel:`Cannot
receive this format`.
.. image:: electronic_invoicing/peppol-participant-format.png
:alt: verify contact ubl format
Send invoices
-------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

@@ -32,7 +32,7 @@ valuation <inventory/avg_price/leaving_inventory>`.
.. seealso::
- :doc:`Using inventory valuation
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
- :ref:`Other inventory valuation methods <inventory/warehouses_storage/costing_methods>`
Configuration
=============
@@ -263,7 +263,7 @@ value** increases based on the vendor price of the products that have entered th
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
.. seealso::
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
- :ref:`Anglo-Saxon vs. Continental <inventory/warehouses_storage/accounting-types>`
The table below reflects journal entries and accounts. The *stock input* account stores the money
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
@@ -15,6 +15,8 @@ When browsing your chart of accounts, you can sort the accounts by :guilabel:`Co
.. image:: chart_of_accounts/chart-of-accounts-sort.png
:alt: Group the accounts by type in Odoo Accounting
.. _chart-of-account/create:
Configuration of an account
===========================
@@ -20,6 +20,8 @@ for use at a later date:
- `Odoo Tutorials: Bank Configuration
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
.. _payments/register:
Registering payment from an invoice or bill
===========================================
@@ -40,6 +40,8 @@ of your organisation as at a particular date.
.. image:: reporting/main_reports09.png
.. _accounting/reporting/balance-sheet:
Profit and Loss
---------------
@@ -49,6 +51,8 @@ report period.
.. image:: reporting/main_reports10.png
.. _accounting/reporting/executive-summary:
Executive Summary
-----------------
@@ -126,6 +130,8 @@ payment during a selected month and several months prior.
.. image:: reporting/main_reports07.png
.. _accounting/reporting/cash-flow-statement:
Cash Flow Statement
-------------------
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

+61 -157
View File
@@ -4,9 +4,9 @@
Expenses
========
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
then be processed and disbursed back to the employee for reimbursement(s).
Odoo *Expenses* streamlines the management of expenses. After an employee submits their expenses in
Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
processed, and disbursed back to the employee for reimbursement.
.. seealso::
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
@@ -62,16 +62,16 @@ report the actual cost when submitting an expense report.
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
:guilabel:`Cost` at `0.00`:
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
- **Meals**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
they enter the actual amount of the bill and will be reimbursed for that amount. An expense for
a meal costing $95.23 would equal a reimbursement for $95.23.
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
- **Mileage**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
"mileage", they enter the number of miles driven in the :guilabel:`Quantity` field, and are
reimbursed 0.30 per mile they entered. An expense for 100 miles would equal a reimbursement for
$30.00.
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
- **Monthly Parking**: set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
"monthly parking", the reimbursement would be for $75.00.
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
- **Expenses**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
the reimbursement would be for $350.00.
@@ -98,10 +98,10 @@ the default :guilabel:`My Expenses` view. This view can also be accessed from
First, click :guilabel:`New`, and then fill out the various fields on the form.
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
- :guilabel:`Description`: enter a short description for the expense in the :guilabel:`Description`
field. This should be short and informative, such as `lunch with client` or `hotel for
conference`.
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
- :guilabel:`Category`: select the expense category from the drop-down menu that most closely
corresponds to the expense. For example, an airplane ticket would be appropriate for an expense
:guilabel:`Category` named :guilabel:`Air Travel`.
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
@@ -119,7 +119,7 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles* driven, and the total
is calculated.
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
- :guilabel:`Included Taxes`: if taxes were configured on the expense category, the tax percentage
and amount appear automatically after entering either the :guilabel:`Total` or the
:guilabel:`Quantity`.
@@ -127,20 +127,20 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value will
update in real time as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
- :guilabel:`Employee`: using the drop-down menu, select the employee this expense is for.
- :guilabel:`Paid By`: click the radio button to indicate who paid for the expense and should be
reimbursed. If the employee paid for the expense (and should be reimbursed) select
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
credit card was used to pay for the expense) select :guilabel:`Company`. Depending on the expense
category selected, this field may not appear.
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
- :guilabel:`Bill Reference`: if there is any reference text that should be included for the
expense, enter it in this field.
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
- :guilabel:`Expense Date`: using the calendar module, enter the date the expense was incurred. Use
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
click on the specific day to enter the selection.
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
- :guilabel:`Account`: select the expense account that this expense should be logged on from the
drop-down menu.
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
- :guilabel:`Customer to Reinvoice`: if the expense is something that should be paid for by a
customer, select the :abbr:`SO (Sales Order)` and customer that will be invoiced for this expense
from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales
Order)` as well as the company the sales order is written for, but after the expense is saved, the
@@ -152,14 +152,13 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
expenses tied to that meeting would indicate the sales order for the custom garden (which also
references the customer) as the :guilabel:`Customer to Reinvoice`.
- :guilabel:`Analytic Distribution`: Select the account(s) the expense should be written against
from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both.
Multiple accounts can be listed for each category if needed. Adjust the percentage for each
analytic account by typing in the percentage value next to the account.
- :guilabel:`Company`: If multiple companies are set up, select the company this expense should be
filed for from the drop-down menu. The current company will automatically populate this field.
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
notes field.
- :guilabel:`Analytic Distribution`: select the accounts the expense should be written against from
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
account by typing in the percentage value next to the account.
- :guilabel:`Company`: if multiple companies are set up, select the company this expense should be
filed for from the drop-down menu. The current company automatically populates this field.
- :guilabel:`Notes...`: if any notes are needed to clarify the expense, enter them in this field.
.. image:: expenses/expense-filled-in.png
:align: center
@@ -263,110 +262,6 @@ appears: :guilabel:`Use this reference as a subject prefix when submitting by em
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
- The :guilabel:`Cost` for the expense is `$25.00`
.. _expenses/report:
Create an expense report
========================
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
Expenses --> My Expenses`.
Expenses are color coded by status. Any expense with a status of :guilabel:`To Report` (expenses
that still need to be added to an expense report) the text appears in blue. All other statuses
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
First, select each individual expense for the report by clicking the check box next to each entry,
or quickly select all the expenses in the list by clicking the check box next to :guilabel:`Expense
Date`.
Another way to quickly add all expenses that are not on an expense report is to click
:guilabel:`Create Report` without selecting any expenses, and Odoo will select all expenses with a
status of :guilabel:`To Submit` that are not already on a report.
.. image:: expenses/create-report.png
:align: center
:alt: Select the expenses to submit, then create the report.
.. note::
Any expense can be selected from the :guilabel:`My Expenses` list, regardless of status. The
:guilabel:`Create Report` button is visible as long as there is a minimum of 1 expense with a
status of :guilabel:`To Report` selected. When the :guilabel:`Create Report` button is clicked,
only expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense
report will appear in the newly created expense report.
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
to an individual expense, a :guilabel:`📎 (paperclip)` icon appears next to the :guilabel:`Customer
to Reinvoice` and :guilabel:`Analytic Distribution` columns.
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
Summary` field by default. It is recommended to edit this field with a short summary for each report
to help keep expenses organized. Enter a short description for the expense report (such as `Client
Trip NYC`, or `Repairs for Company Car`) in the :guilabel:`Expense Report Summary` field. Next,
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If
needed, the :guilabel:`Journal` can be changed. Use the drop-down menu to select a different
:guilabel:`Journal`.
.. image:: expenses/expense-report-summary.png
:align: center
:alt: Enter a short description and select a manager for the report.
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
a line` at the bottom of the :guilabel:`Expense` tab. A pop up appears with all the available
expenses that can be added to the report (with a status of :guilabel:`To Submit`). Click the check
box next to each expense to add, then click :guilabel:`Select`. The items now appear on the report
that was just created. If a new expense needs to be added that does *not* appear on the list, click
:guilabel:`New` to create a new expense and add it to the report.
.. image:: expenses/add-an-expense-line.png
:align: center
:alt: Add more expenses to the report before submitting.
.. note::
Expense reports can be created in one of three places:
#. Go to the main :menuselection:`Expenses` app dashboard (also accessed by going to
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
#. Go to :menuselection:`Expenses app --> My Expenses --> My Reports`
#. Go to :menuselection:`Expenses app --> Expense Reports`
In any of these views, click :guilabel:`New` to create a new expense report.
.. _expenses/submit:
Submit an expense report
------------------------
When an expense report is completed, the next step is to submit the report to a manager for
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
specific report from the list of expense reports (if the report is not already open). To view all
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
If the list is large, grouping the results by status may be helpful since only reports that have a
:guilabel:`To Submit` status need to be submitted, reports with an :guilabel:`Approved` or
:guilabel:`Submitted` status do not.
The :guilabel:`To Submit` expenses are easily identifiable not just from the :guilabel:`To Submit`
status, but the text appears in blue, while the other expenses text appears in black.
.. image:: expenses/expense-status.png
:align: center
:alt: Submit the report to the manager.
.. note::
The status of each report is shown in the :guilabel:`Status` column on the right. If the
:guilabel:`Status` column is not visible, click the :guilabel:`Additional Options (two dots)`
icon at the end of the row, and enable :guilabel:`Status`.
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
the next step is to wait for the manager to approve it.
.. important::
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
**only** for users with the *necessary rights*.
.. _expenses/approve:
Approve expenses
@@ -386,10 +281,10 @@ To see who has rights to approve, go to the main :menuselection:`Settings` app a
:guilabel:`Administration` section (bottom right of the :guilabel:`Access Rights` tab) is set to
one of three options:
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
- :guilabel:`None (blank)`: the user cannot access the *Settings* app at all.
- :guilabel:`Access Rights`: the user can only view the :guilabel:`User's & Companies` section of
the *Settings* app.
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
- :guilabel:`Settings`: the user has access to the entire *Settings* app with no restrictions.
Please refer to :doc:`this document </applications/general/users>` to learn more about managing
users and their access rights.
@@ -398,12 +293,12 @@ Click on an individual to view their card, which displays the :guilabel:`Access
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
there are four options:
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
- :guilabel:`None (blank)`: a blank field means the user has no rights to view or approve expense
reports, and can only view their own.
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
- :guilabel:`Team Approver`: the user can only view and approve expense reports for their own
specific team.
- :guilabel:`All Approver`: The user can view and approve any expense report.
- :guilabel:`Administrator`: The user can view and approve any expense report, as well as access the
- :guilabel:`All Approver`: the user can view and approve any expense report.
- :guilabel:`Administrator`: the user can view and approve any expense report, as well as access the
reporting and configuration menus in the *Expenses* app.
Users who are able to approve expense reports (typically managers) can easily view all expense
@@ -416,18 +311,18 @@ reports with a status of :guilabel:`Refused` are hidden in the default view.
:align: center
:alt: Reports to validate are found on the Reports to Approve page.
When viewing expense reports, there is a panel of filters that can be enabled or disabled on the
left side. The three categories that filters can be applied on are :guilabel:`Status`,
When viewing expense reports, there is a panel of filters that can be enabled (or disabled) on the
left side. The three categories where filters can be applied on are :guilabel:`Status`,
:guilabel:`Employee`, and :guilabel:`Company`. To view only expense reports with a particular
status, enable the specific status filter to display the expense reports with only that status.
Disable the specific status filter to hide the reports with that status. To view expense reports for
a particular employee and/or company, enable the specific employee name filter and/or company filter
in the :guilabel:`Employee` and :guilabel:`Company` sections.
Reports can be approved in two ways (individually or several at once) and refused only one way. To
Reports can be approved in two ways (individually or several at once), and refused only one way. To
approve multiple expense reports at once, remain in the list view. First, select the reports to
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all the reports in the list.
approve by ticking the checkbox next to each report, or tick the checkbox next to
:guilabel:`Employee` to select all the reports in the list.
.. important::
Only reports with a status of :guilabel:`Submitted` can be approved. It is recommended to only
@@ -435,7 +330,7 @@ to select all the reports in the list.
:guilabel:`Submitted` filter enabled.
If a report is selected that is unable to be approved, the :guilabel:`Approve Report` button
**will not appear**, indicating there is a problem with the selected report(s).
does **not** appear, indicating there is a problem with the selected report.
Next, click the :guilabel:`Approve Report` button.
@@ -483,9 +378,9 @@ Post expenses in accounting
===========================
Once an expense report is approved, the next step is to post the report to the accounting journal.
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only the
expense reports that have been approved and need to be posted, adjust the filters on the left side
so that only the :guilabel:`Approved` status is enabled.
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only
the expense reports that have been approved and need to be posted, adjust the filters on the left
side so that only the :guilabel:`Approved` status is enabled.
.. image:: expenses/post-reports.png
:align: center
@@ -493,8 +388,8 @@ so that only the :guilabel:`Approved` status is enabled.
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
post multiple expense reports at once, remain in the list view. First, select the reports to post by
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
all the reports in the list. Next, click :guilabel:`Post Entries`.
ticking the checkbox next to each report, or tick the checkbox next to :guilabel:`Employee` to
select all the reports in the list. Next, click :guilabel:`Post Entries`.
.. image:: expenses/post-entries.png
:align: center
@@ -532,8 +427,9 @@ Reports --> Reports To Pay`.
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all the reports in the list. Next, click :guilabel:`Register Payment`.
to pay by ticking the checkbox next to each report, or tick the checkbox next to
:guilabel:`Employee` to select all the reports in the list. Next, click :guilabel:`Register
Payment`.
.. image:: expenses/register-payment.png
:align: center
@@ -567,7 +463,7 @@ If expenses are tracked on customer projects, expenses can be automatically char
customer. This is done by creating an expense, referencing the :abbr:`SO (Sales Order)` the expense
should be added to, and then creating the expense report. Next, managers approve the expense report,
and the accounting department posts the journal entries. Finally, once the expense report is posted
to a journal, the expense(s) appears on the :abbr:`SO (Sales Order)` that was referenced. The sales
to a journal, the expenses appear on the :abbr:`SO (Sales Order)` that was referenced. The sales
order can then be invoiced, thus invoicing the customer for the expense.
Setup
@@ -589,11 +485,11 @@ Create an expense
-----------------
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
entered in order to re-invoice a customer. Select the *sales order* the expense will appear on in
the :guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
:guilabel:`Analytic Account` the expense will be posted to. After the expense(s) are created, the
expense report needs to be :ref:`created <expenses/report>` and :ref:`submitted <expenses/submit>`
as usual.
entered to re-invoice a customer. Select the sales order the expense should appear on in the
:guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
:guilabel:`Analytic Account` the expense should be posted to. After the expenses are created, the
expense report needs to be :doc:`created <expenses/expense_reports>`, and :ref:`submitted
<expenses/submit>`, as usual.
.. image:: expenses/reinvoice-expense.png
:align: center
@@ -609,11 +505,11 @@ as usual.
Validate and post expenses
--------------------------
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
Only employees with permissions (typically, managers or supervisors) can :ref:`approve expenses
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic
Distribution` is set on every expense line of a report. If an :guilabel:`Analytic Distribution` is
missing, assign the correct account(s) from the drop-down menu, and then click :guilabel:`Approve`
or :guilabel:`Refuse`.
missing, assign the correct accounts from the drop-down menu, and click :guilabel:`Approve` or
:guilabel:`Refuse`.
The accounting department is typically responsible for :ref:`posting journal entries
<expenses/post>`. Once an expense report is approved, it can then be posted. The :abbr:`SO (Sales
@@ -651,3 +547,11 @@ Next, click :guilabel:`Create Invoice`, and select if the invoice is for a :guil
invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)` by
clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. The customer has now
been invoiced for the expenses.
.. seealso::
:doc:`expenses/expense_reports`
.. toctree::
:titlesonly:
expenses/expense_reports
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

@@ -0,0 +1,125 @@
===============
Expense reports
===============
When expenses are ready to submit (such as, at the end of a business trip, or once a month), an
*expense report* needs to be created. Open the main :menuselection:`Expenses app` dashboard, which
displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses
that still need to be added to an expense report) is shown in blue text. All other statuses
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
Create expense reports
======================
First, select each desired expense to be added to the report on the :guilabel:`My Expenses`
dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the
list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed.
Another way to quickly add all expenses that are not on a expense report, is to click the
:guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects
all expenses with a status of :guilabel:`To Submit` that are not already on a report.
.. image:: expense_reports/create-report.png
:align: center
:alt: Select the expenses to submit, then create the report.
.. note::
Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a
status of :guilabel:`Approved`.
The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on
the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`.
When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To
Submit` that are *not* currently on another expense report appears in the newly-created expense
report.
If all expenses on the :guilabel:`My Expenses` report are already associated with another expense
report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no
expenses to report.`
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the
:guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns.
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
Summary` field, by default. It is recommended to edit this field with a short summary for each
report to help keep expenses organized. Enter a description for the expense report, such as `Client
Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field.
The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the
information listed on the individual expenses.
Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
If needed, update the :guilabel:`Journal` field, using the drop-down menu.
.. image:: expense_reports/expense-report-summary.png
:align: center
:alt: Enter a short description and select a manager for the report.
If some expenses are missing from the report, they can still be added from this report form. To do
so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab.
An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with
a :guilabel:`To Submit` status) that can be added to the report.
If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to
:ref:`create a new expense <expenses/new>` and add it to the report.
Tick the checkbox next to each expense being added, then click :guilabel:`Select`.
Doing so removes the pop-up window, and the items now appear on the report.
.. image:: expense_reports/add-an-expense-line.png
:align: center
:alt: Add more expenses to the report before submitting.
.. note::
Expense reports can be created in one of three places:
#. Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
#. Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`
#. Navigate to :menuselection:`Expenses app --> Expense Reports`
In any of these views, click :guilabel:`New` to create a new expense report.
.. _expenses/submit:
Submit expense reports
======================
When an expense report is completed, the next step is to submit the report to a manager for
approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses -->
My Reports`. Open the specific report from the list of expense reports.
.. note::
Reports must be individually submitted, and **cannot** be submitted in batches.
If the list is large, grouping the results by status may be helpful, since only reports with a
:guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or
:guilabel:`Submitted` status do not.
The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the
blue text, while all other expense text appears in black.
.. image:: expense_reports/expense-status.png
:align: center
:alt: Submit the report to the manager.
.. note::
The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status`
column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon
at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting
drop-down menu.
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
the next step is to wait for the manager to approve it.
.. important::
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
**only** for users with the appropriate *access rights*.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -122,7 +122,7 @@ available on Odoo.
- :doc:`United Arab Emirates - Accounting <fiscal_localizations/united_arab_emirates>`
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
- Ukraine - Accounting
- United States - Accounting
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
- Uruguay - Accounting
- Venezuela - Accounting
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
@@ -162,4 +162,5 @@ available on Odoo.
fiscal_localizations/vietnam
fiscal_localizations/united_arab_emirates
fiscal_localizations/united_kingdom
fiscal_localizations/united_states
fiscal_localizations/employment_hero
@@ -758,9 +758,9 @@ Cancel an own check
*******************
To cancel an own check created in Odoo, navigate to :menuselection:`Accounting --> Vendors --> Own
Checks` and select the check to be canceled, then click on the :guilabel:`Void Check` button. This
Checks` and select the check to be cancelled, then click on the :guilabel:`Void Check` button. This
will break the reconciliation with the vendor bills and the bank statements and leave the check in a
**canceled** state.
**cancelled** state.
.. image:: argentina/empty-check-button.png
:align: center
@@ -1018,69 +1018,37 @@ specific product.
Reports
=======
As part of the localization installation, financial reporting for Argentina was added to the
:guilabel:`Accounting` dashboard. Access these reports by navigating to :menuselection:`Accounting
--> Reporting --> Argentinean Reports`
As part of the localization installation, financial reporting for Argentina is available in the
:guilabel:`Accounting` dashboard. To access these reports, navigate to :menuselection:`Accounting
--> Reporting --> Argentinean Statements`.
.. image:: argentina/argentinian-reports.png
:align: center
:alt: Argentinean reports.
To access the VAT book report, go to :menuselection:`Accounting --> Reporting --> Tax Report`, click
the :icon:`fa-book` (:guilabel:`book`), and select :guilabel:`Argentinean VAT book (AR)`.
VAT reports
-----------
Sales VAT book
~~~~~~~~~~~~~~
This report records all the sales, which are taken as the basis for the accounting records
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
to the AFIP portal.
.. image:: argentina/sales-vat-book.png
:align: center
:alt: Sales VAT book.
Purchases VAT book
~~~~~~~~~~~~~~~~~~
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
portal.
.. image:: argentina/purchases-vat-book.png
:align: center
:alt: Purchases VAT book.
.. note::
The VAT book report can be exported as a `.zip` file by selecting it in the dropdown menu in the
top-left corner.
VAT summary
~~~~~~~~~~~
-----------
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
sent to the AFIP.
.. image:: argentina/vat-summary.png
:align: center
:alt: VAT Summary.
IIBB - Reports
--------------
This pivot table is designed to check the monthly VAT totals. This report is for internal use and is
not sent to the AFIP.
IIBB - Sales by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
----------------------------
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
This pivot table allows you to validate the gross income in each jurisdiction. It serves as an
affidavit for the corresponding taxes due but is not submitted to the AFIP.
.. image:: argentina/iibb-sales-jurisdiction.png
:align: center
:alt: IIBB Sales by jurisdiction.
IIBB - Purchases by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--------------------------------
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
This pivot table allows you to validate the gross purchases in each jurisdiction. It serves as an
affidavit for the corresponding taxes due but is not submitted to the AFIP.
.. image:: argentina/iibb-purchases-jurisdiction.png
:align: center
:alt: IIBB Purchases by jurisdiction.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

@@ -549,7 +549,7 @@ A range of sequences that are assigned to sales journals can be invalidated with
they are not currently used, **and** will not be used in the future. To do so, navigate to the
journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number Range (BR)`. On the
:guilabel:`Invalidate Number Range (BR)` wizard, add the :guilabel:`Initial Number` and
:guilabel:`End Number` of the range that should be canceled, and enter an invalidation
:guilabel:`End Number` of the range that should be cancelled, and enter an invalidation
:guilabel:`Reason`.
.. image:: brazil/range-number-invalidation.png
@@ -563,7 +563,7 @@ journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number
(NF-e).
.. note::
The log of the canceled numbers along with the XML file are recorded in the chatter of the
The log of the cancelled numbers along with the XML file are recorded in the chatter of the
journal.
Vendor bills
@@ -511,10 +511,6 @@ Once the invoice is accepted and validated by the :abbr:`SII (Servicio de Impues
the PDF is printed, it includes the fiscal elements that indicate that the document is fiscally
valid.
.. image:: chile/sii-validation-elements.png
:alt: SII Validation fiscal elements.
:align: center
.. important::
If you are hosted in Odoo SH or On-Premise, you should manually install the `pdf417gen
<https://pypi.org/project/pdf417gen/>`_ library. Use the following command to install it:
@@ -617,7 +613,7 @@ Note` and select :guilabel:`Full Refund`, in this case the :abbr:`SII (Servicio
Internos)` reference code is automatically set to :guilabel:`Anula Documento de referencia`.
.. image:: chile/credit-note-cancel-ref-doc.png
:alt: Credit note canceling the referenced document.
:alt: Credit note cancelling the referenced document.
:align: center
Correct referenced document
@@ -742,7 +738,7 @@ vendor.
:align: center
If you claim a vendor bill, the status changes from :guilabel:`Draft` to :guilabel:`Cancel`
automatically. Considering this as best practice, all the claimed documents should be canceled as
automatically. Considering this as best practice, all the claimed documents should be cancelled as
they won't be valid for your accounting records.
Electronic purchase invoice
@@ -1196,7 +1192,7 @@ on the client's original order.
:alt: Selection of order for the refund process.
When the return payment is validated, Odoo generates the necessary credit note, referencing the
original receipt or invoice, partially or fully canceling the document.
original receipt or invoice, partially or fully cancelling the document.
.. seealso::
`Smart tutorial - Electronic invoicing for point of sale
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

@@ -33,6 +33,8 @@ Here are some terms that are essential on the Ecuadorian localization:
Configuration
=============
.. _l10n_ec/module-installation:
Modules installation
--------------------
@@ -75,7 +77,7 @@ localization:
* - :guilabel:`Ecuadorian Point of Sale`
- `l10n_ec_edi_pos`
- Includes all the technical and functional requirements to generate automatic electronic
invoices from a PoS sale.
invoices from a POS sale.
.. note::
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
@@ -631,7 +633,7 @@ time.
eCommerce workflow
~~~~~~~~~~~~~~~~~~
Type and identification number
Identification type and number
******************************
The client who is making a purchase will have the option to indicate their identification type and
@@ -639,18 +641,74 @@ number during the checkout process. This information is required to correctly ge
electronic invoice after the checkout is completed.
.. image:: ecuador/website-checkout-form.png
:align: center
:alt: Website checkout form.
.. note::
Verification is done to ensure the *Identification Number* field is completed and has the correct
number of digits. For RUC identification, 13 digits are required. For Cédula, 9 digits are
required.
Verification is done to ensure the :guilabel:`Identification Number` field is completed and has
the correct number of digits. For RUC identification, 13 digits are required. For Cédula,
9 digits are required.
After finishing the checkout process, a confirmed invoice is generated, ready to be sent manually or
asynchronously to the SRI.
Financial Reports
Point of Sale electronic invoicing
----------------------------------
Make sure the *Ecuadorian module for Point of Sale* (`l10n_ec_edi_pos`) is :ref:`installed
<l10n_ec/module-installation>` to enable the following features and configurations:
- Choose the SRI payment method in each payment method configuration.
- Manually input the customer's identification type and identification number when creating a
new contact on *POS*.
- Automatically generate a valid electronic invoice for Ecuador at the end of the checkout process.
Payment method configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To :doc:`create a payment method for a point of sale <../../sales/point_of_sale/payment_methods>`,
go to :menuselection:`Point of Sale --> Configuration --> Payment Methods`. Then, set the
:guilabel:`SRI Payment Method` in the payment method form.
Invoicing flows
~~~~~~~~~~~~~~~
Identification type and number
******************************
The POS cashier can :ref:`create a new contact for a customer <pos/customers>` who requests an
invoice from an open POS session.
The *Ecuadorian Module for Point of Sale* adds two new fields to the contact creation form:
:guilabel:`Identification Type` and :guilabel:`Tax ID`.
.. note::
As the identification number length differs depending on the identification type, Odoo
automatically checks the :guilabel:`Tax ID` field upon saving the contact form. To manually
ensure the length is correct, know that the :guilabel:`RUC` and :guilabel:`Citizenship` types
require 13 and 10 digits, respectively.
Electronic invoice: anonymous end consumer
******************************************
When clients do not request an electronic invoice for their purchase, Odoo automatically sets the
customer as :guilabel:`Consumidor Final` and generates an electronic invoice anyway.
.. note::
If the client requests a credit note due to a return of this type of purchase, the credit note
should be made using the client's real contact information. Credit notes cannot be created to
*Consumidor Final* and can be managed :ref:`directly from the POS session <pos/refund>`.
Electronic invoice: specific customer
*************************************
If a customer requests an invoice for their purchase, it is possible to select or create a contact
with their fiscal information. This ensures the invoice is generated with accurate customer details.
.. note::
If the client requests a credit note due to a return of this type of purchase, the credit note
and return process can be managed :ref:`directly from the POS session <pos/refund>`.
Financial reports
=================
In Ecuador, there are fiscal reports that the company presents to SRI. Odoo supports two of the main
@@ -46,6 +46,9 @@ Configuration
:alt: The Employment Hero "Business ID" number is in the URL
- You can choose any Odoo journal to post the payslip entries.
#. Configure the tax by going to :menuselection:`Accounting --> Configuration --> Taxes`. Create the
necessary taxes for the Employment Hero payslip entries. Fill in the tax code from
**Employment Hero** in the :guilabel:`Matching Employment Hero Tax` field.
How does the API work?
----------------------
@@ -172,7 +172,7 @@ German Tax Accounting Standards: Odoo's guide to GoBD Compliance
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
@@ -404,6 +404,16 @@ Send GSTR-1
#. The user can verify the :ref:`GSTR-1 <india/gstr-1_report>` report before uploading it to the
**GST portal** by clicking :guilabel:`GSTR-1 Report`;
#. The user can also get details to be submitted in **GSTR-1** in **Spreadsheet view** by clicking
on :guilabel:`Generate`;
.. image:: india/gst-gstr-1-generate.png
:alt: GSTR-1 generate
.. image:: india/gst-gstr-1-spreadsheet-view.png
:alt: GSTR-1 Spreadsheet View
#. If the **GSTR-1** report is correct, then click :guilabel:`Push to GSTN` to send it to the **GST
portal**. The status of the :guilabel:`GSTR-1` report changes to :guilabel:`Sending`;
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -102,18 +102,17 @@ The following codes are available when generating an e-Faktur.
Correct an invoice that has been posted and downloaded: Replace Invoice feature
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#. Cancel the original wrong invoice in Odoo. For instance, we will change the Kode Transakski from 01
to 03 for the INV/2020/0001.
#. Create a new invoice and set the canceled invoice in the *Replace Invoice* field. In this field,
#. Cancel the original wrong invoice in Odoo. For instance, we will change the Kode Transakski from
01 to 03 for the INV/2020/0001.
#. Create a new invoice and set the cancelled invoice in the *Replace Invoice* field. In this field,
we can only select invoices in *Cancel* state from the same customer.
#. As you validate, Odoo will automatically use the same e-Faktur serial number as the canceled and
#. As you validate, Odoo will automatically use the same e-Faktur serial number as the cancelled and
replaced invoice replacing the third digit of the original serial number with *1* (as requested
to upload a replacement invoice in the e-Faktur app).
.. image:: indonesia/indonesia-replace-invoice.png
:align: center
.. _localization_indonesia/reset_e-faktur:
Correct an invoice that has been posted but not downloaded yet: Reset e-Faktur
@@ -379,7 +379,7 @@ TD04 - Credit notes
~~~~~~~~~~~~~~~~~~~
It is the standard scenario for all **credit notes** issued to **domestic** clients, when we need to
formally acknowledge that the seller is reducing or canceling a previously issued invoice, for
formally acknowledge that the seller is reducing or cancelling a previously issued invoice, for
example, in case of overbilling, incorrect items, or overpayment. Just like invoices, they must be
sent to the :abbr:`SdI (Sistema di Interscambio)`, their :guilabel:`Document Type` `TD04`
@@ -7,114 +7,369 @@ Kenya
Configuration
=============
:ref:`Install <general/install>` the following modules to get all the features of the Kenyan
localization:
Install the 🇰🇪 **Kenyan** :ref:`fiscal localization package <fiscal_localizations/packages>` to get
all the features of the Kenyan localization.
.. list-table::
:header-rows: 1
eTIMS
=====
* - Name
- Technical name
- Description
* - :guilabel:`Kenyan - Accounting`
- `l10n_ke`
- Installing this module grants you access to the list of accounts used in the local GAAP and
the list of common taxes (VAT, etc.).
* - :guilabel:`Kenyan - Accounting Reports`
- `l10n_ke_reports`
- Installing this module grants you access to improved accounting reports for Kenya, such as
Profit and Loss and Balance Sheets.
The `Kenya Revenue Authority (KRA) <https://www.kra.go.ke/>`_ has implemented the
`electronic Tax Invoice Management System (eTIMS) <https://www.kra.go.ke/online-services/etims>`_
for tax collection.
You also have to install the **Kenya Tremol Device EDI Integration** package to be able to report
your taxes to the **Kenya Revenue Authority (KRA)** using the Tremol G03 Control Unit:
.. list-table::
:header-rows: 1
* - Name
- Technical name
- Description
* - :guilabel:`Kenya Tremol Device EDI Integration`
- `l10n_ke_edi_tremol`
- Installing this module integrates with the Kenyan G03 Tremol control unit device to report
taxes to KRA through TIMS.
.. image:: kenya/modules.png
:align: center
:alt: The three modules for the Kenya Fiscal Localization Package on Odoo
Kenyan TIMS integration
=======================
The Kenya Revenue Authority (KRA) has decided to go digital for tax collection through the **Tax
Invoice Management System (TIMS)**. As of December 1st, 2022, all VAT-registered persons should
comply with TIMS. The goal is to reduce VAT fraud, increase tax revenue, and increase VAT compliance
through standardization, validation, and transmission of invoices to KRA on a real-time or near
real-time basis.
All VAT-registered taxpayers should use a **compliant tax register**. Odoo decided to develop the
integration of the **Tremol G03 Control Unit (type C)**, which can be run locally through USB. This
device validates invoices to ensure financial documents meet the new regulations and send the
validated tax invoices directly to KRA. Installing a proxy server that provides a gateway between
users and the internet is required.
Installing the proxy server on a Windows device
-----------------------------------------------
Go to `odoo.com/download <https://www.odoo.com/page/download>`_, fill out the required information
and click :guilabel:`Download`.
.. image:: kenya/download.png
:align: center
:alt: Install the Proxy Server on a Windows device
Once it is loaded on your computer, a wizard opens. You have to read and agree with the terms of the
agreement. On the next page, select the :guilabel:`type of install: Odoo IoT`. Then, click
:guilabel:`Next` and :guilabel:`Install`. Once completed, click :guilabel:`Next`. Check the
:guilabel:`Start Odoo` box to be redirected to Odoo automatically, and then click :guilabel:`Finish`.
A new page opens, confirming your :doc:`IoT Box <../../general/iot/config/connect>` is up and
running. Connect your physical device **Tremol G03 Control Unit (type C)** to your laptop via USB.
In the :guilabel:`IoT Device` section, check that your Tremol G03 Control Unit (type C) appears,
confirming the connection between the device and your computer.
.. image:: kenya/iot-box.png
:align: center
:alt: Your IoT box is up and running
To submit documents through eTIMS, you must use an :abbr:`OSCU (Online Sales Control Unit)` that
integrates with the existing **Trader Invoicing System (TIS)**, such as the one provided by Odoo.
The OSCU is used to validate, encrypt, sign, transmit, and store tax invoices.
.. note::
If the device is not detected, try to plug it in again or click on the :guilabel:`Restart` button
in the top right corner.
Make sure to :ref:`install <general/install>` the **Kenya eTIMS EDI** modules to use the OSCU
device fully.
.. _kenya/initialization:
OSCU device initialization
--------------------------
The OSCU must be initialized before use. To do so, navigate to :menuselection:`Settings --> General
Settings`, click :guilabel:`Update Info` in the :guilabel:`Companies` section, and enter your
:guilabel:`Tax ID`.
To initialize the OSCU:
#. Go to :menuselection:`Settings --> General Settings` and scroll down to the :guilabel:`Kenya
eTIMS Integration` section.
#. Set the :guilabel:`eTIMS Server Mode` to :guilabel:`Test` for the initialization.
#. Enter the :guilabel:`Serial Number` of the device and tick the two check boxes.
#. Click :guilabel:`Initialize OSCU`.
.. note::
Three server modes are available:
- :guilabel:`Demo`: Designed for demo purposes; it uses mock data and does not require an
initialized OSCU;
- :guilabel:`Test`: Used to test the connection to eTIMS;
- :guilabel:`Production`: Used for live databases that are ready to send data.
.. Important::
If your device has **already been initialized** (through another ERP, for example), enable the
:doc:`../../general/developer_mode`. Then, in the :guilabel:`Kenya eTIMS Integration` section,
enter the ID of the unit in the :guilabel:`Unit ID` field and the key obtained through a previous
initialization in the :guilabel:`CMC Key` field. Click :guilabel:`Save` when done.
Once the **OSCU module** has been :ref:`initialized <kenya/initialization>`, an OSCU serial number
is generated for each company on that database with its **country** set to :guilabel:`Kenya`. The
serial number is generated based on the VAT number of the company (regardless of its validity). It
is a unique and sequential serial number starting with the prefix `ODOO` followed by the company's
**VAT number** and a sequence of numbers.
Registering on eTIMS
--------------------
Taxpayers *must* sign up and create an account on the `KRA portal <https://etims.kra.go.ke/basic/login/indexLogin>`_.
If you do not have an account yet:
#. Sign up, enter your **PIN**, and verify that all information is correct, including your phone
number, email address, and postal address. Correct any errors on the `iTax page
<https://itax.kra.go.ke/KRA-Portal/>`_.
#. An :abbr:`OTP (One-time Password)` is sent to the phone number provided. Unblock promotional
messages if you do not receive it.
#. Upload the **business owner ID** *or* **director's ID** (as listed on iTax), along with the
filled-out and signed **commitment form** .
#. On the **eTIMS dashboard**, click :guilabel:`Service request` at the top of the page. Select
:guilabel:`OSCU` as the **eTIMS type**, enter `Odoo KE LTD` as the third-party integrator, and
enter your company's OSCU serial number retrieved earlier.
.. note::
Service request approvals are usually quick. If there's a delay, contact the eTIMS operation
or KRA office.
.. admonition:: Commitment form
- Part 1: Fill in the taxpayer's information.
- Part 2: Fill in the business owner's *or* director's information.
- Part 3: Fill in your unique serial number found in Odoo.
- Part 4: Tick **OSCU**, enter Odoo KE LTD PIN `PO52112956W`, and enter the Odoo version you're
using (17.0 or onwards).
- Part 5: Check the mandatory boxes, enter a date, and sign.
eTIMS codes
-----------
Common standard codes are **automatically** fetched from the KRA eTIMS API servers every two days.
To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA standard codes`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Codes` to view the complete list of
fetched OSCU codes.
.. image:: kenya/oscu-codes.png
:alt: List of fetched OSCU codes.
.. _etims/unspsc:
UNSPSC codes
------------
The KRA needs UNSPSC codes for a product to be **registered**. UNSPSC codes are **automatically**
fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch UNSPSC codes from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to the **product form**, and in the :guilabel:`Accounting` tab, click the :guilabel:`UNSPSC
Category` field to view the complete list of fetched UNSPSC codes.
Notices
-------
Notices are **automatically** fetched from the KRA eTIMS API servers every day. To fetch them
**manually**, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA notices from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the notices.
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Notices` to view the complete list of
fetched notices.
Multi-company
-------------
.. _kenya/branch:
.. seealso::
:doc:`Connect an IoT box to your database <../../general/iot/config/connect>`
:doc:`../../general/companies`
Sending the data to KRA using the Tremol G03 Control Unit
---------------------------------------------------------
If you have :ref:`multiple companies <accounting/multi-company>`, you can centralize and manage them
all on a single Odoo database. The KRA identifies and differentiates the **main** company from
its **subsidiaries** by using IDs. Furthermore, subsidiaries are classified as **branches** of the
main company.
As a pre-requisite, check out that the :ref:`Kenyan Accounting modules
<localization/kenya/configuration>` are installed on your database. Then, go to
:menuselection:`Accounting --> Configuration --> Settings --> Kenya TIMS Integration section`, and
check that the :guilabel:`control Unit Proxy Address` matches the address of the IoT box.
To configure the company's ID, open the **Settings** app, click :guilabel:`Update Info` in the
:guilabel:`Companies` section, and search for the :guilabel:`eTIMS Branch Code` field. The **main
company** has a branch ID equal to `00` in a multi-company environment. Companies that are *not* the
main company have a branch ID other than `00` and are assigned an ID by the KRA.
To send data to KRA, create a new invoice by going to :menuselection:`Accounting Dashboard -->
Customer Invoice card` and clicking :guilabel:`New Invoice`. Upon confirmation of a new invoice, the
:guilabel:`Send invoice to Fiscal Device` button appears. Clicking on it sends the invoice details
to the device and from the device to the government. The :guilabel:`CU Invoice Number` field is now
completed in your invoice, confirming the information has been sent.
To add a branch, go to the :guilabel:`Branches` tab in the **company settings** and click
:guilabel:`Add a line`.
The :guilabel:`Tremol G03 Fiscal Device` tab contains fields that are automatically completed once
the invoice is sent to the government:
- :guilabel:`CU QR Code`: Url from the KRA portal which reflects a QR code.
- :guilabel:`CU Serial Number`: reflects the serial number of the device.
- :guilabel:`CU Signing Date and Time`: The date and time when the invoice has been sent to KRA.
If you click on :guilabel:`Send and Print`, a .pdf of the invoice is generated. The
:guilabel:`Kenyan Fiscal Device Info` is mentioned on the document.
To fetch the **branch ID** from the KRA for your non-main companies, ensure the main company has a
Kenyan :guilabel:`Tax ID` and the OSCU device has been :ref:`initialized <kenya/initialization>`.
Then, go to the :guilabel:`Branches` tab and click :guilabel:`Populate from KRA`.
.. note::
To verify KRA has received the invoice information, take the :guilabel:`CU Invoice Number` and
enter it in the :guilabel:`Invoice Number Checker` section on
`Kenya Revenue Authority website <https://itax.kra.go.ke/KRA-Portal>`_. Click
:guilabel:`Validate` and find the invoice details.
- The KRA considers each **place of supply** as a separate branch (ID).
- The **OSCU** device must be :ref:`initialized independently <kenya/initialization>` for each
branch.
Contact branch ID
-----------------
To attribute a branch ID to a contact, access the contact form, go to the :guilabel:`Accounting`
tab, and enter the branch code in the :guilabel:`eTIMS Branch Code` field.
.. note::
By default, contacts' branch IDs are set to `OO`.
KRA sequences
-------------
.. important::
Odoo invoice sequences and KRA sequences are **different**.
In Odoo, invoice sequences depend on the **main company**. Main companies can see the invoices of
branches, but branches **cannot** see the main company's invoices or those of other branches.
The KRA needs **independent** sequences per branch. Therefore, Odoo manages sequences individually
per branch.
.. example::
If you have a main company with two branches, the invoice sequence would be the following:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00002;
- Creating an invoice on the **main company**: INV/2024/00003.
This is how Odoo manages sequences to be compliant with the KRA regulations:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00001;
- Creating an invoice on the **main company**: INV/2024/00001.
Insurance
=========
For **health service providers**, you can send insurance information about the main and branch
companies and update it in eTIMS. To do so, go to :menuselection:`Accounting --> Configuration -->
Settings`, scroll to the :guilabel:`Kenya eTIMS Integration` section, and fill in the
:guilabel:`Code`, :guilabel:`Name`, and :guilabel:`Rate` fields. Click :guilabel:`Send Insurance
Details` when done.
.. _kenya/product-registration:
Product registration
====================
The KRA requires **products to be registered** first before conducting business operations (such as
stock movements, :abbr:`BOM (Bill of Materials)`, customer invoices, etc.). For a product to be
registered, the following fields must be defined on the product form:
- In the :guilabel:`General Information` tab: :guilabel:`Cost`.
- In the :guilabel:`Accounting` tab:
- :guilabel:`Packaging Unit`;
- :guilabel:`Packaging Quantity`;
- :guilabel:`Origin Country`;
- :guilabel:`eTIMS Product Type`;
- :guilabel:`Insurance Applicable`;
- :ref:`UNSPSC Category <etims/unspsc>`.
If the elements above are defined, the product is automatically registered while sending the
operation to the KRA. If not, you will be alerted by a yellow banner at the top of the screen
inviting you to check the missing elements.
.. image:: kenya/product-registration.png
:alt: Product registration template.
Stock movements
===============
All **stock movements** must be sent to the KRA. They do not require an invoice if they are
internal operations or stock adjustments; therefore, Odoo automatically sends them if at least one
of the following conditions are met:
#. No contact is set for the move;
#. The contact is your main company or a branch of the main company.
If the stock moves are **external operations** (e.g., to contacts that are not part of the main
company or its branches), the stock moves are automatically sent *after* the invoice is sent to
eTIMS.
.. note::
- The stock move must be confirmed before sending the invoice to eTIMS.
- The product(s) must be :ref:`registered <kenya/product-registration>` for the stock move to be
sent to eTIMS. If the product has not been registered yet, a yellow banner will prompt the
products' registration.
Purchases
=========
Odoo automatically fetches new vendor bills from eTIMS every day. You need to confirm the fetched
vendor bills and send the confirmation to the KRA. To confirm a vendor bill, it must be linked to
one or several confirmed purchase order line(s).
.. _kenya/purchases:
In the case of purchases (not customs imports), the steps to link purchase order lines with bills
are the following:
#. Go to :menuselection:`Accounting --> Vendors --> Bills`.
The vendor bill is fetched from the KRA servers. The JSON file is available in the chatter of the
vendor bill if needed.
#. Odoo looks at the :guilabel:`Tax ID` (PIN) of the vendor (partner);
- If it is unknown, a new contact (partner) is created.
- If it is known and the branch ID is the same, Odoo uses the known contact.
#. In the fetched bill from the KRA, select the :guilabel:`Product`. Each vendor bill *must* contain
a product to be confirmed and sent to eTIMS later on.
#. Odoo checks existing purchase order lines matching the product(s) entered at the previous step
and the partner (if any). Click the :guilabel:`Purchase Order Line` field, and select the correct
related purchase order line(s) matching the product(s). The quantities on the bill *must* be the
same as the received quantities indicated on the purchase order.
If no existing purchase order line matches the lines of the fetched bill, click
:guilabel:`Create Purchase Order` and create a purchase order based on the unmatched line(s).
:guilabel:`Validate` the resulting stock move and :guilabel:`Confirm` the bill.
#. Set a method in the :guilabel:`eTIMS Payment Method` field..
#. Once all steps are completed, click :guilabel:`Send to eTIMS` to send the vendor bill. When the
vendor bill has been confirmed on eTIMS, the **KRA invoice number** can be found in the
:guilabel:`eTIMS Details` tab.
.. image:: kenya/purchase-order-lines.png
:alt: Bill registration steps.
Invoicing
=========
.. note::
The KRA does *not* accept sales if the product is not in stock.
This is the **advised sales flow** in Odoo when selling:
#. Create a **sales order**.
#. :guilabel:`Validate` the delivery.
#. :guilabel:`Confirm` the invoice.
#. Click :guilabel:`Send and print`, and then enable :guilabel:`Send to eTIMS`.
#. Click :guilabel:`Send & print` to send the invoice.
Once the invoice has been sent and signed by the KRA, the following information can be found on
it:
- **KRA invoice number**;
- Mandatory KRA invoice fields, such as **SCU information**, **date**, **SCU ID**, **receipt
number**, **item count**, **internal date**, and **receipt signature**;
- The **KRA tax table**;
- A unique **KRA QR code** for the signed invoice.
Imports
=======
Customs import codes are **automatically** fetched from the KRA eTIMS API servers every day. To
fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Receive Customs Imports from the OSCU`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Vendors --> Customs Imports` to view the imported codes.
The following steps are required to send and have **customs imports** signed by the KRA:
#. Go to :menuselection:`Accounting --> Vendors --> Customs Imports`; The customs import is fetched
automatically from the KRA.
#. Match the imported item with an existing registered product in the :guilabel:`Product` field (or
create a product if no related product exists).
#. Set a vendor in the :guilabel:`Partner` field.
#. Based on the partner, match the imported item with its related purchase order (see
:ref:`purchase steps <kenya/purchases>`). The stock must be correctly adjusted when the customs
import is approved.
If no related purchase order exists, create one and :guilabel:`Confirm` it. Then, confirm the
delivery by clicking :guilabel:`Receive Products`, then :guilabel:`Validate` on the purchase
order.
#. Click :guilabel:`Match and Approve` or :guilabel:`Match and Reject`, depending on the
situation of the goods.
.. note::
The JSON file received from the KRA is attached to the chatter of the customs import.
BOM
===
The KRA requires all BOMs to be sent to them. To send BOMs to eTIMS, the product and its components
*must* be :ref:`registered <kenya/product-registration>`. To access a product's BOM, click on the
product and then click the :guilabel:`Bill of Materials` smart button.
Make sure the :ref:`KRA's required fields <kenya/product-registration>` are filled in the
:guilabel:`KRA eTIMS details` section of the :guilabel:`Accounting` tab in the product form, and
click :guilabel:`Send to eTIMS`. The successful sending of the BOM is confirmed in the chatter,
where you can also find the sent information in an attached JSON file.
Credit notes
============
The KRA does not accept credit notes with quantities or prices higher than the initial invoice. When
creating a credit note, a KRA reason must be indicated: In the credit note form, go to the
:guilabel:`eTIMS Details` tab, select the :guilabel:`eTIMS Credit Note Reason`, and then select the
invoice number in the :guilabel:`Reversal of` field.
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: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -370,9 +370,8 @@ Payment complements
Payment policy
**************
One addition of the Mexican localization is the :guilabel:`Payment Policy` field . `According to
the SAT documentation <https://www.sat.gob.mx/consultas/92764/comprobante-de-recepcion-de-pagos>`_,
there may be 2 types of payments:
One addition of the Mexican localization is the :guilabel:`Payment Policy` field. According to
the SAT documentation, there are two types of payments:
- `PUE` (Pago en una Sola Exhibición/Payment in a Single Exhibition)
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
@@ -467,11 +466,11 @@ there are two requirements for this:
There are four different cancellation reasons. In Odoo, you can cancel invoices with the reasons *01
Invoices sent with errors with a relation*, and *02 Invoices sent with errors without a relation*.
The following sections break down the process of canceling invoices for each cancellation reason in
The following sections break down the process of cancelling invoices for each cancellation reason in
Odoo.
.. important::
Odoo has certain limitations to canceling invoices in the |SAT|: The reasons 03 and 04
Odoo has certain limitations to cancelling invoices in the |SAT|: The reasons 03 and 04
(*Operation did not take place* and *Nominative transactions related to a global invoice*,
respectively) are not currently supported by Odoo. For this, you need to cancel the invoice
directly in the |SAT|, and press :guilabel:`Retry` in the :guilabel:`SAT Status field`.
@@ -490,12 +489,12 @@ of the old invoice after the value. Finally, sign the new document.
Next, navigate back to the old invoice, and notice the :guilabel:`Substituted By` field is now
available. Click the :guilabel:`Request EDI Cancellation` button on the old invoice, and then click
:guilabel:`Process Now` in the blue section that appears. The invoice status changes to
:guilabel:`Canceled`, and a confirmation is logged in the chatter.
:guilabel:`Cancelled`, and a confirmation is logged in the chatter.
Now, the invoice should be canceled in the |SAT| as well. You can confirm this was done correctly,
Now, the invoice should be cancelled in the |SAT| as well. You can confirm this was done correctly,
by pressing :guilabel:`Retry` in the |SAT| status field.
If the document was canceled more than 24 hours after its creation, you may need to ask the client
If the document was cancelled more than 24 hours after its creation, you may need to ask the client
to accept the cancellation in their “Buzón Tributario” directly from the `SAT website
<https://www.sat.gob.mx/home>`_.
@@ -0,0 +1,748 @@
=============
United States
=============
.. |GAAP| replace:: :abbr:`GAAP (Generally Acceptable Accounting Practices)`
.. |FASB| replace:: :abbr:`FASB (Financial Accounting Standards Board)`
.. |SEC| replace:: :abbr:`SEC (Securities and Exchange Commission)`
.. |COA| replace:: :abbr:`CoA (Chart of Accounts)`
.. |AR| replace:: :abbr:`AR (Accounts Receivable)`
.. |AP| replace:: :abbr:`AP (Accounts Payable)`
.. |CFS| replace:: :abbr:`CFS (Cash Flow Statement)`
.. |NACHA| replace:: :abbr:`NACHA (National Automated Clearing House Association)`
.. |ACH| replace:: :abbr:`ACH (Automated Clearing House)`
The Odoo fiscal localization package for the United States follows the Generally Acceptable
Accounting Principles (GAAP) accounting standards and rules used to prepare financial statements,
as outlined by the Financial Accounting Standards Board (FASB) and adopted by the Securities and
Exchange Commission (SEC).
.. seealso::
- `Financial Accounting Standards Board (FASB) <https://asc.fasb.org/Home>`_
- `Securities and Exchange Commission (SEC) <https://www.sec.gov/>`_
In addition, a series of videos on the subject of Accounting are available through Odoo's eLearning
platform. These videos cover how to start from scratch, set up configurations, complete common
workflows, and provide in-depth looks at some specific use cases, as well.
.. seealso::
- `Odoo Tutorials: Accounting & Invoicing
<https://www.odoo.com/slides/accounting-and-invoicing-19>`_
- `Odoo SmartClass: Accounting <https://www.odoo.com/slides/smartclass-accounting-121>`_
Configuration
=============
Below are the available modules in Odoo for accounting use in the United States.
.. note::
The modules listed below are either for reference only or are optional, as the core requirements
to operate under the US fiscal localization in Odoo are already included under the default
package that came installed during database initialization.
Verify the default package is in use by navigating to :menuselection:`Accounting App -->
Settings` and under the :guilabel:`Fiscal Localization` section at the top, look for the `Generic
Chart Template` selection to be listed next to the :guilabel:`Package` field label. This chart
template includes the necessary settings for the US localization for the Odoo *Accounting* app.
.. image:: united_states/us-l10n-generic-chart-template.png
:align: center
:alt: The Generic Chart Template comes pre-configured for the US localization.
Modules installation
--------------------
:ref:`Install <general/install>` the following modules to get all the features of the United States
localization:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`United States - Accounting`
- `l10n_us`
- Base accounting module for United States localization.
* - :ref:`US - Accounting Reports <l10n_us/reports>`
- `l10n_us_reports`
- Adds United States accounting reports.
* - :guilabel:`US Checks Layout`
- `l10n_us_check_printing`
- Enables the printing of payments on pre-printed check paper. Supports the three most common
check formats and will work out of the box with the linked checks from `checkdepot.net
<https://checkdepot.net/collections/computer-checks/Odoo>`_.
- `Check on top: Quicken / QuickBooks standard
<https://checkdepot.net/collections/computer-checks/odoo+top-check>`_
- `Check on middle: Peachtree standard
<https://checkdepot.net/collections/computer-checks/odoo+middle-check>`_
- `Check on bottom: ADP standard
<https://checkdepot.net/collections/computer-checks/odoo+Bottom-Check>`_
* - :ref:`NACHA Payments <l10n_us/nacha>`
- `l10n_us_payment_nacha`
- Export payments as NACHA files for use in the United States.
* - :ref:`1099 Reporting <l10n_us/1099-report>`
- `l10n_us_1099`
- Export 1099 data for e-filing with a 3rd party.
* - :ref:`Avatax <l10n_us/taxes-avatax>`
- `account_avatax`
- Module for the :doc:`AvaTax integration <../accounting/taxes/avatax>` with Odoo.
* - :ref:`United States - Payroll <l10n_us/payroll>`
- `l10n_us_hr_payroll`
- Includes the necessary rules for United States payroll, including:
- Employee Details
- Employee Contracts
- Passport-based Contracts
- Allowances/Deductions
- Allow Configurations for Basic/Gross/Net Salary
- Employee Payslip
- Integration with Leaves Management
* - :ref:`United States - Payroll with Accounting <l10n_us/payroll>`
- `l10n_us_hr_payroll_account`
- Contains the necessary accounting data for the United States payroll rules.
* - :ref:`United States - Payroll - Export to ADP <l10n_us/adp>`
- `l10n_us_hr_payroll_adp`
- Export Work Entries to the ADP payroll software.
.. _l10n_us/coa:
Chart of accounts
=================
The :doc:`chart of accounts (COA) <../accounting/get_started/chart_of_accounts>` for the United
States localization, in Odoo, follows the standard |GAAP| structure, with accounts grouped into
seven main categories, with corresponding numeric values that prefix individual journal entries:
- **Receivable**: the balance of money (or credit) due to the business for goods or services
delivered or used, but not yet paid for by customers. |AR| is indicated by the journal code
labeled (or beginning) with :guilabel:`1`.
- **Payable**: the business's short-term obligations owed to its creditors or suppliers, which have
not yet been paid. |AP| is indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Equity**: the amount of money that would be returned to a company's shareholders if all of the
assets were liquidated and all of the company's debt was paid off in the case of liquidation.
Equity is indicated by the journal code labeled (or beginning) with :guilabel:`3` or
:guilabel:`9`.
- **Assets**: items listed on the balance sheet that contains economic value or have the ability to
generate cash flows in the future, such as a piece of machinery, a financial security, or a
patent. Assets are indicated by the journal code labeled (or beginning) with :guilabel:`1`.
- **Liability**: refers to a company's financial debts or obligations that arise during the course
of business operations. Liabilities are indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Income**: synonymous with *net income*, this is the profit a company retains after paying off
all relevant expenses from sales revenue earned. Income is indicated by the journal code labeled
(or beginning) with :guilabel:`4` or :guilabel:`6`.
- **Expenses**: the cost of operations that a company incurs to generate revenue. Expenses are
indicated by the journal code labeled (or beginning) with a :guilabel:`6`.
.. tip::
Predefined accounts are included in Odoo, as part of the |CoA| that's installed with the US
localization package. The accounts listed below are preconfigured to perform certain operations
within Odoo. It is recommended to **not** delete these accounts; however, if changes are needed,
rename the accounts instead.
.. list-table::
:header-rows: 1
:stub-columns: 1
* - :guilabel:`Type`
- :guilabel:`Account Name`
* - :guilabel:`Current Assets`
- | :guilabel:`Bank Suspense Account`
| :guilabel:`Outstanding Receipts`
| :guilabel:`Outstanding Payments`
| :guilabel:`Liquidity Transfer`
| :guilabel:`Stock Valuation`
| :guilabel:`Stock Interim (Received)`
| :guilabel:`Stock Interim (Delivered)`
| :guilabel:`Cost of Production`
* - :guilabel:`Income`
- | :guilabel:`Foreign Exchange Gain`
| :guilabel:`Cash Difference Gain`
| :guilabel:`Cash Discount Gain`
* - :guilabel:`Expenses`
- | :guilabel:`Cash Discount Loss`
| :guilabel:`Foreign Exchange Loss`
| :guilabel:`Cash Difference Loss`
* - :guilabel:`Current Year Earnings`
- :guilabel:`Undistributed Profits/Losses`
* - :guilabel:`Receivable`
- :guilabel:`Account Receivable`
* - :guilabel:`Payable`
- :guilabel:`Account Payable`
.. seealso::
- :doc:`../accounting/get_started/chart_of_accounts`
- :doc:`../accounting/get_started/cheat_sheet`
View, edit, and sort accounts
-----------------------------
Access the *Chart of Accounts* dashboard in Odoo by navigating to :menuselection:`Accounting app
--> Configuration --> Accounting: Chart of Accounts`.
From the :guilabel:`Chart of Accounts` dashboard, create new accounts by clicking the purple
:guilabel:`New` button in the top-left corner of the dashboard and :ref:`filling in the
corresponding form <chart-of-account/create>`. Search and sort through existing accounts by using
specific :guilabel:`Filters` and :guilabel:`Group By` criteria, which are available in the mega menu
under the :guilabel:`Search...` bar.
To filter accounts by category, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to
access the mega menu and look under the :guilabel:`Filters` column for individual selections.
Clicking on a specific category will only show accounts that match that particular filter.
To view all the available account types, remove all of the filters in the :guilabel:`Search...` bar,
and then click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to access the mega menu. From
there, select :guilabel:`Account Type` under the :guilabel:`Group By` column heading to list all of
the account types in the table.
.. image:: united_states/us-l10n-coa-account-types.png
:align: center
:alt: Chart of Accounts grouped by Account Type.
Besides structure, there are other key differences in the chart of accounts in the United States,
compared to other countries:
- **Specificity**: US |GAAP| often requires more detailed accounts compared to some other countries.
This can include separate accounts for various types of revenue, expenses, and assets, providing
more granular information in financial reports.
- **Regulatory Requirements**: In the United States, there are specific regulatory requirements set
by bodies such as the |SEC| for publicly traded companies. These requirements may influence the
structure and content of the |COA| to ensure compliance with reporting standards.
- **Industry Practices**: Certain industries in the United States may have unique accounting
requirements or specialized |COA| structures. For example, financial institutions often have
specific accounts related to loans, investments, and interest income.
- **Tax Considerations**: The |COA| may also reflect tax considerations, such as accounts for
deductible expenses, deferred tax assets, and liabilities, to ensure compliance with tax laws and
facilitate tax reporting.
These differences, ultimately, should be reflected in the |COA| structure itself, with the addition
of new accounts, as needed, in order to meet the demands of US accounting reporting requirements.
.. seealso::
- :ref:`Create a new account <chart-of-account/create>`
- :doc:`../../essentials/search`
.. _l10n_us/taxes:
Taxes
=====
In the United States, tax rates and what is considered taxable vary by jurisdiction. Default *Sales*
and *Purchase* taxes are created automatically when the Odoo *Accounting* application is installed.
To manage existing or configure additional taxes, navigate to :menuselection:`Accounting -->
Configuration --> Taxes`.
.. _l10n_us/taxes-avatax:
AvaTax
------
**Avalara AvaTax** is a cloud-based tax calculation and compliance software that integrates with
Odoo for the United States and Canadian accounting localizations. Integrating AvaTax with Odoo
provides real-time and region-specific tax calculations when items are sold, purchased, and invoiced
in the database.
.. important::
AvaTax is only available for integration with databases/companies that have locations in the
United States and Canada. This means the fiscal position/country of a database can only be set to
the United States or Canada. Reference this documentation for more information:
:ref:`avatax/fiscal_country`.
.. seealso::
Refer to the documentation articles below to integrate and configure an AvaTax account with an
Odoo database:
- :doc:`AvaTax integration <../accounting/taxes/avatax>`
- :doc:`Avalara management portal <../accounting/taxes/avatax/avalara_portal>`
- :doc:`Calculate taxes with AvaTax <../accounting/taxes/avatax/avatax_use>`
- `US Tax Compliance: AvaTax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
- Avalara's support documents: `About AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
.. _l10n_us/reports:
Reports
=======
A number of :doc:`report selections <../accounting/reporting>` are readily available for the US
localization, under the :menuselection:`Accounting app --> Reporting` drop-down menu:
- :ref:`Balance Sheet <reporting/balance-sheet>`: a "snapshot" of a company's financial position at
a specific point in time, which contains an overview of a company's assets, liabilities, and
equity.
- :ref:`Profit & Loss <accounting/reporting/balance-sheet>`: otherwise known as a *P&L statement* or
*income statement*, provides a summary of a company's revenues, expenses, and profits/losses over
a given period of time.
- :ref:`Cash Flow Statement <l10n_us/cash-flow-statement>`: shows how much cash and cash equivalents
a company has received and spent in a given period.
- :ref:`Executive Summary <accounting/reporting/executive-summary>`: an overview report that covers
the key performance indicators of a company's financial position, such as revenue, profit, and
debt.
- :ref:`Tax Report <reporting/tax-report>`: an official form filed for a tax authority that reports
income, expenses, and other pertinent tax information. Tax reports allow taxpayers to calculate
their tax liability, schedule tax payments, or request refunds for the overpayment of taxes. In
Odoo, the tax report can be made monthly, every two months, quarterly, every 4 months,
semi-annually, and annually.
- :guilabel:`Check Register`: a report that displays cash transactions (regardless of the journal)
with their running balance after the transaction. Only visible with the *US - Accounting Reports*
(`l10n_us_reports`) module installed.
- :ref:`1099 Report <l10n_us/1099-report>`: a CSV download of payments made to non-employees in a
period to file electronically in a third-party service. Only visible with the *1099 Reporting*
(`l10n_us_1099`) module installed.
.. _l10n_us/report-filters:
Depending on the type of report, certain filters are available at the top of the dashboard:
- a *date* filter, indicated by a :icon:`fa-calendar` :guilabel:`(calendar)` icon that precedes a
date in *MM/DD/YYYY* format. Use this to select a specific date or date range for the report.
- a :icon:`fa-bar-chart` :guilabel:`Comparison` filter, to compare reporting periods against each
other
- a *journal* filter, as indicated by a :icon:`fa-book` :guilabel:`(book)` icon and the default
setting of :guilabel:`All Journals`. Use this filter to specify which journals should be included
in the report.
- an *entries type* filter, as indicated by a :icon:`fa-filter` :guilabel:`(filter)` icon, with the
default setting of :guilabel:`Posted Entries Only, Accrual Basis`. Use this filter to determine
which type of journal entries should be included in the report (e.g. posted or draft), along with
the type of accounting method (e.g. accrual or cash basis).
- There are view options in this filter, as well, one that will :guilabel:`Hide lines at 0` for
more relevant viewing, along with a :guilabel:`Split Horizontally` option to keep the report
above the screen's fold, removing the need to scroll.
.. image:: united_states/us-l1on-accounting-method-reporting-menu.png
:align: center
:alt: Accounting method filter menu for reports, covering accrual vs. cash basis methods.
- a *decimal* filter, that by default, includes figures with cents, as indicated by the
:guilabel:`In .$` setting. Use the other options in the drop-down menu to change figures in the
report to whole numbers (:guilabel:`In $`), thousands (:guilabel:`In K$`), or millions
(:guilabel:`In M$`) formats.
- a report *customization* filter, indicated by the :icon:`fa-cogs` :guilabel:`(gears)` icon. Use
this filter to customize the current report's sections and line items, or build new reports, as
desired.
.. seealso::
- :doc:`Accounting reporting <../accounting/reporting>`
- :doc:`../../essentials/search`
.. _l10n_us/1099-report:
1099 report
-----------
The 1099 report, available by :ref:`installing <general/install>` the *1099 Reporting*
(`l10n_us_1099`) module, includes payments that are made to non-employees across a given reporting
period. Use the available CSV download from the report in Odoo to file 1099 payments electronically
via a third-party service.
To generate a 1099 report, navigate to :menuselection:`Accounting app --> Reporting --> Management:
1099 Report` to open a :guilabel:`1099 Report` wizard.
First, enter the date range of the transactions to report in the :guilabel:`Start Date` and
:guilabel:`End Date` fields.
Then, edit the journal items that appear on the wizard. Click :guilabel:`Add a line` to add any
items that are missing. Be sure to remove any items that should not be included in the report by
clicking :icon:`fa-times` :guilabel:`(delete)` on the row.
Finally, once all necessary items are included in the 1099 report, click on the :guilabel:`Generate`
button. Doing so, downloads a CSV file that groups transactions by the partner that received the
payments.
.. _l10n_us/cash-flow-statement:
Cash flow statement
-------------------
Navigate to the *Cash Flow Statement* (CFS) dashboard by going to :menuselection:`Accounting app -->
Reporting --> Statement Reports: Cash Flow Statement`. From here, |CFS| reports can be generated
using the various :ref:`filters <l10n_us/report-filters>` that are available at the top of the
dashboard.
Odoo uses the *direct* cash flow method to compile cash flow statements, which measures actual cash
inflows and outflows from the company's operations, such as when cash is received from customers or
when cash payments are made to suppliers.
By default, an account labeled with any of the three default :guilabel:`Tags` on the
:guilabel:`Chart of Accounts` dashboard will be included in the report, which includes:
:guilabel:`Operating Activities`, :guilabel:`Financing Activities`, and :guilabel:`Investing &
Extraordinary Activities`.
.. image:: united_states/us-l10n-cash-flow-statement-tags.png
:align: center
:alt: Examples of tagged accounts that are included in the Cash Flow Statement in Odoo.
Additionally, the cash flow statement in Odoo:
- is limited to the *Bank* and *Cash* journals to reflect money coming in or out; and
- also contains *Expenses* accounts, to show the counterpart transactions versus *Bank* or *Cash*
journal entries, while excluding |AR| and |AP| activity.
.. example::
Create a vendor bill for $100, as an operating expense (not |AP|). Doing so will **not** reflect
a transaction on the cash flow statement. However, register a corresponding payment for $100,
and the transaction **will** reflect on the cash flow statement as :guilabel:`Cash paid for
operating activities`.
.. image:: united_states/us-l10n-operating-expenses-example.png
:align: center
:alt: Example of a bill registered as an operating expense as part of a cash flow statement.
.. _l10n_us/cash-discount:
Cash discount
=============
Cash discounts can be configured from :menuselection:`Accounting app --> Payment Terms`. Each
payment term can be set up with a cash discount and reduced tax.
.. seealso::
:doc:`../accounting/customer_invoices/cash_discounts`
.. _l10n_us/writing-checks:
Writing checks
==============
Using checks is still a common payment practice in the US. Be sure the *US Checks Layout*
(`l10n_us_check_printing`) module for the US localization is :ref:`installed <general/install>`.
To enable check printing from Odoo, navigate to :menuselection:`Accounting --> Configuration -->
Settings` and find the :guilabel:`Vendor Payments` section. From here, tick the :guilabel:`Checks`
checkbox to reveal several fields for check configuration.
Select a :guilabel:`Check Layout` from the drop-down menu:
- :guilabel:`Print Check (Top) - US`
- :guilabel:`Print Check (Middle) - US`
- :guilabel:`Print Check (Bottom) - US`
Next, choose whether or not to enable the :guilabel:`Multi-Pages Check Stub` checkbox.
Optionally set a :guilabel:`Check Top Margin` and :guilabel:`Check Left Margin`, if required.
Once all check configurations are complete, :guilabel:`Save` the settings.
.. tip::
Some of the check formats may require pre-printed paper from a third party vendor,
https://checkdepot.net/collections/odoo-checks is recommended.
.. seealso::
:doc:`../accounting/payments/pay_checks`
.. _l10n_us/payroll:
Payroll
=======
The *Payroll* application is responsible for calculating an employee's pay, taking into account all
work, vacation, and sick time, benefits, and deductions. The *Payroll* app pulls information from
the *Attendances*, *Timesheets*, *Time Off*, *Employees* and *Expenses* applications, to calculate
the worked hours and compensation for each employee.
When using an external payroll provider, such as *ADP*, it is necessary to export the various
payroll-related data, such as work entries, repayment of expenses, taxes, commissions, and any other
relevant data, so the data can be uploaded into the payroll provider, who then issues the actual
paychecks or directly deposits the funds into an employee's bank account.
In order to export the payroll data, the work entries must first be validated and correct. Refer to
the :doc:`work entries <../../hr/payroll/work_entries>` documentation for more information
regarding validating work entries.
Once work entries are validated, the information can be :ref:`exported to ADP <l10n_us/adp>`.
After payments have been issued to employees, payslips can be processed into batches, validated, and
posted to the corresponding accounting journals to keep all financial records in Odoo current.
Required information
--------------------
It is important to have the *Employees* application installed, and all employee information
populated. Several fields in both the :ref:`employee records <l10n_us/payroll-employee-records>`, as
well as in an :ref:`employee contracts <l10n_us/payroll-employee-contracts>`, are necessary to
properly process the employee's pay. Ensure the following fields are filled out in their respective
places.
.. _l10n_us/payroll-employee-records:
Employee records
~~~~~~~~~~~~~~~~
In each employee record, there is various information the *Payroll* application requires to properly
process payslips, including various banking, tax, and work information.
Navigate to the :menuselection:`Employees app` and select an employee record to view the sections of
the employee form that directly affect *Payroll*:
- :guilabel:`Work Information` tab:
- :guilabel:`Work Address`: indicates where the employee is located, including the state, which
affects the tax calculations.
- :guilabel:`Working Hours`: determines how pay is calculated, and determines if an employee earns
overtime.
- :guilabel:`Private Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Bank Account Number`: the bank account associated with the NACHA payment file.
- :guilabel:`HR Settings` tab:
- :guilabel:`Federal Tax Filing Status`: the tax status an employee uses for Payroll tax
calculations, which can be different from their state status.
- :guilabel:`State Tax Filing Status`: the tax status an employee uses for their state portion of
the Payroll tax calculation.
- :guilabel:`W-2 Form`: a US tax form indicating the summary of wages, taxes, and benefits paid to
an employee during a tax period (typically one year).
- :guilabel:`W-4 Form`: an IRS form that helps outline the amount of federal taxes to withhold for
an employee, which is paid to the IRS by the company.
.. _l10n_us/payroll-employee-contracts:
Employee contracts
~~~~~~~~~~~~~~~~~~
Additionally, there is information that is found in an employee contract that also affects the
*Payroll* application.
Navigate to the :menuselection:`Employees app --> Employees --> Contracts` and select a contract
record to view the sections of a contract that directly affect *Payroll*:
- :guilabel:`General Information`:
- :guilabel:`Salary Structure Type: United States: Employee`: defines when the employee is paid,
their working schedule, and the work entry type.
- :guilabel:`Work Entry source`: determines how work entries are calculated.
- :guilabel:`Salary Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Wage type`: determines how the employee is paid, wether a Fixed wage (salary) or
Hourly wage.
- :guilabel:`Schedule Pay`: defines how often the employee is paid, either :guilabel:`Annually`,
:guilabel:`Semi-annually`, :guilabel:`Quarterly`, :guilabel:`Bi-monthly`, :guilabel:`Monthly`,
:guilabel:`Semi-monthly`, :guilabel:`Bi-weekly`, :guilabel:`Weekly`, or :guilabel:`Daily`. In
the US, Semi-monthly (24 payments a year) or bi-weekly (26 payments a year) are the most common.
- :guilabel:`Wage, Yearly, and Monthly cost`: used to show the total cost of an employee. It is
recommended to populate the :guilabel:`Yearly` wage first, as it auto-populates the other
fields.
- :guilabel:`Pre-tax benefits`: populate this section according to the employee's selections.
Pre-tax benefits decrease the gross wage, which lowers the base amount that is taxed. These are
displayed at the beginning of the payslip.
- :guilabel:`Post-tax benefits`: these benefits are deductions made *after* taxes are calculated.
These appear towards the end of the payslip before the net amount is displayed.
.. seealso::
:doc:`Employees documentation <../../hr/employees/new_employee>`
.. _l10n_us/adp:
Export work entries to ADP
--------------------------
Requirements
~~~~~~~~~~~~
In order to create a report that can be uploaded to ADP, there are some initial configuration steps
that must be completed first.
First, ensure the *United States - Payroll - Export to ADP* (`l10n_us_hr_payroll_adp`) module is
:ref:`installed <general/install>`.
Then, the company **must** have an *ADP Code* entered in the company settings. To do so, navigate
to :menuselection:`Payroll app --> Configuration --> Settings`. Enter the :guilabel:`ADP Code` in
the :guilabel:`US Localization` section.
Next, work entry types **must** have the correct ADP code listed in the *External Code* field for
each work entry type that is being referenced.
Lastly, every employee **must** have an *ADP Code* entered on their employee form. To do so,
navigate to :menuselection:`Employees app`, select an employee record, and open the :guilabel:`HR
Settings` tab. Enter the :guilabel:`ADP Code` in the :guilabel:`ADP Information` section.
The :guilabel:`ADP Code` code is how ADP identifies that particular employee, and is typically a
six-digit number.
.. seealso::
- :ref:`payroll/new-work-entry`
- :doc:`../../hr/employees/new_employee`
Export data
~~~~~~~~~~~
Once :doc:`work entries <../../hr/payroll/work_entries>` have been verified, the information can be
exported to a CSV file, which can then be uploaded into ADP.
To export the data, navigate to :menuselection:`Payroll app --> Reporting --> United States: ADP
Export`, then click :guilabel:`New`. Next, enter the :guilabel:`Start Date` and :guilabel:`End Date`
for the work entries using the calendar pop-over.
Then, enter a :guilabel:`Batch ID` in the corresponding field. The recommendation for this field is
to enter the date in a `YY-MM-DD` format, followed by any other characters to distinguish that
specific batch, such as a department name, or any other defining characteristics for the batch.
Enter a :guilabel:`Batch Description` in the corresponding field. This should be short and
descriptive, but distinct from the :guilabel:`Batch Name`.
Ensure the correct company populates the :guilabel:`Company` field. Change the selected company with
the drop-down menu, if needed.
Lastly, add the employee's work entry information to the list. Click :guilabel:`Add a line` and an
:guilabel:`Add: Employee` pop-up window loads. The list can be :doc:`filtered
<../../essentials/search>` to more easily find the employees to add to the list.
.. tip::
Process the data export in multiple groups instead of in one large group that contains all
employees. This helps to meaningfully differentiate the batches and makes processing more
tenable, overall. The most common ways to group employees is by department, or by wage type
(hourly or salaried).
Select the employees to add to the list by ticking the box to the left of their name. Once all
desired employees have been selected, click the :guilabel:`Select` button in the lower-left corner,
and the employees appear in the list.
To create the CSV file, click the :guilabel:`Generate` button in the top-left corner.
.. _l10n_us/ach-electronic-transfers:
ACH - electronic transfers
==========================
Automated Clearing House (ACH) payments are a modern way to transfer funds electronically between
bank accounts, replacing traditional paper-based methods. |ACH| payments are commonly used for
direct deposits, bill payments, and business transactions.
Receive ACH payments: payment provider integration
--------------------------------------------------
|ACH| payments are supported by *Authorize.net* and *Stripe* payment integrations in Odoo.
.. seealso::
- :ref:`Setting up Authorize.net for ACH payments (Odoo) <authorize/ach_payments>`
- `Authorize.net's ACH payment processing for small businesses documentation
<https://www.authorize.net/resources/blog/2021/ach-payments-for-small-businesses.html>`_
- :doc:`Setting up Stripe for ACH payments (Odoo) <../payment_providers/stripe>`
- `Stripe's ACH Direct Debit documentation <https://docs.stripe.com/payments/ach-debit>`_
.. _l10n_us/nacha:
Send payments: NACHA files
--------------------------
Odoo can generate a National Automated Clearing House Association (NACHA) compatible |ACH| file to
send to a company's bank. For each individual *Bank* journal that the company wishes to pay vendors
with, a |NACHA| configuration section needs to be filled out on the Odoo database.
Configuration
~~~~~~~~~~~~~
First, navigate to the :menuselection:`Accounting app --> Configuration --> Journals`. Open the
bank journal and click into the :guilabel:`Outgoing Payments` tab.
.. image:: united_states/us-l10n-nacha-settings.png
:align: center
:alt: NACHA (National Automated Clearing House Association) configuration settings on Odoo.
.. note::
The following |NACHA| configuration information is normally provided by the company's financial
institution once they have been approved to send payments via their account.
Under the section labeled, :guilabel:`NACHA configuration` are the fields required to generate a
|NACHA| compatible |ACH| file to send to a company's bank. First, enter the routing number of the
financial institution in the field labeled, :guilabel:`Immediate Destination`. This information is
widely available on the Internet and generally varies by bank location. This number is usually
provided during the initial account setup.
Next, enter the registered name of the financial institution in the field called,
:guilabel:`Destination`. This information will be provided by the bank or credit union.
Following the :guilabel:`Destination` field is the :guilabel:`Immediate Origin` field. Enter the
9-digit company ID or Employer Identification Number (EIN) into this field. This information is
provided by the financial institution.
Next, enter the :guilabel:`Company Identification` number, which is a 10-digit number made from
combining the 9-digit company ID or Employer Identification Number (EIN), along with an additional
number at the start of the sequence. This number is often a `1`. Check with the financial
institution should this first number differ to verify that it is correct, as this number is provided
for |ACH| approved accounts.
Enter the :guilabel:`Originating DFI Identification` number next, which should contain an assigned
8-digit number from the financial institution.
.. important::
Enter the numerical values in this section *exactly* as the company's financial institution
(e.g. bank or credit union) has provided them, otherwise risk failing a successful |NACHA|
configuration in Odoo.
.. image:: united_states/us-l10n-nacha-dropdown.png
:align: center
:alt: NACHA settings with the standard entry class code drop-down menu highlighted.
There are two options for the next field: :guilabel:`Standard Entry Class Code`. Select the
drop-down menu to the right of the field and pick either :guilabel:`Corporate Credit or Debit (CCD)`
or :guilabel:`Prearranged Payment and Deposit (PPD)`. Again, this information will be provided by
the financial institution. By default :guilabel:`Corporate Credit or Debit (CCD)` is selected.
Finally, the last option is for :guilabel:`Generated Balanced Files`. Tick the checkbox to the right
of the field to enable :guilabel:`Generated Balanced Files`. Consult the company's accountant or
financial advisor to make an informed decision for this field.
Manually save the configuration by clicking the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)`
icon, or navigate away from this screen to auto-save. The configuration is now complete.
.. _l10n_us/batch-payment:
Create batch payment
~~~~~~~~~~~~~~~~~~~~
Now, record each payment in Odoo using the |NACHA| payment method.
.. seealso::
:ref:`Register Payments in Odoo <payments/register>`
.. important::
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
associated with each payment or the file needs to be sent prior to the cut-off, if the dates
included in it match today's date. Consult the financial institution for the exact cut-off time
for their processing of same-day payments.
Once all the payments to be included in the |NACHA| |ACH| file have been made, a batch payment needs
to be made from the :icon:`fa-cog` :guilabel:`Action` menu.
To create the batch payments, access the payments page, by navigating to :menuselection:`Accounting
--> Vendors --> Payments`. Select all the payments that should be included in the |NACHA| |ACH|
file, by ticking the checkboxes to the far-left of the rows.
.. image:: united_states/us-l10n-create-batch-payments.png
:align: center
:alt: On the payments screen, the action menu is highlighted with create a batch payment
selected.
.. warning::
All payments in the batch must share the same payment method.
Next, navigate to the batched payment (:menuselection:`Accounting --> Vendors --> Batch Payments`).
Click into the payment just created and then click into the :guilabel:`Exported File` tab. The
generated file is listed with the :guilabel:`Generation Date`. Click the :icon:`fa-download`
:guilabel:`(download)` button to download the file.
.. image:: united_states/us-l10n-batch-file.png
:align: center
:alt: The exported file tab highlighted in the batch payment with the download circled.
If any adjustments need to be made, click the :guilabel:`Re-generate Export File` button to recreate
a new |NACHA| |ACH| file.
.. seealso::
- :doc:`../accounting/payments/batch`
- :doc:`Europe's direct debiting <../accounting/payments/batch_sdd>`
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -243,13 +243,13 @@ themselves. To modify them, go to :menuselection:`Accounting --> Configuration -
Configuration --> Payment Methods`, then click on the payment method.
To modify a payment method's icon, hover your mouse over the image in the upper-right corner of the
payment method's form and click the pencil icon (:guilabel:`✎`).
payment method's form and click the :icon:`fa-pencil` (:guilabel:`pencil`) icon.
Select the :guilabel:`Brands` tab to view the brands that have been activated for the payment
method. The brands and their related icons are displayed based on their sequence order; to reorder
them, drag and drop them in the desired order. To modify a brand's icon, select the brand, then,
in the popup window that opens, hover the mouse over the image in the upper-right corner and click
the pencil icon (:guilabel:`✎`).
the :icon:`fa-pencil` (:guilabel:`pencil`) icon.
Advanced configuration
----------------------
@@ -367,6 +367,14 @@ You can adapt the payment provider's availability by specifying the :guilabel:`M
allowed and modifying the :guilabel:`Currencies` and :guilabel:`Countries` in the
:guilabel:`Configuration` tab.
.. tip::
To display an availability report for payment providers and payment methods, and to help diagnose
potential availability issues on the payment form, enable the :ref:`developer-mode`, then click
the :icon:`fa-bug` (:guilabel:`bug`) icon next to the :guilabel:`Choose a payment method`
heading on the payment form. The report includes a list of enabled payment providers and payment
methods, reasons for any payment providers or methods not being available, if applicable, and a
list of supported providers for each payment method.
.. _payment_providers/currencies_countries:
Currencies and countries
@@ -50,6 +50,8 @@ customer's card, but not charged yet.
.. seealso::
- :doc:`../payment_providers`
.. _authorize/ach_payments:
ACH payments (USA only)
=======================
@@ -32,7 +32,7 @@ If you selected :guilabel:`Pending` as **payment outcome**, you can change the s
transaction straight from its form view. To access a transaction's form view, activate the
:ref:`developer mode <developer-mode>`, and go to :menuselection:`Accounting / Website -->
Configuration --> Payment Transactions`. Then, change the status of a transaction by clicking on the
state bar (:guilabel:`Draft, Pending, Authorized, Confirmed, Canceled, Error`).
state bar (:guilabel:`Draft, Pending, Authorized, Confirmed, Cancelled, Error`).
.. image:: demo/demo-view-form.png
:align: center
@@ -33,6 +33,8 @@ Configuration on the Xendit Dashboard
#. In the :guilabel:`Webhook URL` section, enter your Odoo database's URL, followed by
`/payment/xendit/webhook` (e.g., `https://example.odoo.com/payment/xendit/webhook`) in the field
:guilabel:`Invoices paid` and click the :guilabel:`Test and save` button next to it.
#. Navigate to the `Card Settings page <https://dashboard.xendit.co/settings/payment-methods/cards-configuration>`_
and ensure that :guilabel:`Optional 3DS` is enabled while :guilabel:`Dynamic 3DS` is disabled.
Configuration on Odoo
=====================
+1
View File
@@ -7,6 +7,7 @@ General settings
general/apps_modules
general/users
general/companies
general/multi_company
general/iot
general/email_communication
general/integrations
@@ -133,6 +133,8 @@ appears.
For more information on pricing, see `Odoo's pricing <https://www.odoo.com/pricing-plan>`_ page.
.. _general/employee-access:
Employee access
===============
@@ -189,6 +191,8 @@ Document Layout` and edit the information as needed.
populated from the company information listed, when navigating here: :menuselection:`Settings app
--> Companies section --> Manage Companies`, and select a company from the list.
.. _general/inter-company:
Inter-company transactions
==========================
@@ -34,14 +34,14 @@ registration`. On the :guilabel:`Register an application` screen, rename the :gu
and personal Microsoft accounts (e.g. Skype, Xbox)`.
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
is the canonical domain at which your Odoo instance can be reached in the URL field.
`https://<web base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The `web.base.url`
is subject to change depending on the URL used to log in to the database.
.. example::
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
assuming it's hosted on Odoo.com
.. note::
The documentation about the :ref:`web.base.url <domain-name/web-base-url>` explains how to freeze
a unique URL. It is also possible to add different redirect URLs on the Microsoft app.
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
After the URL has been added to the field, :guilabel:`Register` the application, so it is created.
API permissions
---------------
@@ -12,8 +12,9 @@ Outgoing emails
Email is not sent
-----------------
The first indicator showing that an email has not been sent is the presence of a red :guilabel:`✉️
(envelope)` icon, next to the date and time of the message, located in the chatter.
The first indicator showing that an email has not been sent is the presence of a red
:icon:`fa-envelope` :guilabel:`(envelope)` icon, next to the date and time of the message, located
in the chatter.
.. image:: faq/red-envelop.png
:align: center
@@ -42,13 +43,18 @@ Odoo's email servers from being blacklisted.
Here are the default limits for new databases:
- **200 emails per day** for Odoo Online and Odoo.sh databases with an active subscription.
- **20 emails per day** for one-app free databases.
- **50 emails per day** for trial databases.
- In the case of migration, the daily limit might be reset to 50 emails per day.
- **50 emails per day** for one-app free and trial databases.
.. important::
In a one-app free database, if the *Email Marketing* app is installed, the email limit is **20
emails per day**.
.. note::
In the case of migration, the daily limit might be reset to 50 emails per day.
If the daily limit is reached:
- Contact the Odoo support team, who may increase the daily limit depending on the following
- Contact the Odoo support team, who may increase the daily limit, depending on the following
factors:
#. How many users are in the database?
@@ -72,7 +78,7 @@ If the daily limit is reached:
SMTP error
**********
Simple Mail Transport Protocol (SMTP) error messages explain why an email wasn't transmitted
*Simple Mail Transport Protocol (SMTP)* error messages explain why an email was not transmitted
successfully. :abbr:`SMTP (Simple Mail Transport Protocol)` is a protocol to describe the email
structure, and transmits data from messages over the Internet. The error messages generated by email
services are helpful tools to diagnose and troubleshoot email problems.
@@ -83,9 +89,9 @@ services are helpful tools to diagnose and troubleshoot email problems.
mta4471.mail.bf1.yahoo.com --- Below this line is a copy of the message.`
The debug menu can be used to investigate SMTP sending issues from a database. To access the menu,
:ref:`developer mode <developer-mode>` must be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top right of the menu bar (the :guilabel:`🐞 (bug)` icon),
:menuselection:`Debug Menu --> Manage Messages`
:ref:`developer mode <developer-mode>` **must** be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top-right of the menu bar (the :icon:`fa-bug` :guilabel:`(bug)`
icon), and select :menuselection:`Debug Menu --> Manage Messages` from the resulting drop-down menu.
The :guilabel:`Manage Messages` menu opens a list of all the messages sent in a particular record.
Within each message there is information on sending, including the type, and subtype, of the
@@ -128,11 +134,10 @@ Email is sent late
Email campaigns send at a scheduled time, using a delay pre-programed in the database. Odoo uses a
delayed task to send emails that are considered "not urgent" (newsletter formats, such as: mass
mailing, marketing automation, and events). The system utility **cron** can be used to schedule
programs to run automatically at predetermined intervals. Odoo uses that policy in order to avoid
cluttering the mail servers and, instead, prioritizes individual communication. This **cron** is
called :guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode
<developer-mode>` by going to :menuselection:`Settings app --> Technical menu --> Automation -->
Scheduled Actions`.
programs to run automatically at predetermined intervals. Odoo uses that policy to avoid cluttering
the mail servers and, instead, prioritizes individual communication. This **cron** is called
:guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode <developer-mode>`
by going to :menuselection:`Settings app --> Technical menu --> Automation: Scheduled Actions`.
.. image:: faq/email-scheduled-later.png
:align: center
@@ -154,9 +159,9 @@ invoices, purchase orders, etc.) are sent immediately.
Incoming emails
===============
When there is an issue with incoming emails, there might not be an indication, per se, in Odoo. It
is the sending email client, who tries to contact a database, that will get a bounce-back message
(most of the time a :guilabel:`550: mailbox unavailable` error message).
When there is an issue with incoming emails, there might not be an indication in Odoo. It is the
sending email client, who tries to contact a database, that gets a bounce-back message (most of the
time it is a :guilabel:`550: mailbox unavailable` error message).
Email is not received
---------------------
@@ -229,5 +234,5 @@ of what can be helpful when reaching out to the Odoo Support team about an issue
.. note::
The bounce system parameter needs to be set in the technical settings in order for the database
to correctly receive bounce messages. To access this setting, go to :menuselection:`Settings app
--> Technical menu --> Parameters --> System Parameters`. Then select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it isn't already set.
--> Technical menu --> Parameters: System Parameters`. Then, select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it is not already set.
@@ -120,4 +120,4 @@ the right of the chatter. Then, select :guilabel:`Translate`. The content transl
:alt: Google Translate present in an Odoo database's chatter.
.. seealso::
:ref:`language/change-user-language`
:ref:`language/install`
@@ -14,3 +14,4 @@ Configuration
config/updating_iot
config/troubleshooting
config/windows_iot
config/ssh_connect
@@ -0,0 +1,46 @@
==========================
Connect an IoT box via SSH
==========================
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
.. |SSH| replace:: :abbr:`SSH (secure shell protocol)`
To provide an |SSH| connection to an Internet of Things (IoT) box, a password needs to be generated.
.. warning::
This feature should **only** be utilized with trusted parties, as it provides administrative
access to the |iot| box, which can create security issues.
Managing an |SSH| connection is **not** covered under the standard scope of Odoo support. Visit
the `Odoo Support <https://www.odoo.com/help>`_ page for additional information about what is
covered.
First, navigate to the :menuselection:`IoT app --> IoT Boxes`. Click on the IP address of the
appropriate |iot| box.
.. note::
If the desired |iot| box does not appear, see :doc:`troubleshooting` for additional steps.
At the bottom of the |iot| box pop-up window, click :guilabel:`Remote Debug`. This opens the
:guilabel:`Remote Debugging` pop-up window.
.. image:: ssh_connect/ssh-generate-password.png
:align: center
:alt: The Remote Debugging password generation window.
Click :guilabel:`Generate password`.
.. warning::
After the password has been generated from the :guilabel:`Remote Debugging` pop-up window, the
information **must** be recorded immediately. Once this window is closed, there is no current
method for looking up this information.
Enter the :guilabel:`Authentication Token` provided by the user attempting to connect to the |iot|
box.
Click :guilabel:`Enable Remote Debugging`.
.. seealso::
- :doc:`connect`
- :doc:`troubleshooting`
- :doc:`updating_iot`
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@@ -2,6 +2,9 @@
Connect a printer
=================
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
.. |usb| replace:: :abbr:`USB (Universal Serial Bus)`
Printer installation can be done in a few easy steps. The printer can be used to print receipts,
labels, orders, or even reports from the different Odoo apps. In addition, printer actions can be
assigned as an *action on a trigger* during the manufacturing process, or added onto a quality
@@ -10,17 +13,16 @@ control point or a quality check.
Connection
==========
The :abbr:`IoT (Internet of Things)` box supports printers connected through :abbr:`USB (Universal
Serial Bus)`, network connection, or Bluetooth. `Supported printers
<https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and appear in the
:guilabel:`Devices` list of the *IoT app*.
The |iot| box supports printers connected through |usb|, network connection, or Bluetooth.
`Supported printers <https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and
appear in the :guilabel:`Devices` list of the *IoT* app.
.. image:: printer/printer-detected.png
:align: center
:alt: The printer as it would appear in the IoT app devices list.
.. note::
The printer can take up to two minutes to appear in the *IoT app* devices list.
Printers can take up to two minutes to appear in the *IoT* app :guilabel:`Devices` list.
Link printer
============
@@ -63,15 +65,16 @@ specific product.
.. note::
On a quality check detail form, the :guilabel:`Type` of check can also be specified to
:guilabel:`Print Label`. To create new quality checks, navigate to :menuselection:`Quality app
--> Quality Control --> Quality Checks --> New`.
:guilabel:`Print Label`. To create :doc:`new quality checks
<../../../inventory_and_mrp/quality/quality_management/quality_checks>`, navigate to
:menuselection:`Quality app --> Quality Control --> Quality Checks --> New`.
.. seealso::
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_control_points`
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_alerts`
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_control_points`
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_alerts`
Link a printer to a work center in the Manufacturing app
--------------------------------------------------------
Link a printer to a work center
-------------------------------
To link a printer to an action, it first needs to be configured on a work center. To do that,
navigate to :menuselection:`Manufacturing app --> Configuration --> Work Centers`. From here, select
@@ -94,29 +97,52 @@ Slip`. A key can also be added to trigger the action.
.. seealso::
:ref:`workcenter_iot`
.. _iot/link-printer:
Link printer to reports
-----------------------
It's also possible to link a type of report to a certain printer. In the *IoT app*, go to the
:guilabel:`Devices` menu, and select the desired printer that needs to be configured.
It is possible to link report types to a specific printer. In the *IoT* app, go to the
:guilabel:`Devices` menu, and select the desired printer to be configured.
From here, click :guilabel:`Edit`, go to the :guilabel:`Printer Reports` tab, and select
:guilabel:`Add a line`. In the window that appears, check all the types of :guilabel:`Reports` that
should be linked to this printer.
From here, go to the :guilabel:`Printer Reports` tab, and click :guilabel:`Add a line`. In the
window that appears, check all the types of :guilabel:`Reports` that should be linked to this
printer.
.. image:: printer/printers-listed.png
.. image:: printer/printer-reports.png
:align: center
:alt: The printer devices listed in the IoT Devices menu.
:alt: The list of reports assigned to a printer in the IoT app.
Now, each time :guilabel:`Print` is selected in the control panel, instead of downloading a PDF, a
pop-up appears which displays all the printer(s) linked to the report. Then Odoo sends the report to
the selected printer(s), and automatically prints it.
.. tip::
Reports can also be configured in the *Technical* menu of the *Settings* app, while in
:ref:`debug mode <developer-mode>`. To do that, navigate to :menuselection:`Settings App -->
Technical --> Actions: Reports`. From here, select the desired report from the list. Then, an
:guilabel:`IoT Device` can be set on the report.
The first time a linked report is selected to print, a :guilabel:`Select Printers` pop-up window
appears. Tick the checkbox next to the correct printer for the report, and click :guilabel:`Print`.
At that point, the report is linked to the printer.
Clear device printer cache
~~~~~~~~~~~~~~~~~~~~~~~~~~
After a printer is linked to print a report, the setting is saved in a browser's cache. This means
a user can have different devices saved in their cache for different reports, based on the device
they use to access Odoo. It also means different users can have a report automatically printed from
different printers, based on their preferences.
To unlink a report from a printer, navigate to :menuselection:`IoT app --> Clear Selected Devices`.
This generates a list of reports that are linked to a printer on the current device. Click the
:guilabel:`Unlink` button next to each report to remove the link.
.. important::
This step **only** prevents the report from automatically printing to the listed printer from
the current browser. The report is still :ref:`linked <iot/link-printer>` on the device, under
the :guilabel:`Printer Reports` tab.
.. image:: printer/clear-reports.png
:align: center
:alt: A list of reports currently linked to a printer in the IoT app.
.. seealso::
:doc:`POS Order Printing <../../../sales/point_of_sale/restaurant/kitchen_printing>`
.. tip::
Reports can also be configured in the :guilabel:`Technical Menu` while in :ref:`debug mode
<developer-mode>`. To do that, navigate to :menuselection:`Settings App --> Technical Menu -->
Actions --> Reports`. From here, the individual report can be found in this list, where the
:guilabel:`IoT Device` can be set on the report.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

@@ -0,0 +1,140 @@
=============
Multi-company
=============
.. |mcd| replace:: multi-company database
In Odoo, multiple companies can exist within a single database. This allows for some data to be
shared among companies, while still maintaining some level of separation between entities.
Before deciding to use the multi-company feature, there are several factors to consider.
.. important::
Multi-company is **only** available in *One App Free* databases, or with `Custom
<https://www.odoo.com/pricing-plan>`_ plans.
Accessing multiple companies
============================
The list of :ref:`companies an employee has access to <general/employee-access>` in a |mcd| can be
found at the top-right of the main Odoo menu bar, where the active company is listed. Click on the
company name to reveal a list of all allowed companies. To switch to a different company, click on
the company name in the drop-down menu. To enable multiple companies at once, tick the checkbox next
to each desired company name.
.. figure:: multi_company/company-access.png
:align: center
:alt: An example of the list of companies a user has access to when logged into a database.
An example of a user with access to multiple companies. The current company is My Company (San
Francisco), while My Company (Chicago) is also active.
.. note::
The database may refresh after each checkbox is ticked.
.. _general/active-companies:
Multiple active companies
-------------------------
If more than one company is active at a time, one company is highlighted in purple, and is listed on
the menu bar. This is the considered the *current* company.
When creating a new record, the current company is added to the record in the *Company* field,
except under the following circumstances:
- The *Company* field for a new product, or a new contact, is left blank.
- If there is a related document already in the system, the *Company* field on the new record
defaults to the same company.
.. example::
Mitchell Admin has multiple companies enabled, but the current company is `My Company (Chicago)`.
When he creates a new product record, the :guilabel:`Company` field is left blank by default.
When a new sales team is created, the :guilabel:`Company` field automatically defaults to `My
Company (Chicago)`.
.. _general/sharing-data:
Share data
==========
In a |mcd|, certain records are able to be utilized by all of the companies (or several, based on
permissions).
Products
--------
In an |mcd|, new products are created with the :ref:`Company field <general/active-companies>`
blank, by default. If the *Company* field remains blank, the product is shared across all companies.
Contacts
--------
Similar to products, contact records are shared across companies, by default. To limit access to a
single company, click the :ref:`Company field <general/active-companies>` on a contact form, and
select a company to assign the contact to.
Inter-company transactions
==========================
The :ref:`Inter-Company Transactions <general/inter-company>` feature allows for one company in the
database to sell or purchase goods and services from another company within the same database.
Counterpart documents for orders and invoices can be automatically generated and synchronized,
depending on the configuration settings.
.. warning::
To ensure inter-company transactions are handled appropriately, certain configurations, such as
fiscal positions and localizations, need to be accurately assigned. See :ref:`Inter-Company
Transactions <general/inter-company>` for additional information.
Use cases
=========
Multinational companies
-----------------------
A multinational retail chain, which operates in the United States and Canada, needs to manage
transactions in both USD and CAD currencies.
Additionally, because both countries have different tax laws and regulations, it is in the best
interest of the customer to utilize the multi-company feature.
This allows for inter-company transactions they need to manage inventory moves across international
borders, while making it simple to sell to customers in both countries in their own currency.
Separate processes
------------------
A small furniture company is developing a new line of products that require a separate procurement,
inventory, and manufacturing process. The new products are drastically different from the existing
catalog. The company is considering utilizing the multi-company feature to treat this new line as a
different entity.
To keep their database from becoming overly complex, the furniture company does not need to add an
entirely new company. Instead, they can take advantage of existing features, such as :doc:`analytic
accounting <../finance/accounting/reporting/analytic_accounting>`, and multiple warehouses, to
manage the new product line, without having to overly complicate transactions.
Limitations
===========
In some instances, a |mcd| may *not* be the best option, due to potential limitations.
Access rights
-------------
A user's access rights are configured on a database level. If a user has access to more than one
company in a |mcd|, their access rights are the same across every company.
Shared records
--------------
Individual records are either :ref:`shared <general/sharing-data>` between all companies, or belong
to a single company.
PDF Reports
-----------
Some customizations, specifically for PDF reports, apply to all companies. It is not always possible
to separate reports for individual companies.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+1
View File
@@ -254,6 +254,7 @@ company.
users/2fa
users/access_rights
users/portal
users/facebook
users/google
users/azure
users/ldap
+88 -90
View File
@@ -1,127 +1,125 @@
=========================
Two-factor Authentication
Two-factor authentication
=========================
Two-factor authentication ("2FA") is a good way to improve the
security of an account, to make it less likely that an other person
will manage to log in instead of you.
.. |2fa| replace:: :abbr:`2FA (two-factor authentication)`
.. |QR| replace:: :abbr:`QR (Quick Response)` code
Practically, it means storing a secret inside an *authenticator*
(usually your cell phone) and exchanging a code from the authenticator
when you try to log in.
*Two-factor authentication (2FA)* is a way to improve security, and prevent unauthorized persons
from accessing user accounts.
This means an attacker needs *both* to have guessed (or found) your
password and to access (or steal) your authenticator, a more difficult
proposition than either one or the other.
Practically, |2fa| means storing a secret inside an *authenticator*, usually on a mobile phone, and
exchanging a code from the authenticator when trying to log in.
This means an unauthorized user would need to guess the account password *and* have access to the
authenticator, which is a more difficult proposition.
Requirements
============
.. note:: These lists are just examples, they are not endorsements of
any specific software.
.. important::
These lists are just examples. They are **not** endorsements of any specific software.
If you don't already have one, you will need to choose an
authenticator.
Phone-based authenticators are the easiest and most commonly used. Examples include:
Phone-based authenticators are the easiest and most common so we will
assume you'll pick and install one on your phone, examples include
`Authy <https://authy.com/>`_, `FreeOTP
<https://freeotp.github.io/>`_, `Google Authenticator
<https://support.google.com/accounts/answer/1066447?hl=en>`_,
`LastPass Authenticator <https://lastpass.com/auth/>`_, `Microsoft
Authenticator
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_,
...; password managers also commonly include :abbr:`2FA (two-factor
authentication)` support e.g. `1Password
<https://support.1password.com/one-time-passwords/>`_, `Bitwarden
<https://bitwarden.com/help/article/authenticator-keys/>`_, ...
- `Authy <https://authy.com/>`_
- `FreeOTP <https://freeotp.github.io/>`_
- `Google Authenticator <https://support.google.com/accounts/answer/1066447?hl=en>`_
- `LastPass Authenticator <https://lastpass.com/auth/>`_
- `Microsoft Authenticator
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_
For the sake of demonstration we will be using Google Authenticator
(not because it is any good but because it is quite common).
Password managers are another option. Common examples include:
Setting up two-factor authentication
====================================
Once you have your authenticator of choice, go to the Odoo instance
you want to setup :abbr:`2FA (two-factor authentication)`, then open
:guilabel:`Preferences` (or :guilabel:`My Profile`):
.. figure:: 2fa/preferences.png
:align: center
Open the :guilabel:`Account Security` tab, then click the
:guilabel:`Enable two-factor authentication` button:
.. figure:: 2fa/sec_tab.png
:align: center
Because this is a security-sensitive action, you will need to input
your password:
.. figure:: 2fa/sec_enhanced.png
:align: center
After which you will see this screen with a barcode:
.. figure:: 2fa/totp_scan.png
:align: center
In most applications, you can simply *scan the barcode* via the
authenticator of your choice, the authenticator will then take care of
all the setup:
.. figure:: 2fa/scan_barcode.jpg
:align: center
- `1Password <https://support.1password.com/one-time-passwords/>`_
- `Bitwarden <https://bitwarden.com/help/article/authenticator-keys/>`_,
.. note::
The remainder of this document uses Google Authenticator as an example, as it is one of the most
commonly used. This is **not** an endorsement of the product.
If you can not scan the screen (e.g. because you are doing this
set-up on the same phone as the authenticator application), you can
click the provided link, or copy the secret to manually set-up your
authenticator:
Two-factor authentication setup
===============================
.. figure:: 2fa/secret_visible.png
After selecting an authenticator, log in to Odoo, then click the profile avatar in the upper-right
corner, and select :guilabel:`My Profile` from the resulting drop-down menu.
Click the :guilabel:`Account Security` tab, then slide the :guilabel:`Two-Factor Authentication`
toggle to *active*.
.. figure:: 2fa/account-security.png
:align: center
This generates a :guilabel:`Security Control` pop-up window that requires password confirmation to
continue. Enter the appropriate password, then click :guilabel:`Confirm Password`. Next, a
:guilabel:`Two-Factor Authentication Activation` pop-up window appears, with a |QR|.
.. figure:: 2fa/qr-code.png
:align: center
Using the desired authenticator application, scan the |QR| when prompted.
.. tip::
If scanning the screen is not possible (e.g. the setup is being completed on the *same* device as
the authenticator application), clicking the provided :guilabel:`Cannot scan it?` link, or
copying the secret to manually set up the authenticator, is an alternative.
.. figure:: 2fa/secret-visible.png
:align: center
.. figure:: 2fa/input_secret.png
.. figure:: 2fa/input-secret.png
:align: center
Once this is done, the authenticator should display a *verification
code* with some useful identifying information (e.g. the domain and
login for which the code is):
Afterwards, the authenticator should display a *verification code*.
.. figure:: 2fa/authenticator.png
:align: center
You can now input the code into the :guilabel:`Verification Code`
field, then click the :guilabel:`Enable two-factor authentication`
button.
Enter the code into the :guilabel:`Verification Code` field, then click :guilabel:`Activate`.
Congratulation, your account is now protected by two-factor
authentication!
.. figure:: 2fa/totp_enabled.png
.. figure:: 2fa/2fa-enabled.png
:align: center
Logging in
==========
You should now :guilabel:`Log out` to follow along.
To confirm |2fa| setup is complete, log out of Odoo.
On the login page, input the username and password of the account for
which you set up :abbr:`2FA (two-factor authentication)`, rather than
immediately enter Odoo you will now get a second log-in screen:
On the login page, input the username and password, then click :guilabel:`Log in`. On the
:guilabel:`Two-factor Authentication` page, input the code provided by the chosen authenticator in
the :guilabel:`Authentication Code` field, then click :guilabel:`Log in`.
.. figure:: 2fa/2fa_input.png
.. image:: 2fa/2fa-login.png
:align: center
:alt: The login page with 2fa enabled.
Get your authenticator, input the code it provides for the domain and
account, validate, and you're now in.
.. danger::
If a user loses access to their authenticator, an administrator **must** deactivate |2fa| on the
account before the user can log in.
And that's it. From now on, unless you disable :abbr:`2FA (two-factor
authentication)` you will have a two-step log-in process rather than
the old one-step process.
Enforce two-factor authentication
=================================
.. danger:: Don't lose your authenticator, if you do, you will need an
*Odoo Administrator* to disable :abbr:`2FA (two-factor
authentication)` on the account.
To enforce the use of |2fa| for all users, first navigate to :menuselection:`Main Odoo Dashboard -->
Apps`. Remove the :guilabel:`Apps` filter from the :guilabel:`Search...` bar, then search for `2FA
by mail`.
Click :guilabel:`Install` on the Kanban card for the :guilabel:`2FA by mail` module.
.. image:: 2fa/2FA-by-mail.png
:align: center
:alt: The 2FA by mail module in the Apps directory.
After installation is complete, go to :guilabel:`Settings app: Permissions`. Tick the checkbox
labeled, :guilabel:`Enforce two-factor authentication`. Then, use the radio buttons to choose
whether to apply this setting to :guilabel:`Employees only`, or :guilabel:`All users`.
.. note::
Selecting :guilabel:`All users` applies the setting to portal users, in addition to employees.
.. image:: 2fa/enforce-settings.png
:align: center
:alt: The enforce two factor setting in the Settings application.
Click :guilabel:`Save` to commit any unsaved changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

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