Compare commits

...

103 Commits

Author SHA1 Message Date
Donatienne (dopi) b0c083b106 [IMP] elearning: editing content
taskid-3908034
2024-05-30 15:28:23 +02:00
Xavier-Do 109c82776a [IMP] adapt documentation for new install script
closes odoo/documentation#9506

X-original-commit: af73b44168
Related: odoo/odoo#167076
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-30 08:30:55 +00:00
Lara Martini (larm) b4704c4424 [IMP] Payroll: add necessary contract modules
closes odoo/documentation#9469

X-original-commit: 27eaaf860b
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-28 17:50:38 +00:00
Yaroslav Soroko (yaso) d8b44a0e4b [IMP] point_of_sale: Setup all Ingenico terminals
Currently we only tell how to setup Ingenico Lane/5000 terminal.
Actually, Lane/5000 and Move/5000 can be set up in almost the same way,
only the button to enter settings is different.

This PR adds a more generic configutation guide applicable  to all the
Ingenico Lane/Desk/Move terminals

Also, it replaces erroneous Worldline mention in the top by Ingenico

task-3879038

closes odoo/documentation#9491

X-original-commit: 23a1c496bf
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
2024-05-28 08:05:47 +00:00
Odoo Translation Bot e9a0606f32 [I18N] Update translation terms from Transifex 2024-05-26 01:40:52 +02:00
Felicious 6305211a1e [IMP] inventory: sendcloud shipping info
closes odoo/documentation#9436

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-05-25 00:49:52 +00:00
Jonathan 777eae22c5 [IMP] inventory-mrp: rename the category into Supply Chain
closes odoo/documentation#9461

X-original-commit: 9f279170a5
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-05-24 17:34:41 +00:00
Lara Martini (larm) c2691c5ef3 [ADD] referrals: moving share jobs section to new doc
closes odoo/documentation#9422

X-original-commit: 7ec544281b
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-20 14:04:21 +00:00
Odoo Translation Bot ba996c0266 [I18N] Update translation terms from Transifex 2024-05-19 01:41:07 +02:00
Donatienne (dopi) abf62125ea [IMP] website: google search console
taskid-3932743

closes odoo/documentation#9374

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-05-17 13:21:52 +00:00
Sam Lieber (sali) d71c19b7be [FIX] extensions: icon_role fa icons
closes odoo/documentation#9375

X-original-commit: 89f61f900e
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-16 19:16:29 +00:00
Loan (LSE) 079ca0cc0c [IMP] general: iot add payment terminals link
closes odoo/documentation#9320

X-original-commit: 258636564e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-15 05:17:19 +00:00
KC (ksc) 214fed5fdf [FIX] sales: fixed a loyalty card specificity
closes odoo/documentation#9225

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-13 23:41:40 +00:00
Odoo Translation Bot 4f3c0b0e16 [I18N] Update translation terms from Transifex 2024-05-12 01:41:50 +02:00
tiku-odoo b0927964c6 [ADD] finance: avalara portal
closes odoo/documentation#9290

X-original-commit: 38fa0d3a4e
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-10 18:58:26 +00:00
tiku-odoo 1cedbcce58 [IMP]accounting: avatax api integration rewrite
closes odoo/documentation#9274

X-original-commit: fe3cbf7231
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-10 12:16:16 +00:00
Felicious b5a80eed7b [IMP] inventory: stock input + output account fix
closes odoo/documentation#9169

X-original-commit: eba257a7fa
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-09 23:17:08 +00:00
tiku-odoo 62386aae3e [IMP] finance: avatax use add logging
closes odoo/documentation#9260

X-original-commit: 314ddb2de3
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-09 20:24:28 +00:00
Sam Lieber (sali) a39903ca12 [IMP] extensions: icon_role odoo ui
closes odoo/documentation#9065

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-08 15:35:01 +00:00
XPL e16a66706a [IMP] settings: simplify the developer mode page
task-3849915

closes odoo/documentation#9208

X-original-commit: df888df654
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-07 13:49:33 +00:00
tiku-odoo ee2b0e4a66 [IMP] sales: amazon connector add fba warning block
closes odoo/documentation#9216

X-original-commit: 97fabc9f37
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-06 22:41:23 +00:00
tiku-odoo 3c530a6473 [ADD] finance: avatax tax calculation
closes odoo/documentation#9210

X-original-commit: 41b6e2f227
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-06 21:25:15 +00:00
XPL f5fa1cdc89 [IMP] website: warn about privacy regulations for recaptcha and gtm
task-3896553
task-3896425

closes odoo/documentation#9152

X-original-commit: 76b6dd384c
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-06 08:04:39 +00:00
Odoo Translation Bot b798b37111 [I18N] Update translation terms from Transifex 2024-05-05 01:41:18 +02:00
XPL c6754134c5 [IMP] accounting: change the lock date warning to an optional tip
task-3787113

closes odoo/documentation#9162

X-original-commit: 5c84c9fc7f
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-03 21:59:50 +00:00
Donatienne (dopi) 44c8ee26d1 [IMP] elearning: correction needed
taskid-3908034

closes odoo/documentation#9146

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-03 15:11:51 +00:00
Donatienne (dopi) a261ffd256 [IMP] Website: pages doc to be updated
taskid-3667291

closes odoo/documentation#9117

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-05-02 12:18:36 +00:00
tiku-odoo 5a78b0fd73 [IMP] admin: onprem password reset
closes odoo/documentation#9106

X-original-commit: ad3343d158
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-01 16:57:14 +00:00
tiku-odoo fcd9b40293 [IMP] general: iot windows iot revise version
closes odoo/documentation#9084

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-30 20:59:43 +00:00
Felicious 77d824bd67 [IMP] inventory: fix lot assignment
closes odoo/documentation#8951

Signed-off-by: Samuel Lieber (sali) <sali@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-04-30 18:47:33 +00:00
Antoine Vandevenne (anv) 868bf74d3d [IMP] Makefile: print the full traceback for unhandled exceptions
This should help reading the traceback on Runbot, where the log files
are not always kept.

closes odoo/documentation#9069

X-original-commit: 73ee687aca
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-30 13:44:31 +00:00
Sam Lieber (sali) 8bec283166 [ADD] extensions: icon_role font awesome
closes odoo/documentation#9053

X-original-commit: 1039a0b195
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-29 16:46:01 +00:00
Victor Feyens 9865c8ee4e [FIX] dev/tutorials: typo
courtesy of @/ChloeLiang

closes odoo/documentation#9045

X-original-commit: 3e62a8c4cd
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-29 15:29:05 +00:00
Tiffany Chang (tic) 53747b1818 [I18N] *: export latest terms
closes odoo/documentation#9044

X-original-commit: c90f683
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-04-29 14:13:22 +00:00
Odoo Translation Bot bc0119ffdf [I18N] Update translation terms from Transifex 2024-04-28 01:40:51 +02:00
Zachary Straub (ZST) 8984c27df9 [FIX] quality: replace overview 404 link
closes odoo/documentation#9027

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-26 22:00:15 +00:00
XPL 8aff258cfe [IMP] l10n-belgium: update the supported blackbox model
task-3895014

closes odoo/documentation#9017

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-26 09:20:21 +00:00
Loredana Perazzo b7c065c2ba [ADD] pos: list of compatible epos printers
no-task related

closes odoo/documentation#9003

X-original-commit: 96fd984293
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
Co-authored-by: Timothy Kukulka <tiku@odoo.com>
Co-authored-by: Loredana Perazzo <lrpz@odoo.com>
2024-04-25 21:58:41 +00:00
tiku-odoo 93c42b6e17 [IMP] database mgt: odoocom account add dup limit
closes odoo/documentation#8995

X-original-commit: ecd7d62a01
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-25 21:58:40 +00:00
tiku-odoo 5bed8eb25b [IMP] sales: partner autocomplete rewrite
closes odoo/documentation#8994

X-original-commit: 376588000e
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-25 20:35:45 +00:00
Loredana Perazzo 446a134a0d [IMP] iot: admonition about the required certification to use a scale in POS
task-3876833

closes odoo/documentation#8982

X-original-commit: 4a12c56fc4
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-25 15:09:49 +00:00
tiku-odoo 77cee2f00c [IMP] marketing: sms essentials automated action
closes odoo/documentation#8956

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-24 20:16:59 +00:00
Felicious b360ff1042 [IMP] inventory: troubleshooting 3rd party carrier
closes odoo/documentation#8788

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: brse-odoo <brse@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-04-23 18:51:38 +00:00
Felicious ecc993ee35 [IMP] inventory: print shipping label
closes odoo/documentation#8658

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-23 17:38:52 +00:00
XPL 791e784f2f [IMP] upgrade: modify support information
task-3473194

closes odoo/documentation#8927

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-23 13:21:05 +00:00
Yaroslav Soroko (yaso) 9e312a0bdc [IMP] point_of_sale: add Ingenico details
This PR adds the very much necessary details about the Ingenico
terminals we support, the communication protocol and the countries
coverage.
- We support only Ingenico terminals in Benelux
- The terminals must support TLV as communication protocol
- We contact terminals through TCP/IP only, not the serial port
- According to our contact in Ingenico (now Axepta) this is the case for
  all the Lane/Desk/Move payment terminals

task-3865904

closes odoo/documentation#8826

X-original-commit: 67f096cfe8
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-23 09:59:45 +00:00
tiku-odoo eeda8eb4df [IMP] essentials: iap rewrite
closes odoo/documentation#8917

X-original-commit: 46d3bdcd3a
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-22 20:59:21 +00:00
XPL 9d22bf9e14 [IMP] spreadsheet: remove two technical functions
closes odoo/documentation#8916

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-22 20:59:20 +00:00
tiku-odoo 04a4e53272 [ADD] sales: crm lead enrichment
closes odoo/documentation#8909

X-original-commit: 0bd590d4b9
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-22 19:36:37 +00:00
XPL 453c9eda65 [ADD] spreadsheet: functions
closes odoo/documentation#8873

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-22 11:27:14 +00:00
Odoo Translation Bot 65cf53b52c [I18N] Update translation terms from Transifex 2024-04-21 01:40:58 +02:00
tiku-odoo faf723225e [IMP] productivity: microsoft calendar rewrite
closes odoo/documentation#8883

X-original-commit: 065f242993
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-19 21:12:59 +00:00
Felicious 4d7926f159 [IMP] inventory: overhaul 3rd party shippers
closes odoo/documentation#8634

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: brse-odoo <brse@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-04-19 19:36:00 +00:00
tiku-odoo 388253665e [IMP] sales: subscription follow-up alerts add block
closes odoo/documentation#8878

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-19 18:16:38 +00:00
Victor Feyens ca1d8adf7e [FIX] redirects: forgotten redirects
Missing redirections for 91a48bfe88

closes odoo/documentation#8869

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-19 11:56:35 +00:00
tiku-odoo 133d363669 [IMP] productivity: calendar google add troubleshooting
closes odoo/documentation#8851

X-original-commit: 728dcf5078
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-18 20:14:58 +00:00
Alvaro Fuentes 91a48bfe88 [IMP] doc: improve organization of upgrades docs
* Add autodoc directives to generate documentation directly from
  upgrade-util repo.
* Group all upgrades-related reference documentation into one group in
  the sidebar, instead of having two entries.
* Mention `upgrades` vs `migrations` directory. It has been supported
  since a while but nothing was explicit in the documentation.

closes odoo/documentation#8748

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-18 10:25:30 +00:00
Alvaro Fuentes 3352d33997 [IMP] upgrade-util: link code documentation
Add direct code documentation from upgrade-util repo.
Adapt `extensions/github_link`.

Part-of: odoo/documentation#8748
Co-authored-by: Victor Feyens <vfe@odoo.com>
2024-04-18 10:25:30 +00:00
XPL 6acf37c0a4 [IMP] hosting: add Odoo.sh as not supporting intermediary versions
task-3874935

closes odoo/documentation#8805

X-original-commit: d1e65a3224
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-18 07:12:05 +00:00
Yaroslav Soroko (yaso) 3f218b3b07 [IMP] point_of_sale: add Adyen details
This PR adds a link to a much needed Adyen coverage per country and
their terminal models

task-3865904

closes odoo/documentation#8804

X-original-commit: c100f94748
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-18 05:57:40 +00:00
Yaroslav Soroko (yaso) 09f5c15e90 [IMP] point_of_sale: add Worldline terminal models
This PR adds the Worldline terminal models we support to better redirect
our clients and colleagues when using Worldline terminals.

task-3865904

closes odoo/documentation#8757

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-17 14:29:11 +00:00
Yaroslav Soroko (yaso) f7bc929e00 [IMP] finance: add Stripe links for more info
This PR adds more details about Stripe coverage and supported payment
methods and terminals.

task-3865904

closes odoo/documentation#8750

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-17 13:03:19 +00:00
tiku-odoo d7ecfaa1c5 [IMP] productivity: calendar add troubleshooting
closes odoo/documentation#8763

X-original-commit: 856836af1d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-16 13:12:48 +00:00
Yaroslav Soroko (yaso) 59108aedda [IMP] point_of_sale: stripe add details
This PR adds details like countries coverage, supported terminals and
payment methods to Stripe documentation for point_of_sale

task-3865904

closes odoo/documentation#8721

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-15 17:44:22 +00:00
XPL 15a12a7b10 [IMP] point of sale: wordline windows firewall
task-3865298

closes odoo/documentation#8709

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-15 07:56:53 +00:00
Odoo Translation Bot 3464bb553f [I18N] Update translation terms from Transifex 2024-04-14 01:40:57 +02:00
tiku-odoo 490f337fb4 [IMP] general: iot troubleshooting printer addition
closes odoo/documentation#8688

X-original-commit: e444f8678e
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-12 21:01:15 +00:00
Felicious c8ad3af954 [IMP] barcode: broken eLearning link
closes odoo/documentation#8699

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-04-11 19:55:05 +00:00
XPL 2036073955 [IMP] accounting: snailmail trial credits removal
task-3844653

closes odoo/documentation#8677

X-original-commit: e7dc7815b5
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-11 09:49:20 +00:00
jero-odoo 50a8171f02 [IMP] CRM: utilize activities 16.0
closes odoo/documentation#8654

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-10 21:14:42 +00:00
tiku-odoo d6e9edf7b8 [IMP] general: users rewrite
closes odoo/documentation#8646

X-original-commit: 3f2f33a349
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-10 18:27:36 +00:00
Felicious 4cf0551c04 [MOV] inventory: group inventory adj docs together
closes odoo/documentation#8203

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-09 22:26:07 +00:00
tiku-odoo a1dc78b1ac [IMP] productivity: voip OnSIP US only block
closes odoo/documentation#8609

X-original-commit: 93552388ab
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-09 21:08:53 +00:00
tiku-odoo 34f2fb7561 [IMP] general: integrations outlook plugin add block
closes odoo/documentation#8616

X-original-commit: 21f23d98d3
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-09 19:51:58 +00:00
Lara Martini (larm) a7695142bb [MOV] fleet: config doc to parent
closes odoo/documentation#8556

X-original-commit: 1ead41e559
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-09 16:55:48 +00:00
jero-odoo e2341f4511 [ADD] crm: utilize activities for sales teams
closes odoo/documentation#8587

X-original-commit: d27def362b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-04-09 11:24:26 +00:00
jero-odoo 88e9b69855 [REM] crm: track prospects visits
closes odoo/documentation#8481

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-09 00:43:58 +00:00
Odoo Translation Bot 2f7e5a6815 [I18N] Update translation terms from Transifex 2024-04-07 01:41:11 +02:00
tiku-odoo 7f22528e73 [IMP] general: companies digest email rewrite
closes odoo/documentation#8546

X-original-commit: 9897673e93
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-04 20:48:46 +00:00
Ali Alfie (alal) 307e264241 [IMP] fiscal_localizations: HMRC mode config param
In odoo/enterprise/pull/59152 a system parameter is added to control the HMRC mode from production to demo allowing the use of dummy credentials.

task-3820114

closes odoo/documentation#8380

Related: odoo/enterprise#59152
Signed-off-by: Ali Alfie (alal) <alal@odoo.com>
2024-04-04 10:44:56 +00:00
Antoine Vandevenne (anv) a451ad2dab [IMP] supported_versions: release saas-17.2
closes odoo/documentation#8494

X-original-commit: a906478bc7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-02 18:16:44 +00:00
XPL a67c1c7f19 [ADD] database management: odoo mobile apps
task-3821019

closes odoo/documentation#8485

X-original-commit: 9fd199ff27
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-02 15:49:46 +00:00
Damien Bouvy d56d85da69 [FIX] studio: incorrect screenshot of light layout
Since 16.0, the layout does not have intermediary borders in its tables
(this is an explicit choice in R&D since they seem to be using the
`table-borderless` class explicitely). This commit updates the
screenshot to match this reality.

opw-3266968

closes odoo/documentation#8484

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-02 15:49:45 +00:00
Odoo Translation Bot 9e56f571b4 [I18N] Update translation terms from Transifex 2024-03-31 01:41:26 +01:00
XPL 74c0af7429 [IMP] website: domain names CNAME records
Clarify that it is required to create a redirection from the naked domain to the
www. subdomain

closes odoo/documentation#8438

X-original-commit: 363d0a582f
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-29 12:58:45 +00:00
“ralo-odoo” 3a98d49f83 [IMP] localizations: Philippines
closes odoo/documentation#8414

Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-03-28 20:53:53 +00:00
tiku-odoo e30c87800d [IMP] general: iot windows iot update process
closes odoo/documentation#8361

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-28 18:33:11 +00:00
tiku-odoo c779852011 [IMP] general: users access rights rewrite
closes odoo/documentation#8393

X-original-commit: ae061c9041
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-27 18:01:58 +00:00
Felicious 2733aac1fc [IMP] inventory: invoice shipping
closes odoo/documentation#8360

X-original-commit: ba49211c55
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-03-25 20:36:51 +00:00
Felicious d34c588849 [IMP] inventory: remove rescheduling
closes odoo/documentation#8284

X-original-commit: 8ad53481d1
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
2024-03-25 19:13:28 +00:00
Sam Lieber (sali) 6ebc4d7b19 [IMP] l10n_ec/accounting: ats report
closes odoo/documentation#7944

Signed-off-by: Roberto Palacios (rps) <rps@odoo.com>
2024-03-25 19:13:26 +00:00
Felicious 8a0d3598a6 [IMP] inventory: visibility days
closes odoo/documentation#7995

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-03-25 00:33:13 +00:00
Odoo Translation Bot 48a4e94d56 [I18N] Update translation terms from Transifex 2024-03-24 01:41:37 +01:00
tiku-odoo ff54eee8de [IMP] essentials: import export rewrite
closes odoo/documentation#8311

X-original-commit: c635baa0a2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-22 14:17:56 +00:00
Tiffany Chang (tic) 962a1cce66 [I18N] *: export latest terms + add missing resources
This commit does 2 things:

- exports the latest terms to be translated
- adds missing pot files + adds them to be translated on transifex
  (essentials and studio)

Notes:
- hr (source) was already in v16, but was missing from v15 and v17,
  hence the commits being slightly different
- latest pot files of `contributing`, `developer`, and `legal` were
  purposely left off this PR because they are either not translated
  or not translated via Transifex, so these pot files serve no purpose

closes odoo/documentation#8295

X-original-commit: ee34727c4d
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-03-21 21:25:51 +00:00
tiku-odoo 0ec8579b92 [IMP] iot: flash card update section
closes odoo/documentation#8294

X-original-commit: 1f89b5f4b2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-21 20:09:48 +00:00
Mohamed Alkobrosli 91f0f5d194 [FIX] dev/assets: typo
the "py" letter should be "by" to make the syntax correct and understood.

closes odoo/documentation#8276

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-03-21 12:41:50 +00:00
tiku-odoo 2fad56f841 [IMP] email comms: feedback loop edit
closes odoo/documentation#8171

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-03-20 20:39:55 +00:00
tiku-odoo 1c5714ed66 [IMP] hosting: add admonition block on subscription
closes odoo/documentation#8245

X-original-commit: 9df807a532
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-20 16:38:20 +00:00
masi-odoo 39910d1e7b [IMP] accounting/l10n_cl: electronic purchase invoice
Google Drive image folder: https://drive.google.com/drive/folders/12OaeDvzn-u5Nf_AjhIzrWaZWEb7smlTL?usp=drive_link

closes odoo/documentation#7893

Signed-off-by: Marco Antonio Iribe Sepulveda (masi) <masi@odoo.com>
2024-03-20 16:38:17 +00:00
tiku-odoo 556ee18406 [IMP] developer: external api add admonition block
closes odoo/documentation#8214

X-original-commit: d6f5e74971
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-20 13:10:32 +00:00
tiku-odoo 0ddecbc6fc [REM] voip: onsip scrub per onsip
closes odoo/documentation#8209

X-original-commit: 7b728a22f4
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-20 13:10:30 +00:00
Martin Trigaux (mat) 88fa5d6e0a [I18N] conf: add more language codes
closes odoo/documentation#8207

X-original-commit: 18062ec3b4
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2024-03-20 09:06:46 +00:00
601 changed files with 720881 additions and 531681 deletions
+10
View File
@@ -11,6 +11,11 @@ file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
source_lang = en
[o:odoo:p:odoo-16-doc:r:essentials]
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
source_file = locale/sources/essentials.pot
source_lang = en
[o:odoo:p:odoo-16-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
@@ -63,6 +68,11 @@ file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
source_lang = en
[o:odoo:p:odoo-16-doc:r:studio]
file_filter = locale/<lang>/LC_MESSAGES/studio.po
source_file = locale/sources/studio.pot
source_lang = en
[o:odoo:p:odoo-16-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
+1
View File
@@ -18,6 +18,7 @@ CONFIG_DIR = .
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
-D is_remote_build=$(IS_REMOTE_BUILD) \
-T \
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
+4 -2
View File
@@ -9,6 +9,7 @@
- Python dependencies listed in the file `requirements.txt`.
- Make
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
### Instructions
@@ -18,8 +19,9 @@
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
for more detailed instructions.
Optional: place your local copy of the `odoo/odoo` repository in the parent directory or in the root
directory of the documentation to build the latter with the documented Python docstrings.
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
the parent directory or in the root directory of the documentation to build the latter
with the documented Python docstrings.
## Contribute to the documentation
+23
View File
@@ -133,6 +133,24 @@ else:
)
odoo_dir_in_path = True
if odoo_dir_in_path:
upgrade_util_dir = next(filter(Path.exists, [Path('upgrade-util'), Path('../upgrade-util')]), None)
if not upgrade_util_dir:
_logger.warning(
"Could not find Upgrade Utils sources directory in `upgrade_util`.\n"
"The developer documentation will be built but autodoc directives will be skipped.\n"
"In order to fully build the 'Developer' documentation, clone the repository with "
"`git clone https://github.com/odoo/upgrade-util` or create a symbolic link."
)
odoo_dir_in_path = False
else:
_logger.info(
"Found Upgrade Util sources in %(directory)s",
{'directory': upgrade_util_dir.resolve()},
)
from odoo import upgrade
upgrade.__path__.append(str((upgrade_util_dir / 'src').resolve()))
# Mapping between odoo models related to master data and the declaration of the
# data. This is used to point users to available xml_ids when giving values for
# a field with the autodoc_field extension.
@@ -213,6 +231,7 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'saas-17.2': "Odoo Online",
'saas-17.1': "Odoo Online",
'17.0': "Odoo 17",
'saas-16.4': "Odoo Online",
@@ -233,6 +252,7 @@ languages_names = {
'es': 'ES',
'fr': 'FR',
'it': 'IT',
'ko': 'KO',
'nl': 'NL',
'pt_BR': 'PT',
'ro': 'RO',
@@ -248,6 +268,9 @@ redirects_dir = 'redirects/'
sphinx_tabs_disable_tab_closing = True
sphinx_tabs_disable_css_loading = True
# Autodoc ordering
autodoc_member_order = 'bysource'
#=== Options for HTML output ===#
html_theme = 'odoo_theme'
+1
View File
@@ -61,4 +61,5 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
administration/upgrade
administration/neutralized_database
administration/supported_versions
administration/mobile
administration/odoo_accounts
+9 -4
View File
@@ -46,10 +46,10 @@ Transferring an Odoo Online database
====================================
.. important::
Odoo Online's :ref:`intermediary versions <supported_versions>` cannot be hosted on-premise as
that type of hosting does not support those versions. Therefore, if the database to transfer
is running an intermediary version, it must be upgraded first to the next :ref:`major version
<supported_versions>`, waiting for its release if necessary.
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
necessary.
.. example::
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
@@ -59,6 +59,11 @@ Transferring an Odoo Online database
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
.. warning::
If there is an active Odoo subscription linked to the database being migrated, reach out to
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
complete the subscription transfer.
To on-premise
-------------
+67
View File
@@ -0,0 +1,67 @@
================
Odoo mobile apps
================
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
recommended.
Progressive web app (PWA)
=========================
PWAs are web-based applications designed to function across different devices and platforms,
leveraging web browsers to deliver user experiences similar to native apps.
The Odoo PWA features include:
- Quick access by adding the PWA to a device's home screen
- Seamless and borderless navigation experience
- Push notifications
- SSO authentication
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
instructions to install a PWA depend on the platform and browser used.
.. tabs::
.. tab:: Android
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
:guilabel:`Install`.
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
and hold the Odoo icon or tap :guilabel:`Add automatically`.
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
.. tab:: iOS
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
:guilabel:`Add`.
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
**Edge**.
.. tab:: Desktop
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
:guilabel:`Install`.
.. seealso::
- `Google Chrome Help: Use progressive web apps
<https://support.google.com/chrome/answer/9658361>`_
- `MDN Web Docs: Installing and uninstalling web apps
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
Store apps
==========
The Odoo mobile apps are available for download on the `Google Play Store
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
<https://apps.apple.com/app/odoo/id1272543640>`_.
.. important::
The iOS app cannot be updated and will be deprecated at some point in the future.
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
+2
View File
@@ -30,6 +30,8 @@ confirmation for the account deletion.
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
.. _odoocom/change_password:
Odoo.com account password change
================================
+2
View File
@@ -60,6 +60,8 @@ daily operations.
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
orders, etc.) are disabled by default on the duplicated database.
- Duplicated databases expire automatically after 15 days.
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
contact `support <https://www.odoo.com/help>`_ to raise the limit.
.. _odoo_online/rename:
+137 -1
View File
@@ -740,7 +740,143 @@ It should be stored securely, and should be generated randomly e.g.
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
which will generate a 32 characters pseudorandom printable string.
which generates a 32-character pseudorandom printable string.
Reset the master password
-------------------------
There may be instances where the master password is misplaced, or compromised, and needs to be
reset. The following process is for system administrators of an Odoo on-premise database detailing
how to manually reset and re-encrypt the master password.
.. seealso::
For more information about changing an Odoo.com account password, see this documentation:
:ref:`odoocom/change_password`.
When creating a new on-premise database, a random master password is generated. Odoo recommends
using this password to secure the database. This password is implemented by default, so there is a
secure master password for any Odoo on-premise deployment.
.. warning::
When creating an Odoo on-premise database the installation is accessible to anyone on the
internet, until this password is set to secure the database.
The master password is specified in the Odoo configuration file (`odoo.conf` or `odoorc` (hidden
file)). The Odoo master password is needed to modify, create, or delete a database through the
graphical user interface (GUI).
Locate configuration file
~~~~~~~~~~~~~~~~~~~~~~~~~
First, open the Odoo configuration file (`odoo.conf` or `odoorc` (hidden file)).
.. tabs::
.. tab:: Windows
The configuration file is located at: `c:\\ProgramFiles\\Odoo{VERSION}\\server\\odoo.conf`
.. tab:: Linux
Depending on how Odoo is installed on the Linux machine, the configuration file is located in
one of two different places:
- Package installation: `/etc/odoo.conf`
- Source installation: `~/.odoorc`
Change old password
~~~~~~~~~~~~~~~~~~~
Once the appropriate file has been opened, proceed to modify the old password in the configuration
file to a temporary password.
.. tabs::
.. group-tab:: Graphical user interface
After locating the configuration file, open it using a (:abbr:`GUI (graphical user
interface)`). This can be achieved by simply double clicking on the file. Then, the device
should have a default :abbr:`GUI (graphical user interface)` to open the file with.
Next, modify the master password line `admin_passwd = $pbkdf2-sha…` to `admin_passwd =
newpassword1234`, for example. This password can be anything, as long as it is saved
temporarily. Make sure to modify all characters after the `=`.
.. example::
The line appears like this:
`admin_passwd =
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
The modified line appears like this: `admin_passwd = newpassword1234`
.. group-tab:: Command-line interface
Modify the master password line using the following Unix command detailed below.
Connect to the Odoo server's terminal via Secure Shell (SSH) protocol, and edit the
configuration file. To modify the configuration file, enter the following command:
:command:`sudo nano /etc/odoo.conf`
After opening the configuration file, modify the master password line `admin_passwd =
$pbkdf2-sha…` to `admin_passwd = newpassword1234`. This password can be anything, as long as
it is saved temporarily. Make sure to modify all characters after the `=`.
.. example::
The line appears like this:
`admin_passwd =
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
The modified line appears like this: `admin_passwd = newpassword1234`
.. important::
It is essential that the password is changed to something else, rather than triggering a new
password reset by adding a semicolon `;` at the beginning of the line. This ensures the database
is secure throughout the entire password reset process.
Restart Odoo server
~~~~~~~~~~~~~~~~~~~
After setting the temporary password, a restart of the Odoo server is **required**.
.. tabs::
.. group-tab:: Graphical user interface
To restart the Odoo server, first, type `services` into the Windows :guilabel:`Search` bar.
Then, select the :guilabel:`Services` application, and scroll down to the :guilabel:`Odoo`
service.
Next, right click on :guilabel:`Odoo`, and select :guilabel:`Start` or :guilabel:`Restart`.
This action manually restarts the Odoo server.
.. group-tab:: Command-line interface
Restart the Odoo server by typing the command: :command:`sudo service odoo15 restart`
.. note::
Change the number after `odoo` to fit the specific version the server is running on.
Use web interface to re-encrypt password
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, navigate to `/web/database/manager` or `http://server_ip:port/web/database/manager` in a
browser.
.. note::
Replace `server_ip` with the IP address of the database. Replace `port` with the numbered port
the database is accessible from.
Next, click :guilabel:`Set Master Password`, and type in the previously-selected temporary password
into the :guilabel:`Master Password` field. Following this step, type in a :guilabel:`New Master
Password`. The :guilabel:`New Master Password` is hashed (or encrypted), once the
:guilabel:`Continue` button is clicked.
At this point, the password has been successfully reset, and a hashed version of the new password
now appears in the configuration file.
.. seealso::
For more information on Odoo database security, see this documentation:
:ref:`db_manager_security`.
Supported Browsers
==================
+10 -5
View File
@@ -273,18 +273,23 @@ 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` and install found
packages.
.. tab:: Install with pip
.. warning::
Using pip may lead to security issue 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.
@@ -31,6 +31,12 @@ This matrix shows the support status of every version.
- On-Premise
- Release date
- End of support
* - Odoo saas~17.2
- |green|
- N/A
- N/A
- April 2024
-
* - Odoo saas~17.1
- |green|
- N/A
+21 -30
View File
@@ -2,8 +2,6 @@
Upgrade
=======
.. _administration/upgrade:
An upgrade is the process of moving your database from an older version to a newer :doc:`supported
version <supported_versions>` (e.g., Odoo 14.0 to Odoo 16.0). Frequently upgrading is essential as
each version comes with new and improved features, bug fixes, and security patches.
@@ -45,30 +43,23 @@ An upgrade does not cover:
<upgrade/request-test-database>` while also :doc:`upgrading the source code of your custom
modules </developer/howtos/upgrade_custom_db>`.
Upgrading in a nutshell
-----------------------
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
<upgrade/request-test-database>`).
#. If applicable, upgrade the source code of your custom module to be compatible with the new
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
<upgrade/test_your_db>`).
#. Report any issue encountered during the testing to Odoo via the `support page
<https://odoo.com/help?stage=migration>`__.
#. Report any issue encountered during the testing to Odoo by `submitting a ticket for an issue
related to my future upgrade (I am testing an upgrade) <https://odoo.com/help?stage=migration>`_.
#. Once all issues are resolved and you are confident that the upgraded database can be used as
your main database without any issues, plan the upgrade of your production database.
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
to complete the process (see :ref:`upgrading the production database <upgrade/upgrade-prod>`).
#. Report any issue encountered during the upgrade to Odoo via the `support page
<https://odoo.com/help?stage=post_upgrade>`__.
#. Report any issue encountered during the upgrade to Odoo by `submitting a ticket for an issue
related to my upgrade (production) <https://odoo.com/help?stage=post_upgrade>`_.
.. _upgrade/request-test-database:
@@ -254,9 +245,9 @@ working correctly and to get more familiar with the new version.
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
If you face an issue while testing your upgraded test database, you can request the assistance of
Odoo via the `support page <https://odoo.com/help?stage=migration>`__ by selecting the option
related to testing the upgrade. In any case, it is essential to report any
problem encountered during the testing to fix it before upgrading your production database.
Odoo by `submitting a ticket for an issue related to my future upgrade (I am testing an upgrade)
<https://odoo.com/help?stage=migration>`_. In any case, it is essential to report any problem
encountered during the testing to fix it before upgrading your production database.
You might encounter significant differences with standard views, features, fields, and models during
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
@@ -280,24 +271,25 @@ 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, reachable via the `support page
<https://odoo.com/help>`__.
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.
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
to frequently request another upgraded test database to ensure that the upgrade process is
still successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade
process the day before upgrading the production database is also recommended.**
to frequently request another upgraded test database to ensure that the upgrade process is still
successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade process the
day before upgrading the production database is also recommended.**
.. important::
- Going into production without first testing may lead to:
Going into production without first testing may lead to:
- Users failing to adjust to the changes and new features
- Business interruptions (e.g., no longer having the possibility to validate an action)
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
- Users failing to adjust to the changes and new features
- Business interruptions (e.g., no longer having the possibility to validate an action)
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
The process of upgrading a production database is similar to upgrading a test database with a few
exceptions.
@@ -358,10 +350,9 @@ exceptions.
a filestore. Therefore, the upgraded database filestore must be merged with the production
filestore before deploying the new version.
In case of an issue with your production database, you can request the assistance of Odoo via the
`support page <https://odoo.com/help?stage=post_upgrade>`__ by selecting the option related to
the upgrade in production.
In case of an issue with your production database, you can request the assistance of Odoo by
`submitting a ticket for an issue related to my upgrade (production)
<https://odoo.com/help?stage=post_upgrade>`_.
.. _upgrade/sla:
@@ -2,166 +2,245 @@
Export and import data
======================
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.
.. important::
Sometimes, users run into a 'time out' error, or a record does not process, due to its size. This
can occur with large exports, or in cases where the import file is too large. To circumvent this
limitation surrounding the size of the records, process exports or imports in smaller batches.
.. _export-data:
Export data from Odoo
=====================
When working with a database, it sometimes is necessary to export your data in a distinct file.
Doing so can help to do reporting over your activities (even if Odoo offers a precise and easy
reporting tool with each available application).
When working with a database, it is sometimes necessary to export data in a distinct file. Doing so
can aid in reporting on activities, although, Odoo provides a precise and easy reporting tool with
each available application.
With Odoo, you can export the values from any field in any record. To do so,
activate the list view on the items that need to be exported, click on *Action*, and, then,
on *Export*.
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
(:guilabel:`☰ (three 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`.
.. image:: export_import_data/list-view-export.png
:align: center
:alt: view of the different things to enable/click to export data
:alt: View of the different things to enable/click to export data.
Pretty simple, this action still comes with some specificities. In fact,
when clicking on *Export*, a pop-up window appears with several
options for the data to export:
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
several options for the data to export:
.. image:: export_import_data/export-data-overview.png
:align: center
:alt: overview of all the options to take into account when exporting data in Odoo
:alt: Overview of options to consider when exporting data in Odoo..
#. With the *I want to update data* option ticked, the system only
shows the fields which can be imported. This is very helpful in
case you want to update existing records. Basically, this works
like a filter. Leaving the box unticked gives way more field
options because it shows all the fields, not just the ones which
can be imported.
#. When exporting, you can choose between two formats: .csv and .xls.
With .csv, items are separated with a comma, while .xls holds information about all the
worksheets in a file, including both content and formatting.
#. Those are the items you may want to export. Use the arrows to display
more sub-field options. Of course, you can use the search bar to
find specific fields more easily. To use the search option more
efficiently, display all the fields by clicking on all the
arrows!
#. The + button is there to add fields to the "to export" list.
#. The "handles" next to the selected fields allow you to move the fields up and down to
change the order in which they must be displayed in the exported
file.
#. The trashcan is there if you need to remove fields.
#. For recurring reports, it might be interesting to save export presets.
Select all the needed ones and click on the template bar.
There, click on *New template* and give a name to yours. The
next time you need to export the same list, simply select the
related template.
#. 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.
#. 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.
#. These are the items that can be exported. Use the :guilabel:`> (right arrow)` icon to display
more sub-field options. Use the :guilabel:`Search` bar to find specific fields. To use the
:guilabel:`Search` option more efficiently, click on all the :guilabel:`> (right arrows)` to
display all fields.
#. The :guilabel:`+ (plus sign)` icon button is present to add fields to the :guilabel:`Fields to
export` list.
#. The :guilabel:`↕️ (up-down arrow)` to the left of the selected fields can be used to move the
fields up and down, to change the order in which they are displayed in the exported file.
Drag-and-drop using the :guilabel:`↕️ (up-down arrow)` icon.
#. The :guilabel:`🗑️ (trash can)` icon is used to remove fields. Click on the :guilabel:`🗑️ (trash
can)` icon to remove the field.
#. For recurring reports, it is helpful to save export presets. Select all the needed fields, and
click on the template drop-down menu. Once there, click on :guilabel:`New template`, and give a
unique name to the export just created. The next time the same list needs to be exported, select
the related template that was previously saved from the drop-down menu.
.. tip::
Its good to keep the fields external identifier in mind. For example,
*Related Company* is equal to *parent_id*. Doing so helps export
only what you would like to import next.
It is helpful to know the field's external identifier. For example, :guilabel:`Related Company`
in the export user interface is equal to *parent_id* (external identifier). This is helpful
because then, the only data exported is what should be modified and re-imported.
.. _import-data:
Import data into Odoo
=====================
How to start
------------
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.
You can import data on any Odoo's business object using either Excel
(.xlsx) or CSV (.csv) formats:
contacts, products, bank statements, journal entries and even orders!
.. warning::
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
on` or `last modified`) to identify records changed or created by the import.
Open the view of the object you want to populate and click on :menuselection:`Favorites --> Import
records`.
.. tip::
Activating :ref:`developer mode <developer-mode>` changes the visible import settings in the left
menu. Doing so reveals an :menuselection:`Advanced` menu. Included in this advanced menu are two
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
.. image:: export_import_data/import_button.png
.. image:: export_import_data/advanced-import.png
:align: center
:alt: Advanced import options when developer mode is activated.
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
subscriptions and sends notifications during the import, but leads to a slower import.
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
within a field are used to match under the :guilabel:`Odoo Field` while importing.
Get started
-----------
Data can be imported on any Odoo business object using either Excel (`.xlsx`) or :abbr:`CSV
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
journal entries, and orders.
Open the view of the object to which the data should be imported/populated, and click on
:menuselection:`⭐ Favorites --> Import records`.
.. image:: export_import_data/import-button.png
:align: center
:alt: Favorites menu revealed with the import records option highlighted.
There you are provided with templates you can easily populate
with your own data. Such templates can be imported in one click;
The data mapping is already done.
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
downloaded and populated with the company's own data. Such templates can be imported in one click,
since the data mapping is already done. To download a template click :guilabel:`Import Template for
Customers` at the center of the page.
How to adapt the template
-------------------------
.. important::
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
`.xlsx`).
* Add, remove and sort columns to fit at best your data structure.
* We advise to not remove the **ID** one (see why in the next section).
* Set a unique ID to every single record by dragging down the ID sequencing.
.. image:: export_import_data/formatting.png
:align: center
:alt: Formatting options presented when a CVS file is imported in Odoo.
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
:guilabel:`Import` to import the data.
Adapt a template
----------------
Import templates are provided in the import tool of the most common data to import (contacts,
products, bank statements, etc.). Open them with any spreadsheet software (*Microsoft Office*,
*OpenOffice*, *Google Drive*, etc.).
Once the template is downloaded, proceed to follow these steps:
- Add, remove, and sort columns to best fit the data structure.
- It is strongly advised to **not** remove the :guilabel:`External ID` (ID) column (see why in the
next section).
- Set a unique ID to every record by dragging down the ID sequencing in the :guilabel:`External ID`
(ID) column.
.. image:: export_import_data/dragdown.gif
:align: center
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
* When you add a new column, Odoo might not be able to map it automatically if its
label doesn't fit any field in Odoo. Don't worry! You can map
new columns manually when you test the import. Search the list for the
corresponding field.
.. note::
When a new column is added, Odoo may not be able to map it automatically, if its label does not
fit any field within Odoo. However, new columns can be mapped manually when the import is tested.
Search the drop-down menu for the corresponding field.
.. image:: export_import_data/field_list.png
:align: center
.. image:: export_import_data/field_list.png
:align: center
:alt: Drop-down menu expanded in the initial import screen on Odoo.
Then, use this field's label in your file in order to make it work
straight on the very next time.
Then, use this field's label in the import file to ensure future imports are successful.
How to import from another application
--------------------------------------
.. tip::
Another useful way to find out the proper column names to import is to export a sample file
using the fields that should be imported. This way, if there is not a sample import template,
the names are accurate.
In order to re-create relationships between different records,
you should use the unique identifier from the original application
and map it to the **ID** (External ID) column in Odoo.
When you import another record that links to the first one,
use **XXX/ID** (XXX/External ID) to the original unique identifier.
You can also find this record using its name but you will be stuck
if at least 2 records have the same name.
Import from another application
-------------------------------
The **ID** will also be used to update the original import
if you need to re-import modified data later,
it's thus good practice to specify it whenever possible.
The :guilabel:`External ID` (ID) is a unique identifier for the line item. Feel free to use one
from previous software to facilitate the transition to Odoo.
Setting an ID is not mandatory when importing, but it helps in many cases:
I cannot find the field I want to map my column to
--------------------------------------------------
- Update imports: import the same file several times without creating duplicates.
- :ref:`Import relation fields <export_import_data/relation-fields>`.
Odoo tries to find with some heuristic, based on the first ten lines of
the files, the type of field for each column inside your file.
For example if you have a column only containing numbers,
only the fields that are of type *Integer* will be displayed for you
to choose from.
While this behavior might be good and easy for most cases,
it is also possible that it goes wrong or that you want to
map your column to a field that is not proposed by default.
To recreate relationships between different records, the unique identifier from the original
application should be used to map it to the :guilabel:`External ID` (ID) column in Odoo.
If that happens, you just have to check the
** Show fields of relation fields (advanced)** option,
you will then be able to choose from the complete list of fields for each column.
When another record is imported that links to the first one, use **XXX/ID** (XXX/External ID) for
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.
Field missing to map column
---------------------------
Odoo heuristically tries to find the type of field for each column inside the imported file, based
on the first ten lines of the files.
For example, if there is a column only containing numbers, only the fields with the *integer* type
are presented as options.
While this behavior might be beneficial in most cases, it is also possible that it could fail, or
the column may be mapped to a field that is not proposed by default.
If this happens, check the :guilabel:`Show fields of relation fields (advanced) option`, then a
complete list of fields becomes available for each column.
.. image:: export_import_data/field_list.png
:align: center
:alt: Searching for the field to match the tax column.
Where can I change the date import format?
------------------------------------------
Odoo can automatically detect if a column is a date, and it will try to guess the date format from a
set of most commonly used date formats. While this process can work for many date formats, some date
formats will not be recognized. This can cause confusion due to day-month inversions; it is
difficult to guess which part of a date format is the day and which part is the month in a date such
as '01-03-2016'.
To view which date format Odoo has found from your file you can check the **Date Format** that is
shown when clicking on **Options** under the file selector. If this format is incorrect you can
change it to your liking using the *ISO 8601* to define the format.
Change data import format
-------------------------
.. note::
If you are importing an excel (.xls, .xlsx) file, you can use date cells to store dates as the
display of dates in excel is different from the way it is stored. That way you will be sure that
the date format is correct in Odoo whatever your locale date format is.
Odoo can automatically detect if a column is a date, and tries to guess the date format from a
set of most commonly used date formats. While this process can work for many date formats, some
date formats are not recognizable. This can cause confusion, due to day-month inversions; it is
difficult to guess which part of a date format is the day, and which part is the month, in a
date, such as `01-03-2016`.
Can I import numbers with currency sign (e.g.: $32.00)?
-------------------------------------------------------
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
options.
Yes, we fully support numbers with parenthesis to represent negative sign as well as numbers with
currency sign attached to them. Odoo also automatically detect which thousand/decimal separator you
use (you can change those under **options**). If you use a currency symbol that is not known to
Odoo, it might not be recognized as a number though and it will crash.
To view which date format Odoo has found from the file, check the :guilabel:`Date Format` that is
shown when clicking on options under the file selector. If this format is incorrect, change it to
the preferred format using *ISO 8601* to define the format.
Examples of supported numbers (using thirty-two thousands as an example):
.. important::
*ISO 8601* is an international standard, covering the worldwide exchange, along with the
communication of date and time-related data. For example, the date format should be `YYYY-MM-DD`.
So, in the case of July 24th 1981, it should be written as `1981-07-24`.
.. tip::
When importing Excel files (`.xls`, `.xlsx`), consider using *date cells* to store dates. This
maintains locale date formats for display, regardless of how the date is formatted in Odoo. When
importing a :abbr:`CSV (Comma-separated Values)` file, use Odoo's :guilabel:`Formatting` section
to select the date format columns to import.
Import numbers with currency signs
----------------------------------
Odoo fully supports numbers with parenthesis to represent negative signs, as well as numbers with
currency signs attached to them. Odoo also automatically detects which thousand/decimal separator is
used. If a currency symbol unknown to Odoo is used, it might not be recognized as a number, and the
import crashes.
.. note::
When importing a :abbr:`CSV (Comma-separated Values)` file, the :guilabel:`Formatting` menu
appears on the left-hand column. Under these options, the :guilabel:`Thousands Separator` can be
changed.
Examples of supported numbers (using 'thirty-two thousand' as the figure):
- 32.000,00
- 32000,00
@@ -176,156 +255,191 @@ Example that will not work:
- ABC 32.000,00
- $ (32.000,00)
What can I do when the Import preview table isn't displayed correctly?
----------------------------------------------------------------------
.. important::
A :guilabel:`() (parenthesis)` around the number indicates that the number is a negative value.
The currency symbol **must** be placed within the parenthesis for Odoo to recognize it as a
negative currency value.
By default the Import preview is set on commas as field separators and quotation marks as text
delimiters. If your csv file does not have these settings, you can modify the File Format Options
(displayed under the Browse CSV file bar after you select your file).
Import preview table not displayed correctly
--------------------------------------------
Note that if your CSV file has a tabulation as separator, Odoo will not detect the separations. You
will need to change the file format options in your spreadsheet application. See the following
question.
By default, the import preview is set on commas as field separators, and quotation marks as text
delimiters. If the :abbr:`CSV (Comma-separated Values)` file does not have these settings, modify
the :guilabel:`Formatting` options (displayed under the :guilabel:`Import` :abbr:`CSV
(Comma-separated Values)` file bar after selecting the :abbr:`CSV (Comma-separated Values)` file).
How can I change the CSV file format options when saving in my spreadsheet application?
---------------------------------------------------------------------------------------
.. important::
If the :abbr:`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does
**not** detect the separations. The file format options need to be modified in the spreadsheet
application. See the following :ref:`Change CSV file format <export_import_data/change-csv>`
section.
If you edit and save CSV files in spreadsheet applications, your computer's regional settings will
be applied for the separator and delimiter. We suggest you use OpenOffice or LibreOffice Calc as
they will allow you to modify all three options (in :menuselection:`'Save As' dialog box --> Check the
box 'Edit filter settings' --> Save`).
.. _export_import_data/change-csv:
Microsoft Excel will allow you to modify only the encoding when saving (in :menuselection:`'Save As'
dialog box --> click 'Tools' dropdown list --> Encoding tab`).
Change CSV file format in spreadsheet application
-------------------------------------------------
What's the difference between Database ID and External ID?
----------------------------------------------------------
When editing and saving :abbr:`CSV (Comma-separated Values)` files in spreadsheet applications, the
computer's regional settings are applied for the separator and delimiter. Odoo suggests using
*OpenOffice* or *LibreOffice*, as both applications allow modifications of all three options (from
*LibreOffice* application, go to :menuselection:`'Save As' dialog box --> Check the box 'Edit filter
settings' --> Save`).
Microsoft Excel can modify the encoding when saving (:menuselection:`'Save As' dialog box -->
'Tools' drop-down menu --> Encoding tab`).
Difference between Database ID and External ID
----------------------------------------------
Some fields define a relationship with another object. For example, the country of a contact is a
link to a record of the 'Country' object. When you want to import such fields, Odoo will have to
recreate links between the different records. To help you import such fields, Odoo provides three
mechanisms. You must use one and only one mechanism per field you want to import.
link to a record of the 'Country' object. When such fields are imported, Odoo has to recreate links
between the different records. To help import such fields, Odoo provides three mechanisms.
For example, to reference the country of a contact, Odoo proposes you 3 different fields to import:
.. important::
**Only one** mechanism should be used per field that is imported.
- Country: the name or code of the country
- Country/Database ID: the unique Odoo ID for a record, defined by the ID postgresql column
- Country/External ID: the ID of this record referenced in another application (or the .XML file
that imported it)
For example, to reference the country of a contact, Odoo proposes three different fields to import:
For the country Belgium, you can use one of these 3 ways to import:
- :guilabel:`Country`: the name or code of the country
- :guilabel:`Country/Database ID`: the unique Odoo ID for a record, defined by the ID PostgreSQL
column
- :guilabel:`Country/External ID`: the ID of this record referenced in another application (or the
`.XML` file that imported it)
- Country: Belgium
- Country/Database ID: 21
- Country/External ID: base.be
For the country of Belgium, for example, use one of these three ways to import:
According to your need, you should use one of these 3 ways to reference records in relations. Here
is when you should use one or the other, according to your need:
- :guilabel:`Country`: `Belgium`
- :guilabel:`Country/Database ID`: `21`
- :guilabel:`Country/External ID`: `base.be`
- Use Country: This is the easiest way when your data come from CSV files that have been created
manually.
- Use Country/Database ID: You should rarely use this notation. It's mostly used by developers as
it's main advantage is to never have conflicts (you may have several records with the same name,
According to the company's need, use one of these three ways to reference records in relations. Here
is an example when one or the other should be used, according to the need:
- Use :guilabel:`Country`: this is the easiest way when data comes from :abbr:`CSV (Comma-separated
Values)` files that have been created manually.
- Use :guilabel:`Country/Database ID`: this should rarely be used. It is mostly used by developers
as the main advantage is to never have conflicts (there may be several records with the same name,
but they always have a unique Database ID)
- Use Country/External ID: Use External ID when you import data from a third party application.
- Use :guilabel:`Country/External ID`: use *External ID* when importing data from a third-party
application.
When you use External IDs, you can import CSV files with the "External ID" column to define the
External ID of each record you import. Then, you will be able to make a reference to that record
with columns like "Field/External ID". The following two CSV files give you an example for Products
and their Categories.
When *External IDs* are used, import :abbr:`CSV (Comma-separated Values)` files with the
:guilabel:`External ID` (ID) column defining the *External ID* of each record that is imported.
Then, a reference can be made to that record with columns, like `Field/External ID`. The following
two :abbr:`CSV (Comma-separated Values)` files provide an example for products and their categories.
:download:`CSV file for categories
<export_import_data/External_id_3rd_party_application_product_categories.csv>`.
- :download:`CSV file for categories
<export_import_data/External_id_3rd_party_application_product_categories.csv>`
- :download:`CSV file for Products
<export_import_data/External_id_3rd_party_application_products.csv>`
:download:`CSV file for Products
<export_import_data/External_id_3rd_party_application_products.csv>`.
.. _export_import_data/relation-fields:
What can I do if I have multiple matches for a field?
-----------------------------------------------------
Import relation fields
----------------------
If for example you have two product categories with the child name "Sellable" (ie. "Misc.
Products/Sellable" & "Other Products/Sellable"), your validation is halted but you may still import
your data. However, we recommend you do not import the data because they will all be linked to the
first 'Sellable' category found in the Product Category list ("Misc. Products/Sellable"). We
recommend you modify one of the duplicates' values or your product category hierarchy.
An Odoo object is always related to many other objects (e.g. a product is linked to product
categories, attributes, vendors, etc.). To import those relations, the records of the related object
need to be imported first, from their own list menu.
However if you do not wish to change your configuration of product categories, we recommend you use
make use of the external ID for this field 'Category'.
This can be achieved by using either the name of the related record, or its ID, depending on the
circumstances. The ID is expected when two records have the same name. In such a case add `/ ID`
at the end of the column title (e.g. for product attributes: `Product Attributes / Attribute / ID`).
How can I import a many2many relationship field (e.g. a customer that has multiple tags)?
-----------------------------------------------------------------------------------------
Options for multiple matches on fields
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The tags should be separated by a comma without any spacing. For example, if you want your customer
to be linked to both tags 'Manufacturer' and 'Retailer' then you will encode "Manufacturer,Retailer"
in the same column of your CSV file.
If, for example, there are two product categories with the child name `Sellable` (e.g. `Misc.
Products/Sellable` & `Other Products/Sellable`), the validation is halted, but the data may still be
imported. However, Odoo recommends that the data is not imported because it will all be linked to
the first `Sellable` category found in the *Product Category* list (`Misc. Products/Sellable`).
Odoo, instead, recommends modifying one of the duplicate's values, or the product category
hierarchy.
:download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
However, if the company does not wish to change the configuration of product categories, Odoo
recommends making use of the *External ID* for this field, 'Category'.
Import many2many relationship fields
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
How can I import a one2many relationship (e.g. several Order Lines of a Sales Order)?
-------------------------------------------------------------------------------------
The tags should be separated by a comma, without any spacing. For example, if a customer needs to be
linked to both tags: `Manufacturer` and `Retailer` then 'Manufacturer,Retailer' needs to be encoded
in the same column of the :abbr:`CSV (Comma-separated Values)` file.
If you want to import sales order having several order lines; for each order line, you need to
reserve a specific row in the CSV file. The first order line will be imported on the same row as the
information relative to order. Any additional lines will need an additional row that does not have
any information in the fields relative to the order. As an example, here is
``purchase.order_functional_error_line_cant_adpat.CSV`` file of some quotations you can import,
based on demo data.
- :download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
:download:`File for some Quotations <export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`.
Import one2many relationships
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following CSV file shows how to import purchase orders with their respective purchase order
lines:
If a company wants to import a sales order with several order lines, a specific row **must** be
reserved in the :abbr:`CSV (Comma-separated Values)` file for each order line. The first order line
is imported on the same row as the information relative to order. Any additional lines need an
additional row that does not have any information in the fields relative to the order.
:download:`Purchase orders with their respective purchase order lines <export_import_data/o2m_purchase_order_lines.csv>`.
As an example, here is a :abbr:`CSV (Comma-separated Values)` file of some quotations that can be
imported, based on demo data:
The following CSV file shows how to import customers and their respective contacts:
- :download:`File for some Quotations
<export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`
:download:`Customers and their respective contacts <export_import_data/o2m_customers_contacts.csv>`.
The following :abbr:`CSV (Comma-separated Values)` file shows how to import purchase orders with
their respective purchase order lines:
Can I import several times the same record?
-------------------------------------------
- :download:`Purchase orders with their respective purchase order lines
<export_import_data/o2m_purchase_order_lines.csv>`
If you import a file that contains one of the column "External ID" or "Database ID", records that
have already been imported will be modified instead of being created. This is very useful as it
allows you to import several times the same CSV file while having made some changes in between two
imports. Odoo will take care of creating or modifying each record depending if it's new or not.
The following :abbr:`CSV (Comma-separated Values)` file shows how to import customers and their
respective contacts:
This feature allows you to use the Import/Export tool of Odoo to modify a batch of records in your
favorite spreadsheet application.
- :download:`Customers and their respective contacts
<export_import_data/o2m_customers_contacts.csv>`
What happens if I do not provide a value for a specific field?
Import records several times
----------------------------
If an imported file contains one of the columns: :guilabel:`External ID` or :guilabel:`Database ID`,
records that have already been imported are modified, instead of being created. This is extremely
useful as it allows users to import the same :abbr:`CSV (Comma-separated Values)` file several
times, while having made some changes in between two imports.
Odoo takes care of creating or modifying each record, depending if it is new or not.
This feature allows a company to use the *Import/Export tool* in Odoo to modify a batch of records
in a spreadsheet application.
Value not provided for a specific field
---------------------------------------
If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined
field. But, if fields are set with empty values in the :abbr:`CSV (Comma-separated Values)` file,
Odoo sets the empty value in the field, instead of assigning the default value.
Export/import different tables from an SQL application to Odoo
--------------------------------------------------------------
If you do not set all fields in your CSV file, Odoo will assign the default value for every non
defined fields. But if you set fields with empty values in your CSV file, Odoo will set the EMPTY
value in the field, instead of assigning the default value.
If data needs to be imported from different tables, relations need to be recreated between records
belonging to different tables. For instance, if companies and people are imported, the link between
each person and the company they work for needs to be recreated.
How to export/import different tables from an SQL application to Odoo?
----------------------------------------------------------------------
To manage relations between tables, use the `External ID` facilities of Odoo. The `External ID` of a
record is the unique identifier of this record in another application. The `External ID` must be
unique across all records of all objects. It is a good practice to prefix this `External ID` with
the name of the application or table. (like, 'company_1', 'person_1' - instead of '1')
If you need to import data from different tables, you will have to recreate relations between
records belonging to different tables. (e.g. if you import companies and persons, you will have to
recreate the link between each person and the company they work for).
As an example, suppose there is an SQL database with two tables that are to be imported: companies
and people. Each person belongs to one company, so the link between a person and the company they
work for must be recreated.
To manage relations between tables, you can use the "External ID" facilities of Odoo. The "External
ID" of a record is the unique identifier of this record in another application. This "External ID"
must be unique across all the records of all objects, so it's a good practice to prefix this
"External ID" with the name of the application or table. (like 'company_1', 'person_1' instead of
'1')
Test this example, with a :download:`sample of a PostgreSQL database
<export_import_data/database_import_test.sql>`.
As an example, suppose you have a SQL database with two tables you want to import: companies and
persons. Each person belong to one company, so you will have to recreate the link between a person
and the company he work for. (If you want to test this example, here is a :download:`dump of such a
PostgreSQL database <export_import_data/database_import_test.sql>`)
We will first export all companies and their "External ID". In PSQL, write the following command:
First, export all companies and their *External ID*. In PSQL, write the following command:
.. code-block:: sh
> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;
This SQL command will create the following CSV file:
This SQL command creates the following :abbr:`CSV (Comma-separated Values)` file:
.. code-block:: text
@@ -334,13 +448,14 @@ This SQL command will create the following CSV file:
company_2,Organi,True
company_3,Boum,True
To create the CSV file for persons, linked to companies, we will use the following SQL command in PSQL:
To create the :abbr:`CSV (Comma-separated Values)` file for people linked to companies, use the
following SQL command in PSQL:
.. code-block:: sh
> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV
It will produce the following CSV file:
It produces the following :abbr:`CSV (Comma-separated Values)` file:
.. code-block:: text
@@ -350,62 +465,13 @@ It will produce the following CSV file:
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3
As you can see in this file, Fabien and Laurence are working for the Bigees company (company_1) and
Eric is working for the Organi company. The relation between persons and companies is done using the
External ID of the companies. We had to prefix the "External ID" by the name of the table to avoid a
conflict of ID between persons and companies (person_1 and company_1 who shared the same ID 1 in the
original database).
In this file, Fabien and Laurence are working for the Bigees company (`company_1`), and Eric is
working for the Organi company. The relation between people and companies is done using the
*External ID* of the companies. The *External ID* is prefixed by the name of the table to avoid a
conflict of ID between people and companies (`person_1` and `company_1`, who shared the same ID 1 in
the original database).
The two files produced are ready to be imported in Odoo without any modifications. After having
imported these two CSV files, you will have 4 contacts and 3 companies. (the firsts two contacts are
linked to the first company). You must first import the companies and then the persons.
How to adapt an import template
===============================
Import templates are provided in the import tool of the most common data to
import (contacts, products, bank statements, etc.).
You can open them with any spreadsheets software (Microsoft Office,
OpenOffice, Google Drive, etc.).
How to customize the file
=========================
* Remove columns you don't need. We advise to not remove the *ID* one (see
why here below).
* Set a unique ID to every single record by dragging down the ID sequencing.
.. image:: export_import_data/dragdown.gif
:align: center
* When you add a new column, Odoo might not be able to map it automatically if its
label doesn't fit any field of the system.
If so, find the corresponding field using the search.
.. image:: export_import_data/field_list.png
:align: center
Then, use the label you found in your import template in order to make it work
straight away the very next time you try to import.
Why an “ID” column
==================
The **ID** (External ID) is an unique identifier for the line item.
Feel free to use the one of your previous software to ease the transition to Odoo.
Setting an ID is not mandatory when importing but it helps in many cases:
* Update imports: you can import the same file several times without creating duplicates;
* Import relation fields (see here below).
How to import relation fields
=============================
An Odoo object is always related to many other objects (e.g. a product is linked
to product categories, attributes, vendors, etc.). To import those relations you need to
import the records of the related object first from their own list menu.
You can do it using either the name of the related record or its ID. The ID is expected when
two records have the same name. In such a case add " / ID" at the end of the column title
(e.g. for product attributes: Product Attributes / Attribute / ID).
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.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 36 KiB

@@ -1,59 +1,191 @@
=====================
In-App Purchase (IAP)
=====================
======================
In-app purchases (IAP)
======================
In-App Purchases (IAP) gives access to additional services through Odoo. For instance, it allows you
to send SMS Text Messages or to send Invoices by post directly from your database.
.. |IAP| replace:: :abbr:`IAP (In-app purchases)`
In-app purchases (IAP) are optional services that enhance Odoo databases. Each service provides its
own specific features and functionality. A full list of services is available on the `Odoo IAP
Catalog <https://iap.odoo.com/iap/all-in-app-services>`_.
.. image:: in_app_purchase/iap.png
:align: center
:alt: The IAP catalog with various services available on IAP.Odoo.com.
.. example::
The :guilabel:`SMS` service sends text messages to contacts directly from the database, and the
:guilabel:`Documents Digitization` service digitizes scanned or PDF vendor bills, expenses, and
resumes with optical character recognition (OCR) and artificial intelligence (AI).
|IAP| services do **not** need to be configured or set up before use. Odoo users can simply click on
the service in the app to activate it. However, each service requires its own prepaid credits, and
when they run out, users **must** :ref:`buy more <iap/buying_credits>` in order to keep using it.
.. note::
Enterprise Odoo users with a valid subscription get free credits to test IAP features before
deciding to purchase more credits for the database. This includes demo/training databases,
educational databases, and one-app-free databases.
.. _in_app_purchase/portal:
IAP services
============
|IAP| services are provided by Odoo, as well as third-parties, and have a wide range of uses.
The following |IAP| services are offered by Odoo:
- :guilabel:`Documents Digitization`: digitizes scanned or PDF vendor bills, expenses, and resumes
with OCR and AI.
- :guilabel:`Partner Autocomplete`: automatically populates contact records with corporate data.
- :guilabel:`SMS`: sends SMS text messages to contacts directly from the database.
- :guilabel:`Lead Generation`: generates leads based on a set of criteria, and converts web visitors
into quality leads and opportunities.
- :guilabel:`Snailmail`: sends customer invoices and follow-up reports by post, worldwide.
- :guilabel:`Signer identification with itsme®️`: ask document signatories in Odoo *Sign* to provide
their identity using the *itsme®* identity platform, which is available in Belgium and the
Netherlands.
For more information on every service currently available (offered from developers other than Odoo),
visit the `Odoo IAP Catalog <https://iap.odoo.com/iap/all-in-app-services>`_.
Use IAP services
----------------
|IAP| services are automatically integrated with Odoo, and do **not** require users to configure any
settings. To use a service, simply interact with it wherever it appears in the database.
.. example::
The following flow focuses on the *SMS* |IAP| service being used from a contact's record.
This can be done by clicking the :guilabel:`📱 SMS` icon within the database.
.. image:: in_app_purchase/sms-icon.png
:align: center
:alt: The SMS icon on a typical contact information form located within an Odoo database.
One way to utilize the *SMS* |IAP| service with Odoo is showcased in the following steps:
First, navigate to the :menuselection:`Contacts application`, and click on a contact with a
mobile phone number entered in either the :guilabel:`Phone` or :guilabel:`Mobile` field of the
contact form.
Next, find the :guilabel:`📱 SMS` icon that appears to the right of the :guilabel:`Phone` or
:guilabel:`Mobile` fields. Click the :guilabel:`📱 SMS` icon, and a :guilabel:`Send SMS Text
Message` pop-up window appears.
Type a message in the :guilabel:`Message` field of the pop-up window. Then, click the
:guilabel:`Send SMS` button. Odoo then sends the message, via SMS, to the contact, and logs what
was sent in the *chatter* of the contact's form.
Upon sending the SMS message, the prepaid credits for the *SMS* |IAP| service are automatically
deducted from the existing credits. If there are not enough credits to send the message, Odoo
prompts the user to purchase more.
.. seealso::
For more information on how to use various |IAP| services, and for more in-depth instructions
related to SMS functionality in Odoo, review the documentation below:
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
- :doc:`Enrich your contacts base with Partner Autocomplete
<../sales/crm/optimize/partner_autocomplete>`
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
.. _in_app_purchase/credits:
IAP credits
===========
Every time an |IAP| service is used, the prepaid credits for that service are spent. Odoo prompts
the purchase of more credits when there are not enough credits left to continue using a service.
Email alerts can also be set up for when :ref:`credits are low <in_app_purchase/low-credits>`.
Credits are purchased in *Packs* from the `Odoo IAP Catalog
<https://iap.odoo.com/iap/all-in-app-services>`_, and pricing is specific to each service.
.. example::
The `SMS service <https://iap.odoo.com/iap/in-app-services/1>`_ has four packs available, in
denominations of:
- :guilabel:`Starter Pack`: 10 credits
- :guilabel:`Standard Pack`: 100 credits
- :guilabel:`Advanced Pack`: 500 credits
- :guilabel:`Expert Pack`: 1,000 credits
.. image:: in_app_purchase/packs.png
:align: center
:alt: Four different packs of credits for the SMS IAP service.
The number of credits consumed depends on the length of the SMS and the country of destination.
For more information, refer to the :doc:`SMS Pricing and FAQ
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
.. _iap/buying_credits:
Buying Credits
==============
Buy credits
-----------
Each IAP Service relies on prepaid credits to work and has its own pricing. To consult your current
balance or to recharge your account, go to :menuselection:`Settings --> Odoo IAP --> View my
If there are not enough credits to perform a task, the database automatically prompts the purchase
of more credits.
Users can check the current balance of credits for each service, and manually purchase more credits,
by navigating to the :menuselection:`Settings app --> Contacts section`, and beneath the
:guilabel:`Odoo IAP` setting, click :guilabel:`View My Services`.
Doing so reveals a :guilabel:`My Services` page, listing the various |IAP| services in the database.
From here, click an |IAP| service to open its :guilabel:`Account Information` page, where additional
credits can be purchased.
Manually buy credits
~~~~~~~~~~~~~~~~~~~~
To manually buy credits in Odoo, follow these steps:
First, go to the :menuselection:`Settings application` and type `IAP` in the :guilabel:`Search...`
bar. Alternatively users can scroll down to the :guilabel:`Contacts` section. Under the
:guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
Services`.
.. image:: in_app_purchase/image1.png
.. image:: in_app_purchase/view-services.png
:align: center
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
.. tip::
If you are on Odoo Online and have the Enterprise version, you benefit from free credits to test our
IAP features.
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
database. From here, click an |IAP| service to open details about it; additional credits can be
purchased from here.
IAP accounts
============
On the following page, click the :guilabel:`Buy Credit` button. Doing so loads a :guilabel:`Buy
Credits for (IAP Account)` page in a new tab. From here, click :guilabel:`Buy` on the desired pack
of credits. Then, follow the prompts to enter payment details, and confirm the order.
Credits to use IAP services are stored on IAP accounts, which are specific to each service.
By default, IAP accounts are common to all companies, but can be restricted to specific
ones. Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Technical
Settings --> IAP Account`.
.. image:: in_app_purchase/image2.png
.. image:: in_app_purchase/buy-pack.png
:align: center
:alt: The SMS service page on IAP.Odoo.com with four packs of credits available for purchase.
.. tip::
An IAP account can be disabled by appending `+disabled` to its token.
Reverting this change will re-enable the account.
Once the transaction is complete, the credits are available for use in the database.
IAP Portal
==========
.. _in_app_purchase/low-credits:
The IAP Portal is a platform regrouping your IAP Services. It is accessible from
:menuselection:`Settings app --> Odoo IAP --> View my Services`. From there, you can view your current
balance, recharge your credits and set a reminder when your balance falls below a threshold.
Low-credit notification
~~~~~~~~~~~~~~~~~~~~~~~
.. image:: in_app_purchase/image3.png
:align: center
It is possible to be notified when credits are low, in order to avoid running out of credits, while
using an |IAP| service. To do that, follow this process:
Get notified when credits are low
=================================
Go to the :menuselection:`Settings application`, and type `IAP` in the :guilabel:`Search...` bar.
Under the :guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, click :guilabel:`View My
Services`.
To be notified when its time to recharge your credits, you can go to your IAP Portal through
:menuselection:`Settings app --> Odoo IAP --> View my Services`, unfold a service and check the
Receive threshold warning option. Then, you can provide a minimum amount of credits and email
addresses. Now, every time that the limit is reached, an automatic reminder will be sent by
email!
The available |IAP| accounts appear in a list view on the :guilabel:`IAP Account` page. From here,
click on the desired |IAP| account to view that service's details.
.. image:: in_app_purchase/image4.png
:align: center
On the details page, tick the :guilabel:`Receive threshold warning` checkbox. Doing so reveals two
fields on the form: :guilabel:`Warning Threshold` and :guilabel:`Contact Email`.
In the :guilabel:`Warning Threshold` field, enter an amount of credits Odoo should use as the
minimum threshold for this service. In the :guilabel:`Contact Email` field, enter the email address
that receives the notification.
Odoo sends a low-credit alert to the :guilabel:`Contact Email` when the balance of credits falls
below the amount listed as the :guilabel:`Warning Threshold`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

@@ -36,8 +36,8 @@ your customers address is set correctly, including the country, before sendin
<developer-mode>`, go to :menuselection:`General Settings --> Technical --> Reporting
section: Paper Format`.
- A square of **15mm by 15mm** on the bottom left corner has to stay clear.
- The postage area has to stay clear (click :download:`here <snailmail/snailmail-template.pdf>`
to get more info about the area).
- The postage area has to stay clear (:download:`download the snailmail PDF template
<snailmail/snailmail-template.pdf>` for more details).
- Pingen (Odoo Snailmail service provider) scans the area to process the address, so if something
gets written outside the area, it is not counted as part of the address.
@@ -51,7 +51,5 @@ To buy stamps, go to :menuselection:`Accounting --> Configuration --> Settings -
invoices: Snailmail`, click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> In-App
Purchases: Odoo IAP`, and click on :guilabel:`View my Services`.
.. tip::
- If you are on Odoo Online and have the Enterprise version, you benefit from free trial credits
to test the feature.
- Click `here <https://iap.odoo.com/privacy#header_4>`_ to know about our *Privacy Policy*.
.. seealso::
`Odoo's IAP Privacy Policy <https://iap.odoo.com/privacy#header_4>`_
@@ -24,12 +24,14 @@ to reflect the change in inventory valuation. However, Odoo does **not** automat
valuation <inventory/avg_price/leaving_inventory>`.
.. note::
This document addresses a specific use case for theoretical purposes. Navigate :ref:`here
<inventory/management/inventory_valuation_config>` for instructions on how to set up and use
|AVCO| in Odoo.
This document addresses a specific use case for theoretical purposes. For instructions on how to
set up and use |AVCO|, refer to the :doc:`inventory valuation configuration
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
doc.
.. seealso::
- :ref:`Using inventory valuation <inventory/reporting/using_inventory_val>`
- :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>`
Configuration
@@ -41,7 +43,8 @@ product category page, set :guilabel:`Costing Method` to `Average Cost (AVCO)` a
:guilabel:`Inventory Valuation` to `Automated`.
.. seealso::
:ref:`Inventory valuation configuration <inventory/management/inventory_valuation_config>`
:doc:`Inventory valuation configuration
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/inventory_valuation_config>`
Using average cost valuation
============================
@@ -101,8 +101,9 @@ correctly reporting a balance of zero. If that is the case, set an :guilabel:`Al
to the last day of the fiscal year by going to :menuselection:`Accounting --> Accounting --> Lock
Dates`.
.. warning::
Setting an :guilabel:`All Users Lock Date` is **irreversible** and cannot be removed.
.. tip::
Install the :guilabel:`Irreversible Lock Date` (`account_lock`) module to make the :guilabel:`All
Users Lock Date` *irreversible* once set.
.. note::
A specific year-end closing entry is **optional** in order to close out the **profit and loss
@@ -1,74 +1,408 @@
:show-content:
==================
Avatax integration
AvaTax integration
==================
Avatax is a tax calculation provider that can be integrated in Odoo.
Avalara's *AvaTax* is a cloud-based tax software. Integrating *AvaTax* with Odoo provides real-time
and region-specific tax calculations when users sell, purchase, and invoice items in Odoo. *AvaTax*
tax calculation is supported with every United Nations charted country, including inter-border
transactions.
.. 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. For more information, reference this documentation:
:ref:`avatax/fiscal_country`.
*AvaTax* accounts for location-based tax rates for each state, county, and city. It improves
remittance accuracy by paying close attention to laws, rules, jurisdiction boundaries, and special
circumstances (like, tax holidays, and product exemptions). Companies who integrate with *AvaTax*
can maintain control of tax-calculations in-house with this simple :abbr:`API (application
programming interface)` integration.
.. important::
Some limitations exist in Odoo while using *AvaTax* for tax calculation:
- *AvaTax* is **not** supported in Odoo's *Point of Sale* app, because a dynamic tax calculation
model is excessive for transactions within a single delivery address, such as stores or
restaurants.
- *AvaTax* and Odoo use the company address and **not** the warehouse address.
- Exercise tax is **not** supported. This includes tobacco/vape taxes, fuel taxes, and other
specific industries.
.. seealso::
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>`_
Set up on AvaTax
================
To use *AvaTax*, an account with Avalara is required for the setup. If one has not been set up yet,
connect with Avalara to purchase a license: `Avalara: Let's Talk
<https://www.avalara.com/us/en/get-started.html>`_.
.. tip::
Upon account setup, take note of the *AvaTax* :guilabel:`Account ID`. This will be needed in the
:ref:`Odoo setup <avatax/credentials>`. In Odoo, this number is the :guilabel:`API ID`.
Then, `create a basic company profile
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Create_a_Basic_company_profile.html&_LANG=enus>`_.
Create basic company profile
----------------------------
Collect essential business details for the next step: locations where tax is collected,
products/services sold (and their sales locations), and customer tax exemptions, if applicable.
Follow the Avalara documentation for creating a basic company profile:
#. `Add company information
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_your_company_information.html&_LANG=enus>`_.
#. `Tell us where the company collects and pays tax
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Tell_us_where_you_collect_and_pay_tax.html&_LANG=enus>`_.
#. `Verify jurisdictions and activate the company
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Verify_your_jurisdictions_and_activate_your_company.html&_LANG=enus>`_.
#. `Add other company locations for location-based filing
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_other_company_locations_for_location-based_filing.html&_LANG=enus>`_.
#. `Add a marketplace to the company profile
<https://community.avalara.com/support/s/document-item?bundleId=dqa1657870670369_dqa1657870670369&topicId=Add_marketplace_transactions_to_your_company_profile.html&_LANG=enus>`_.
.. _avatax/create_avalara_credentials:
Connect to AvaTax
-----------------
After creating the basic company profile in Avalara, connect to *AvaTax*. This step links Odoo and
*AvaTax* bidirectionally.
Navigate to either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_ environment. This will depend on which type of Avalara account the
company would like to integrate.
.. seealso::
`Sandbox vs production environments in Avalara
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
Log in to create the :guilabel:`License Key`. Go to :menuselection:`Settings --> License and API
Keys`. Click :guilabel:`Generate License Key`.
.. note::
A warning appears stating: `If your business app is connected to Avalara solutions, the
connection will be broken until you update the app with the new license key. This action cannot
be undone.`
Generating a new license key breaks the connection with existing business apps using the *AvaTax*
integration. Make sure to update these apps with the new license key.
If this will be the first :abbr:`API (application programming interface)` integration being made
with *AvaTax* and Odoo, then click :guilabel:`Generate license key`.
If this is an additional license key, ensure the previous connection can be broken. There is
**only** one license key associated with each of the Avalara sandbox and production accounts.
.. important::
Copy this key to a safe place. It is **strongly encouraged** to backup the license key for future
reference. This key cannot be retrieved after leaving this screen.
Odoo configuration
==================
Before using *AvaTax*, there are some additional configurations in Odoo to ensure tax calculations
are made accurately.
Verify that the Odoo database contains necessary data. The country initially set up in the database
determines the fiscal position, and aids *AvaTax* in calculating accurate tax rates.
.. _avatax/fiscal_country:
Fiscal country
--------------
To set the :guilabel:`Fiscal Country`, navigate to :menuselection:`Accounting app --> Configuration
--> Settings`.
.. seealso::
:doc:`../../fiscal_localizations`
Under the :guilabel:`Taxes` section, set the :guilabel:`Fiscal Country` feature to :guilabel:`United
States` or :guilabel:`Canada`. Then, click :guilabel:`Save`.
Company settings
----------------
All companies operating under the Odoo database should have a full and complete address listed in
the settings. Navigate to the :menuselection:`Settings app`, and under the :guilabel:`Companies`
section, ensure there is only one company operating the Odoo database. Click :guilabel:`Update Info`
to open a separate page to update company details.
If there are multiple companies operating in the database, click :guilabel:`Manage Companies` to
load a list of companies to select from. Update company information by clicking into the specific
company.
Database administrators should ensure that the :guilabel:`Street...`, :guilabel:`Street2...`,
:guilabel:`City`, :guilabel:`State`, :guilabel:`ZIP`, and :guilabel:`Country` are all updated for
the companies.
This ensures accurate tax calculations and smooth end-of-year accounting operations.
.. seealso::
- :doc:`../../../general/companies`
- :doc:`../get_started`
Module installation
-------------------
Next, ensure that the Odoo *AvaTax* module is installed. To do so, navigate to the
:menuselection:`Apps application`. In the :guilabel:`Search...` bar, type in `avatax`, and press
:kbd:`Enter`. The following results populate:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`Avatax`
- `account_avatax`
- Default *AvaTax* module. This module adds the base *AvaTax* features for tax calculation.
* - :guilabel:`Avatax for SO`
- `account_avatax_sale`
- Includes the information needed for tax calculation on sales orders in Odoo.
* - :guilabel:`Avatax for Subscriptions`
- `account_avatax_sale_subscription`
- This module includes the features required for tax calculation on subscriptions in Odoo.
* - :guilabel:`Account Avatax - Ecommerce`
- `website_sale_account_avatax`
- Includes tax calculation features for the checkout process on Odoo eCommerce.
* - :guilabel:`Account AvaTax - Ecommerce - Delivery`
- `website_sale_delivery_avatax`
- Includes tax calculation features for the delivery process on Odoo eCommerce.
Click the :guilabel:`Install` button on the module labeled :guilabel:`Avatax`: `account_avatax`.
Doing so installs the following modules:
- :guilabel:`Avatax`: `account_avatax`
- :guilabel:`Avatax for SO`: `account_avatax_sale`
- :guilabel:`Account Avatax - Ecommerce`: `website_sale_account_avatax`
Should *AvaTax* be needed for Odoo *Subscriptions*, or for delivery tax in Odoo *eCommerce*, then
install those modules individually by clicking on :guilabel:`Install`.
.. _avatax/credentials:
Credential configuration
========================
Odoo AvaTax settings
--------------------
To integrate Avatax with Odoo, go to :menuselection:`Accounting --> Configuration --> Settings -->
Taxes` and add your Avatax credentials in the :guilabel:`Avatax` section.
.. tip::
If you do not yet have credentials, click on :guilabel:`How to Get Credentials`.
To integrate the *AvaTax* :abbr:`API (application programming interface)` with Odoo, go to
:menuselection:`Accounting app --> Configuration --> Settings` section. The :guilabel:`AvaTax`
fields in the :guilabel:`Taxes` section is where the *AvaTax* configurations are made and the
credentials are entered in.
.. image:: avatax/avatax-configuration-settings.png
:align: center
:alt: Configure Avatax settings
:alt: Configure AvaTax settings
.. _avatax/tax-mapping:
Prerequisites
~~~~~~~~~~~~~
First, select the :guilabel:`Environment` in which the company wishes to use *AvaTax* in. It can
either be :guilabel:`Sandbox` or :guilabel:`Production`.
.. seealso::
For help determining which *AvaTax* environment to use (either :guilabel:`Production` or
:guilabel:`Sandbox`), visit: `Sandbox vs Production environments
<https://knowledge.avalara.com/bundle/fzc1692293626742/page/sandbox-vs-production.html>`_.
Credentials
~~~~~~~~~~~
Now, the credentials can be entered in. The *AvaTax* :guilabel:`Account ID` should be entered in the
:guilabel:`API ID` field, and the :guilabel:`License Key` should be entered in the :guilabel:`API
Key` field.
.. important::
The :guilabel:`Account ID` can be found by logging into the *AvaTax* portal (`sandbox
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_). In the
upper-right corner, click on the initials of the user and :guilabel:`Account`. The
:guilabel:`Account ID` is listed first.
To access the :guilabel:`License Key` see this documentation:
:ref:`avatax/create_avalara_credentials`.
For the :guilabel:`Company Code` field, enter the Avalara company code for the company being
configured. Avalara interprets this as `DEFAULT`, if it is not set. The :guilabel:`Company Code` can
be accessed in the Avalara management portal.
First, log into the *AvaTax* portal (`sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_). Then, navigate to :menuselection:`Settings --> Manage Companies`.
The :guilabel:`Company Code` value is located in the row of the :guilabel:`Company` in the
:guilabel:`Company Code` column.
.. image:: avatax/company-code.png
:align: center
:alt: AvaTax company code highlighted on the company details page.
Transaction options
~~~~~~~~~~~~~~~~~~~
There are two transactional settings in the Odoo *AvaTax* settings that can be configured:
:guilabel:`Use UPC` and :guilabel:`Commit Transactions`.
If the checkbox next to :guilabel:`Use UPC` is ticked, the transactions will use Universal Product
Codes (UPC), instead of custom defined codes in Avalara. Consult a certified public accountant (CPA)
for specific guidance.
Should the :guilabel:`Commit Transactions` checkbox be ticked, then, the transactions in the Odoo
database will be committed for reporting in *AvaTax*.
Address validation
~~~~~~~~~~~~~~~~~~
The *Address Validation* feature ensures that the most up-to-date address by postal standards is set
on a contact in Odoo. This is important to provide accurate tax calculations for customers.
.. important::
The :guilabel:`Address Validation` feature only works with partners/customers in North America.
Additionally, tick the checkbox next to the :guilabel:`Address validation` field.
.. important::
For accurate tax calculations, it is best practice to enter a complete address for the contacts
saved in the database. However, *AvaTax* can still function by implementing a best effort attempt
using only the :guilabel:`Country`, :guilabel:`State`, and :guilabel:`Zip code`. These are the
three minimum required fields.
:guilabel:`Save` the settings to implement the configuration.
.. tip::
Manually :guilabel:`Validate` the address by navigating to the :menuselection:`Contacts app`, and
selecting a contact. Now that the *AvaTax* module has been configured on the database, a
:guilabel:`Validate` button appears directly below the :guilabel:`Address`.
Click :guilabel:`Validate`, and a pop-up window appears with a :guilabel:`Validated Address` and
:guilabel:`Original Address` listed. If the :guilabel:`Validated Address` is the correct mailing
address for tax purposes, click :guilabel:`Save Validated`.
.. image:: avatax/validate-address.png
:align: center
:alt: Validate address pop-up window in Odoo with "Save Validated" button and "Validated
Address" highlighted.
.. warning::
All previously-entered addresses for contacts in the Odoo database will need to be validated
using the manually validate process outlined above. Addresses are not automatically validated if
they were entered previously. This only occurs upon tax calculation.
Test connection
~~~~~~~~~~~~~~~
After entering all the above information into the *AvaTax* setup on Odoo, click :guilabel:`Test
connection`. This ensures the :guilabel:`API ID` and :guilabel:`API KEY` are correct, and a
connection is made between Odoo and the *AvaTax* application programming interface (API).
Sync parameters
~~~~~~~~~~~~~~~
Upon finishing the configuration and settings of the *AvaTax* section, click the :guilabel:`Sync
Parameters` button. This action synchronizes the exemption codes from *AvaTax*.
.. _avatax/fiscal_positions:
Fiscal position
---------------
Next, navigate to :menuselection:`Accounting app --> Configuration --> Accounting: Fiscal
Positions`. A :guilabel:`Fiscal Position` is listed named, :guilabel:`Automatic Tax Mapping
(AvaTax)`. Click it to open *AvaTax's* fiscal position configuration page.
Here, ensure that the :guilabel:`Use AvaTax API` checkbox is ticked.
Optionally, tick the checkbox next to the field labeled: :guilabel:`Detect Automatically`. Should
this option be ticked, then, Odoo will automatically apply this :guilabel:`Fiscal Position` for
transactions in Odoo.
Enabling :guilabel:`Detect Automatically` also makes specific parameters, such as :guilabel:`VAT
required`, :guilabel:`Foreign Tax ID`, :guilabel:`Country Group`, :guilabel:`Country`,
:guilabel:`Federal States`, or :guilabel:`Zip Range` appear. Filling these parameters filters the
:guilabel:`Fiscal Position` usage. Leaving them blank ensures all calculations are made using this
:guilabel:`Fiscal Position`.
.. warning::
Should the :guilabel:`Detect Automatically` checkbox not be ticked, each customer will need to
have the :guilabel:`Fiscal Position` set on their :guilabel:`Sales and Purchase` tab of the
contact record. To do so, navigate to :menuselection:`Sales app --> Order --> Customers`, or
:menuselection:`Contacts app --> Contacts`. Then, select a customer or contact to set the fiscal
position on.
Navigate to the :guilabel:`Sales and Purchase` tab, and down to the section labeled,
:guilabel:`Fiscal Position`. Set the :guilabel:`Fiscal Position` field to the fiscal position
for the customer.
.. seealso::
:doc:`fiscal_positions`
AvaTax accounts
~~~~~~~~~~~~~~~
Upon selecting the checkbox option for :guilabel:`Use AvaTax API` a new :guilabel:`AvaTax` tab
appears. Click into this tab to reveal two different settings.
The first setting is the :guilabel:`AvaTax Invoice Account`, while the second is, :guilabel:`AvaTax
Refund Account`. Ensure both accounts are set for smooth end-of-year record keeping. Consult a
certified public accountant (CPA) for specific guidance on setting both accounts.
Click :guilabel:`Save` to implement the changes.
Tax mapping
===========
-----------
The Avatax integration is available on Sale Orders and Invoices with the included Avatax fiscal
The *AvaTax* integration is available on sale orders and invoices with the included *AvaTax* fiscal
position.
Product category mapping
~~~~~~~~~~~~~~~~~~~~~~~~
Before using the integration, specify an :guilabel:`Avatax Category` on the product categories.
Navigate to :menuselection:`Inventory app --> Configuration --> Product Categories`. Select the
product category to add the :guilabel:`AvaTax Category` to. In the :guilabel:`AvaTax Category`
field, select a category from the drop-down menu, or :guilabel:`Search More...` to open the complete
list of options.
.. image:: avatax/avatax-category.png
:align: center
:alt: Specify Avatax Category on products
:alt: Specify AvaTax Category on products.
Avatax Categories may be overridden or set on individual products as well.
Product mapping
~~~~~~~~~~~~~~~
*AvaTax* Categories may be set on individual products, as well. To set the :guilabel:`Avatax
Category` navigate to :menuselection:`Inventory app --> Products --> Products`. Select the product
to add the :guilabel:`Avatax Category` to. Under the :guilabel:`General Information` tab, on the
far-right, is a selector field labeled: :guilabel:`Avatax Category`. Finally, click the drop-down
menu, and select a category, or :guilabel:`Search More...` to find one that is not listed.
.. note::
If both the product, and its category, have an :guilabel:`AvaTax Category` set, the product's
:guilabel:`AvaTax Category` takes precedence.
.. image:: avatax/override-avatax-product-category.png
:align: center
:alt: Override product categories as needed
:alt: Override product categories as needed.
.. _avatax/address-mapping:
Address validation
==================
Manually validate customer addresses by clicking the :guilabel:`Validate address` link in the
customer form view.
.. image:: avatax/validate-customer-address.png
:align: center
:alt: Validate customer addresses
If preferred, choose to keep the newly validated address or the original address in the wizard that
pops up.
.. image:: avatax/choose-customer-address.png
:align: center
:alt: Address validation wizard
.. _avatax/tax-calculation:
Tax calculation
===============
Automatically calculate taxes on Odoo quotations and invoices with Avatax by confirming the
documents. Alternatively, calculate the taxes manually by clicking the :guilabel:`Compute taxes
using Avatax` button while these documents are in draft mode.
Use the :guilabel:`Avalara Code` field that's available on customers, quotations, and invoices to
cross-reference data in Odoo and Avatax.
.. important::
Mapping an :guilabel:`AvaTax Category` on either the *Product* or *Product Category* should be
completed for every *Product* or *Product Category*, depending the route that is chosen.
.. seealso::
- :doc:`fiscal_positions`
- :doc:`avatax/avatax_use`
- :doc:`avatax/avalara_portal`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
.. toctree::
:titlesonly:
avatax/avatax_use
avatax/avalara_portal
@@ -0,0 +1,259 @@
.. _avatax/portal:
=======================
Avalara (Avatax) portal
=======================
Avalara's (*AvaTax*) management console offers account management options including: viewing/editing
the transactions sent from Odoo to *AvaTax*, details on how the taxes are calculated, tax reporting,
tax exemption management, and tax return resources.
.. tip::
Avalara is the software developer of the tax software, *AvaTax*.
To access the console, first, navigate to either Avalara's `sandbox
<https://sandbox.admin.avalara.com/>`_ or `production <https://admin.avalara.com/>`_ environment.
This will depend on which type of account was set in the :doc:`integration <../avatax>`. Log in to
the management console.
.. image:: avalara_portal/avalara-portal.png
:align: center
:alt: Avalara dashboard after logging into management portal.
.. seealso::
For more information see Avalara's documentation: `Activate your Communications Customer Portal
account
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=Activate_your_Communications_Customer_Portal_account.html&_LANG=enus>`_.
.. _avalara/portal-transactions:
Transactions
============
To access transactions, click in the :guilabel:`Transactions` link on the main dashboard upon
logging into the :ref:`avatax/portal`. To manually access the *Transactions* page, while logged into
the Avalara console, navigate to :menuselection:`Transactions --> Transactions`.
.. image:: avalara_portal/avalara-transactions.png
:align: center
:alt: Avalara portal with the transactions shortcut highlighted.
Edit transaction
----------------
Click into a transaction to reveal more details about the transaction. These details include
sections on :guilabel:`Invoice detail`, :guilabel:`Additional info`, and :guilabel:`Customer info`.
Click :icon:`fa-pencil` :guilabel:`Edit document details` to make changes to the transaction.
A :guilabel:`Discount` can be added to adjust the invoice. This is especially useful in cases where
the transaction has already synced with Avalara / *AvaTax*, and changes need to be made afterward.
.. _avalara/portal-filter:
Filter
------
Filter transactions on the :guilabel:`Transactions` page, by setting the :guilabel:`From` and
:guilabel:`To` fields, and configuring other fields to filter by, including:
- :guilabel:`Document Status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Document Code`: any of the following options, :guilabel:`Exactly match`,
:guilabel:`Starts with`, or :guilabel:`Contains`.
- :guilabel:`Customer/Vendor Code`: the customer/vendor code in Odoo (e.g. `Contact18`).
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
- :guilabel:`Region`: the region of the country, which varies based on the :guilabel:`Country`
selection.
Click :icon:`fa-plus` :guilabel:`Filters` to access the following filter conditions:
- :guilabel:`Document Type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
Invoice`.
- :guilabel:`Import ID`: represents the import ID of the document.
Sort by
-------
On the :guilabel:`Transactions` page, transactions will be listed below, according to the set
:ref:`avalara/portal-filter`, located in the top half of the page. The following columns are
available by default, to sort by ascending or descending order:
- :guilabel:`Doc Code`: either of the following options, :guilabel:`Exactly match`,
:guilabel:`Starts with`, or :guilabel:`Contains`.
- :guilabel:`Doc Status`: either of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Cust/Vendor Code` : this is the customer/vendor code in Odoo (e.g. Contact18).
- :guilabel:`Region`: this is the region of the country, this will vary based on the
:guilabel:`Country` selection.
- :guilabel:`Amount`: the numeric amount of the total amount on the Odoo document.
- :guilabel:`Tax`: the numeric amount of the tax applied to the total.
.. image:: avalara_portal/transactions.png
:align: center
:alt: Transactions page on the Avalara portal with the filter and sort-by options highlighted.
Customize columns
~~~~~~~~~~~~~~~~~
Additional columns can be added by clicking the :icon:`fa-cog` :guilabel:`Customize columns`. On the
resulting popover window, click the drop-down menu for the :guilabel:`column` that should be
changed.
The following columns can be added for additional transactional information:
- :guilabel:`AvaTax calculated`: the amount of tax calculated by *AvaTax*.
- :guilabel:`Country`: the country this tax was calculated in; this is a text field.
- :guilabel:`Cust/vendor code`: the customer/vendor code in Odoo (e.g. `Contact18`).
- :guilabel:`Currency`: the standardized abbreviation for the currency the amount total is in.
- :guilabel:`Doc date`: the document's date of creation.
- :guilabel:`Doc status`: any of the following options, :guilabel:`All`, :guilabel:`Voided`,
:guilabel:`Committed`, :guilabel:`Uncommitted`, or :guilabel:`Locked`.
- :guilabel:`Doc type`: any of the following selections, :guilabel:`All`, :guilabel:`Sales
Invoice`, :guilabel:`Purchase Invoice`, :guilabel:`Return Invoice`, :guilabel:`Inventory Transfer
Inbound Invoice`, :guilabel:`Inventory Transfer Outbound Invoice`, or :guilabel:`Customs
Invoice`.
- :guilabel:`Import ID`: represents the import ID of the document.
- :guilabel:`Last modified`: timestamp of the last time the document was modified.
- :guilabel:`Location code`: the location code used to calculate the tax, based on the delivery
address.
- :guilabel:`PO number`: the purchase order number.
- :guilabel:`Reference code`: the Odoo reference code (e.g. NV/2024/00003)
- :guilabel:`Region`: the region of the country,which varies based on the :guilabel:`Country`
selection.
- :guilabel:`Salesperson code`: the numeric ID of the user assigned to the sales order in Odoo.
- :guilabel:`Tax date`: the month/day/year of the tax calculation.
- :guilabel:`Tax override type`: where an exemption would appear, should there be none, the field
populates with :guilabel:`None`.
To add a new column click the :icon:`fa-plus` :guilabel:`Column`.
.. seealso::
For more information on *AvaTax* transactions, refer to this Avalara documentation: `Transactions
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=qvv1656594440497&topicId=transactions.html&_LANG=enus>`_.
Import-export
-------------
While on the :ref:`avalara/portal-transactions`, click :icon:`fa-download` :guilabel:`Import
transactions` or :icon:`fa-upload` :guilabel:`Export transactions` to import or export transactions.
Reports
-------
To access reporting, navigate to the :menuselection:`Reports` link in the top menu of the Avalara
management console. Next, select from one of the available reporting tabs: :guilabel:`Transactions
reports`, :guilabel:`Liability & tax return reports`, or :guilabel:`Exemption reports`.
.. tip::
Additionally, there is a :guilabel:`Favorites` tab and :guilabel:`Downloads` tab. The
:guilabel:`Favorites` tab contains any favorited report configurations for the Avalara user. The
:guilabel:`Downloads` tab contains a list view where the user can download the high-volume
transaction reports created in the last 30 days.
Make a selection for the :guilabel:`Report Category`, and the :guilabel:`Report Name`, under the
:guilabel:`Select a report` section.
Next, fill out the :guilabel:`Select report details` section. These options will vary based on the
tab selected above.
Depending on the report size, the following two options are available in the section labeled,
:guilabel:`Select the approximate number of transactions for your report`: :guilabel:`Create and
download the report instantly` (for small reports) and :guilabel:`Create and download the report in
the background` (for larger reports). Select one or the other depending on the volume of
transactions in this report.
Finally, under the section labeled, :guilabel:`Report preview and export` make a selection of the
file type to download. Either a :guilabel:`.PDF` or :guilabel:`.XLS` can be chosen. Alternatively,
the file can be previewed by selecting the :guilabel:`Preview` option.
After making all the configurations, click :guilabel:`Create report` to download the report. Click
:icon:`fa-star-o` :guilabel:`Make this report a favorite` to save the report configuration to the
user's favorites.
After the report is created, click :icon:`fa-download` :guilabel:`Download` to download the file to
the device.
.. tip::
Select a pre-configured report from the :guilabel:`Frequently used reports` section of the
reporting dashboard.
Access this list by clicking on the :guilabel:`Reports` option in the top menu of the Avalara
management console, and scroll to the bottom of the page.
.. seealso::
`See Avalara's documentation: Reports in AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=rjq1671176624730&topicId=Reports_in_AvaTax.html&_LANG=enus>`_.
Add more jurisdictions
======================
Additional jurisdictions (tax locations) can be added in the Avalara management console. Navigate to
either Avalara's `sandbox <https://sandbox.admin.avalara.com/>`_ or `production
<https://admin.avalara.com/>`_ environment. This will depend on which type of account was set in the
:doc:`integration <../avatax>`.
Next, navigate to :menuselection:`Settings --> Where you collect tax`. Choose between the three
different tabs, depending on the business need. The first tab is :guilabel:`Sales and use tax`,
where tax can be collected for the United States. Click the :icon:`fa-plus` :guilabel:`Add to where
you collect sales and use tax` to add another location where the company collects sales and use tax.
The second option, is the :guilabel:`VAT/GST` tab where the :icon:`fa-plus` :guilabel:`Add a country
or territory where you collect VAT/GST` can be selected to add another country or territory where
the company collects VAT/GST.
Finally, on the far-right, is the :guilabel:`Customs duty` tab, where a country can be added where
the company collects customs duty. Simply click on the :icon:`fa-plus` :guilabel:`Add a country
where you calculate customs duty` icon below the tab.
.. image:: avalara_portal/where-you-collect-tax.png
:align: center
:alt: AvaTax management console, on the Where you collect tax page, with the add button and
sales and use tax tab highlighted.
.. seealso::
`See Avalara's documentation: Add local jurisdiction taxes
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=bla1700809896571_bla1700809896571&topicId=nbw1698727575499.html&_LANG=enus>`_.
Tax exemption certificate
=========================
Tax exemption certificates for customers can be added into the Avalara management console, so that
*AvaTax* is aware of which customers may be exempt from paying certain taxes. To add an *exception
certificate* navigate to :menuselection:`Exemptions --> Customer certificates`. From there, click on
the :icon:`fa-plus` :guilabel:`Add a certificate` to configure an exemption.
.. warning::
An Avalara subscription to Exemption Certificate Management (ECM) is required in order to attach
certificate images, and to be ready for an audit. For more on subscribing to this add-on, visit
`Avalara
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hff1682048150115_hff1682048150115&topicId=fol1682356576230.html&_LANG=enus>`_.
End-of-year operations
======================
Avalara's services include tax return services, for when it is time to file taxes at the end of the
year. To access Avalara's tax services log, into the `management portal
<https://admin.avalara.com/>`_. Then, from the main dashboard, click :guilabel:`Returns`. Avalara
will prompt the Avalara user to log in for security purposes, and redirect the user to the *Returns*
portal.
.. image:: avalara_portal/avalara-returns.png
:align: center
:alt: Avalara portal with the returns shortcut highlighted.
Click :guilabel:`Get started` to begin the tax return process. For more information, refer to this
Avalara documentation: `About Managed Returns
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=hps1656397152776_hps1656397152776&topicId=Learn_about_Managed_Returns.html&_LANG=enus>`_.
.. tip::
Alternatively, click on the :menuselection:`Returns` button in the top menu of the Avalara
management console.
.. seealso::
- :doc:`../avatax`
- :doc:`avatax_use`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,164 @@
==========
AvaTax use
==========
AvaTax is a tax calculation software that can be integrated with Odoo in the United States and
Canada. Once the :doc:`integration setup <../avatax>` is complete, the calculated tax is simple and
automatic.
Tax calculation
===============
Automatically calculate taxes on Odoo quotations and invoices with AvaTax by confirming the
documents during the sales flow. Alternatively, calculate the taxes manually by clicking the
:guilabel:`Compute taxes using Avatax` button while these documents are in draft mode.
.. tip::
Clicking the :guilabel:`Compute taxes using Avatax` button recalculates taxes if any product
lines are edited on the invoice.
.. image:: avatax_use/calculate-avatax.png
:align: center
:alt: Sales quotation with the confirm and compute taxes using AvaTax buttons highlighted.
The tax calculation is triggered during the following :ref:`automatic trigger
<avatax/automatic-triggers>` and :ref:`manual trigger <avatax/manual-triggers>` circumstances.
.. _avatax/automatic-triggers:
Automatic triggers
------------------
- When the sales rep sends the quote by email with :guilabel:`Send by email` button (pop-up).
- When the customer views the online quote on the portal.
- When a quote is confirmed and becomes a sales order.
- When the customer views the invoice on the portal.
- When a draft invoice is validated.
- When the customer views the subscription in the portal.
- When a subscription generates an invoice.
- When the customer gets to the last screen of the eCommerce checkout.
.. _avatax/manual-triggers:
Manual triggers
---------------
- :guilabel:`Compute taxes using Avatax` button at the bottom of the quote.
- :guilabel:`Compute taxes using Avatax` button at the top of the invoice.
.. tip::
Use the :guilabel:`Avalara Partner Code` field that is available on customer records, quotations,
and invoices to cross-reference data in Odoo and AvaTax. This field is located under the
:menuselection:`Other info` tab of the sales order or quotation in the :guilabel:`Sales` section.
On the customer record, navigate to *Contacts app* and select a contact. Then open the
:guilabel:`Sales & Purchase` tab and the :guilabel:`Avalara Partner Code` under the
:guilabel:`Sales` section.
.. important::
The :guilabel:`Automatic Tax Mapping (AvaTax)` fiscal position is also applied on those Odoo
documents, like subscriptions.
.. seealso::
- :doc:`../fiscal_positions`
AvaTax synchronization
======================
Synchronization occurs with AvaTax, when the *invoice* is created in Odoo. This means the sales tax
is recorded with Avalara (AvaTax software developer).
To do so, navigate to :menuselection:`Sales app --> Orders --> Quotations`. Select a quotation from
the list.
After confirming a quotation and validating the delivery, click :guilabel:`Create Invoice`. Indicate
whether it is a :guilabel:`Regular invoice`, :guilabel:`Down payment (percentage)`, or
:guilabel:`Down payment (fixed amount)`.
Then click :guilabel:`Create and view invoice`. The recorded taxes can be seen in the
:guilabel:`Journal Items` tab of the invoice. There will be different taxes depending on the
location of the :guilabel:`Delivery Address`.
.. image:: avatax_use/journal-items.png
:align: center
:alt: Journal items highlighted on a invoice in Odoo.
Finally, press the :guilabel:`Confirm` button to complete the invoice and synchronize with the
AvaTax portal.
.. warning::
An invoice cannot be :guilabel:`Reset to draft` because this causes de-synchronization with the
AvaTax Portal. Instead, click :guilabel:`Add credit note` and state: `Sync with AvaTax Portal`.
See this documentation: :doc:`../../../accounting/customer_invoices/credit_notes`.
Fixed price discounts
=====================
Add a fixed price discount to a valuable customer by click :guilabel:`Add a line` on the customer's
invoice. Add the product discount and set the :guilabel:`Price` to either a positive or negative
value. To recalculate the taxes, click :guilabel:`Compute taxes using Avatax`.
.. tip::
Tax calculation can even be done on negative subtotals and credit notes.
Logging
=======
It is possible to log Avalara/*AvaTax* actions in Odoo for further analysis, or verification of
functionality. Logging is accessible through the *AvaTax* settings.
To start logging *AvaTax* actions, first, navigate to the :menuselection:`Accounting app -->
Configuration --> Settings`.
Then, in the :guilabel:`Taxes` section, under the :guilabel:`AvaTax` settings, click
:guilabel:`Start logging for 30 minutes`.
Upon starting the log process, Odoo will log all Avalara/*AvaTax* actions performed in the database.
To view the logs, click on :guilabel:`Show logs` to the right of the :guilabel:`Start logging for 30
minutes`. This reveals a detailed list of Avalara/*AvaTax* actions. This list is sortable by the
following columns:
- :guilabel:`Created on`: timestamp of the *AvaTax* calculation.
- :guilabel:`Created by`: numeric value of the user in the database.
- :guilabel:`Database name`: name of the database.
- :guilabel:`Type`: two values can be chosen for this field, :guilabel:`Server` or
:guilabel:`Client`.
- :guilabel:`Name`: Avalara service name. In this case, it will be *AvaTax*.
- :guilabel:`Level`: by default, this will be `INFO`.
- :guilabel:`Path`: indicates the path taken to make the calculation.
- :guilabel:`Line`: indicates the line the calculation is made on.
- :guilabel:`Function`: indicates the calculation taken on the line.
.. image:: avatax_use/logging.png
:align: center
:alt: Avalara logging page with top row of list highlighted.
Click into the log line to reveal another field, called :guilabel:`Message`.
This field populates a raw transcription of the transaction, which involves the creation (or
adjustment) of a sales invoice using the Avalara *AvaTax* API.
The transaction includes details, such as addresses for shipping from and to, line items describing
the products or services, tax codes, tax amounts, and other relevant information.
The :guilabel:`Message` contains the calculated taxes for different jurisdictions and confirms the
creation (or adjustment) of the transaction.
.. tip::
Custom fields can be made using Odoo *Studio*. Click the :icon:`fa-ellipsis-v`
:guilabel:`(ellipsis)` menu to the far-right of the header row. Then click :icon:`fa-plus`
:guilabel:`Add custom field`. This action opens Odoo *Studio*.
.. important::
Odoo *Studio* requires a *custom* pricing plan. Consult the database's customer success manager
for more information on switching plans. Or to see if Odoo *Studio* is included in the database's
current pricing plan. See this documentation: :doc:`../../../../studio`.
.. seealso::
- :doc:`../avatax`
- :doc:`avalara_portal`
- `US Tax Compliance: Avatax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
- :doc:`../fiscal_positions`
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@@ -406,7 +406,7 @@ is generated for each POS order and added to its receipt. This allows the govern
all revenue is declared.
.. warning::
Only the FDM from **Boîtenoire.be** with the `FDM certificate number BMC01
Only the FDM from **Boîtenoire.be** with the `FDM certificate number BMC04
<https://www.systemedecaisseenregistreuse.be/fr/systemes-certifies#FDM%20certifiés>`_ is
supported by Odoo. `Contact the manufacturer (GCV BMC) <https://www.boîtenoire.be/contact>`_ to
order one.
@@ -416,7 +416,7 @@ Configuration
Before setting up your database to work with an FDM, ensure you have the following hardware:
- a **Boîtenoire.be** (certificate number BMC01) FDM;
- a **Boîtenoire.be** (certificate number BMC04) FDM;
- an RS-232 serial null modem cable per FDM;
- an RS-232 serial-to-USB adapter per FDM;
- an :ref:`IoT Box <belgium/iotbox>` (one IoT box per FDM); and
@@ -743,6 +743,55 @@ If you claim a vendor bill, the status changes from :guilabel:`Draft` to :guilab
automatically. Considering this as best practice, all the claimed documents should be canceled as
they won't be valid for your accounting records.
Electronic purchase invoice
---------------------------
The *electronic purchase invoice* is a feature included in the `l10n_cl_edi` module.
Once all configurations have been made for :ref:`electronic invoices <chile/electronic-invoice>`
(e.g., uploading a valid company certificate, setting up master data, etc.), the electronic
purchase invoices need their own :abbr:`CAFs (Folio Authorization Code)`. Please refer to the
:ref:`CAF documentation <chile/caf-documentation>` to check the details on how to acquire the
:abbr:`CAFs (Folio Authorization Code)` for electronic purchase invoices.
Electronic purchase invoices are useful when vendors are not obligated to expedite an electronic
vendor bill for your purchase. Still, your obligations require a document to be sent to the
:abbr:`SII (Servicio de Impuestos Internos)` as proof of purchase.
Configuration
~~~~~~~~~~~~~
To generate an electronic purchase invoice from a vendor bill, the bill must be created in a
purchase journal with the *Use Documents* feature enabled. It is possible to modify an existing
purchase journal or create a new one in the following process.
To modify the existing purchase journal, or create a new purchase journal, navigate to
:menuselection:`Accounting --> Configuration --> Journals`. Then, click the :guilabel:`New` button,
and fill in the following required information:
- :guilabel:`Type`: select :guilabel:`Purchase` from the drop-down menu for vendor bill journals.
- :guilabel:`Use Documents`: check this field so the journal can generate electronic documents (in
this case the electronic purchase invoice).
Generate an electronic purchase invoice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To generate this type of document, it is necessary to create a vendor bill in Odoo. To do so,
navigate to :menuselection:`Accounting --> Vendors --> Bills`, and click the :guilabel:`New` button.
When all of the electronic purchase invoice information is filled, select the option :guilabel:`(46)
Electronic Purchase Invoice` in the :guilabel:`Document Type` field:
After the vendor bill is posted:
- The :abbr:`DTE (Documentos Tributarios Electrónicos)` file (Electronic Tax Document) is
automatically created and added to the chatter.
- The :guilabel:`DTE SII Status` is set as :guilabel:`Pending to be sent`.
Odoo automatically updates the *DTE Status* every night using a scheduled action. To get a response
from the :abbr:`SII (Servicio de Impuestos Internos)` immediately, click the :guilabel:`Send now to
SII` button.
Delivery guide
--------------
@@ -66,6 +66,8 @@ localization:
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
installs the base module :guilabel:`Ecuadorian - Accounting`.
.. _l10n_ec/configure-your-company:
Configure your company
----------------------
@@ -586,3 +588,59 @@ includes the tax code within the parenthesis in order to report it to the SRI.
.. image:: ecuador/104-form.png
:align: center
:alt: Report 104 form for Ecuador.
ATS report
----------
:ref:`Install <general/install>` the *ATS Report* (`l10n_ec_reports_ats`) module to enable
downloading the ATS report in XML format.
.. note::
The Ecuadorian *ATS Report* module is dependent on the previous installation of the *Accounting*
app and the *Ecuadorian EDI module*.
Configuration
~~~~~~~~~~~~~
To issue electronic documents, ensure your company is configured as explained in the
:ref:`electronic invoice <l10n_ec/configure-your-company>` section.
In the :abbr:`ATS (Anexo Transaccional Simplificado)`, every document generated in Odoo (invoices,
vendor bills, sales and purchases withholdings, credit notes, and debit notes) will be included.
Vendor bills
************
When generating a vendor bill, it is necessary to register the authorization number from the
invoice that the vendor generated for the purchase. To do so, go to :menuselection:`Accounting
--> Vendors --> Bills` and select the bill. Then, enter the number from the vendor's invoice in the
:guilabel:`Authorization Number` field.
Credit and debit notes
**********************
When generating a credit note or debit note manually or through importation, it is necessary to link
this note to the sales invoice that is being modified by it.
.. note::
Remember to add all required information to the documents before downloading the :abbr:`ATS
(Anexo Transaccional Simplificado)` file. For example, add the *Authorization Number* and the
*SRI Payment Method* on documents, when needed.
XML generation
~~~~~~~~~~~~~~
To generate the :abbr:`ATS (Anexo Transaccional Simplificado)` report, go to
:menuselection:`Accounting --> Reports --> Tax Report` and choose a time period for the desired
:abbr:`ATS (Anexo Transaccional Simplificado)` report, then click :guilabel:`ATS`.
The downloaded XML file is ready to be uploaded to *DIMM Formularios*.
.. image:: ecuador/ats-report.png
:align: center
:alt: ATS report download for Ecuador in Odoo Accounting.
.. note::
When downloading the :abbr:`ATS (Anexo Transaccional Simplificado)` report, Odoo generates a
warning pop-up alerting the user if a document(s) has missing or incorrect data. Nevertheless,
the user can still download the XML file.
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -11,9 +11,9 @@ localization, such as a chart of accounts, taxes, and the BIR 2307 report. These
template to get started with using Philippine accounting.
.. note::
- When creating a new database and `Philippines` is selected as a country, the fiscal
- When creating a new database and selecting the `Philippines` as a country, the fiscal
localization module **Philippines - Accounting** is automatically installed.
- If installing the module in an existing company, the **chart of accounts** and **taxes** will
- If the module is installed in an existing company, the **chart of accounts** and **taxes** will
*not* be replaced if there are already posted journal entries.
- The BIR 2307 report is installed, but the withholding taxes may need to be manually created.
@@ -21,20 +21,21 @@ Chart of accounts and taxes
---------------------------
A minimum configuration default chart of accounts is installed, and the following types of taxes are
installed and also linked to the relevant account:
installed and linked to the relevant account:
- VAT 12%
- VAT Exempt
- Withholding taxes
For the withholding taxes, there is an additional :guilabel:`Philippines ATC` field under the
:guilabel:`Philippines` tab.
For the withholding taxes (:menuselection:`Configuration --> Taxes`), there is an additional
:guilabel:`Philippines ATC` field under the :guilabel:`Philippines` tab.
.. image:: philippines/philippines-atc-code.png
:alt: Philippines ATC code field set on taxes.
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code must
be added.
.. note::
Taxes' ATC codes are used for the BIR 2307 report. If a tax is created manually, its ATC code
must be added.
Contacts
--------
@@ -59,8 +60,9 @@ For individuals not belonging to a company, identify them by using the following
BIR 2307 report
===============
**BIR 2307** report data, also known as *Certificate of Creditable Tax Withheld at Source*,
can be generated for purchase orders and vendor payments with the applicable withholding taxes.
**BIR 2307** report data, also known as `Certificate of Creditable Tax Withheld at Source
<https://www.bir.gov.ph/index.php/bir-forms/certificates.html>`_, can be generated for purchase
orders and vendor payments with the applicable withholding taxes.
To generate a BIR 2307 report, select one or multiple vendor bills from the list view, and click
:menuselection:`Action --> Download BIR 2307 XLS`.
@@ -68,7 +70,8 @@ To generate a BIR 2307 report, select one or multiple vendor bills from the list
.. image:: philippines/philippines-multi-bill.png
:alt: Multiple vendor bills selected with action to "Download BIR 2307 XLS".
The same action can be performed on a vendor bill from the form view.
.. tip::
The same action can be performed on a vendor bill from the form view.
A pop-up appears to review the selection, then click on :guilabel:`Generate`.
@@ -78,18 +81,18 @@ A pop-up appears to review the selection, then click on :guilabel:`Generate`.
This generates the `Form_2307.xls` file that lists all the vendor bill lines with the applicable
withholding tax.
The same process above can also be done for a *single* vendor :doc:`payment
<../accounting/payments>` if they were linked to one or more :doc:`vendor bills
<../accounting/payments>` with applied withholding taxes.
The process above can also be used for a *single* vendor :doc:`payment <../accounting/payments>` if
it is linked to one or more :doc:`vendor bills <../accounting/payments>` with applied withholding
taxes.
.. note::
- If there is no withholding tax applied, then the XLS file will not generate records for those
vendor bill lines.
- If no withholding tax is applied, then the XLS file will not generate records for those vendor
bill lines.
- When grouping payments for multiple bills, Odoo splits the payments based on the contact. From
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS`, generates a report that
a payment, clicking :menuselection:`Action --> Download BIR 2307 XLS` generates a report that
only includes vendor bills related to that contact.
.. important::
Odoo cannot generate the BIR 2307 PDF report or DAT files directly.
The generated `Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT
or PDF format.
Odoo cannot generate the BIR 2307 PDF report or DAT files directly. The generated
:file:`Form_2307.xls` file can be exported to an *external* tool to convert it to BIR DAT or PDF
format.
@@ -96,6 +96,13 @@ Periodic submission to HMRC
Import your obligations HMRC, filter on the period you want to submit, and send your tax report by
clicking :guilabel:`Send to HMRC`.
.. tip::
You can use dummy credentials to demo the HMRC flow. To do so, activate the
:ref:`developer mode <developer-mode>` and go to :menuselection:`General Settings -->
Technical --> System Parameters`. From here, search for `l10n_uk_reports.hmrc_mode` and change
the value line to `demo`. You can get such credentials from the `HMRC Developer Hub
<https://developer.service.hmrc.gov.uk/api-test-user>`_.
Periodic submission to HMRC for multi-company
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -5,6 +5,10 @@ Stripe
`Stripe <https://stripe.com/>`_ is a United States-based online payment solution provider allowing
businesses to accept **credit cards** and other payment methods.
.. seealso::
- `List of countries supported by Stripe <https://stripe.com/global>`_
- `List of payment methods supported by Stripe <https://stripe.com/payments/payment-methods>`_
Create your Stripe account with Odoo
====================================
@@ -1,83 +1,232 @@
=============
Digest Emails
Digest emails
=============
**Digest Emails** are periodic snapshots sent to your organization via email that include high-level
information about how your business is performing.
*Digest Emails* are periodic snapshots sent via email to users in an organization that include
high-level information about how the business is performing.
Navigate to Digest Emails by going to :menuselection:`Settings --> General Settings --> Statistics`,
then activate the **Digest Emails** feature and click on save.
To start sending digest emails, begin by navigating to :menuselection:`Settings app --> Statistics
section`, activate the :guilabel:`Digest Emails` feature, and click :guilabel:`Save`.
.. image:: digest_emails/digest-email-settings.png
:align: center
:alt: Digest Emails section inside General Settings.
You can control a variety of settings for your Digest Emails, such as:
A variety of settings can be configured for digest emails, such as:
- which KPIs are shared in the Digest
- how often Digest Emails are sent
- who in your organization receives Digest Emails
- creating custom Digest Email templates
- adding additional KPIs (Studio required)
- Deciding which :abbr:`KPIs (key performance indicators)` are shared in the digest emails
- Determining how often digest emails are sent
- Choosing who in the organization receives digest emails
- Creating custom digest email templates
- Adding additional :abbr:`KPIs (key performance indicators)` (*Studio* app required)
.. note::
By default, Digest Email is *enabled*, and *Your Odoo Periodic Digest* serves as the primary
template, which includes all KPI measurements across your Odoo database and is sent daily to
administrators.
By default, the :guilabel:`Digest Email` feature is enabled. :guilabel:`Your Odoo Periodic
Digest` serves as the primary template, which includes all :abbr:`KPI (key performance
indicator)` measurements across the Odoo database, and is sent daily to administrators.
.. warning::
When creating duplicates of databases that have sending capabilities (not testing-mode), the
digest emails continue to send from the duplicate database, unless deactivated.
To deactivate the digest email, navigate to :menuselection:`Settings --> Statistics section`.
Then, deactivate the :guilabel:`Digest Emails` feature, by un-ticking the checkbox, and clicking
:guilabel:`Save`. See the section on :ref:`digest-emails/deactivate`.
.. _digest-emails/customize-digest:
Customize *Your Odoo Periodic Digest*
=====================================
Customize default digest email
==============================
To customize the default Digest Email (*Your Odoo Periodic Digest*), go to :menuselection:`Settings
--> General Settings --> Statistics --> Digest Email`, select *Your Odoo Periodic Digest* and click
on the *external link* next to the dropdown selection.
To customize the default digest email (*Your Odoo Periodic Digest*), go to :menuselection:`Settings
app --> Statistics section --> Digest Email field`. Then, select :guilabel:`Your Odoo Periodic
Digest`, and click on the :guilabel:`↗️ (External link)` icon, next to the drop-down menu selection.
A popup window appears and presents a variety of editable settings, which include:
A pop-up window appears, and presents a variety of editable settings, which include:
- **Digest Title** - what you want your Digest Email to be called
- **Periodicity** - control the regimen in how often Digest Emails are sent
- **KPIs** - check/uncheck each calculated KPI that appears in Digest Emails
- **Recipients** - add/remove users who receive your Digest Emails
- **Custom** - add your own KPIs (Studio required)
- :guilabel:`Digest Name`: the name of the digest email.
- :guilabel:`Periodicity`: control how often digest emails are sent (:guilabel:`Daily`,
:guilabel:`Weekly`, :guilabel:`Monthly`, or :guilabel:`Quarterly`).
- :guilabel:`Next Send Date`: the date on which the digest email will be sent again.
- :guilabel:`KPIs` tab: check/uncheck each calculated :abbr:`KPI (key performance indicator)` that
appears in digest emails. A ticked box indicates an active :abbr:`KPI (key performance indicator)`
in the digest email. See the section on :ref:`digest-emails/kpis`.
- :guilabel:`Recipients` tab: add/remove users who receive the digest emails. See the section on
:ref:`digest-emails/recipients`.
.. note::
The :abbr:`KPIs (key performance indicators)` can be customized using Odoo *Studio*. Additional
costs to the database subscription are incurred should *Studio* need to be installed. See this
section on :ref:`digest-emails/custom-kpi`.
.. image:: digest_emails/periodic-digest.png
:align: center
:alt: Customize default Digest Email settings and custom KPIs.
.. _digest-emails/deactivate:
Deactivate digest email
=======================
To manually deactivate an individual digest email, first navigate to :menuselection:`Settings app
--> Statistics section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired
digest email from the list that should be deactivated.
Next, click :guilabel:`DEACTIVATE FOR EVERYONE` to deactivate the digest email for everyone, or
:guilabel:`UNSUBSCRIBE ME` to remove the logged in user from the mailing list. These buttons are
located in the top menu, just above the :guilabel:`Digest Name`.
Manually send digest email
==========================
To manually send a digest email, first navigate to :menuselection:`Settings app --> Statistics
section`, and click :guilabel:`Configure Digest Emails`. Then, select the desired digest email, and
click :guilabel:`SEND NOW`. This button is located in the top menu, just above the :guilabel:`Digest
Name`.
.. _digest-emails/kpis:
KPIs
====
Pre-configured :abbr:`KPIs (key performance indicators)` can be added to the digest email from the
:guilabel:`KPIs` tab of the digest email template form.
First, navigate to :menuselection:`Settings app --> Statistics section`, and click
:guilabel:`Configure Digest Emails`.
Then, select the desired digest email, and open the :guilabel:`KPIs` tab.
To add a :abbr:`KPI (key performance indicator)` to the digest email, tick the checkbox next to the
desired :abbr:`KPI (key performance indicator)`. After all :abbr:`KPIs (key performance indicators)`
are added (or deselected), click :guilabel:`Save`.
The following :abbr:`KPIs (key performance indicators)` are available in the :guilabel:`KPIs` tab on
a digest email template form out-of-box in Odoo:
.. image:: digest_emails/oob-kpis.png
:align: right
:alt: KPIs listed in the out-of-box digest email.
:guilabel:`General`
- :guilabel:`Connected Users`
- :guilabel:`Messages`
:guilabel:`Project`
- :guilabel:`Open Tasks`
:guilabel:`Recruitment`
- :guilabel:`Employees`
:guilabel:`CRM`
- :guilabel:`New Leads/Opportunities`
- :guilabel:`Opportunities Won`
:guilabel:`Sales`
- :guilabel:`All Sales`
- :guilabel:`eCommerce Sales`
:guilabel:`Point of Sale`
- :guilabel:`POS Sales`
:guilabel:`Live Chat`
- :guilabel:`% of Happiness`
- :guilabel:`Conversations handled`
- :guilabel:`Time to answer (sec)`
:guilabel:`Helpdesk`
- :guilabel:`Tickets Closed`
:guilabel:`Invoicing`
- :guilabel:`Revenue`
- :guilabel:`Banks and Cash Moves`
.. _digest-emails/recipients:
Recipients
==========
Digest email recipients are added from the :guilabel:`Recipients` tab of the digest email template
form.
To add a recipient, navigate to :menuselection:`Settings app --> Statistics section`, and click
:guilabel:`Configure Digest Emails`. Then, select the desired digest email, and open the
:guilabel:`Recipients` tab.
To add a recipient, click :guilabel:`Add a line`, and an :guilabel:`Add Recipients` pop-up window
appears, with all available users to add as recipients.
From the pop-up window, tick the checkbox next to the :guilabel:`Name` of the user(s), and click the
:guilabel:`Select` button.
To remove a user as a recipient, click the :guilabel:`❌ (remove)` icon to the far-right of the user
listed in the :guilabel:`Recipients` tab.
Click :guilabel:`Save` to implement the changes.
.. _digest-emails/custom-emails:
Custom digest emails
Create digest emails
====================
To do so, click on **Configure Digest Emails** and then **Create**.
To create a new digest email, navigate to :menuselection:`Settings app --> Statistics section`, and
click :guilabel:`Configure Digest Emails`. Then, click :guilabel:`Create` to create a new digest
email.
From there, give your Digest Email a title, specify periodicity, and choose your desired KPIs and
recipients fields as needed.
A separate page, with a blank digest email template appears, and presents a variety of editable
settings, including:
After you click **Save**, your new custom Digest Email is available as a selection in the **General
Settings** dropdown menu.
- :guilabel:`Digest Name`: the name of the digest email.
- :guilabel:`Periodicity`: control how often digest emails are sent (:guilabel:`Daily`,
:guilabel:`Weekly`, :guilabel:`Monthly`, or :guilabel:`Quarterly`).
- :guilabel:`Next Send Date`: the date on which the digest email will be sent again.
- :guilabel:`KPIs` tab: check/uncheck each calculated :abbr:`KPI (key performance indicator)` that
appears in digest emails. A ticked box indicates an active :abbr:`KPI (key performance indicator)`
in the digest email. See the section on :ref:`digest-emails/kpis`.
- :guilabel:`Recipients` tab: add/remove users who receive the digest emails. See the section on
:ref:`digest-emails/recipients`.
From there, give the digest email a :guilabel:`Digest Name`, specify :guilabel:`Periodicity`,
choose the desired :abbr:`KPIs (key performance indicators)`, and add :guilabel:`Recipients`, as
needed.
After clicking :guilabel:`Save`, the new custom digest email is available as a selection in the
:guilabel:`Digest Email` field, located in the :menuselection:`Settings app --> Statistics section`.
.. _digest-emails/custom-kpi:
Custom KPIs with Studio
-----------------------
Custom KPIs with Odoo Studio
============================
For either *Your Odoo Periodic Digest* or your own custom Digest Email, you can add your own KPIs
by using Odoo Studio.
The :abbr:`KPIs (key performance indicators)` on a digest email template form, in the
:guilabel:`KPIs` tab, can be customized using Odoo *Studio*.
To begin, click the **Toggle Studio** icon or click the **Recipients** tab and then the ellipses
:menuselection:`… icon --> Add Custom Field` to edit the template or add additional fields.
.. warning::
Additional costs to the database subscription are incurred, should Odoo *Studio* need to be
installed.
In order to create additional fields, you must create two fields on the digest object:
To begin, click the :guilabel:`🛠️ (tools)` icon in the top-right of the screen. This is the link to
the Odoo *Studio* application.
#. create a boolean field called `kpi_myfield` and display it in the KPIs tab
#. create a computed field called `kpi_myfield_value` that computes your customized KPI
#. select your KPI(s) in the KPIs tab.
In order to create additional fields, create two fields on the digest object:
#. Create a boolean field called `kpi_myfield`, and display it in the :guilabel:`KPIs` tab.
#. Create a computed field called `kpi_myfield_value` that computes the customized :abbr:`KPI (key
performance indicator)`.
#. Select the :abbr:`KPIs (key performance indicators)` in the :guilabel:`KPIs` tab.
.. tip::
Here is the `source code
<https://github.com/odoo/odoo/blob/15.0/addons/digest/models/digest.py>`_ for the `digest.py`
file, which guides the programmer in the coding of the computed field.
.. seealso::
Users can also click the :guilabel:`Recipients` tab, and then the vertical three-dot
:guilabel:`(kebab)` menu to edit this view. Either click :guilabel:`EDIT LIST VIEW` or
:guilabel:`EDIT FORM VIEW` to modify this tab.
Computed values reference table
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------
+-----------------------+-------------------------------------------+
| LABEL | VALUE |
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 34 KiB

+47 -81
View File
@@ -1,102 +1,68 @@
.. _developer-mode:
===========================
Developer Mode (debug mode)
Developer mode (debug mode)
===========================
The developer mode (or debug mode) unlocks access to extra and advanced tools in Odoo. There are
several ways to activate the developer mode: through the
:ref:`settings <general/developer_mode/settings>`, the
:ref:`browser extension <general/developer_mode/browser-extension>`, through
the :ref:`command palette <general/developer_mode/command-palette>` or the
:ref:`URL <general/developer_mode/url>`.
The developer mode, also known as debug mode, unlocks access to advanced :ref:`tools and settings
<developer-mode/tools>` in Odoo.
.. _general/developer_mode/settings:
Activate through the Settings
=============================
The debug mode can be activated in the Odoo database settings. Go to :menuselection:`Settings -->
General Settings --> Developer Tools` and click on :guilabel:`Activate the developer mode`. At
least one application needs to be installed for the :guilabel:`Developer Tools` section to appear
in the :guilabel:`Settings` module.
.. image:: developer_mode/settings.png
:align: center
:alt: Overview of the debug options under settings in Odoo.
.. warning::
Proceed with caution, as some developer tools and technical settings are considered advanced and
may have associated risks. Only use them if you understand the implications and are confident in
your actions.
.. note::
:guilabel:`Activate the developer mode (with assets)` is used by developers; :guilabel:`Activate
the developer mode (with tests assets)` is used by developers and testers.
The developer mode is also available with :ref:`assets <frontend/framework/assets_debug_mode>`,
which are used to debug JavaScript code, and with :ref:`tests assets
<frontend/framework/tests_debug_mode>`, which are used to run test tours.
.. _developer-mode/activation:
Activation
==========
To activate it, open the :guilabel:`Settings` app, scroll down to the :guilabel:`Developer Tools`
section, and click :guilabel:`Activate the developer mode`.
Once activated, the :guilabel:`Deactivate the developer mode` option becomes available.
.. _general/developer_mode/browser-extension:
.. image:: developer_mode/settings.png
:alt: Activating the developer mode in the Settings app
Activate through the browser extension
======================================
To activate the developer mode **from anywhere in the database**, add `?debug=1` to the URL after
`/web` (e.g., `https://example.odoo.com/web?debug=1#action=menu&cids=1`). To deactivate it, use
`?debug=0` instead.
Within a web browser, navigate to the browser settings and extensions and search for the `Odoo
Debug` extension. Once the extension is installed, a new icon will be shown on the browser's
toolbar.
For the *Odoo Debug* extension, a single click enables a normal version of the mode, while a
double click enables it with assets. To deactivate it, use a single click.
.. image:: developer_mode/developer-mode-monkey.png
:align: center
:alt: View of Odoo's debug icon in a Google Chrome toolbar.
.. _general/developer_mode/command-palette:
Activate through the command palette
====================================
In Odoo, the command palette tool has a command to activate the debug mode. First, open the command
palette tool with the keyboard shortcut `ctrl+k` and then type `debug`. A command will show up to
activate the debug mode.
.. image:: developer_mode/command-palette.png
:align: center
:alt: Command palette with debug command.
.. _general/developer_mode/url:
.. _developer-mode/url:
Activate through the URL
========================
The debug mode can also be activated by adding an extra query string to the database's URL. In the
URL, add `?debug=1` or `?debug=true` after `/web`. To deactivate the debug mode, change the
value to `?debug=0` instead.
.. image:: developer_mode/url.png
:align: center
:alt: Overview of a URL with the debug mode command added.
Use `?debug=assets` to activate the developer mode with assets and `?debug=tests` to activate it
with tests assets.
.. tip::
Additional modes are available for developers: `?debug=assets` enables the
:ref:`assets mode <frontend/framework/assets_debug_mode>`, and `?debug=tests` enables
the :ref:`tests mode <frontend/framework/tests_debug_mode>`.
Open the **command palette** by pressing `Ctrl + K` or `Cmd ⌘ + K`, then type `debug` to
activate the developer mode with assets or deactivate it.
.. _developer-mode/mode-tools:
.. admonition:: Browser extension
Locate the developer mode tools
===============================
The `Odoo Debug <https://github.com/Droggol/OdooDebug>`_ browser extension adds an icon to toggle
developer mode on or off from the browser's toolbar. It is available on the `Chrome Web Store
<https://chromewebstore.google.com/detail/odoo-debug/hmdmhilocobgohohpdpolmibjklfgkbi>`_ and
`Firefox Add-ons <https://addons.mozilla.org/firefox/addon/odoo-debug/>`_.
Once developer mode is activated, the developer mode tools can be accessed from the :guilabel:`Open
Developer Tools` button, the bug icon located in the header of the Odoo database.
.. _developer-mode/tools:
.. image:: developer_mode/button-location.png
:align: center
:alt: Overview of a console page and the debug icon being shown in Odoo.
Developer tools and technical menu
==================================
This menu contains additional tools that are useful to understand or edit technical data, such as
the views or actions of a page. On a page that has filters, actions, and view options, the
developer mode tools contain some useful menu items such as:
Once the developer mode is activated, the developer tools can be accessed by clicking the
:icon:`fa-bug` :guilabel:`(bug)` icon. The menu contains tools useful for understanding or editing
technical data, such as a view's field, filters, or actions. The options available depend on where
the menu is accessed from.
- :guilabel:`Edit Action`
- :guilabel:`Manage Filters`
- Edit the current view (e.g. Kanban, List, Graph, etc.)
- See the :guilabel:`Fields View Get`
.. image:: developer_mode/tools.png
:alt: Accessing the developer tools
Database administrators can access the technical menu from the :guilabel:`Settings` app. It contains
advanced database settings, such as ones related to the database structure, security, actions, etc.
.. image:: developer_mode/technical.png
:alt: Accessing the technical menu
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

@@ -284,8 +284,8 @@ in the *System Parameters*. To override the following defaults they need to be a
The two system parameters are as follows:
- `mail.incoming.limit.period` (60 minutes by default)
- `mail.incoming.limit.alias` (5 by default)
- `mail.gateway.loop.minutes` (120 minutes by default)
- `mail.gateway.loop.threshold` (20 by default)
Add these fields in Odoo by first enabling :ref:`developer mode <developer-mode>`, and then
navigating to :menuselection:`Settings --> Technical Menu --> Parameters --> System Parameters`.
@@ -293,13 +293,13 @@ Change the value of these parameters, as needed.
When an email is received in the Odoo database on the catchall email address or on any alias, Odoo
looks at the mail received for the given period of time defined in the system parameter
`mail.incoming.limit.period`. If the received email was sent to an alias then Odoo will reference
the `mail.incoming.limit.alias` system parameter and determine the value as the number of records
this alias is allowed to create in the given period of time (value of `mail.incoming.limit.period`).
`mail.gateway.loop.minutes`. If the received email was sent to an alias then Odoo will reference the
`mail.gateway.loop.threshold` system parameter and determine the value as the number of records this
alias is allowed to create in the given period of time (value of `mail.gateway.loop.minutes`).
In addition, when email is received to the catchall email address, Odoo will reference the emails
received to the database during the set period of time (as stated by the value in the system
parameter: `mail.incoming.limit.period`). Odoo will then determine whether any of the emails
parameter: `mail.gateway.loop.minutes`). Odoo will then determine whether any of the emails
received match that of the email(s) being received during the specified time-frame, and will prevent
a feedback loop from occurring if a duplicate email is detected.
@@ -35,6 +35,12 @@ Next, open the Outlook mailbox, and select any email. After completing this, cli
:align: center
:alt: More actions button in Outlook
.. tip::
For locally installed versions of Microsoft Outlook, access the :guilabel:`Get Add-ins` menu item
while in preview mode (**not** with a message open). First, click on the :guilabel:`...
(ellipsis)` icon in the upper right of the previewed message, then scroll down, and click on
:guilabel:`Get Add-ins`.
Following this step, select the :guilabel:`My add-ins` tab on the left-side.
.. image:: outlook/my-add-ins.png
+1 -1
View File
@@ -11,6 +11,6 @@ Configuration
config/connect
config/pos
config/https_certificate_iot
config/flash_sdcard
config/updating_iot
config/troubleshooting
config/windows_iot
@@ -37,8 +37,8 @@ via :ref:`WiFi <iot_connect/wifi>`.
.. important::
The disk image that the :abbr:`IoT (Internet of Things)` box SD card is formatted with is unique
to the version of the Odoo database that the :abbr:`IoT (Internet of Things)` box is running on.
Ensure that the :abbr:`IoT (Internet of Things)` box is :doc:`flashed <flash_sdcard>` with the
most up-to-date disk image.
Ensure that the :abbr:`IoT (Internet of Things)` box is :ref:`flashed <iot/config/flash>` with
the most up-to-date disk image.
.. _iot_connect/ethernet:
@@ -1,68 +0,0 @@
====================
Flashing the SD card
====================
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
re-flashed to benefit from Odoo's latest :abbr:`IoT (Internet of Things)` image update. This means
that the Odoo :abbr:`IoT (Internet of Things)` box software may need to be updated.
Upgrade from the IoT box home page
==================================
Go to the :abbr:`IoT (Internet of Things)` box homepage by navigating to :menuselection:`IoT app -->
IoT Boxes` and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)` box.
Then click on :guilabel:`Update` (next to the version number).
If a new version of the :abbr:`IoT (Internet of Things)` Box image is available, an
:guilabel:`Upgrade to _xx.xx_` button will appear at the bottom of the page. Click this button to
upgrade the unit and the :abbr:`IoT (Internet of Things)` box will then flash itself to the new
version. All of the previous configurations will be saved.
.. note::
This process can take more than 30 minutes. Do not turn off or unplug the :abbr:`IoT (Internet of
Things)` box as it would leave it in an inconsistent state. This means that the :abbr:`IoT
(Internet of Things)` box will need to be re-flashed with a new image. See
:ref:`flash_sdcard/etcher`.
.. image:: flash_sdcard/flash-upgrade.png
:align: center
:alt: IoT box software upgrade in the IoT Box Home Page.
.. _flash_sdcard/etcher:
Upgrade with Etcher Software
============================
.. note::
A computer with a micro SD card reader/adapter is required in order to re-flash the micro SD
card.
Navigate to Balena's website and download `Etcher <https://www.balena.io/>`_. It's a free and
open-source utility used for burning image files onto drives. Click to `download
<https://www.balena.io/etcher#download-etcher>`_. Install and launch the program on the computer.
Then download the version-specific :abbr:`IoT (Internet of Things)` image from `nightly
<http://nightly.odoo.com/master/iotbox/>`_.
The following are image versions on the `nightly <http://nightly.odoo.com/master/iotbox/>`_ website
with their corresponding Odoo database version:
- Odoo V16 --> iotbox-latest.zip
- Odoo V15 --> iotboxv21_10.zip
- Odoo V14 --> iotboxv21_04.zip
- Odoo V13 --> iotboxv20_10.zip
The images should be downloaded and extracted to a convenient file location.
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
the computer or reader. Open *Etcher* and select :guilabel:`Flash from file`, then find and select
the image just downloaded and extracted. Next, select the drive the image should be burned to.
Lastly, click on :guilabel:`Flash` and wait for the process to finish.
.. image:: flash_sdcard/etcher-app.png
:align: center
:alt: Balena's Etcher software dashboard.
.. note::
An alternative software for flashing the micro SD card is *Raspberry Pi Imager*. Download the
*Raspberry Pi* software `here <https://www.raspberrypi.com/software/>`_.
@@ -19,10 +19,10 @@ The pairing code does not show under the following circumstances:
It is automatically removed from connected displays when this time has expired.
- The version of the :abbr:`IoT (Internet of Things)` box image is too old. If the :abbr:`IoT
(Internet of Things)` box image is from an earlier version, then the SD card of the :abbr:`IoT
(Internet of Things)` box will need to be re-flashed to update the image (see :doc:`Flashing the
SD Card <flash_sdcard>`).
(Internet of Things)` box needs to be re-flashed to update the image (see :ref:`Flashing the SD
Card <iot/config/flash>`).
If none of the cases listed above correct the issue, then make sure that the :abbr:`IoT (Internet of
If none of the cases listed above correct the issue, then make sure the :abbr:`IoT (Internet of
Things)` box has correctly started, by checking that a fixed green LED is showing next to the power
port.
@@ -343,6 +343,154 @@ Save`.
:align: center
:alt: Receipt format using naming convention: EpsonTMU220B__IMC_LDV_LDH_SCALE35__.
DYMO LabelWriter print issue
----------------------------
The DYMO LabelWriter has a known issue in printing with the :abbr:`IoT (Internet of Things)` box.
The OpenPrinting CUPS server installs the printer using :guilabel:`Local RAW Printer` drivers. In
order to print anything, the correct :guilabel:`Make and Model` needs to be set, so the correct
driver is referenced when using the device.
Additionally, a new printer needs to be added to reduce a print delay that occurs after updating the
driver.
.. important::
The DYMO LabelWriter 450 DUO printer is the recommended DYMO printer for use with Odoo and the
:abbr:`IoT (Internet of Things)` box. It **must** already be connected to, and recognized on, the
:abbr:`IoT (Internet of Things)` box.
The DYMO LabelWriter 450 DUO printer contains two printers in one: a label printer and a tape
printer. Choosing the correct model (either DYMO LabelWriter 450 DUO Label (en) or DYMO
LabelWriter 450 DUO Tape (en)) is crucial when configuring the following processes.
To keep things consistent, both of the following processes detail the configuration for the DYMO
LabelWriter 450 DUO Label (en) model. Change the model when needed.
.. _troubleshooting/dymo/update_drivers:
DYMO LabelWriter not printing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the case where the DYMO LabelWriter is not printing anything, a new driver needs to be installed.
First, open the OpenPrinting CUPS console by clicking :menuselection:`Printers server` at the bottom
of the :abbr:`IoT (Internet of Things)` box homepage. Next, click on :menuselection:`Printers` in
the top menu. Click into the printer in question, and select :guilabel:`Maintenance` in the first
drop-down menu. Then, select :guilabel:`Modify Printer` in the second drop-down menu.
.. image:: troubleshooting/main-modify.png
:align: center
:alt: Modify the make and model of the DYMO LabelWriter. Maintenance and Modify drop-down menus
highlighted.
Next, select the specific network connection/printer that the modification should be made on. Click
:guilabel:`Continue`.
.. image:: troubleshooting/modify-select-printer.png
:align: center
:alt: Printer selection screen with Continue highlighted.
On the next page, click :guilabel:`Continue` to proceed to set the :guilabel:`Make` of the printer.
.. image:: troubleshooting/modify-printer-dymo.png
:align: center
:alt: Printer modification screen with Continue highlighted.
Under :guilabel:`Make` select :guilabel:`DYMO` from the menu. Click on :guilabel:`Continue` to set
the :guilabel:`Model`.
.. image:: troubleshooting/setting-make.png
:align: center
:alt: Setting the make page, with DYMO and continue highlighted.
On the following page, set the :guilabel:`Model` to :guilabel:`DYMO LabelWriter 450 DUO Label (en)`
(or whichever DYMO printer model is being used). Click on :guilabel:`Modify Printer` to complete
setting the new driver, a confirmation page will appear.
.. image:: troubleshooting/setting-model.png
:align: center
:alt: Setting the printer model page with DYMO LabelWriter 450 DUO Label (en) highlighted.
After being redirected to a confirmation page, acknowledging a successful update, click on the
:menuselection:`Printers` button in the top menu.
All the printers installed on the OpenPrinting CUPS server appear, including the newly updated:
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
into the printer that was just updated.
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
will print out with a ten-second delay if the driver update was successful.
.. image:: troubleshooting/print-test.png
:align: center
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
server.
To reduce this delay a new printer will need to be added, follow the process below.
DYMO LabelWriter print delay
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To resolve the delay issue after modifying the driver, the printer **must** be reinstalled. To
reinstall the printer, open the OpenPrinting CUPS administration page by clicking
:menuselection:`Printers server`, at the bottom of the :abbr:`IoT (Internet of Things)` box
homepage. Then, click on :menuselection:`Administration` in the top menu, then click :guilabel:`Add
a Printer`.
.. tip::
If the DYMO LabelWriter 450 DUO printer is not printing at all, or is not recognizable (has a RAW
driver type), then update the drivers on the device. See
:ref:`troubleshooting/dymo/update_drivers`.
.. image:: troubleshooting/add-printer-dymo.png
:align: center
:alt: Add a printer button highlighted on the Printer CUPS management page.
On the next screen, in the :guilabel:`Local Printers` section, select the :guilabel:`DYMO
LabelWriter 450 DUO Label (DYMO LabelWriter 450 DUO Label)` (or whichever DYMO printer model is
being used) pre-installed printer. Click :guilabel:`Continue`.
.. image:: troubleshooting/local-printer.png
:align: center
:alt: Add a printer screen on OpenPrinting CUPS with DYMO LabelWriter 450 DUO Label highlighted.
On the following screen, modify the :guilabel:`Name` to something recognizable, as the original
printer will still be present. Click :guilabel:`Continue` to be taken to the next screen.
.. image:: troubleshooting/rename-printer.png
:align: center
:alt: Rename printer page in the 'Add a Printer' flow, with the name field highlighted.
Next, choose the :guilabel:`Model`. Select :guilabel:`DYMO LabelWriter 450 DUO Label (en)` (or
whichever DYMO printer model is being used), and finally, click :guilabel:`Add Printer` to complete
the installation.
.. image:: troubleshooting/choose-printer.png
:align: center
:alt: Choose model screen on the OpenPrinting CUPS console with model and add a printer
highlighted.
After being redirected to a confirmation page, acknowledging a successful installation, click on the
:menuselection:`Printers` button in the top menu.
All the printers installed on the OpenPrinting CUPS server appear, including the newly installed:
:guilabel:`DYMO LabelWriter 450 DUO Label` (or whichever DYMO printer model is being used). Click
into the printer that was just installed.
.. image:: troubleshooting/printer-page.png
:align: center
:alt: Printer page with newly installed printer highlighted.
To print a test label, click on the :guilabel:`Maintenance` drop-down menu to the left of the
:guilabel:`Administration` drop-down menu, and select :guilabel:`Print Test Page`. The test label
should print out immediately (one-to-two seconds delay).
.. image:: troubleshooting/print-test.png
:align: center
:alt: Printing a test page from the administration drop-down menu in the OpenPrinting CUPs
server.
The Zebra printer does not print anything
-----------------------------------------
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

@@ -0,0 +1,230 @@
==============
Updating (IoT)
==============
Due to the complexity of the :abbr:`IoT (Internet of Things)` box, and virtual Windows :abbr:`IoT
(Internet of Things)` box, the term 'updating' can mean several different things.
The actual drivers can be updated, the core code on the :abbr:`IoT (Internet of Things)` box can be
updated, or a new image can be flashed (using a physical :abbr:`IoT (Internet of Things)` box).
This document explores the various ways to update :abbr:`IoT (Internet of Things)` boxes to ensure
smooth operation of :abbr:`IoT (Internet of Things)` box processes and devices.
.. _iot/config/flash:
Flashing the SD card on IoT box
===============================
.. important::
This update does **not** apply to the Windows :abbr:`IoT (Internet of Things)` box (Odoo 16 and
higher).
To update the Windows :abbr:`IoT (Internet of Things)`, first, uninstall the previous version of
the Odoo Windows program, and then reinstall it using the most up-to-date installation package.
To begin the installation, navigate to the Odoo 16 (or higher) installation package for
Enterprise or Community - Windows edition, at `Odoo's download page
<https://odoo.com/download>`_.
In some circumstances, the :abbr:`IoT (Internet of Things)` box's micro SD Card may need to be
re-flashed with *Etcher* software to benefit from Odoo's latest :abbr:`IoT (Internet of Things)`
image update. This means the Odoo :abbr:`IoT (Internet of Things)` box software may need to be
updated in instances of a new :abbr:`IoT (Internet of Things)` box, or when a handler's update, or
an update from the :abbr:`IoT (Internet of Things)` box home page, does not resolve issues.
.. note::
- It is often necessary to re-flash the :abbr:`IoT (Internet of Things)` box's image after
upgrading the Odoo database to a new version.
- A computer with a micro SD card reader/adapter is **required** to re-flash the micro SD card.
First, begin by downloading `Etcher <https://www.balena.io/etcher#download-etcher>`_. It is a free,
open-source utility, used for burning image files onto drives. After the download completes, install
and launch the program on the computer.
Then, download the latest :abbr:`IoT (Internet of Things)` image from `nightly
<http://nightly.odoo.com/master/iotbox>`_, which will be labeled as `iotbox-latest.zip`. This
particular image is compatible with *all* supported versions of Odoo.
After this step is complete, insert the :abbr:`IoT (Internet of Things)` box's micro SD card into
the computer or reader. Open *Etcher*, and select :guilabel:`Flash from file`, then find and select
the `iotbox-latest.zip` image and extract it. Next, select the drive the image should be burned to.
Lastly, click :guilabel:`Flash`, and wait for the process to finish.
.. image:: updating_iot/etcher-app.png
:align: center
:alt: Balena's Etcher software dashboard.
.. tip::
Balena's *Etcher* software also allows for the administrator to flash the :abbr:`SD (Secure
Digital)` card from a :abbr:`URL (Uniform Resource Locator)`. To flash from a :abbr:`URL (Uniform
Resource Locator)`, simply click :guilabel:`Flash from URL`, instead of :guilabel:`Flash from
file`.
Then, enter the following: `http://nightly.odoo.com/master/iotbox/iotbox-latest.zip`.
.. image:: updating_iot/url-flash.png
:align: center
:alt: A view of Balena's Etcher software, with the flash from URL option highlighted.
.. note::
An alternative software for flashing the micro SD card is `Raspberry Pi Imager
<https://www.raspberrypi.com/software/>`_.
Windows IoT update
==================
Windows virtual :abbr:`IoT (Internet of Things)` box may occasionally need an update to work
properly.
The following processes cover the :ref:`uninstallation <iot/config/uninstall-windows-iot>` and
:ref:`re-installation <iot/config/re-install-windows-iot>` of the Windows virtual :abbr:`IoT
(Internet of Things)` box.
.. _iot/config/uninstall-windows-iot:
Uninstalling Windows IoT
------------------------
Prior to upgrading the Windows virtual :abbr:`IoT (Internet of Things)` box, the previous version
should be uninstalled first.
.. important::
Before uninstalling a previous version of the Windows virtual :abbr:`IoT (Internet of Things)`
box, ensure that there is a newer version of Windows virtual :abbr:`IoT (Internet of Things)` box
available, compared to the version currently installed. To do so, navigate to the `Odoo Nightly
builds <https://nightly.odoo.com/>`_ page.
On the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds (stable version)
--> windows/` to view the date next to the :file:`odoo_(version).latest.exe` file; where
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0). The latest version of the Windows
virtual :abbr:`IoT (Internet of Things)` box can be downloaded by selecting this file, or it is
always available at the `Odoo Download <https://odoo.com/download/>`_ page.
Uninstalling the Windows virtual :abbr:`IoT (Internet of Things)` box is done through the Windows
program manager.
On any version of Windows, search for `program` to open the :menuselection:`Programs --> Programs
and Features` section of the :guilabel:`Control Panel`. Then, select :guilabel:`Uninstall or change
a program`. Next, search for `Odoo`, and click the :guilabel:`... (three dot)` menu on the
:guilabel:`Odoo.exe` program to uninstall.
Confirm the uninstallation, and follow the steps to uninstall through the Odoo uninstall wizard.
.. _iot/config/re-install-windows-iot:
Download and re-install
-----------------------
The latest version of the Windows virtual :abbr:`IoT (Internet of Things)` box can be downloaded
from the `Odoo Nightly builds <https://nightly.odoo.com/>`_ page or it is always available at the
`Odoo Download <https://odoo.com/download/>`_ page.
To download from the :guilabel:`Odoo Nightly builds` page, navigate to :menuselection:`Builds
(stable version) --> windows/` to and select the :file:`odoo_(version).latest.exe` file; where
*(version)* is equal to the version of Odoo (e.g. 16.0, 17.0).
To download from the :guilabel:`Odoo Download` page, find the section for the version of Odoo (e.g.
16.0, 17.0), and select the :guilabel:`Download` button for :guilabel:`Windows`.
Next, install and setup the downloaded Odoo :file:`.exe` file. After the instructions screen, click
:guilabel:`Next` to start the installation, and agree to the :abbr:`TOS (Terms of Service)`.
During the next step of the re-installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select
the type of install` drop-down menu.
.. example::
For reference, the following should be installed:
- :guilabel:`Odoo server`
- :guilabel:`Odoo IoT`
- :guilabel:`Nginx WebServer`
- :guilabel:`Ghostscript interpreter`
Ensure there is enough space on the computer for the installation, then click :guilabel:`Next`.
Set the destination and complete the installation
-------------------------------------------------
To complete the re-installation, select the :guilabel:`Destination Folder`, and click
:guilabel:`Install`.
.. warning::
Choosing `C:\\odoo` as the install location allows for the *Nginx* server to start. Odoo's
Windows virtual :abbr:`IoT (Internet of Things)` box software should **not** be installed inside
any of the Windows user's directories. Doing so does **not** allow for *Nginx* to initialize.
The installation may take a few minutes. When complete, click :guilabel:`Next` to continue.
Then, ensure that the :guilabel:`Start Odoo` box is checked, and click :guilabel:`Finish`. After
installation, the Odoo server runs, and automatically opens `http://localhost:8069` on a web
browser. The webpage should display the :abbr:`IoT (Internet of Things)` box homepage.
.. tip::
A :ref:`restart <iot/restart_windows_iot>` of the Windows IoT program may be necessary if the web
browser does not display anything.
.. _iot/config/homepage-upgrade:
Update from the IoT box home page
=================================
In the background, the :abbr:`IoT (Internet of Things)` box uses a version of Odoo code to run and
connect to the Odoo database. This code may need to be updated in order for the :abbr:`IoT (Internet
of Things)` box to operate effectively. This operation should be completed on a routine basis, to
ensure the :abbr:`IoT (Internet of Things)` system, and its processes, stay up-to-date.
Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to :menuselection:`IoT app
--> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT (Internet of Things)`
box. Then, click on :guilabel:`Update` (next to the version number).
If a new version of the :abbr:`IoT (Internet of Things)` box image is available, an
:guilabel:`Upgrade to _xx.xx_` button appears at the bottom of the page. Click this button to
upgrade the unit, at which point the :abbr:`IoT (Internet of Things)` box flashes itself to the
newer version. All of the previous configurations are then saved.
.. important::
This process can take more than 30 minutes. Do **not** turn off, or unplug, the :abbr:`IoT
(Internet of Things)` box, as it would leave it in an inconsistent state. This means the
:abbr:`IoT (Internet of Things)` box needs to be :ref:`re-flashed <iot/config/flash>` with a new
image.
.. image:: updating_iot/flash-upgrade.png
:align: center
:alt: IoT box software upgrade in the IoT Box Home Page.
Handler (driver) update
=======================
There may be some instances where drivers or interfaces need to be updated for individual devices
(e.g. scales, measurement tools, etc.). The IoT handler's (drivers and interfaces) code can be
modified by syncing them with the configured server handler's code.
This can be helpful in instances where :abbr:`IoT (Internet of Things)` devices (e.g. scales,
measurement tools, etc.) are not working properly with the :abbr:`IoT (Internet of Things)` box.
For both the Windows :abbr:`IoT (Internet of Things)` (Odoo 16 and higher) and physical :abbr:`IoT
(Internet of Things)` box, this process can be performed manually from the :abbr:`IoT (Internet of
Things)` box home page. Go to the :abbr:`IoT (Internet of Things)` box home page by navigating to
:menuselection:`IoT app --> IoT Boxes`, and clicking on the :guilabel:`IP address` of the :abbr:`IoT
(Internet of Things)` box.
Next, click :guilabel:`Handlers list`, and then select :guilabel:`Load Handlers` at the bottom of
the page.
.. image:: updating_iot/load-handlers.png
:align: center
:alt: Handlers list on an IoT box with the load handlers button highlighted.
.. important::
Handler's code is fetched from the configured server, and it needs to be up-to-date to have the
latest fixes and patches.
.. note::
A handler update is also performed automatically each time the :abbr:`IoT (Internet of Things)`
box is restarted. The only exception to this process is if the *Automatic drivers update* is
unchecked in the form view of the :abbr:`IoT (Internet of Things)` box on the Odoo server. This
setting can be reached by going to :menuselection:`IoT App --> Select the IoT box --> Automatic
drivers update`.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -38,10 +38,10 @@ installing the Windows virtual IoT software for the first time.
Download and initial installation
---------------------------------
To begin the installation, navigate to the Odoo 16 or higher installation package for Enterprise or
Community - Windows edition at `Odoo's download page <https://odoo.com/download>`_. Next, install
and setup the Odoo :file:`.exe` file. After the instructions screen, click :guilabel:`Next` to start
the installation and agree to the :abbr:`TOS (Terms of Service)`.
To begin the installation, navigate to the Odoo 16 or higher installation package for Community -
Windows edition at `Odoo's download page <https://odoo.com/download>`_. Next, install and setup the
Odoo :file:`.exe` file. After the instructions screen, click :guilabel:`Next` to start the
installation and agree to the :abbr:`TOS (Terms of Service)`.
During the next step of the installation, select :guilabel:`Odoo IoT` from the :guilabel:`Select the
type of install` drop-down menu.
@@ -182,7 +182,7 @@ Configure new rule
On the :menuselection:`Rule Type` screen, select :guilabel:`Port`. Then click :guilabel:`Next`. From
the :menuselection:`Protocol and Ports` page leave the rule application to :guilabel:`TCP`. Then,
select :guilabel:`Specific Local Ports` for the :guilabel:`ports` option. In the text box, type in
`8069`. Finally click :guilabel:`Next` to continue to the next step.
`8069, 443`. Finally, click :guilabel:`Next` to continue to the next step.
On the :menuselection:`Actions` page, select :guilabel:`Allow the connection` and click
:guilabel:`Next`. The following page on the :menuselection:`Rule Configuration` wizard is the
@@ -196,12 +196,14 @@ add a brief description in the :guilabel:`Description` field. Click :guilabel:`F
the :guilabel:`Rule Configuration` wizard. Now, the new rule is active and devices can connect to
the Windows virtual :abbr:`IoT (Internet of Things)` box.
.. _iot/windows/wordline:
Worldline exception
~~~~~~~~~~~~~~~~~~~
*Worldline* is a payment terminal that can be connected to Odoo's *PoS* (point of sale) system. It
allows for a comprehensive and fluid payment experience for customers. Worldline is available in
Benelux (coalition of Belgium, the Netherlands, and Luxembourg).
Belgium, the Netherlands, and Luxembourg.
When using the Windows IoT server to connect the Worldline payment terminal, it is necessary to
create an exception in the Windows firewall so that a connection can be made between the Odoo
@@ -1,4 +1,6 @@
:nosearch:
:show-content:
:show-toc:
=======
Devices
@@ -14,3 +16,8 @@ Devices
devices/footswitch
devices/printer
devices/scale
.. seealso::
- :doc:`Worldline payment terminal
<../../sales/point_of_sale/payment_methods/terminals/worldline>`
- :doc:`Ingenico payment terminal <../../sales/point_of_sale/payment_methods/terminals/ingenico>`
@@ -6,6 +6,18 @@ A scale can be connected to the :abbr:`IoT (Internet of Things)` box on an Odoo
easy steps. After setup, the *Point of Sale* app can be used to weigh products, which is helpful if
their prices are calculated based on weight.
.. important::
- In EU member states, `certification is legally required <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
to use a scale as an integrated device.
- Odoo is not certified in several countries, including France, Germany, and Switzerland. If you
reside in one of these countries, you can still use a scale but without integration to your
Odoo database.
- Alternatively, you have the option to acquire a *non-integrated* certified scale that prints
certified labels, which can then be scanned into your Odoo database.
.. seealso::
`Directive 2014/31/EU of the European Parliament <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv%3AOJ.L_.2014.096.01.0107.01.ENG>`_
Connection
==========
+169 -66
View File
@@ -4,146 +4,249 @@
Users
=====
Odoo defines a **user** as someone who has access to a database to perform daily tasks. You can add
as many users as you need and, in order to restrict the type of information each user can access,
rules can be applied. Users and access rights can be added and changed at any point.
Odoo defines a *user* as someone who has access to a database. An administrator can add as many
users as the company needs and, in order to restrict the type of information each user can access,
rules can be applied to each user. Users and access rights can be added and changed at any point.
.. seealso::
- :doc:`users/language`
- :doc:`users/access_rights`
- :ref:`access-rights/superuser`
- :ref:`access-rights/groups`
.. _users/add-individual:
Add individual users
====================
Go to :menuselection:`Settings --> Manage Users` and click on *Create*.
To add new users, navigate to :menuselection:`Settings app --> Users section --> Manage Users`, and
click on :guilabel:`Create`.
.. image:: users/manage-users.png
:height: 280
:alt: View of the settings page emphasizing the manage users field in Odoo
:align: center
:alt: View of the settings page emphasizing the manage users field in Odoo.
| Fill in the form with the needed information. Under the tab
:doc:`Access Rights <users/access_rights>` choose the group within each application the user can
have access to.
| The list of applications shown is based on the applications installed on the database.
Fill in the form with all the required information. Under the :doc:`Access Rights
<users/access_rights>` tab, choose the group within each application the user can have access to.
.. image:: users/new_user.png
:alt: View of a users form emphasizing the access rights tab in Odoo
The list of applications shown is based on the applications installed on the database.
When you are done editing the page and have *Saved* it, an invitation email is automatically sent to
the user. The user must click on it to accept the invitation and create a login.
.. image:: users/new-user.png
:align: center
:alt: View of a user's form emphasizing the access rights tab in Odoo.
After filling out all the necessary fields on the page, click :guilabel:`Save`. An invitation email
is automatically sent to the user, using the email in the :guilabel:`Email Address` field. The user
must click on the link included in the email to accept the invitation, and to create a database
login.
.. image:: users/invitation-email.png
:alt: View of a users form with a notification that the invitation email has been sent in Odoo
:align: center
:alt: View of a user's form with a notification that the invitation email has been sent in Odoo.
.. note::
Remember that subscription prices follow the number of users. Refer to our
`pricing page <https://www.odoo.com/pricing>`_
for more information.
.. warning::
If the company is on a monthly subscription plan, the database automatically updates to reflect
the added users. If the company is on a yearly or multi-year plan, an expiration banner appears
in the database. An upsell quotation can be created by clicking the banner to update the
subscription. Alternatively, `send a support ticket <https://www.odoo.com/help>`_ to resolve the
issue.
With the :ref:`developer mode <developer-mode>` activated, *User Types* can be selected.
User type
---------
With the :ref:`developer mode <developer-mode>` activated, :guilabel:`User Type` can be selected
from the :guilabel:`Access Rights` tab of the user form, accessible via :menuselection:`Settings app
--> Users section --> Manage Users`.
There are three types of users: :guilabel:`Internal User`, :guilabel:`Portal`, and
:guilabel:`Public`.
.. image:: users/user-type.png
:height: 300
:alt: View of a users form in developer mode emphasizing the user type field in Odoo
:align: center
:alt: View of a user's form in developer mode emphasizing the user type field in Odoo.
The *Portal* and *Public* options do not allow you to choose access rights. Members have specific
ones (such as record rules and restricted menus) and usually do not belong to the usual Odoo
groups.
.. tip::
Users are considered internal database users. Portal users are external users, who only have
access to the database portal to view records. See the documentation on :doc:`users/portal`.
Public users are those visiting websites, via the website's frontend.
The :guilabel:`Portal` and :guilabel:`Public` user options do **not** allow the administrator to
choose access rights. These users have specific access rights pre-set (such as, record rules and
restricted menus), and usually do not belong to the usual Odoo groups.
.. _users/deactivate:
Deactivate users
================
Go to :menuselection:`Settings --> Users & Companies --> Users`, open the user you want to
deactivate, click on *Action*, and then on *Archive*.
To deactivate (i.e. archive) a user, navigate to :menuselection:`Settings app --> Users section -->
Manage Users`. Then, tick the checkbox to the left of the user(s) to be deactivated.
After selecting the appropriate user to be archived, click the :guilabel:`⚙️ Actions` icon, and
select :guilabel:`Archive` from the resulting drop-down menu. Then, click :guilabel:`OK` from the
:guilabel:`Confirmation` pop-up window that appears.
.. danger::
**Never** deactivate the main user (*admin*).
**Never** deactivate the main/administrator user (admin). Making changes to admin users can have
a detrimental impact on the database. This includes *impotent admin*, which means that no user in
the database can make changes to the access rights. For this reason, Odoo recommends contacting
an Odoo Business Analyst, or our Support Team, before making changes.
Error: too many users
---------------------
If there are more users in an Odoo database than provisioned in the Odoo Enterprise subscription,
the following message is displayed.
.. image:: users/add-more-users.png
:align: center
:alt: Too many users on a database error message.
When the message appears, the database administrator has 30 days to act before the database expires.
The countdown is updated every day.
To resolve the issue, either:
- Add more users to the subscription by clicking the :guilabel:`Upgrade your subscription` link
displayed in the message to validate the upsell quotation, and pay for the extra users.
- :ref:`Deactivate users <users/deactivate>`, and reject the upsell quotation.
.. warning::
If the company is on a monthly subscription plan, the database automatically updates to reflect
the added users. If the company is on a yearly or multi-year plan, an expiration banner appears
in the database. An upsell quotation can be created by clicking the banner to update the
subscription. Alternatively, users can `send a support ticket <https://www.odoo.com/help>`_ to
resolve the issue.
Once the database has the correct number of users, the expiration message disappears automatically
after a few days, when the next verification occurs.
.. _users/passwords-management:
Passwords management
====================
Password management
===================
Password management is an important part of granting users autonomous access to the database at all
times. Odoo offers a few different methods to reset a user's password.
.. tip::
Odoo has a setting to specify the length needed for a password. This setting can be accessed by
navigating to :menuselection:`Settings app --> Permissions` section, and entering the desired
password length in the :guilabel:`Minimum Password Length` field. By default the value is `8`.
.. image:: users/minimum-password-length.png
:align: center
:alt: Minimum Password Length highlighted in the Permissions section of General Settings.
.. _users/reset-password:
Reset passwords
---------------
Reset password
--------------
Sometimes, users might wish to reset their personal password for added security, so they are the
only ones with access to the password. Odoo offers two different reset options: one initiated by the
user to reset the password, and another where the administrator triggers a reset.
.. _users/reset-password-login:
Enable password resets from login page
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enable password reset from login page
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is possible to enable password resets directly from the login page.
It is possible to enable/disable password resets directly from the login page. This action is
completed by the individual user, and this setting is enabled by default.
To do so, go to :menuselection:`Settings --> Permissions`, activate **Password Reset** and *Save*.
To change this setting, go to :menuselection:`Settings app --> Permissions` section, activate
:guilabel:`Password Reset`, and then click :guilabel:`Save`.
.. image:: users/password-reset-login.png
:align: center
:alt: Enabling Password Reset in Odoo Settings
On the login page, click :guilabel:`Reset Password` to initiate the password reset process, and have
a reset-token sent to the email on file.
.. image:: users/password-reset.png
:align: center
:alt: Login screen on Odoo.com with the password reset option highlighted.
.. _users/reset-password-email:
Send reset instructions to users
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Send reset instructions
~~~~~~~~~~~~~~~~~~~~~~~
Go to :menuselection:`Settings --> Users & Companies --> Users`, select the user out of the list and
click on *Send Password Reset Instructions* on its user form. An email is automatically sent to
them.
Go to :menuselection:`Settings app --> Users & Companies --> Users`, select the user from the list,
and click on :guilabel:`Send Password Reset Instructions` on the user form. An email is
automatically sent to them with password reset instructions.
.. note::
The *Send Password Reset Instructions* button only appears if the Odoo invitation email has
already been confirmed by the user.
The :guilabel:`Send Password Reset Instructions` button **only** appears if the Odoo invitation
email has already been confirmed by the user. Otherwise, a :guilabel:`Re-send Invitation Email`
button appears.
This email contains all the instructions needed to reset the password, along with a link redirecting
the user to an Odoo login page.
.. image:: users/password-email.png
:alt: Example of an email with a password reset link for an Odoo account
.. image:: users/password-reset-email.png
:align: center
:alt: Example of an email with a password reset link for an Odoo account.
.. _users/change-password:
Change users passwords
-----------------------
Change user password
--------------------
Go to :menuselection:`Settings --> Users & Companies --> Users` and select a user to access its
form. Click on the *Action* button and select *Change Password*.
Go to :menuselection:`Settings app --> Users & Companies --> Users`, and select a user to access its
form. Click on the :guilabel:`⚙️ Actions` icon, and select :guilabel:`Change Password` from, the
resulting drop-down menu. Enter a new password in the :guilabel:`New Password` column of the
:guilabel:`Change Password` pop-up window that appears, and confirm the change by clicking
:guilabel:`Change Password`.
.. image:: users/change-password.png
:alt: Change another user's password on Odoo
Enter a new password and confirm by clicking on *Change Password*.
:align: center
:alt: Change a user's password on Odoo.
.. note::
This operation only modifies the password of the users locally and does not affect their odoo.com
account. If you want to change the odoo.com password, you can :ref:`send the password reset
instructions <users/reset-password-email>`.
This operation only modifies the password of the users locally, and does **not** affect their
odoo.com account.
Click on *Change Password* one more time. You are then redirected to an Odoo login page where you
can reaccess your database using your new password.
If the odoo.com password needs to be changed, use the :ref:`send the password reset instructions
<users/reset-password-email>`. Odoo.com passwords grant access to the *My Databases* page, and
other portal features.
After clicking :guilabel:`Change Password`, the page is redirected to an Odoo login page where the
database can be re-accessed using the new password.
.. _users/multi-companies:
Multi Companies
===============
The *Multi Companies* field allows you to set to which of the multiple companies database you hold
the user can have access.
The :guilabel:`Multi Companies` field on a user form allows an administrator to provide access to
multiple companies for existing users. To configure a multi-company environment for a user, navigate
to the desired user by going to: :menuselection:`Settings app --> Users section --> Manage users`.
Then, select the user to open their user form, and configure with multi-company access.
.. note::
Note that if not handled correctly, it may be the source of a lot of inconsistent multi-company
behaviors. Therefore, a good knowledge of Odoo is required. For technical explanations refer
to :doc:`this </developer/howtos/company>` documentation.
Under :guilabel:`Multi Companies` in the :guilabel:`Access Rights` tab, set the fields labeled
:guilabel:`Allowed Companies` and :guilabel:`Default Company`.
The :guilabel:`Allowed Companies` field can contain multiple companies. These are the companies the
user can access and edit, according to the set access rights. The :guilabel:`Default Company` is the
company the user defaults to, upon logging in each time. This field can contain only **one**
company.
.. warning::
If multi-company access is not configured correctly, it could lead to inconsistent multi-company
behaviors. Because of this, only experienced Odoo users should make access rights changes to
users for databases with a multi-company configuration. For technical explanations, refer to the
developer documentation on :doc:`../../../developer/howtos/company`.
.. image:: users/multi-companies.png
:height: 300
:alt: View of a users form emphasizing the multi companies field in Odoo
:align: center
:alt: View of a user's form emphasizing the multi companies field in Odoo.
.. seealso::
- :doc:`companies`
:doc:`companies`
.. toctree::
:titlesonly:
@@ -1,67 +1,188 @@
=============
Access Rights
Access rights
=============
Activate the :ref:`developer mode <developer-mode>`, then go to :menuselection:`Settings --> Users &
Companies --> Groups`.
*Access rights* are permissions that determine the content and applications users can access and
edit. In Odoo, these permissions can be set for individual users or for groups of users. Limiting
permissions to only those who need them ensures that users do not modify or delete anything they
should not have access to.
Groups
======
**Only** an *administrator* can change access rights.
| When choosing the groups the user can have access under
:ref:`Access Rights <users/add-individual>`, details of the rules and inheritances of that group
are not shown, so this is when the menu *Groups* comes along. *Groups* are created to define rules
to models within an application.
| Under *Users*, have a list of the current ones. The ones with administrative rights are shown
in black.
.. danger::
Making changes to access rights can have a detrimental impact on the database. This includes
*impotent admin*, which means that no user in the database can make changes to the access rights.
For this reason, Odoo recommends contacting an Odoo Business Analyst, or our Support Team, before
making changes.
.. image:: access_rights/groups-users.png
.. tip::
A user **must** have the specific *Administration* access rights set on their user profile, in
order to make changes on another user's settings for access rights.
To access this setting, navigate to :menuselection:`Settings app --> Manage users --> select a
user --> Access Rights tab --> Administration section --> Administration field`.
Once at the setting, an already existing administrator **must** change the setting in the
:guilabel:`Administration` field to :guilabel:`Access Rights`.
Once complete, click :guilabel:`Save` to save the changes, and implement the user as an
administrator.
Users
=====
The access rights for :ref:`individual users <users/add-individual>` are set when the user is added
to the database, but they can be adjusted at any point in the user's profile.
To make changes to a user's rights, click on the desired user to edit their profile.
.. image:: access_rights/navigate-to-users-menu.png
:align: center
:alt: View of a groups form emphasizing the tab users in Odoo
:alt: Users menu in the Users & Companies section of the Settings app of Odoo.
*Inherited* means that users added to this application group are automatically added to the
following ones. In the example below, users who have access to the group *Administrator* of *Sales*
also have access to *Website/Restricted Editor* and *Sales/User: All Documents*.
On the user's profile page, in the :guilabel:`Access Rights` tab, scroll down to view the current
permissions.
.. image:: access_rights/groups-inherited.png
For each app, use the drop-down menu to select what level of permission this user should have. The
options vary for each section, yet the most common are: :guilabel:`Blank/None`, :guilabel:`User: Own
Documents`, :guilabel:`User: All Documents`, or :guilabel:`Administrator`.
The :guilabel:`Administration` field in the :guilabel:`Access Rights` tab has the following options:
:guilabel:`Settings` or :guilabel:`Access Rights`.
.. image:: access_rights/user-permissions-dropdown-menu.png
:align: center
:height: 330
:alt: View of a groups form emphasizing the tab inherited in Odoo
:alt: The Sales apps drop-down menu to set the user's level of permissions.
.. _access-rights/groups:
Create and modify groups
========================
*Groups* are app-specific sets of permissions that are used to manage common access rights for a
large amount of users. Administrators can modify the existing groups in Odoo, or create new ones to
define rules for models within an application.
To access groups, first activate Odoo's :ref:`developer mode <developer-mode>`, then go to
:menuselection:`Settings app --> Users & Companies --> Groups`.
.. image:: access_rights/click-users-and-companies.png
:align: center
:alt: Groups menu in the Users & Companies section of the Settings app of Odoo.
To create a new group from the :guilabel:`Groups` page, click :guilabel:`Create`. Then, from the
blank group form, select an :guilabel:`Application`, and complete the group form (detailed below).
To modify existing groups, click on an existing group from the list displayed on the
:guilabel:`Groups` page, and edit the contents of the form.
Enter a :guilabel:`Name` for the group and tick the checkbox next to :guilabel:`Share Group`, if
this group was created to set access rights for sharing data with some users.
.. important::
Remember to always test the settings being changed in order to ensure that they are being applied
to the needed and right users.
Always test the settings being changed to ensure they are being applied to the correct users.
The *Menus* tab is where you define which menus (models) the user can have access to.
The group form contains multiple tabs for managing all elements of the group. In each tab, click
:guilabel:`Add a line` to add a new row for users or rules, and click the :guilabel:`❌ (remove)`
icon to remove a row.
.. image:: access_rights/groups-menus.png
.. image:: access_rights/groups-form.png
:align: center
:height: 330
:alt: View of a groups form emphasizing the tab menus in Odoo
:alt: Tabs in the Groups form to modify the settings of the group.
*Access Rights* rules are the first level of rights. The field is composed of the object name, which
is the technical name given to a model. For each model, enable the following options as appropriate:
- :guilabel:`Users` tab: lists the current users in the group. Users listed in black have
administrative rights. Users without administrative access appear in blue. Click :guilabel:`Add a
line` to add users to this group.
- :guilabel:`Inherited` tab: inherited means that users added to this group are automatically added
to the groups listed on this tab. Click :guilabel:`Add a line` to add inherited groups.
- *Read*: the values of that object can be only seen by the user.
- *Write*: the values of that object can be edited by the user.
- *Create*: values for that object can be created by the user.
- *Delete*: the values of that object can be deleted by the user.
.. example::
For example, if the group *Sales/Administrator* lists the group *Website/Restricted Editor* in
its :guilabel:`Inherited` tab, then any users added to the *Sales/Administrator* group
automatically receive access to the *Website/Restricted Editor* group, as well.
.. image:: access_rights/groups-access-rights.png
:align: center
:alt: View of a groups form emphasizing the tab access rights in Odoo
- :guilabel:`Menus` tab: defines which menus/models the group can have access to. Click
:guilabel:`Add a line` to add a specific menu.
- :guilabel:`Views` tab: lists which views in Odoo the group has access to. Click :guilabel:`Add a
line` to add a view to the group.
- :guilabel:`Access Rights` tab: lists the first level of rights (models) that this group has access
rights to. Click :guilabel:`Add a line` to link access rights to this group. In this tab, the
:guilabel:`Model` column represents the common name of the menu/model, and the :guilabel:`Name`
column represents the technical name given to the model. For each model, enable the following
options as appropriate:
| As a second layer of editing and visibility rules, *Record Rules* can be formed. They overwrite,
or refine, the *Access Rights*.
| A record rule is written using a *Domain*. Domains are conditions used to filter or searching
data. Therefore, a domain expression is a list of conditions. For each rule, choose among the
following options: *Read*, *Write*, *Create* and *Delete* values.
- :guilabel:`Read`: users can see the object's existing values.
- :guilabel:`Write`: users can edit the object's existing values.
- :guilabel:`Create`: users can create new values for the object.
- :guilabel:`Delete`: users can delete values for the object.
.. image:: access_rights/groups-record-rules.png
:align: center
:alt: View of a groups form emphasizing the tab record rules in Odoo
.. tip::
First try searching for the common name of the model in the drop-down menu of the
:guilabel:`Model` column. The :guilabel:`Model` technical name can be found by expanding the
model common name, which can be done by clicking the :guilabel:`(external link)` icon.
The model technical name can also be accessed in :ref:`developer mode <developer-mode>`.
On a form, navigate to any field, and hover over the field name. A box of backend information
reveals itself with the specific Odoo :guilabel:`Object` name in the backend. This is the
technical name of the model that should be added.
.. image:: access_rights/technical-info.png
:align: center
:alt: Technical information shown on a field of a model, with object highlighted.
- :guilabel:`Record Rules`: lists the second layer of editing and visibility rights.
:guilabel:`Record Rules` overwrite, or refine, the group's access rights. Click :guilabel:`Add a
line` to add a record rule to this group. For each rule, choose values for the following options:
- :guilabel:`Apply for Read`.
- :guilabel:`Apply for Write`.
- :guilabel:`Apply for Create`.
- :guilabel:`Apply for Delete`.
.. important::
Record rules are written using a *domain*, or conditions that filter data. A domain expression
is a list of such conditions. For example:
`[('mrp_production_ids', 'in', user.partner_id.commercial_partner_id.production_ids.ids)]`
This record rule is to enable MRP consumption warnings for subcontractors.
Odoo has a library of preconfigured record rules for ease of use. Users without knowledge of
domains (and domain expressions) should consult an Odoo Business Analyst, or the Odoo Support
Team, before making changes.
.. _access-rights/superuser:
Superuser mode
==============
*Superuser mode* allows the user to bypass record rules and access rights. To activate *Superuser
mode*, first, activate :ref:`developer mode <developer-mode>`. Then, navigate to the *debug* menu,
represented by a :guilabel:`🪲 (bug)` icon, located in the top banner.
Finally, towards the bottom of the menu, click :guilabel:`Become Superuser`.
.. important::
Making changes in access rights can have a big impact on the database. For this reason, we
recommend you to contact your Odoo Business Analyst or our Support Team, unless you have
knowledge about Domains in Odoo.
Only users with *Settings* access for the *Administration* section of the *Access Rights* (in
their user profile) are allowed to log in to *Superuser mode*.
.. danger::
*Superuser mode* allows for circumvention of record rules and access rights, and therefore,
should be exercised with extreme caution.
Upon exiting *Superuser mode*, users may be locked out of the database, due to changes that were
made. This can cause *impotent admin*, or an administrator without the ability to change access
rights/settings.
In this case contact Odoo Support here: `new help ticket <https://www.odoo.com/help>`_. The
support team is able to restore access using a support login.
To leave *Superuser mode*, log out of the account, by navigating to the upper-right corner, and
clicking on the :guilabel:`OdooBot` username. Then, select the :guilabel:`Log out` option.
.. tip::
An alternative way to activate *Superuser mode* is to login as a superuser. To do that, navigate
to the login screen, and enter the appropriate :guilabel:`Email` and :guilabel:`Password`.
Instead of clicking :guilabel:`Login`, click :guilabel:`Log in as superuser`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

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