Compare commits

...

212 Commits

Author SHA1 Message Date
Lara Martini (larm) 9771be76a2 [IMP] payroll: added needed module info
X-original-commit: e8a260f20a
2024-05-16 04:21:45 +02:00
Felicious 9264fe40be [ADD] inventory: stock report
closes odoo/documentation#9347

X-original-commit: 8aa219a7fd
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-05-16 00:01:58 +00:00
Loan (LSE) c636893e32 [IMP] general: iot add payment terminals link
closes odoo/documentation#9336

X-original-commit: 258636564e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-15 00:28:58 +00:00
mjvi-odoo fbfb81d80c [IMP] sales: add sample pdf quotaion file added
task-3645924

closes odoo/documentation#8391

Related: odoo/upgrade#5644
Related: odoo/enterprise#61325
Related: odoo/odoo#152270
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-05-14 18:18:09 +00:00
KC (ksc) a9620242af [FIX] subscriptions: modified detail re: prorated warning
closes odoo/documentation#9338

X-original-commit: 9543b25714
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-14 13:05:58 +00:00
KC (ksc) 3ca0a69957 [FIX] sales: corrected pricelist configuration detail
closes odoo/documentation#9337

X-original-commit: d00c04e259
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-14 13:05:57 +00:00
KC (ksc) 085320a86d [FIX] sales: fixed a loyalty card specificity
closes odoo/documentation#9335

X-original-commit: 214fed5fdf
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-14 13:05:56 +00:00
Samuel Degueldre 2c5c43c474 [IMP] developer: add an article to explain error handling in JS
closes odoo/documentation#9310

X-original-commit: 489fe7d3ea
Signed-off-by: Samuel Degueldre (sad) <sad@odoo.com>
2024-05-14 08:41:55 +00:00
Brandon Seltenrich (BRSE) 26edc3c56b [IMP] inventory: update scrap doc
closes odoo/documentation#9311

X-original-commit: 2d0f640223
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-13 21:46:56 +00:00
Felicious 8bbfebea55 [IMP] inventory: purchase security lead time
closes odoo/documentation#9303

X-original-commit: 71577350e9
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-05-11 16:43:43 +00:00
Felicious 85fda3e9e1 [ADD] inventory: reassign lots/serial numbers
closes odoo/documentation#9302

X-original-commit: 57de351036
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-11 16:43:42 +00:00
tiku-odoo 98f9fa803e [ADD] finance: avalara portal
closes odoo/documentation#9296

X-original-commit: 38fa0d3a4e
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-10 18:57:21 +00:00
Felicious 6a0bb6ba9f [IMP] inventory: stock input + output account fix
closes odoo/documentation#9287

X-original-commit: b5a80eed7b
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-10 15:32:51 +00:00
tiku-odoo 50bd2e0d42 [IMP]accounting: avatax api integration rewrite
closes odoo/documentation#9281

X-original-commit: fe3cbf7231
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-10 14:13:33 +00:00
tiku-odoo c743f44177 [IMP] finance: avatax use add logging
closes odoo/documentation#9273

X-original-commit: 314ddb2de3
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-09 20:50:40 +00:00
jero-odoo f5aaeb524e [IMP] Helpdesk: Reporting 17
closes odoo/documentation#9270

X-original-commit: f036553f5a
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-09 20:50:39 +00:00
jero-odoo 7524eccaef [REM] CRM: multi teams
closes odoo/documentation#9269

X-original-commit: 2a9bd10799
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-05-09 20:50:38 +00:00
Brandon Seltenrich (BRSE) 5c645508d4 [IMP] inventory: update two step doc copy
closes odoo/documentation#9259

X-original-commit: 5f5deac264
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-09 19:36:56 +00:00
John Holton (hojo) b6fef3dec0 [MOV] MRP: Create subcontracting scope
closes odoo/documentation#9102

X-original-commit: d38eb79411
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-05-08 20:32:56 +00:00
Sam Lieber (sali) 7e04e250b0 [IMP] extensions: icon_role odoo ui
closes odoo/documentation#9252

X-original-commit: a39903ca12
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-08 19:21:56 +00:00
jero-odoo 6f4f511b34 [ADD] CRM: manage sales teams 17
closes odoo/documentation#9250

X-original-commit: 25f44f7ac2
Signed-off-by: Jessica Rogers (jero) <jero@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-05-08 18:04:43 +00:00
John Holton (hojo) fb5fc7915c [IMP] Manufacturing: Subcontracting overview
closes odoo/documentation#9063

X-original-commit: 5c41d20474
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-05-08 18:04:40 +00:00
KC (ksc) 89d3907b4f [IMP] surveys: time_random rewrite for questions
closes odoo/documentation#8847

X-original-commit: 45c5d9eef4
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-08 16:51:38 +00:00
Brandon Seltenrich (BRSE) 2a3117dfee [IMP] inventory: update create second warehouse doc
closes odoo/documentation#9224

X-original-commit: 860befac4a
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-08 15:33:30 +00:00
Brandon Seltenrich (BRSE) c9f1bf7df8 [IMP] inventory: update one step shipments doc
closes odoo/documentation#9220

X-original-commit: 7cf04c1dba
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-08 14:11:52 +00:00
XPL f7769365bc [IMP] settings: simplify the developer mode page
task-3849915

closes odoo/documentation#9238

X-original-commit: 67f02edd7b
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-08 10:25:40 +00:00
tiku-odoo 364d997cae [IMP] sales: amazon connector add fba warning block
closes odoo/documentation#9232

X-original-commit: ee2b0e4a66
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-07 13:38:10 +00:00
Donatienne (dopi) 692b932eed [IMP] Documents: updating documentation
taskid-3778148

closes odoo/documentation#9150

X-original-commit: de9e726858
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-05-07 12:22:37 +00:00
Tiffany Chang (tic) 508c7aeccc [I18N] *: export latest terms
closes odoo/documentation#9082

X-original-commit: 697f78e513
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-05-07 08:24:59 +00:00
“Audrey f603ac5624 [IMP] Studio: update automation rules doc for v17
task-3745330

closes odoo/documentation#9204

X-original-commit: 3140917a53
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-05-07 07:08:26 +00:00
Antoine Vandevenne (anv) 6332d389f9 [FIX] reference/view_architectures/*: remove nosearch meta directives
The `nosearch` meta directive is not fully supported in included files:
the generated file is excluded from search results, but the "nosearch"
term is present in the included content.

closes odoo/documentation#9191

X-original-commit: 298a222d00
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-05-07 07:08:25 +00:00
Samuel Degueldre 59e8cb1c3a [FIX] developer: rewrite a bunch of outdated info in JS reference
Previously, a lot of information on the JavaScript reference page was
outdated.

This commit rewrites a bunch of sections to bring them up to date and
removes others that are no longer relevant. While a more profound rework
of the JS documentation is still needed, this commit at least reduces
the amount of outdated information significantly in the meantime.

closes odoo/documentation#9203

X-original-commit: 2354f0946e
Signed-off-by: Samuel Degueldre (sad) <sad@odoo.com>
2024-05-07 05:56:26 +00:00
tiku-odoo e0e2200a60 [ADD] finance: avatax tax calculation
closes odoo/documentation#9218

X-original-commit: 41b6e2f227
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-07 00:49:54 +00:00
Brandon Seltenrich (BRSE) 8e5c99f42a [IMP] inventory: update wh/loc doc
closes odoo/documentation#9202

X-original-commit: 66fc5639b6
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-07 00:49:51 +00:00
Brandon Seltenrich (BRSE) c529500e6a [FIX] inventory: fix manufacturing lead time section
closes odoo/documentation#9201

X-original-commit: 4a066cb017
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-07 00:49:50 +00:00
XPL 95739dc0fc [IMP] website: warn about privacy regulations for recaptcha and gtm
task-3896553
task-3896425

closes odoo/documentation#9186

X-original-commit: 79b383ddcf
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-06 18:17:27 +00:00
jero-odoo 0180929780 [IMP] Helpdesk: customer ratings
closes odoo/documentation#9177

X-original-commit: c19f71fd4c
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Timothy Kukulka <91896312+tiku-odoo@users.noreply.github.com>
2024-05-06 14:11:08 +00:00
jero-odoo da8e2dfe6a [ADD] email marketing: analyze metrics
closes odoo/documentation#9173

X-original-commit: 753d561fe8
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2024-05-06 14:11:06 +00:00
Lara Martini (larm) 980d9f67c5 [MOV] fleet: config doc to parent
closes odoo/documentation#8848

X-original-commit: 62f6502d61
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-06 14:10:59 +00:00
XPL 44e3bd028b [IMP] accounting: change the lock date warning to an optional tip
task-3787113

closes odoo/documentation#9170

X-original-commit: 5c84c9fc7f
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-04 02:03:49 +00:00
Donatienne (dopi) fae4de26f2 [ADD] Website: features blocks
task-3733828

closes odoo/documentation#9155

X-original-commit: 9e6572ad08
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-05-04 00:40:01 +00:00
Lara Martini (larm) 0865e62d5f [IMP] referrals: update pics and remove save button
closes odoo/documentation#9144

X-original-commit: acb0a1cc5f
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-03 20:52:58 +00:00
jero-odoo d4da0c2425 [IMP] CRM: rewrite gamification config section
closes odoo/documentation#9141

X-original-commit: fd17dcef90
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-05-03 16:25:46 +00:00
Xavier-Do 4dfb271bde [FIX] adapt requirements to ubuntu Jammy
The docutils is pinned to 0.16.0 while the Jammy version should be 0.17

This is the case for a compatibility issue with sphinx-tabs==3.2.0
also official versions in ubuntu Jammy.

The odoo.requirements package contains already a docutils 0.17.0
creating some downgrade when installing requirements, this commit
upgrade both dependency to a compatible version.

This should avoid installing requirements in all documentation build
and hopefully avoid some random errors.

closes odoo/documentation#9135

X-original-commit: f73bf36e6d
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-03 08:50:53 +00:00
Donatienne (dopi) 79878321d6 [IMP] website: redirects
taskid-3667291

closes odoo/documentation#9129

X-original-commit: d2ba715df8
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-05-03 07:26:05 +00:00
Brandon Seltenrich (BRSE) e7c634b31b [IMP] inventory: update locations doc
closes odoo/documentation#9131

X-original-commit: 5d735775b6
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-05-02 17:55:28 +00:00
Felicious 28596bd782 [IMP] inventory: multi-step label section
closes odoo/documentation#9130

X-original-commit: 12c82cabbe
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-05-02 17:55:27 +00:00
Lara Martini (larm) 5fd963a36f [IMP] Gen settings: updated images
closes odoo/documentation#9103

X-original-commit: 6840b5df3f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-02 16:34:08 +00:00
Lara Martini (larm) 570313b1cd [IMP] activities: updating for 17.0
closes odoo/documentation#9091

X-original-commit: 05bc055641
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-02 16:34:07 +00:00
jero-odoo 8e3142bc37 [IMP] CRM: rewrite gamification
closes odoo/documentation#9040

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: StraubCreative <zst@odoo.com>
2024-05-02 16:34:06 +00:00
tiku-odoo ba056f4f36 [IMP] admin: onprem password reset
closes odoo/documentation#9112

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

X-original-commit: fcd9b40293
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-05-02 13:26:56 +00:00
dido-odoo e89dc21e44 [FIX] Online payments: Correct the Webhook URL entered in Xendit
The Webhook URL in our documentation was missing the "payment/xendit/webhook" part, meaning Odoo wasn't processing messages from Xendit if users followed the documentation. Therefore this commit corrects this so it's included.

Support Ticket: opw-3849683

task-3859686

closes odoo/documentation#9081

X-original-commit: 5bf5db129f
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-30 16:24:04 +00:00
Antoine Vandevenne (anv) 7eb1324d1c [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#9075

X-original-commit: 73ee687aca
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-30 16:24:03 +00:00
Sam Lieber (sali) 1287839683 [ADD] extensions: icon_role font awesome
closes odoo/documentation#9066

X-original-commit: 1f851af029
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-30 16:24:01 +00:00
Victor Feyens b4a8e166a6 [FIX] dev/tutorials: typo
courtesy of @/ChloeLiang

closes odoo/documentation#9051

X-original-commit: 3e62a8c4cd
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-30 02:30:25 +00:00
Brandon Seltenrich (BRSE) a936e3cb5d [IMP] inventory: udpate shipments & deliveries doc
closes odoo/documentation#8974

X-original-commit: 3973c40516
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-30 00:57:24 +00:00
XPL 48a20b1596 [IMP] l10n-belgium: update the supported blackbox model
task-3895014

closes odoo/documentation#9024

X-original-commit: ca40adc12e
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-29 16:22:44 +00:00
Zachary Straub (ZST) 3d10ecf770 [FIX] quality: replace overview 404 link
closes odoo/documentation#9037

X-original-commit: 8984c27df9
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-28 20:18:22 +00:00
Felicious d09028357e [IMP] inventory: UPS config
closes odoo/documentation#9030

X-original-commit: a63462d880
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-04-26 22:59:54 +00:00
tiku-odoo 790b9c7fd9 [IMP] sales: partner autocomplete rewrite
closes odoo/documentation#9016

X-original-commit: 5bed8eb25b
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-26 13:26:54 +00:00
Loredana Perazzo 8e25d81ce5 [ADD] pos: list of compatible epos printers
no-task related

closes odoo/documentation#9011

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 23:51:22 +00:00
tiku-odoo abf2ea81dd [IMP] database mgt: odoocom account add dup limit
closes odoo/documentation#9002

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 23:51:21 +00:00
rps-odoo 40f4077669 [IMP] accounting/l10n_ec: add eCommerce section
Link to GDrive images folder: https://drive.google.com/drive/folders/1TRuIFiQJO5kcy11LWKDyNUuBD4sI9ZQb?usp=sharing

closes odoo/documentation#8993

X-original-commit: 2ecb63825b
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-25 22:13:29 +00:00
John Holton (hojo) 28476a2894 [ADD] Manufacturing: Basic subcontracting
closes odoo/documentation#8787

X-original-commit: ba8289b0da
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-04-25 20:37:08 +00:00
Loredana Perazzo 57314bb63f [IMP] iot: admonition about the required certification to use a scale in POS
task-3876833

closes odoo/documentation#8988

X-original-commit: 4a12c56fc4
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-25 18:32:55 +00:00
tiku-odoo 50efd5d4ce [IMP] marketing: sms essentials automation rule v17
closes odoo/documentation#8980

X-original-commit: a443e6b9d1
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-25 18:32:49 +00:00
Felicious 545e124d02 [IMP] inventory: troubleshooting 3rd party carrier
closes odoo/documentation#8950

X-original-commit: b360ff1042
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-25 18:32:45 +00:00
Vincent Schippefilt 564f2640c7 [IMP] base: add read_group relative granularity
references https://github.com/odoo/odoo/pull/159528

closes odoo/documentation#8447

Task: 3836802
Related: odoo/odoo#159528
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
2024-04-25 17:11:23 +00:00
XPL 348da6ec78 [IMP] upgrade: modify support information
task-3473194

closes odoo/documentation#8958

X-original-commit: aed1667cdc
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-25 06:59:34 +00:00
Syed Sarmad Sabih 54e6c5d6d4 [FIX] general: ir.config_parameter correction
Fix the incorrect usage of `ir.config.parameters`. The correct one is `ir.config_parameter`.

closes odoo/documentation#8981

X-original-commit: 644f383656
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-25 02:13:51 +00:00
Brandon Seltenrich (BRSE) 601e6fe30c [IMP] inventory: update 2 step routes doc
closes odoo/documentation#8968

X-original-commit: 16b0137ae5
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-24 19:10:07 +00:00
Brandon Seltenrich (BRSE) 5db7eabaaf [ADD] repairs: add repair orders doc
closes odoo/documentation#8967

X-original-commit: a76e5782cd
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-24 19:10:06 +00:00
Lara Martini (larm) d7beff11c0 [ADD] Lunch: Manage orders ad vendors
closes odoo/documentation#8960

X-original-commit: a9b5cf3f6a
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-24 19:10:05 +00:00
Brandon Seltenrich (BRSE) cd6f706e7c [IMP] inventory: update cycle counts doc
closes odoo/documentation#8924

X-original-commit: 0456d100b2
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-24 19:10:03 +00:00
Brandon Seltenrich (BRSE) bf0a7d3160 [IMP] update 3 step receipts doc
closes odoo/documentation#8954

X-original-commit: ba2a95a3d5
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-24 13:32:57 +00:00
jero-odoo c56819763f [ADD] Discuss: New Canned Responses Doc
closes odoo/documentation#8884

X-original-commit: ca7d2936dd
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-24 13:32:55 +00:00
Felicious 5bc5448bbe [IMP] inventory: print shipping label
closes odoo/documentation#8944

X-original-commit: ecc993ee35
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 20:08:46 +00:00
tiku-odoo 4b030b0b83 [IMP] essentials: iap rewrite
closes odoo/documentation#8938

X-original-commit: cd49934d95
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-23 20:08:45 +00:00
Lara Martini (larm) 96deed63ad [ADD] Lunch: placing orders doc
closes odoo/documentation#8783

X-original-commit: 30e76c6eb3
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-23 15:06:41 +00:00
Yaroslav Soroko (yaso) 3c082c8f0b [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#8832

X-original-commit: 67f096cfe8
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-23 10:39:03 +00:00
XPL 378eff8585 [ADD] spreadsheet: functions
closes odoo/documentation#8903

X-original-commit: 1e1389c679
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-22 20:52:53 +00:00
tiku-odoo 417867026e [ADD] sales: crm lead enrichment
closes odoo/documentation#8915

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:22:50 +00:00
tiku-odoo e14b809722 [IMP] productivity: microsoft calendar rewrite
closes odoo/documentation#8907

X-original-commit: 5626d03c98
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-22 16:46:39 +00:00
tiku-odoo f741898d3e [IMP] sales: subscription follow-up alerts add block
closes odoo/documentation#8897

X-original-commit: 3cb351b6b9
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-22 14:00:09 +00:00
Felicious ead609a337 [IMP] inventory: overhaul 3rd party shippers
closes odoo/documentation#8893

X-original-commit: 4d7926f159
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
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-20 00:56:51 +00:00
Victor Feyens a712aeabea [FIX] redirects: forgotten redirects
Missing redirections for 91a48bfe88

closes odoo/documentation#8876

X-original-commit: ca1d8adf7e
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-19 19:11:01 +00:00
Sam Lieber (sali) 0c25dbe3e7 [IMP] marketing automation: workflow activities
closes odoo/documentation#8867

X-original-commit: 0aaff7f75e
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-19 17:48:22 +00:00
jero-odoo 15bdaa7bdb [IMP] crm: utilize activities for sales teams 17
closes odoo/documentation#8864

X-original-commit: 2c9457e573
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-04-19 17:48:20 +00:00
KC (ksc) c932d24162 [ADD] surveys: created new 'dashboard' doc
closes odoo/documentation#8863

X-original-commit: 3e4f44211b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-04-19 17:48:19 +00:00
Alvaro Fuentes 3bba491f57 [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.

Original commit: 91a48bfe88

closes odoo/documentation#8849

X-original-commit: ef4b5f87d5
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-04-19 13:35:52 +00:00
Alvaro Fuentes 16fd9dc828 [IMP] upgrade-util: link code documentation
Add direct code documentation from upgrade-util repo.
Adapt `extensions/github_link`.

Original commit: 3352d33997

X-original-commit: 26fd5f3192
Part-of: odoo/documentation#8849
Co-authored-by: Victor Feyens <vfe@odoo.com>
2024-04-19 13:35:52 +00:00
tiku-odoo 4a0624c897 [IMP] productivity: calendar google add troubleshooting
closes odoo/documentation#8857

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:52:41 +00:00
XPL 8d4ad5f6fb [IMP] hosting: add Odoo.sh as not supporting intermediary versions
task-3874935

closes odoo/documentation#8818

X-original-commit: d1e65a3224
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-18 08:20:01 +00:00
Loredana Perazzo 5c7ab478d9 [IMP] pos: digital labels becomes electronic shelf labels
closes odoo/documentation#8825

X-original-commit: 98cac21297
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-18 06:22:54 +00:00
Yaroslav Soroko (yaso) b301ee896a [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#8817

X-original-commit: c100f94748
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-18 06:22:53 +00:00
Yaroslav Soroko (yaso) 124edfd676 [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#8803

X-original-commit: 09f5c15e90
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-18 06:22:52 +00:00
Yaroslav Soroko (yaso) 7adaac544f [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#8797

X-original-commit: f7bc929e00
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-17 21:46:17 +00:00
Yaroslav Soroko (yaso) a4f06b2130 [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#8756

X-original-commit: 59108aedda
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-17 18:55:47 +00:00
rps-odoo 5fa5126572 [IMP] accounting/l10n_ec: add additional modules
closes odoo/documentation#8625

X-original-commit: a30b2bbdfb
Signed-off-by: Roberto Palacios (rps) <rps@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-17 17:29:07 +00:00
Donatienne (dopi) 6402602d1e [ADD] website: dynamic content
task-3733885

closes odoo/documentation#8776

X-original-commit: 50d09bf155
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-17 08:31:05 +00:00
John Holton (hojo) fe5e284c4d [ADD] Manufacturing: Resupply subcontractor
closes odoo/documentation#8759

X-original-commit: 579048ce2c
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-04-16 18:09:51 +00:00
KC (ksc) bab0ae401c [IMP] surveys: rewrite of create surveys doc for 17
closes odoo/documentation#8762

X-original-commit: a2f80c56c2
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-04-16 15:40:00 +00:00
tiku-odoo c2caa3cc34 [IMP] productivity: calendar add troubleshooting
closes odoo/documentation#8769

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:57:02 +00:00
Zuzanna Luczynska 03873b6b34 [IMP] project: remove recurring task checkbox on individual project
task-3861601

closes odoo/documentation#8726

X-original-commit: efc6cb8cca
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Zuzanna Luczynska (zulu) <zulu@odoo.com>
2024-04-16 07:52:01 +00:00
XPL 8fed1cf0a8 [IMP] point of sale: wordline windows firewall
task-3865298

closes odoo/documentation#8747

X-original-commit: 15a12a7b10
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-15 12:39:07 +00:00
John Holton (hojo) a25e800a76 [ADD] Manufacturing: Dropship to subcontractor
closes odoo/documentation#8638

X-original-commit: 582828999a
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-15 01:01:05 +00:00
Felicious e0a499bb39 [ADD] inventory: assign new serials
closes odoo/documentation#8731

X-original-commit: 1fc601e7c3
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-04-13 22:14:49 +00:00
Lara Martini (larm) 44e9dfb329 [ADD] Lunch: manage accounts
closes odoo/documentation#8740

X-original-commit: 36a0e84a17
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: jero-odoo <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: StraubCreative <zst@odoo.com>
2024-04-13 20:27:13 +00:00
Syed Sarmad Sabih 013a121b6a Update email_servers.rst
Added missing space between defaultnotifications

closes odoo/documentation#8737

X-original-commit: 8778183bc7
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-04-13 20:27:12 +00:00
jero-odoo 64203a815f [ADD] Discuss: Chatter Doc
closes odoo/documentation#8734

X-original-commit: b84b924463
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Timothy Kukulka <91896312+tiku-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-13 20:27:11 +00:00
Donatienne (dopi) 40fa45c252 [IMP] website: inner content blocks
taskid-3733888

closes odoo/documentation#8722

X-original-commit: 8f88ea892b
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-13 15:31:33 +00:00
Antoine Vandevenne (anv) 57b7ca69d9 [IMP] developer: improve navigation in top-level pages
Prior to this commit, users had to either know in advance or guess the
location of the content they were looking for. Top-level pages of the
"Developer" section of the documentation, in particular the "Developer"
page itself, were listing their sub-pages without directions for users.

This commit brings the following changes to improve the navigation:
- add directions for users on the "Developer" page and list the three
  main categories of developer documentation ("Tutorials", "How-to
  guides", and "Reference") with explanations of their content and
  target audience;
- add categories for content cards on the "Tutorials" and "How-to
  guides" pages, and fine-tune the toctree of the "Reference" page to
  more easily locate specific topics;
- clarify what are the "Python framework" and the "JavaScript framework"
  by relabelling them to "Server framework" and "Web framework" on
  top-level pages, as some users were confused to find that the JS
  framework was not responsible for the server, and others that the
  documentation for QWeb template is located in the Python documentation;
- extract the "Setup guide" from the "Getting started" tutorial and
  rename the latter to "Server framework 101" to allow reusing the setup
  guide in other tutorials and make clear that the "Server framework 101"
  tutorial is not about the Web framework.

task-3802536

closes odoo/documentation#8712

X-original-commit: 7f623b6ad5
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Valeriya (vchu) <vchu@odoo.com>
2024-04-13 12:16:35 +00:00
Felicious b8dae6e6b2 [IMP] barcode: broken eLearning link
closes odoo/documentation#8707

X-original-commit: c8ad3af954
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-04-13 12:16:28 +00:00
tiku-odoo f83b27d07a [IMP] general: iot troubleshooting printer addition
closes odoo/documentation#8694

X-original-commit: e444f8678e
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-13 11:01:57 +00:00
jero-odoo 257b86abb1 [REM] crm: track prospects visits
closes odoo/documentation#8687

X-original-commit: 1b4516057a
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@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-13 09:50:23 +00:00
tiku-odoo 5911d0be1b [IMP] general: user doc 17 edits
closes odoo/documentation#8698

X-original-commit: 1250c4bf20
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-13 08:40:47 +00:00
XPL a59a882dd0 [IMP] accounting: snailmail trial credits removal
task-3844653

closes odoo/documentation#8683

X-original-commit: e7dc7815b5
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-12 07:38:51 +00:00
Brandon Seltenrich (BRSE) e3f5824313 [ADD] maintenance: add maintenance calendar doc
closes odoo/documentation#8676

X-original-commit: c5ead11f0e
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-12 05:43:46 +00:00
jero-odoo e4f81db89e [IMP] CRM: utilize activities 16.0
closes odoo/documentation#8673

X-original-commit: 50a8171f02
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-04-12 05:43:43 +00:00
Brandon Seltenrich (BRSE) d0135e4d3e [IMP] purchase: update bill control policy doc
closes odoo/documentation#8671

X-original-commit: d25a0d261b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-12 05:43:42 +00:00
Lara Martini (larm) 6f4a3b61db [ADD] Lunch: new configuration doc
closes odoo/documentation#8670

X-original-commit: 0a309c5c6b
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-12 05:43:41 +00:00
Brandon Seltenrich (BRSE) 6b13865e4d [IMP] inventory: update landed costs doc
closes odoo/documentation#8669

X-original-commit: db6288f9a1
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-12 05:43:40 +00:00
Donatienne (dopi) 210effcd22 [ADD] Website: inner content building blocks
taskid-3733888

closes odoo/documentation#8657

X-original-commit: a3ca109cf5
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-12 03:31:11 +00:00
tiku-odoo 9c7ce86077 [IMP] general: users rewrite
closes odoo/documentation#8653

X-original-commit: 3f2f33a349
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-12 03:31:05 +00:00
Felicious b91b663c82 [MOV] inventory: group inventory adj docs together
closes odoo/documentation#8641

X-original-commit: 8d6bd636e1
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-11 18:54:51 +00:00
KC (ksc) 734dc4ff93 [ADD] surveys: created survey analysis doc for 17
closes odoo/documentation#8635

X-original-commit: bf5ddc5886
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-04-11 12:29:30 +00:00
Brandon Seltenrich (BRSE) c7daca2df6 [ADD] maintenance: add setup doc
closes odoo/documentation#8628

X-original-commit: d674c419c0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-11 12:29:28 +00:00
Tom Aarab (toaa) 67aefbacd4 [IMP] accounting: transactions update
taskid-3835958

closes odoo/documentation#8603

X-original-commit: 52a0df9b6e
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-04-11 10:30:11 +00:00
tiku-odoo 8bee34d230 [IMP] general: integrations outlook plugin add block
closes odoo/documentation#8624

X-original-commit: 21f23d98d3
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-09 21:32:41 +00:00
Ricardo Gomes Rodrigues 7c0598e164 [IMP] accounting: update hash
We did a big refactor of the hash in
https://github.com/odoo/odoo/pull/160820@

This commit updates the documentation accordingly.

task-id 3820975

closes odoo/documentation#8605

X-original-commit: b3ed49c167
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-09 21:32:41 +00:00
tiku-odoo a8f0df1fde [IMP] productivity: voip OnSIP US only block
closes odoo/documentation#8615

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 19:20:52 +00:00
tiku-odoo ac5f799d02 [FIX] general: integrations google translate
closes odoo/documentation#8608

X-original-commit: 867b90b13f
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-09 19:20:51 +00:00
Lara Martini (larm) 28b5989abf [IMP] fleet: new sections and forms
closes odoo/documentation#8555

X-original-commit: ca2738ef00
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-09 17:33:23 +00:00
KC (ksc) 7b3824fa23 [ADD] surveys: created doc for Live Sessions
closes odoo/documentation#8586

X-original-commit: 919ab71dcd
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-04-09 15:37:55 +00:00
Lara Martini (larm) 92e313396f [IMP] payroll: contract doc for version 17
closes odoo/documentation#8564

X-original-commit: 6522417fa6
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-09 15:37:51 +00:00
jero-odoo 3793e8cc37 [ADD] crm: utilize activities for sales teams
closes odoo/documentation#8594

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 12:53:55 +00:00
Ali Alfie (alal) 3730e134cc [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#8580

X-original-commit: 307e264241
Related: odoo/enterprise#60232
Signed-off-by: Ali Alfie (alal) <alal@odoo.com>
2024-04-09 02:09:53 +00:00
jero-odoo 8cacfab918 [IMP] CRM: update lost opps 17.0
closes odoo/documentation#8578

X-original-commit: b28e3073d1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-09 02:09:50 +00:00
Gorash 644cbd052f [IMP] base: required field (from view python expr) are add automatically
related to odoo/odoo#137031

closes odoo/documentation#6115

Related: odoo/enterprise#48832
Related: odoo/upgrade#5861
Signed-off-by: Raphael Collet <rco@odoo.com>
2024-04-08 19:17:56 +00:00
Ricardo Gomes Rodrigues 2ab5bb32c8 [IMP] accounting: clarify deferred start date
closes odoo/documentation#8573

X-original-commit: 1f4c1f455d
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-04-06 02:11:18 +00:00
tiku-odoo 2277114c8e [IMP] general: companies digest email rewrite
closes odoo/documentation#8552

X-original-commit: 9897673e93
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-05 19:15:16 +00:00
jero-odoo 0227f484f2 [IMP] CRM: Convert leads to opps
closes odoo/documentation#8545

X-original-commit: 63636d0518
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-05 19:15:15 +00:00
Sam Lieber (sali) d805a742ab [IMP] essentials: search filter and group
closes odoo/documentation#8544

X-original-commit: 6c350a6bb0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: tiku-odoo <tiku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-05 19:15:14 +00:00
tiku-odoo aaaf688d13 [IMP] general: companies rewrite
closes odoo/documentation#8543

X-original-commit: 4073aac2bc
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-05 19:15:13 +00:00
Lara Martini (larm) d78b540718 [IMP] fleet: new vehicle updates
closes odoo/documentation#8530

X-original-commit: 3a16f09f78
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-04-05 13:21:55 +00:00
Donatienne (dopi) 07d762cb29 [IMP] Link trackers: updating content
task-3754778

closes odoo/documentation#8520

X-original-commit: fd5c4b21ca
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-05 09:59:48 +00:00
Brandon Seltenrich (BRSE) f51df981f2 [IMP] purchase: update alternative rfq doc
closes odoo/documentation#8525

X-original-commit: aae54dedd2
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-04-05 07:09:02 +00:00
Jonathan b0d390c1bf [IMP] on_premise: update version number in source install
closes odoo/documentation#8521

X-original-commit: 67058f8b96
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-04-05 05:22:33 +00:00
jero-odoo 34db98ad59 [ADD] CRM: Merge Leads and Opps
closes odoo/documentation#8512

X-original-commit: 83d105c067
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-04 20:07:46 +00:00
John Holton (hojo) 81a73ce00e [ADD] Manufacturing: Shop Floor time tracking
closes odoo/documentation#8509

X-original-commit: ee2cfe2bb5
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-04-04 18:25:14 +00:00
Damien Bouvy 141399ec33 [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#8506

X-original-commit: d56d85da69
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-03 17:05:47 +00:00
Antoine Vandevenne (anv) 258fa17a76 [IMP] supported_versions: release saas-17.2
closes odoo/documentation#8500

X-original-commit: a906478bc7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-03 05:24:06 +00:00
XPL e2503fdc29 [ADD] database management: odoo mobile apps
task-3821019

closes odoo/documentation#8492

X-original-commit: 9fd199ff27
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-04-03 05:24:01 +00:00
KC (ksc) acb491fba2 [IMP] email marketing: update essentials doc
closes odoo/documentation#8479

X-original-commit: f019e3b18f
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-04-03 05:23:53 +00:00
mathysPaul 06d25495e6 [IMP] payment: Remove _compute_view_configuration_fields docs
Following the removal of explicit view configuration fields and
the `_compute_view_configuration_fields` method in the payment
module, this commit updates the documentation accordingly. It
removes all references and instructions related to
`_compute_view_configuration_fields`, ensuring the documentation
reflects the current implementation that leverages XPath for
view customization.

task-3679393

See odoo/odoo#152517
See odoo/enterprise#56181
See odoo/upgrade#5667

closes odoo/documentation#7686

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-04-02 13:09:25 +00:00
Sam Lieber (sali) b298744499 [IMP] marketing automation: audience targeting
closes odoo/documentation#8475

X-original-commit: 31bfb0c693
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-02 01:47:42 +00:00
KC (ksc) 45efd8c90d [FIX] subscriptions: updated and corrected mistake regarding eLearning connection
closes odoo/documentation#8465

X-original-commit: cc8c576936
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-04-02 01:47:40 +00:00
MaxKeilOdoo e84a7d1f28 [ADD] email marketing: lost leads email doc
closes odoo/documentation#8463

X-original-commit: 9ff60ea1d7
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: tiku-odoo <tiku@odoo.com>
Co-authored-by: ksc-odoo <ksc@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-04-02 01:47:39 +00:00
tiku-odoo 1dd818e0c7 [IMP] general: users access rights rewrite
closes odoo/documentation#8402

X-original-commit: ae061c9041
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-04-01 23:48:23 +00:00
jero-odoo 8c8679c856 [ADD] Live Chat: Reports
closes odoo/documentation#8464

X-original-commit: a4cdf38bd6
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-04-01 15:31:45 +00:00
jero-odoo d0e0332651 [IMP] Livechat: chatbots 17.0
closes odoo/documentation#8456

X-original-commit: c54584a3f0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-04-01 15:31:44 +00:00
rps-odoo d14daf3e82 [IMP] accounting/l10n_ar: liquidity product direct sales
Link to GDrive images folder: https://drive.google.com/drive/folders/1qWtbGewR3LxDKs21QpMEPhCKEovVyoKx?usp=drive_link

closes odoo/documentation#8450

X-original-commit: 094924d5ff
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: XPL <xpl@odoo.com>
2024-04-01 04:20:16 +00:00
John Holton (hojo) 0a93b57cb3 [MOV] Manufacturing: Restructure scope
closes odoo/documentation#8453

X-original-commit: ee735a813f
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-03-31 23:39:44 +00:00
XPL 5f3e56454a [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#8444

X-original-commit: 363d0a582f
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-31 20:36:11 +00:00
Melanie Nguyen (meng) b3f96a6168 [IMP] crm: update webpage visits
closes odoo/documentation#8437

X-original-commit: e3eae6ac88
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-31 18:53:54 +00:00
tiku-odoo 76ca1e1eef [IMP] general: iot windows iot update process
closes odoo/documentation#8430

X-original-commit: e30c87800d
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-31 18:53:52 +00:00
“ralo-odoo” 28accc3dd2 [IMP] localizations: Philippines (SLSP and 2550Q)
Added additonal sections for SLSP and 2550Q tax report as these were updated for 17.0

closes odoo/documentation#8427

X-original-commit: 56cf586061
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-03-31 18:53:51 +00:00
Lara Martini (larm) c08c69ce79 [IMP] recruitment: job positions new images and options
closes odoo/documentation#8420

X-original-commit: b5bfc45f09
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-03-31 17:29:40 +00:00
Lara Martini (larm) 9078dec21d [IMP] time off: updating images and directions
closes odoo/documentation#8416

X-original-commit: f16d89dbc7
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-03-31 16:16:03 +00:00
Yaroslav Soroko (yaso) 27bf8784c0 [ADD] Pricer tags section added to PoS/pricing
task-3603496

This PR adds the documentation needed to use Point Of Sale
with Pricer electronic price tags.

Related PRs:
https://github.com/odoo/enterprise/pull/50368

task-3603496

closes odoo/documentation#8412

X-original-commit: 656064ea1c
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-31 14:12:00 +00:00
jero-odoo 2c71281056 [IMP] Livechat: basics 17.0
closes odoo/documentation#8408

X-original-commit: 36ca933672
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Timothy Kukulka <91896312+tiku-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-03-30 23:48:12 +00:00
tiku-odoo 2cd4a12dd4 [ADD] general: integrations google translate
closes odoo/documentation#8405

X-original-commit: 880f1cc01d
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-30 18:06:22 +00:00
Syed Sarmad Sabih d27481635c Update deploy.rst
Fix typo db_filter to the correct usage dbfilter

closes odoo/documentation#8397

X-original-commit: 0fbf9995f0
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-30 11:57:13 +00:00
Felicious 5420b360ff [IMP] inventory: invoice shipping
closes odoo/documentation#8379

X-original-commit: 2733aac1fc
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-03-29 19:05:23 +00:00
Sam Lieber (sali) 498670abc1 [IMP] l10n_ec/accounting: ats report
closes odoo/documentation#8373

X-original-commit: 6ebc4d7b19
Signed-off-by: Roberto Palacios (rps) <rps@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-29 19:05:22 +00:00
João Alves 21cd532bb2 Update location of Outlook Calendar setting
closes odoo/documentation#8353

X-original-commit: 2c613fdfc4
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-29 19:05:21 +00:00
John Holton (hojo) 7c40b31212 [ADD] Maintenance: Maintenance requests
closes odoo/documentation#8338

X-original-commit: e0e97ea763
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-03-29 19:05:17 +00:00
tiku-odoo 6d28b69fda [IMP] essenials: import export version 17 updates
closes odoo/documentation#8388

X-original-commit: 97f5c6f02a
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-29 06:55:06 +00:00
John Holton (hojo) c46e9eb7ea [ADD] MRP: Unbuild orders
closes odoo/documentation#8385

X-original-commit: 51a70769ca
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-29 06:55:04 +00:00
Tiffany Chang (tic) 88f51eff5e [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, hr, 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#8367

X-original-commit: b65460db47
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2024-03-28 09:47:21 +00:00
Jess Rogers (jero) adf649f6e4 [ADD] crm: quality leads report doc
closes odoo/documentation#8359

X-original-commit: c63dda1e5f
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-03-27 14:02:47 +00:00
masi-odoo 6766c70169 [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#8268

X-original-commit: 39910d1e7b
Signed-off-by: Marco Antonio Iribe Sepulveda (masi) <masi@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-03-27 10:41:50 +00:00
Lara Martini (larm) e39ccf8de0 [IMP] payroll: updating new reporting for 17
closes odoo/documentation#8357

X-original-commit: e4057858a1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-03-26 04:58:55 +00:00
Lara Martini (larm) 48640eff5a [IMP] payroll: updating payslips info and pics for 17
closes odoo/documentation#8342

X-original-commit: 735097850c
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-03-25 23:46:56 +00:00
Felicious 4813419d4e [IMP] inventory: remove rescheduling
closes odoo/documentation#8290

X-original-commit: 8ad53481d1
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
2024-03-25 23:46:55 +00:00
Rémy Voet (ryv) 5f2a5d318e [IMP] orm: add 'any' and 'not any' operators
- Add descriptions of the 'any' and 'not any' operators
- Simplify the example for searching partners
- Add an example using the 'any' operator for the sale.order model

closes odoo/documentation#8349

Closes: #7620
X-original-commit: 7353d7b2cc
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2024-03-25 12:54:14 +00:00
Zachary Straub (ZST) c2c47456c7 [FIX] crm: unattended leads example
closes odoo/documentation#8228

X-original-commit: d43cc3e466
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-03-23 17:16:39 +00:00
Jess Rogers (jero) 6a6077b306 [ADD] crm: expected revenue report doc
closes odoo/documentation#8346

X-original-commit: 4a28f69400
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-03-22 19:30:00 +00:00
Brandon Seltenrich (BRSE) 53763fd099 [ADD] inventory: add before date res doc
closes odoo/documentation#8343

X-original-commit: 3d82c7671c
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-03-22 19:29:58 +00:00
KC (ksc) c9ba286471 [IMP] email marketing: updated unsubscription/blacklist doc for 17
closes odoo/documentation#8341

X-original-commit: 3e4463c978
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-03-22 19:29:57 +00:00
KC (ksc) a7b8901bdd [ADD] subscriptions: add scheduled actions doc
closes odoo/documentation#8340

X-original-commit: d8494b2c4b
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-03-22 19:29:56 +00:00
Brandon Seltenrich (BRSE) 8e5ee9ec2c [IMP] purchase: update blanket orders doc
closes odoo/documentation#8339

X-original-commit: 9a5074848c
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Brandon Seltenrich (brse) <brse@odoo.com>
2024-03-22 19:29:55 +00:00
Paolo Gatti (pgi) 6a8158c657 [IMP] finance/fiscal_localizations: Internal Reverse Charge
Many updates are due because of all the changes that have happened in
the last version. Internal Reverse Charge section has been added. The
configuration section has been reordered and information no longer valid
(like invoices being automatically sent) are removed. The flow is
described in a little more detail.

closes odoo/documentation#8324

X-original-commit: d7595e5eb8
Signed-off-by: Paolo Gatti (pgi) <pgi@odoo.com>
2024-03-22 18:05:06 +00:00
Tom Aarab (toaa) 632be997c8 [IMP] accounting: add extra taxes
Extra taxes (ecotax, luxury, etc) are currently missing from doc

taskid-3794931

closes odoo/documentation#8321

X-original-commit: 0b6bef6516
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-03-22 14:57:19 +00:00
tiku-odoo b32aab35a0 [IMP] essentials: import export rewrite
closes odoo/documentation#8317

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:57:17 +00:00
Jonathan Castillo (jcs) c2add27bd5 [FIX] website: anchors in analytics hyperlinks
Custom anchors can be used as hyperlinks to target a specific
heading on the page. However, the google analytics one didn't
work well because of the capital letters used.

closes odoo/documentation#8309

X-original-commit: 3a18276d4a
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-03-22 13:01:32 +00:00
tiku-odoo 4234a68d25 [IMP] iot: flash card update section
closes odoo/documentation#8305

X-original-commit: 1f89b5f4b2
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-22 13:01:29 +00:00
Mohamed Alkobrosli 47edb88436 [FW][FIX] dev/assets: typo
the "py" letter should be "by" to make the syntax correct and understood.

closes odoo/documentation#8302

Forward-port-of: odoo/documentation#8276
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-03-22 07:27:11 +00:00
tiku-odoo bb8e72fb60 [IMP] email comms: feedback loop edit
closes odoo/documentation#8283

X-original-commit: 2fad56f841
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-22 06:04:11 +00:00
Ray Carnes ac92c70b91 [IMP] upgrade: ready to upgrade image
Screenshot taken from Odoo 16 database with the option to upgrade to Odoo 17

closes odoo/documentation#8274

X-original-commit: b07ea8d014
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-22 06:04:07 +00:00
Donatienne (dopi) 765b61eff3 [ADD] Website: Structure blocks
task-3733822

closes odoo/documentation#8273

X-original-commit: 158a1dee79
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-22 06:04:06 +00:00
Martin Trigaux (mat) 2058488eaa [I18N] conf: add more language codes
closes odoo/documentation#8251

X-original-commit: 88fa5d6e0a
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2024-03-22 06:03:59 +00:00
glovebx 3e4b026979 [FW][FIX] dev/view_architectures: domain attribute of search view fields
The domain in the `field` component cannot accept user-provided values or access self variables.
This commit removes the misleading sentence about it from the documentation.

closes odoo/documentation#8229

Forward-port-of: odoo/documentation#8193
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-03-22 03:08:58 +00:00
Felicious d6cd27bc9d [ADD]inventory: product type
closes odoo/documentation#8260

X-original-commit: bfcb1fa443
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>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-03-21 07:48:58 +00:00
tiku-odoo 0001bbaec4 [IMP] hosting: add admonition block on subscription
closes odoo/documentation#8256

X-original-commit: 9df807a532
Signed-off-by: Timothy Kukulka (tiku) <tiku@odoo.com>
2024-03-20 20:02:09 +00:00
tiku-odoo cbe068e3ab [IMP] developer: external api add admonition block
closes odoo/documentation#8240

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 16:31:57 +00:00
tiku-odoo c411a9f924 [REM] voip: onsip scrub per onsip
closes odoo/documentation#8239

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 16:31:56 +00:00
Bastien Fafchamps (bafa) df1f1dd6b6 [FIX] web: adapted Dropdown component documentation to new api
This commit adapts the documentation to reflect changes made to the Dropdown
component after its refactor, namely:
- Adapted props list
- Adapted code snippets
- Added DropdownGroup component documentation
- More consise examples

closes odoo/documentation#8156

Task-id: 3266145
Signed-off-by: Bastien Fafchamps (bafa) <bafa@odoo.com>
2024-03-20 16:31:55 +00:00
Xavier (XPL) 379798b35c [FIX] website: domain names
closes odoo/documentation#8236

X-original-commit: b7ffab804b
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-03-20 14:25:03 +00:00
Felicious b3d06500ef [DEL] remove usage; contains packages + packagings
closes odoo/documentation#8226

X-original-commit: 281d3976da
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-03-20 12:09:38 +00:00
Louis (loti) 5bb97c3fcb [IMP] payment: render /payment/status entirely from the server
Previously, /payment/status would render a template on the server-side, and a JS widget would render subtemplates on the client-side and insert them in the server-side rendered template.

However, mixing server-side and client-side templates causes issues because the context is not properly communicated between client and server. It also makes the code more complex.

This change assumes that no new information returned by /payment/status is worth re-rendering part of the template. If the transaction moves from a pending ('draft', 'pending') state to a final state, the customer should be redirected to the final route that will display the updated information on the transaction.

task-3340354

closes odoo/documentation#8198

Related: odoo/upgrade#5829
Related: odoo/odoo#149821
Related: odoo/enterprise#58822
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-03-20 12:09:27 +00:00
1392 changed files with 62434 additions and 31492 deletions
+30
View File
@@ -21,6 +21,16 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:essentials]
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
source_file = locale/sources/essentials.pot
type = POT
minimum_perc = 0
resource_name = essentials
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
@@ -41,6 +51,16 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:hr]
file_filter = locale/<lang>/LC_MESSAGES/hr.po
source_file = locale/sources/hr.pot
type = POT
minimum_perc = 0
resource_name = hr
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
@@ -111,6 +131,16 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:studio]
file_filter = locale/<lang>/LC_MESSAGES/studio.po
source_file = locale/sources/studio.pot
type = POT
minimum_perc = 0
resource_name = studio
replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-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:
@@ -146,7 +146,7 @@ Manually
--------
If you want to create your module structure manually,
you can follow the :doc:`/developer/tutorials/getting_started` tutorial to understand
you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand
the structure of a module and the content of each file.
Push the development branch
+141 -5
View File
@@ -9,7 +9,7 @@ internet.
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
.. _db_filter:
.. _dbfilter:
dbfilter
========
@@ -573,12 +573,12 @@ security-related topics:
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
to restrict the visibility of your databases according to the hostname.
See :ref:`db_filter`.
See :ref:`dbfilter`.
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
list of available databases to filter from, instead of letting the system fetch
them all from the database backend.
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
- Once your ``db_name`` and ``dbfilter`` are configured and only match a single database
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
listing databases entirely, and to block access to the database management screens
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
@@ -722,7 +722,7 @@ management screens.
the system administrator, including provisioning of new databases and automated backups.
Be sure to setup an appropriate ``db_name`` parameter
(and optionally, ``db_filter`` too) so that the system can determine the target database
(and optionally, ``dbfilter`` too) so that the system can determine the target database
for each request, otherwise users will be blocked as they won't be allowed to choose the
database themselves.
@@ -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
==================
+2 -2
View File
@@ -45,7 +45,7 @@ Git
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
Started developer tutorial </developer/tutorials/getting_started>`.
Started developer tutorial </developer/tutorials/server_framework_101>`.
.. tabs::
@@ -144,7 +144,7 @@ Odoo requires **Python 3.10** or later to run.
to download and install Python 3 if needed.
.. note::
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
If Python 3 is already installed, make sure that the version is 3.10 or above, as previous
versions are not compatible with Odoo.
.. tabs::
@@ -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:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

+274 -164
View File
@@ -2,238 +2,348 @@
Activities
==========
*Activities* are follow-up tasks tied to a record in an Odoo database. Activities can be scheduled
on any page of the database that contains a chatter thread, kanban view, list view, or activities
view of an application.
*Activities* are follow-up tasks tied to a record in an Odoo database.
.. _activities/important:
The icon used to display activities varies depending on the :ref:`activity type <activities/types>`:
- :guilabel:`🕘 (clock)`: the default icon, which appears if nothing is scheduled.
- :guilabel:`📞 (phone)`: this icon appears if a phone call is scheduled.
- :guilabel:`✉️ (envelope)`: this icon appears if an email is scheduled.
- :guilabel:`✔️ (checkmark)`: this icon appears if a to-do is scheduled.
- :guilabel:`(group of people)`: this icon appears if a meeting is scheduled.
- :guilabel:`(arrow pointing up above a line)`: this icon appears if a document is scheduled to be
uploaded.
- :guilabel:`(pencil in a box)`: this icon appears if a signature request is scheduled.
Schedule activities
===================
One way that activities are created is by clicking the :guilabel:`Schedule Activity` button, located
at the top of the *chatter* on any record. On the pop-up window that appears, select an
:guilabel:`Activity Type` from the drop-down menu.
Activities can be scheduled on any page of the database that contains a :ref:`chatter
<activities/chatter>` thread, :ref:`Kanban view <activities/kanban>`, :ref:`list view
<activities/list>`, or :ref:`activities view <activities/activity>` of an application.
.. tip::
Individual applications have a list of *Activity Types* dedicated to that application. For
example, to view and edit the activities available for the *CRM* application, go to
:menuselection:`CRM app --> Configuration --> Activity Types`.
.. _activities/chatter:
Enter a title for the activity in the :guilabel:`Summary` field, located in the :guilabel:`Schedule
Activity` pop-up window.
Chatter
-------
To assign the activity to a different user, select a name from the :guilabel:`Assigned to` drop-down
menu. Otherwise, the user creating the activity is automatically assigned.
Activities can be created from the chatter on any record.
Lastly, feel free to add any additional information in the optional :guilabel:`Log a note...` field.
To schedule a new activity, click the :guilabel:`Activities` button, located at the top of the
chatter. In the :guilabel:`Schedule Activity` pop-up window that appears, :ref:`fill out the
Schedule Activity form <activities/form>`.
.. image:: activities/chatter.png
:align: center
:alt: New activity type form.
.. _activities/kanban:
Kanban view
-----------
Another way that activities are created is from the Kanban view in an application.
.. image:: activities/kanban.png
:align: center
:alt: The Kanban icon in the top menu, highlighted.
To do so, click on the :guilabel:`🕘 (clock)` icon located at the bottom of an individual record.
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
<activities/form>`.
.. image:: activities/schedule-kanban-activity.png
:align: center
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
.. note::
The :guilabel:`Due Date` field on the :guilabel:`Schedule Activity` pop-up window auto-populates
based on the configuration settings for the selected :guilabel:`Activity Type`. However, this
date can be changed by selecting a day on the calendar in the :guilabel:`Due Date` field.
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
Lastly, click one of the following buttons:
.. _activities/list:
- :guilabel:`Schedule`: adds the activity to the chatter under :guilabel:`Planned activities`.
- :guilabel:`Mark as Done`: adds the details of the activity to the chatter under :guilabel:`Today`.
The activity is not scheduled, it is automatically marked as completed.
- :guilabel:`Done \& Schedule Next`: adds the task under :guilabel:`Today` marked as done, and
opens a new activity window.
- :guilabel:`Discard`: discards any changes made on the pop-up window.
List view
---------
.. image:: activities/schedule-pop-up.png
:alt: View of CRM leads and the option to schedule an activity.
Activities can also be created from a list view.
If the :guilabel:`Activities` column is hidden, reveal it using the :guilabel:`(additional options
toggle)` icon in the far-right of the top row, represented by two horizontal lines with two dots.
Then, click on the :guilabel:`🕘 (clock)` icon for the record the activity is being added to, then
click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form
<activities/form>` that appears.
.. note::
Depending on the activity type, the :guilabel:`Schedule` button may be replaced by a
:guilabel:`Save` button, or an :guilabel:`Open Calendar` button.
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
Scheduled activities are added to the chatter for the record under :guilabel:`Planned activities`.
.. image:: activities/schedule-list-activity.png
:align: center
:alt: List view of the CRM pipeline and the option to schedule an activity.
.. image:: activities/chatter-activities.png
:alt: View of CRM leads and the option to schedule an activity.
.. _activities/activity:
Activities can also be scheduled from the kanban, list, or activities view of an application.
Activity view
-------------
.. tabs::
Most applications in Odoo have an *Activity* view available. If available, a :guilabel:`🕘 (clock)`
activity icon is visible in the top-right of the main menu bar.
.. tab:: Kanban view
To open the activity view, click the :guilabel:`🕘 (clock)` activity icon.
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
then :guilabel:`Schedule An Activity`, and proceed to fill out the pop-up form.
.. image:: activities/activities.png
:align: center
:alt: Top-right menu with the Activities icon called out.
.. image:: activities/schedule-kanban-activity.png
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
In this view, all the available activities are listed in the columns, while the horizontal entries
represent all the individual records.
.. tab:: List view
Activities that appear green have a due date in the future, activities that appear orange are due
today, while activities appearing red are overdue.
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
then :guilabel:`Schedule An Activity`. If the record already has an activity scheduled, the
clock icon may be replaced by a :guilabel:`📞 (phone)` or an :guilabel:`✉️ (envelope)` icon.
Color bars in each column represent records for specific activity types, and display a number
indicating how many activities are scheduled for that type.
.. image:: activities/schedule-list-activity.png
:alt: List view of the CRM pipeline and the option to schedule an activity.
.. tab:: Activity view
To open the activity view for an application, select the :guilabel:`🕘 (clock)` icon from the
menu bar anywhere in the database. Select any application from the drop-down menu, and click
the :guilabel:`🕘 (clock)` icon for the desired app.
.. image:: activities/schedule-activity-view-menu.png
:alt: Activity menu drop down with focus on where to open activity view for CRM.
Select a record on which to schedule an activity. Move across the row to find the desired
activity type, then click the :guilabel:` (plus sign)`.
.. image:: activities/schedule-activity-view.png
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
If multiple activity types are scheduled for a record, a number appears in the box, indicating the
total number of scheduled activities.
.. note::
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
regardless of the activity type, or the view.
- Activities that appear in **green** indicate a due date sometime in the future.
- **Yellow** indicates that the activity's due date is today.
- **Red** indicates that the activity is overdue and the due date has passed.
To schedule an activity for a record, hover over the corresponding field, and a :guilabel:` (plus
sign)` appears. Click the :guilabel:` (plus sign)`, and then :ref:`fill out the Schedule Activity
form <activities/form>`.
For example, if an activity is created for a phone call, and the due date passes, the activity
appears with a red phone in list view, and a red clock on the kanban view.
.. image:: activities/activity-view.png
:align: center
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
View scheduled activities
=========================
.. _activities/form:
To view scheduled activities, open either the :menuselection:`Sales app` or :menuselection:`CRM app`
and click the :guilabel:`🕘 (clock)` icon, located to the far-right side of the other view options.
Schedule Activity form
----------------------
Doing so opens the activities menu, showcasing all the scheduled activities for the user, by
default. To show all activities for every user, remove the :guilabel:`My Pipeline` filter from the
:guilabel:`Search...` bar.
Activities can be scheduled from many different places, such as from the :ref:`chatter
<activities/chatter>` of a record, or from one of multiple views in an application, when available:
the :ref:`Kanban view <activities/kanban>`, :ref:`list view <activities/list>`, or :ref:`activity
view <activities/activity>`.
To view a consolidated list of activities separated by the application where they were created, and
by deadline, click the :guilabel:`🕘 (clock)` icon on the header menu to see the activities for that
specific application in a drop-down menu.
Enter the following information on the form:
The possibility to :guilabel:`Add new note` and :guilabel:`Request a Document` appear at the bottom
of this drop-down menu, when the :guilabel:`🕘 (clock)` icon on the header menu is clicked.
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
Depending on what other applications are installed, additional options may be available.
.. image:: activities/activities-menu.png
:alt: View of CRM leads page emphasizing the activities menu.
.. note::
Individual applications have a list of dedicated :ref:`activity types <activities/types>`. For
example, installing the *Sales* application makes :guilabel:`Order Upsell` available, while
installing the *Sign* application makes :guilabel:`Request Signature` available.
Configure activity types
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
user to the activity, select them from the drop-down menu.
- :guilabel:`Notes`: add any additional information for the activity in this field.
When the :guilabel:`Schedule Activity` pop-up window is completed, click one of the following
buttons:
- :guilabel:`Open Calendar`: opens the user's calendar to add and schedule the activity.
Click on the desired date and time for the activity, and a :guilabel:`New Event` pop-up window
appears. The summary from the *Schedule Activity* pop-up window populates the :guilabel:`Title`
field.
Enter the information in the :guilabel:`New Event` pop-up window, then click :guilabel:`Save &
Close` to schedule it. Once scheduled, the activity is added to the chatter under the
:guilabel:`Planned Activities` section.
.. important::
The :guilabel:`Open Calendar` button **only** appears if the :guilabel:`Activity Type` is set
to either :guilabel:`Call` or :guilabel:`Meeting`.
- :guilabel:`Schedule`: schedules the activity, and adds the activity to the chatter under
:guilabel:`Planned Activities`.
- :guilabel:`Schedule & Mark as Done`: adds the details of the activity to the chatter under
:guilabel:`Today`. The activity is not scheduled, and is automatically marked as done.
- :guilabel:`Done & Schedule Next`: adds the details of the activity to the chatter under
:guilabel:`Today`. The activity is not scheduled, is automatically marked as done, and a new
:guilabel:`Schedule Activity` pop-up window appears.
- :guilabel:`Cancel`: discards any changes made on the :guilabel:`Schedule Activity` pop-up window.
.. image:: activities/schedule-pop-up.png
:align: center
:alt: View of CRM leads and the option to schedule an activity.
.. _activities/all:
All scheduled activities
========================
To configure the types of activities in the database, go to :menuselection:`Settings app --> Discuss
--> Activities --> Activity Types`.
To view a consolidated list of activities, organized by application, click the :guilabel:`🕘
(clock)` icon in the header menu, located in the top-right.
If any activities are scheduled, the number of activities appear in a red bubble on the
:guilabel:`🕘 (clock)` icon.
All activities for each application are further divided into subsections, indicating where in the
application the activity is to be completed. Each sub-section lists the number of scheduled
activities that are :guilabel:`Late`, due :guilabel:`Today`, and scheduled in the
:guilabel:`Future`.
.. example::
In the *Time Off* application, one activity is scheduled to be done in the *All Time Off*
requests dashboard, and six activities are scheduled to be done in the *Allocations* dashboard.
These requests appear in two separate lists in the all activities drop-down menu: one labeled
`Time Off` and one labeled `Time Off Allocation`.
.. image:: activities/activities-menu.png
:align: center
:alt: The list of activities that is accessed from the main menu bar. Two entries for the Time
Off application are highlighted.
Request a document
------------------
The option to :guilabel:`Request a Document` is available at the bottom of the list of :ref:`all
scheduled activities <activities/all>`, the option to :guilabel:`Request a Document` appears. Click
:guilabel:`Request a Document`, and a :guilabel:`Request a file` pop-up window appears.
Enter the following information on the form:
- :guilabel:`Document Name`: enter a name for the document being requested.
- :guilabel:`Request To`: select the user the document is being requested from using the drop-down
menu.
- :guilabel:`Due Date In`: enter a numerical value indicating when the document is due. Next to
this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default option, to
reveal a drop-down menu. Select the desired time-frame option from the list. The options are
:guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
- :guilabel:`Workspace`: using the drop-down menu, select the specific :ref:`Workspace
<documents/workspaces>` the document is being uploaded to.
- :guilabel:`Tags`: select any desired tags from the drop-down menu. The available tags displayed
are based on the tags configured for the selected :guilabel:`Workspace`.
- :guilabel:`Message`: enter a message to clarify the document request in this field.
When all the fields are completed, click :guilabel:`Request` to send the document request.
.. image:: activities/request-doc.png
:align: center
:alt: The Request a file form, with all fields filled out to request a contract.
.. _activities/types:
Activity types
==============
To view the currently configured types of activities in the database, navigate to
:menuselection:`Settings app --> Discuss section --> Activities setting --> Activity Types`.
.. image:: activities/settings-activities-types.png
:alt: View of the settings page emphasizing the menu activity types.
:align: center
:alt: Activity Types button in the Settings application under the Discuss section.
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
To edit an existing activity type, select it from the list, then click :guilabel:`Edit`. To create a
new activity type, click :guilabel:`Create`.
.. image:: activities/activity-list.png
:align: center
:alt: The list of activity types already configured and available.
At the top of a blank activity type form, start by choosing a :guilabel:`Name` for the new activity
type.
Edit activity types
-------------------
.. image:: activities/new-activity-type.png
:alt: New activity type form.
To edit an existing :ref:`activity type <activities/types>`, click on the activity type, and the
activity type form loads.
Activity settings
-----------------
Make any desired changes to the activity type form. The form automatically saves, but it can be
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
:guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
Action
~~~~~~
Create new activity types
-------------------------
The *Action* field specifies the intent of the activity. Some actions trigger specific behaviors
after an activity is scheduled.
To create a new :ref:`activity type <activities/types>`, click :guilabel:`New` from the
:guilabel:`Activity Types` page, and a blank activity type form loads.
- If :guilabel:`Upload Document` is selected, a link to upload a document is added directly to the
planned activity in the chatter.
- If either :guilabel:`Phonecall` or :guilabel:`Meeting` are selected, users have the option to open
their calendar to schedule a time for this activity.
- If :guilabel:`Request Signature` is selected, a link is added to the planned activity in the
chatter that opens a signature request pop-up window.
Enter a :guilabel:`Name` for the activity type at the top of the form, then enter the following
information on the form.
.. note::
The actions available to select on an activity type vary, depending on the applications currently
installed in the database.
Activity Settings section
~~~~~~~~~~~~~~~~~~~~~~~~~
Default user
~~~~~~~~~~~~
- :guilabel:`Action`: using the drop-down menu, select an action associated with this new activity
type. Some actions trigger specific behaviors after an activity is scheduled, such as:
To automatically assign this activity to a specific user when this activity type is scheduled,
choose a name from the :guilabel:`Default User` drop-down menu. If this field is left blank, the
activity is assigned to the user who creates the activity.
- :guilabel:`Upload Document`: if selected, a link to upload a document is automatically added to
the planned activity in the chatter.
- :guilabel:`Call` or :guilabel:`Meeting`: if selected, users have the option to open their
calendar to select a date and time for the activity.
- :guilabel:`Request Signature`: if selected, a link to open a signature request pop-up window is
automatically added to the planned activity in the chatter. This requires the Odoo *Sign*
application to be installed.
Default summary
~~~~~~~~~~~~~~~
.. note::
Available activity types vary based on the installed applications in the database.
To include notes whenever this activity type is created, enter them into the :guilabel:`Default
Summary` field.
- :guilabel:`Folder`: select a specific :ref:`workspace <documents/workspaces>` folder to save a
document to. This field **only** appears if :guilabel:`Upload Document` is selected for the
:guilabel:`Action`.
.. note::
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
included when an activity is created. However, they can be altered before the activity is
scheduled or saved.
Using the drop-down menu, select the :guilabel:`Folder` the document is saved to.
Next activity
-------------
- :guilabel:`Default User`: select a user from the drop-down menu to automatically assign this
activity to the selected user when this activity type is scheduled. If this field is left blank,
the activity is assigned to the user who creates the activity.
- :guilabel:`Default Summary`: enter a note to include whenever this activity type is created.
To automatically suggest, or trigger, a new activity after an activity has been marked complete, the
:guilabel:`Chaining Type` must be set.
.. note::
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
included when an activity is created. However, they can be altered before the activity is
scheduled or saved.
Suggest next activity
- :guilabel:`Keep Done`: tick this checkbox to keep activities that have been marked as `Done`
visible in the :ref:`activity view <activities/activity>`.
- :guilabel:`Default Note`: enter any notes to appear with the activity.
Next Activity section
~~~~~~~~~~~~~~~~~~~~~
In the :guilabel:`Chaining Type` field, select :guilabel:`Suggest Next Activity`. Upon doing so, the
field underneath changes to: :guilabel:`Suggest`. Click the :guilabel:`Suggest` field drop-down menu
to select any activities to recommend as follow-up tasks to this activity type.
It is possible to have another activity either suggested or triggered. To do so, configure the
:guilabel:`Next Activity` section.
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
deadline`.
- :guilabel:`Chaining Type`: select either :guilabel:`Suggest Next Activity` or :guilabel:`Trigger
Next Activity` from the drop-down menu. Depending on the selected option, either the
:guilabel:`Suggest` or :guilabel:`Trigger` field is displayed.
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
.. note::
The :guilabel:`Chaining Type` field does **not** appear if :guilabel:`Upload Document` is
selected for the :guilabel:`Action`.
When all configurations are complete, click :guilabel:`Save`.
- :guilabel:`Suggest/Trigger`: depending on what is selected for the :guilabel:`Chaining Type`, this
field either displays :guilabel:`Suggest` or :guilabel:`Trigger`. Using the drop-down menu, select
the activity to recommend or schedule as a follow-up task to the activity type.
- :guilabel:`Schedule`: configure when the next activity is suggested or triggered.
.. image:: activities/schedule-recommended-activity.png
:alt: Schedule activity popup with emphasis on recommended activities.
First, enter a numerical value indicating when the activity is suggested or triggered.
.. note::
If an activity has the :guilabel:`Chaining Type` set to :guilabel:`Suggest Next Activity`, and
has activities listed in the :guilabel:`Suggest` field, users are presented with recommendations
for activities as next steps.
Next to this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default
option, to reveal a drop-down menu. Select the desired time-frame option from the list. The
options are :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
Trigger next activity
~~~~~~~~~~~~~~~~~~~~~
Lastly, using the drop-down menu, select whether the activity is scheduled or triggered either
:guilabel:`after previous activity deadline` or :guilabel:`after completion date`.
Setting the :guilabel:`Chaining Type` to :guilabel:`Trigger Next Activity` immediately launches the
next activity once the previous one is completed.
If :guilabel:`Trigger Next Activity` is selected in the :guilabel:`Chaining Type` field, the field
beneath changes to: :guilabel:`Trigger`. From the :guilabel:`Trigger` field drop-down menu, select
the activity that should be launched once this activity is completed.
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
deadline`.
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
When all configurations are complete, click :guilabel:`Save`.
.. image:: activities/triggered-activities.png
:alt: Schedule new activity popup with emphasis on Done and launch next button.
.. note::
When an activity has the :guilabel:`Chaining Type` set to :guilabel:`Trigger Next Activity`,
marking the activity as `Done` immediately launches the next activity listed in the
:guilabel:`Trigger` field.
.. image:: activities/new-activity.png
:align: center
:alt: A new Activity form with all the fields filled out.
.. seealso::
- :doc:`/applications/productivity/discuss`
- :doc:`/applications/productivity/discuss/team_communication`
- :doc:`../productivity/discuss`
- :doc:`../productivity/discuss/team_communication`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

@@ -2,166 +2,246 @@
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:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
select the records that should be exported. To select a record, tick the checkbox next to the
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
.. 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. Click the :guilabel:`💾 (floppy drive)` icon to save the
configuration. 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:`⚙️ (Action) --> Import records`.
.. image:: export_import_data/import-button.png
:align: center
:alt: Action 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 +256,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 +449,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 +466,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: 22 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: 47 KiB

@@ -1,6 +1,6 @@
=====================
In-app purchase (IAP)
=====================
======================
In-app purchases (IAP)
======================
.. |IAP| replace:: :abbr:`IAP (In-app purchases)`
@@ -22,7 +22,9 @@ the service in the app to activate it. However, each service requires its own pr
when they run out, users **must** :ref:`buy more <iap/buying_credits>` in order to keep using it.
.. note::
Users with an Enterprise version of Odoo Online get free credits to test IAP features.
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:
@@ -31,7 +33,7 @@ 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 provided by Odoo:
The following |IAP| services are offered by Odoo:
- :guilabel:`Documents Digitization`: digitizes scanned or PDF vendor bills, expenses, and resumes
with OCR and AI.
@@ -40,9 +42,12 @@ The following |IAP| services are provided by Odoo:
- :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, visit the `Odoo IAP Catalog
<https://iap.odoo.com/iap/all-in-app-services>`_.
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
----------------
@@ -53,7 +58,7 @@ settings. To use a service, simply interact with it wherever it appears in the d
.. 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:`📱 (phone) SMS` icon within the database.
This can be done by clicking the :guilabel:`📱 SMS` icon within the database.
.. image:: in_app_purchase/sms-icon.png
:align: center
@@ -61,16 +66,17 @@ settings. To use a service, simply interact with it wherever it appears in the d
One way to utilize the *SMS* |IAP| service with Odoo is showcased in the following steps:
#. 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.
#. Hover the mouse over the :guilabel:`Phone` or :guilabel:`Mobile` field, and a :guilabel:`📱
(phone) SMS` icon appears to the right.
#. Click the :guilabel:`📱 (phone) SMS` icon, and a :guilabel:`Send SMS Text Message` pop-up
window appears.
#. Type a message in the :guilabel:`Message` field of the :guilabel:`Send SMS Text Message`
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.
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
@@ -80,10 +86,10 @@ settings. To use a service, simply interact with it wherever it appears in the d
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 </applications/sales/crm/acquire_leads/lead_mining>`
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
- :doc:`Enrich your contacts base with Partner Autocomplete
</applications/sales/crm/optimize/partner_autocomplete>`
- :doc:`SMS essentials </applications/marketing/sms_marketing/essentials/sms_essentials>`
<../sales/crm/optimize/partner_autocomplete>`
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
.. _in_app_purchase/credits:
@@ -113,7 +119,7 @@ Credits are purchased in *Packs* from the `Odoo IAP Catalog
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
</applications/marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
.. _iap/buying_credits:
@@ -124,9 +130,10 @@ If there are not enough credits to perform a task, the database automatically pr
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 --> Search IAP --> View My Services`.
by navigating to the :menuselection:`Settings app --> Contacts section`, and beneath the
:guilabel:`Odoo IAP` setting, click :guilabel:`View My Services`.
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
Doing so reveals an :guilabel:`IAP Service` 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.
@@ -135,32 +142,29 @@ Manually buy credits
To manually buy credits in Odoo, follow these steps:
#. Go to the :menuselection:`Settings application`.
#. Type `IAP` in the search bar.
#. Click :guilabel:`View My Services`.
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/view-services.png
:align: center
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
.. image:: in_app_purchase/view-services.png
:align: center
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
#. Doing so reveals an :guilabel:`IAP Account` 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.
#. On the :guilabel:`Account Information` page, click the :guilabel:`Buy Credit` button.
Doing so reveals an :guilabel:`IAP Account` 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.
.. image:: in_app_purchase/account-info.png
:align: center
:alt: The Account Information page for an IAP service showing the Buy Credit button.
On the :guilabel:`Account Information` 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.
#. 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.
.. 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.
.. 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.
#. Once the transaction is complete, the credits are available for use in the database.
Once the transaction is complete, the credits are available for use in the database.
.. _in_app_purchase/low-credits:
@@ -170,23 +174,19 @@ Low-credit notification
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:
#. Go to the :menuselection:`Settings application`.
#. Type `IAP` in the search bar.
#. Click :guilabel:`View My Services`.
#. 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 :guilabel:`Account Information`
page.
#. On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` box. Doing so reveals
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
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`.
.. image:: in_app_purchase/low-credits.png
:align: center
:alt: Odoo will send an email alert when credits for this service fall below the threshold.
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 :guilabel:`Account Information` page.
#. In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the minimum
threshold for this service.
#. In the :guilabel:`Warning Email` field, enter the email address that should receive the
notification.
On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` checkbox. Doing so reveals
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the
minimum threshold for this service. In the :guilabel:`Warning Email` field, enter the email address
that receives the notification.
Odoo sends a low-credit alert to the :guilabel:`Warning Email` when the balance of credits falls
below the amount listed as the :guilabel:`Threshold`.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

+184 -70
View File
@@ -1,100 +1,214 @@
=========================
Search and filter records
=========================
=================================
Search, filter, and group records
=================================
Odoo uses filters to include only the most relevant records depending on the purpose of the view you
are on. However, you can edit the default filter or search for specific values.
.. _search/preconfigured-filters:
Preconfigured filters
=====================
You can modify the default selection of records by clicking :guilabel:`Filters` and selecting one or
several **preconfigured filters**.
.. example::
On the Sales Analysis report, only records at the sales order stage are selected by default.
However, you could *also* include records at the quotation stage by selecting
:guilabel:`Quotations`. Furthermore, you could *only* include records from a specific year, for
example *2022*, by selecting :menuselection:`Order Date --> 2022`.
.. image:: search/preconfigured-filters.png
:align: center
:alt: Using preconfigured filters on the Sales Analysis report
.. note::
If you select preconfigured filters from the same group (i.e., that are *not* separated by an
horizontal line), the records can match *any* condition to be included. However, if you select
filters from different groups, the records have to match *all* condition to be included.
.. _search/custom-filters:
Custom filters
==============
You can create custom filters using most fields present on the model by clicking
:menuselection:`Filters --> Add Custom Filter`, selecting a field, an operator, a value, and
clicking :guilabel:`Apply`.
.. example::
You could *only* include records from a single salesperson on the Sales Analysis report, for
example *Mitchell Admin*, by selecting :guilabel:`Salesperson` as the field, :guilabel:`is equal
to` as the operator, and typing `Mitchell Admin` as the value.
.. image:: search/custom-filter.png
:align: center
:alt: Using a custom filter on the Sales Analysis report
.. note::
If the records should *only* match one of several conditions, click :guilabel:`Add a condition`
before applying a custom filter. If the records should match *all* conditions, add new custom
filters instead.
Odoo allows for the searching, filtering, and grouping of records in a view to display only the most
relevant records. The search bar is located at the top of the view, start typing to :ref:`search for
values <search/values>`, or click the :guilabel:`🔽 (down arrow)` icon to access the :ref:`Filter
<search/filters>`, :ref:`Group By <search/group>`, and :ref:`Favorites <search/favorites>` drop-down
menus.
.. _search/values:
Search for values
=================
You can use the search field to quickly look for specific values and add them as a filter. Either
type the full value you are searching for and select the desired field, or type a part of the
value, click the dropdown button (:guilabel:`⏵`) before the chosen field, and select the exact
value you are looking for.
Use the search field to quickly look for specific values, and add them as a filter. Type the value
to search for, and select the desired option from the drop-down menu to apply the search filter.
.. example::
Instead of adding a custom filter to select records where *Mitchell Admin* is the salesperson on
the Sales Analysis report, you could search for `Mitch`, click the dropdown button
(:guilabel:`⏵`) next to :guilabel:`Search Salesperson for: Mitch`, and select
:guilabel:`Mitchell Admin`.
Instead of adding a :ref:`custom filter <search/custom-filters>` to select records where
*Mitchell Admin* is the salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to
:guilabel:`Search Salesperson for: Mitch`, and select :guilabel:`Mitchell Admin`.
.. image:: search/search-values.png
:align: center
:alt: Searching for a specific value on the Sales Analysis report
.. note::
Using the search field is equivalent to using the *contains* operator when adding a custom
filter. If you enter a partial value and directly select the desired field, *all* records
containing the characters you typed for the selected field will be included.
Using the search field is equivalent to using the *contains* operator when adding a :ref:`custom
filter <search/custom-filters>`. If a partial value is entered, and the desired field is directly
selected (without selecting the :guilabel:`⏵ (right arrow)`), *all* records containing the typed
characters for the selected field are included.
.. _search/filters:
Filters
=======
Filters are used to select records that meet specific criteria. The default selection of records is
specific to each view, but can be modified by selecting one (or several) :ref:`preconfigured filters
<search/preconfigured-filters>`, or by adding a :ref:`custom filter <search/custom-filters>`.
.. _search/preconfigured-filters:
Preconfigured filters
---------------------
Modify the default selection of records by clicking the :guilabel:`🔽 (down arrow)` icon from the
search bar, and selecting one (or several) *preconfigured filters* from the :guilabel:`Filters`
drop-down menu.
.. example::
On the *Sales Analysis* report (:menuselection:`Sales app --> Reporting --> Sales`), only records
that are at the *sales order* stage, with an *order date* within the last 365 days, are selected
by default.
To also include records at the *quotation* stage, select :guilabel:`Quotations` from the
:guilabel:`Filters`.
Furthermore, to *only* include sales order and quotation records from a specific year, like
2024, for example, first remove the existing `Order Date: Last 365 Days` filter, by clicking the
:guilabel:`❌ (remove)` icon, then select :menuselection:`Order Date --> 2024`.
.. image:: search/preconfigured-filters.png
:align: center
:alt: Using preconfigured filters on the Sales Analysis report
.. note::
The preconfigured :guilabel:`Filters` are grouped, and each group is separated by a horizontal
line. Selecting preconfigured filters from the same group allows records to match *any* of the
applied conditions. However, selecting filters from different groups requires records to match
*all* of the applied conditions.
.. _search/custom-filters:
Custom filters
--------------
If the :ref:`preconfigured filters <search/preconfigured-filters>` are not specific enough, add a
custom filter. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select
:menuselection:`Filters --> Add Custom Filter`.
The :guilabel:`Add Custom Filter` pop-up window displays the matching option, filter rule, and a
toggle to :guilabel:`Include archived` records.
.. image:: search/custom-filter.png
:align: center
:alt: The Add Custom Filter pop-up window.
The default matching configuration is to :guilabel:`Match any of the following rules`, indicating
that each filter rule is applied independently. To change the matching configuration to
:guilabel:`Match all of the following rules`, at least two filter rules must be added to the custom
filter.
- :guilabel:`Match all 🔽 of the following rules`: **all** of the filter rules must be met.
Logically, this is an *AND* (`&`) operation.
- :guilabel:`Match any 🔽 of the following rules`: **any** of the filter rules can be met.
Logically, this is an *OR* (`|`) operation.
By default, a single filter rule is added to the custom filter. The following describes the
structure of a filter rule:
#. The first inline field is the *field name* to filter by. Some fields have refined parameters that
are nested within another field. These fields have an :guilabel:`> (arrow)` icon beside them,
which can be selected to reveal the nested fields.
#. The second inline field is the conditional *operator* used to compare the field name to the
value. The :ref:`available conditional operators <reference/orm/domains>` are specific to the
field's data type.
#. The third inline field is the variable *value* of the field name. The value input may appear as a
drop-down menu, a text input, a number input, a date/time input, a boolean selector, or it may be
blank, depending on the operator used and the field's data type.
Three inline buttons are also available to the right of the rule's filter criteria:
#. :guilabel:` (plus sign)`: adds a new rule below the existing rule.
#. :guilabel:`(Add branch)`: adds a new group of rules below the existing rule, with the
:guilabel:`any` and :guilabel:`all` matching options available to define how each rule within
this branch is applied to the filter. If the matching option is set to the same as the parent
group, the fields are moved to join the parent group.
.. example::
If the matching option is set to :guilabel:`Match all 🔽 of the following rules`, and a new
branch is added with its matching option changed from :guilabel:`any 🔽 of` to :guilabel:`all
🔽 of`, the newly-added branch disappears, and its group of rules are moved to the parent
group.
#. :guilabel:`🗑️ (garbage can)`: deletes the node. If a branch node is deleted, all children of
that node are deleted, as well.
A new filter rule can be added to the custom filter by clicking the :guilabel:`New Rule` button.
Once the filter criteria are defined, click :guilabel:`Add` to add the custom filter to the view.
.. example::
To target all leads and opportunities from the :menuselection:`CRM` app that are in the *Won*
stage, and have an expected revenue greater than $1,000, the following should be entered:
:guilabel:`Match all 🔽 (down arrow) of the following rules:`
#. :guilabel:`Stage` :guilabel:`is in` :guilabel:`Won`
#. :guilabel:`Expected Revenue` :guilabel:`>` `1,000`
#. :guilabel:`any 🔽 (down arrow)` :guilabel:`of:`
- :guilabel:`Type` :guilabel:`=` :guilabel:`Lead`
- :guilabel:`Type` :guilabel:`=` :guilabel:`Opportunity`
.. image:: search/custom-filter-example.png
:align: center
:alt: Adding a custom filter to filter specific records in CRM.
.. tip::
Activate :ref:`developer-mode` to reveal each field's technical name and data type, as well as
the :guilabel:`# Code editor` text area below the filter rules, to view and edit the domain
manually.
.. _search/group:
Group records
=============
You can click :guilabel:`Group By` below the search field to cluster records together according to
one of the **preconfigured groups**.
The display of records in a view can be clustered together, according to one of the *preconfigured
groups*. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select one of
the :guilabel:`Group By` options from the drop-down menu.
.. example::
You could group the records by salesperson on the Sales Analysis report by clicking
:guilabel:`Group By` and selecting :guilabel:`Salesperson`. No records are filtered out.
To group the records by salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
Reporting --> Sales`), click the :guilabel:`Salesperson` option from the :guilabel:`Group By`
drop-down menu. The view changes to group the records by salesperson, without filtering out any
records.
.. image:: search/group.png
:align: center
:alt: Grouping records on the Sales Analysis report
You can **customize groups** by using a wide selection of fields present on the model. To do so,
click :menuselection:`Group By --> Add Custom Group`, select a field, and click :guilabel:`Apply`.
It is possible to *customize groups* by using a field present on the model. To do so, click
:menuselection:`Add Custom Group`, and select a field from the drop-down menu.
.. note::
You can use several groups at the same time. The first group you select is the main cluster, the
next one you add further divides the main group's categories, and so on.
Several groups can be used at the same time. The first group that is selected is the main
cluster, the next one that is added further divides the main group's categories, and so on.
Furthermore, filters and groups can be used together to refine the view even more.
.. _search/favorites:
Favorites
=========
Favorites are a way to save a specific search for future use, or as the new default filter for the
view.
To save the current view as a favorite, click the :guilabel:`🔽 (down arrow)` icon in the search
bar, then select the :guilabel:`Save current search` drop-down menu to display the following
options:
- Filter name: name of the favorited search.
- :guilabel:`Default filter`: sets the favorited search as the default filter for the view.
- :guilabel:`Shared`: makes the favorited search available to all users. By default, the favorited
search is only available to the user who created it.
Once the options are set, click :guilabel:`Save` to save the favorited search.
.. image:: search/favorites.png
:align: center
:alt: Saving a favorite search on the Sales Analysis report
Saved favorites can be accessed by clicking the :guilabel:`🔽 (down arrow)` icon in the search bar,
then selecting the saved filter in the :guilabel:`Favorites` drop-down menu. To remove a saved
favorite, click the :guilabel:`🗑️ (garbage can)` icon next to the favorited search.
.. tip::
To view *all* favorited searches, first activate :ref:`developer-mode`, and navigate to
:menuselection:`Settings app --> Technical --> User Interface: User-defined Filters`. From here,
all favorited searches can be viewed, edited, archived, or deleted.
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

@@ -27,11 +27,19 @@ Odoo supports multiple file formats to import transactions:
- Quicken Interchange Format (.QIF);
- Belgium: Coded Statement of Account (.CODA).
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
click on :guilabel:`Import Transactions`.
To import a file, go to the **Accounting Dashboard**, and in the :guilabel:`Bank` journal,
click on :guilabel:`Import File`.
.. image:: transactions/import-transactions.png
:alt: Import bank transactions from the bank journal
.. tip::
Alternatively, you can also:
- click :guilabel:`⋮` on the :guilabel:`Bank` journal and select :guilabel:`Import file`;
- or access the transaction list by clicking :guilabel:`⋮` on the :guilabel:`Bank` journal and
selecting :guilabel:`Transactions`, then click the gear icon :guilabel:`(⚙)` and select
:guilabel:`Import records`.
.. image:: transactions/import-transactions.png
:alt: Import bank transactions from the bank journal
Next, select the file and upload it.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 17 KiB

@@ -55,7 +55,8 @@ Generate deferral entries on validation
.. tip::
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
month as the :guilabel:`Invoice Date`.
month as the :guilabel:`Invoice Date`. Deferred revenue entries are posted from the invoice
date and are displayed in the report accordingly.
For each line of the invoice that should be deferred, specify the start and end dates of the
deferral period.
@@ -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
============================
@@ -7,7 +7,7 @@ inalterable**, meaning that once an entry has been posted, it can no longer be c
To do so, Odoo can use the **SHA-256 algorithm** to create a unique fingerprint for each posted
entry. This fingerprint is called a hash. The hash is generated by taking an entry's essential data
(the values of the `date`, `journal_id`, `company_id`, `debit`, `credit`, `account_id`, and
(the values of the `name`, `date`, `journal_id`, `company_id`, `debit`, `credit`, `account_id`, and
`partner_id` fields), concatenating it, and inputting it to the SHA-256 hash function, which then
outputs a fixed size (256-bit) string of characters. The hash function is deterministic (:dfn:`the
same input always creates the same output`): any minor modification to the original data would
@@ -26,16 +26,25 @@ would break the hash chain.
.. _data-inalterability/lock:
Lock posted entries with hash
=============================
Lock entries with hash
======================
To start using the hashing function, go to :menuselection:`Accounting --> Configuration > Journals`.
Open the journal for which you want to activate the feature, go to the :guilabel:`Advanced Settings`
tab, and enable :guilabel:`Lock Posted Entries with Hash`.
tab, and enable :guilabel:`Lock Sent Invoices with Hash` for sale journals, or
:guilabel:`Lock Entries Manually` for purchase and general journals.
For sale journals, the entry is automatically locked once it is sent. You can also click on the
button :guilabel:`Lock` on the invoice to lock it without sending it. For sale, purchase, and
general journals, the locking is always done manually using the same button.
To compute the hash of an entry, Odoo retrieves the predecessor entries of the chain (i.e., the
entries with the same sequence prefix) and hashes them in a continuous way from the last hashed
entry to the new entry to hash.
.. warning::
Once you post an entry on a locked journal, you cannot disable the feature anymore, nor edit any
posted entry.
Once you lock an entry in a locked journal, you cannot disable the feature anymore, nor edit any
locked entry.
.. _data-inalterability/report:
@@ -46,9 +55,8 @@ To download the data inalterability check report, go to :menuselection:`Accounti
--> Settings --> Reporting` and click on :guilabel:`Download the Data Inalterability Check Report`.
The report's first section is an overview of all your journals and their configuration. Under the
inalterability check column, you can see whether or not a journal's posted entries are locked with
a hash (V) or not (X). The coverage column tells you when a journal's posted entries started being
locked.
inalterability check column, you can see whether or not a journal's entries are locked with a hash
(V) or not (X). The coverage column tells you when a journal's entries started being locked.
.. image:: data_inalterability/journal-overview.png
:align: center
@@ -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
@@ -307,6 +307,32 @@ directly to a product line.
.. image:: taxes/list-sequence.png
:alt: The taxes' sequence in Odoo determines which tax is applied first
Extra taxes
===========
"Extra taxes" is a broad term referring to additional taxes beyond the standard or basic taxes
imposed by governments. These extra taxes can be **luxury** taxes, **environmental** taxes,
**import** or **export duties** taxes, etc.
.. note::
The method to compute these taxes varies across different countries. We recommend consulting your
country's regulations to understand how to calculate them for your business.
To compute an extra tax in Odoo, :ref:`create a tax <taxes/configuration>`, enter a tax name, select
a :ref:`Tax Computation <taxes/configuration>`, set an :guilabel:`Amount`, and in the
:guilabel:`Advanced Options` tab, check :guilabel:`Affect Base of Subsequent Taxes`. Then, drag and
drop the taxes in the :ref:`order they should be computed <taxes/base-subsequent>`.
.. example::
- In Belgium, the formula to compute an environmental tax is: `(product price + environmental
tax) x sales tax`. Therefore, our environmental tax has to come *before* the sales tax in the
computation sequence.
- In our case, we created a 5% environmental tax (Ecotax) and put it *before* the Belgian base
tax of 21%.
.. image:: taxes/ecotax.png
:alt: Environmental tax sequence in Belgium.
.. seealso::
- :doc:`taxes/fiscal_positions`
- :doc:`taxes/B2B_B2C`
@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@@ -55,7 +55,8 @@ Generate deferral entries on validation
.. tip::
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
month as the :guilabel:`Bill Date`.
month as the :guilabel:`Bill Date`. Deferred expense entries are posted from the bill date and
are displayed in the report accordingly.
For each line of the bill that should be deferred, specify the start and end dates of the deferral
period.
@@ -948,6 +948,73 @@ the corresponding layout and fiscal stamps stated in the :ref:`Invoice printed r
.. seealso::
:doc:`Client account creation <../../websites/ecommerce/checkout_payment_shipping/checkout>`
Liquidity product direct sales
------------------------------
Liquidity product direct sales are used for sales involving third parties. For such
sales, the seller and the proprietary company of the goods can each register their corresponding
sales and purchases.
.. note::
:ref:`Install <general/install>` the *Argentinian Electronic Invoicing* module (`l10n_ar_edi`) to
use this feature.
Configuration
~~~~~~~~~~~~~
Purchase journal
****************
A purchase journal is needed to generate an electronic vendor bill with a document type *Liquidity
Product*. This journal needs to be synchronized with the AFIP as it will be used to generate the
liquidity product electronic document.
To modify the existing purchase journal or create a new one, navigate to :menuselection:`Accounting
--> Configuration --> Journals`. Then, select the existing purchase journal or click the
:guilabel:`New` button, and fill in the following required information:
- :guilabel:`Type`: select :guilabel:`Purchase`.
- :guilabel:`Use Documents`: check this field to to be able select the electronic document type.
- :guilabel:`Is AFIP POS`: check this field to be able to generate electronic documents.
- :guilabel:`AFIP POS System`: select :guilabel:`Electronic Invoice - Web Service` from the
drop-down menu in order to send the electronic document to AFIP via web service.
- :guilabel:`AFIP POS Number`: is the number configured in the AFIP to identify the operations
related to this AFIP POS.
- :guilabel:`AFIP POS Address`: is the field related to the commercial address registered for the
POS, which is usually the same address as the company. For example, if a company has multiple
stores (fiscal locations) then the AFIP will require the company to have one AFIP POS per
location. This location will be printed in the invoice report.
.. image:: argentina/l10n-ar-purchase-journal.png
:align: center
:alt: l10n_ar Purchase Journal Configuration.
Sales journal
*************
A sales journal is needed to register the invoice when a product is sold to a third party that will
then sell the same product. This journal will not be synced with AFIP as the invoice will not be
electronic.
To modify the existing sales journal or create a new one, navigate to
:menuselection:`Accounting --> Configuration --> Journals`. Then, selecting the sales journal or
click the :guilabel:`New` button, and fill in the following required information:
- :guilabel:`Type`: select :guilabel:`Sales`.
- :guilabel:`Use Documents`: check this field on the journal to select the electronic document type
(in this case the electronic invoice).
.. image:: argentina/l10n-ar-sales-journal.png
:align: center
:alt: l10n_ar Sales Journal Configuration.
Invoicing flow
~~~~~~~~~~~~~~
Once the configurations are all set, the *Liquidity Product Vendor Bill* will be generated by the
company that is selling the product on behalf of another party. For example, a distributor of a
specific product.
Reports
=======
@@ -965,11 +1032,10 @@ VAT reports
Sales VAT book
~~~~~~~~~~~~~~
In this report, all the sales are recorded, which are taken as the basis for the accounting records
to determine the VAT (Tax Debit).
The :guilabel:`Sales VAT` book report can be exported in a `.zip` file :guilabel:`VAT BOOK (ZIP)`
button in the top left, which contains `.txt` files to upload in the AFIP portal.
This report records all the sales, which are taken as the basis for the accounting records
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
to the AFIP portal.
.. image:: argentina/sales-vat-book.png
:align: center
@@ -978,8 +1044,9 @@ button in the top left, which contains `.txt` files to upload in the AFIP portal
Purchases VAT book
~~~~~~~~~~~~~~~~~~
The :guilabel:`Purchases VAT` book report can be exported in a `.zip` file :guilabel:`VAT BOOK
(ZIP)` button in the top left, which contains `.txt` files to upload in the AFIP portal.
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
portal.
.. image:: argentina/purchases-vat-book.png
:align: center
@@ -988,7 +1055,7 @@ The :guilabel:`Purchases VAT` book report can be exported in a `.zip` file :guil
VAT summary
~~~~~~~~~~~
Pivot table designed to check the monthly VAT totals. This report is for internal usage, it is not
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
sent to the AFIP.
.. image:: argentina/vat-summary.png
@@ -1002,7 +1069,7 @@ IIBB - Sales by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
corresponding taxes to pay, therefore it is not sent to the AFIP.
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
.. image:: argentina/iibb-sales-jurisdiction.png
:align: center
@@ -1012,7 +1079,7 @@ IIBB - Purchases by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
corresponding taxes to pay, therefore it is not sent to the AFIP.
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
.. image:: argentina/iibb-purchases-jurisdiction.png
:align: center
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@@ -522,7 +522,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.
@@ -532,7 +532,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
@@ -745,6 +745,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
--------------
@@ -61,11 +61,28 @@ localization:
<../accounting/customer_invoices/electronic_invoicing>`, based on the Technical
documentation published by the SRI. The authorized documents are: Invoices, Credit Notes,
Debit Notes, Withholdings and Purchase liquidations.
* - :guilabel:`Ecuadorian Accounting Reports`
- `l10n_ec_reports`
- Includes all the technical and functional requirements to generate forms 103 and 104.
* - :guilabel:`Ecuador - ATS Report`
- `l10n_ec_reports_ats`
- Includes all the technical and functional requirements to generate the ATS report XML file
ready to be uploaded to the *DIMM Formularios*.
* - :guilabel:`Ecuadorian Website`
- `l10n_ec_website_sale`
- Includes all the technical and functional requirements to generate automatic electronic
invoices from a Website sale.
* - :guilabel:`Ecuadorian Point of Sale`
- `l10n_ec_edi_pos`
- Includes all the technical and functional requirements to generate automatic electronic
invoices from a PoS sale.
.. note::
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
----------------------
@@ -304,8 +321,8 @@ The following options have been automatically configured:
of 103 form if it is a income tax withholding code.
- :guilabel:`Tax Name`:
- For IVA tax, format the name as: `IVA [percent] (104, [form code] [tax support code] [tax support
short name])`
- For IVA tax, format the name as: `IVA [percent] (104, [form code] [tax support code] [tax
support short name])`
- For income tax withholding code, format the name as: `Code ATS [Percent of withhold] [withhold
name]`
@@ -552,13 +569,94 @@ withholdings percentages apply.
withholding of 70% in a new line with the same tax support, the system will allow you as long as
the total of the bases matches the total from the :guilabel:`Vendor Bill`.
eCommerce
---------
The :ref:`ATS Report module <ecuador/ats>` enables the following:
- Choose the SRI Payment Method in each payment method's configuration.
- Customers can manually input their identification type and identification number during the
eCommerce checkout process.
- Automatically generate a valid electronic invoice for Ecuador at the end of the checkout process.
Configuration
~~~~~~~~~~~~~
Website
*******
To generate an invoice after the checkout process, navigate to :menuselection:`Website -->
Configuration --> Settings` and activate the :guilabel:`Automatic Invoice` option found under the
:guilabel:`Invoicing` section.
.. tip::
The invoice's email template can be modified from the :guilabel:`Invoice Email Template` field
under the :guilabel:`Automatic Invoice` option.
.. important::
The sales journal used for invoicing is the first in the sequence of priority in the
:guilabel:`Journal` menu.
Payment providers
*****************
To activate the payment providers that should be used to capture eCommerce payments, navigate to
:menuselection:`Website --> Configuration --> Payment Providers` section and then click on the
:guilabel:`View other providers` button under the :guilabel:`Activate Payments` heading. From here,
each payment provider can be configured by selecting a provider record. Refer to the :doc:`payment
provider <../payment_providers>` documentation for more information.
Payment methods
^^^^^^^^^^^^^^^
To activate one or more payment methods for a payment provider, click :guilabel:`→ Enable Payment
Methods` within the :guilabel:`Configuration` tab of each provider.
When configuring the payment method, it is **mandatory** to set the :guilabel:`SRI Payment Method`
for each method. This field appears after you create and save the payment method for the first
time.
.. note::
Adding the :guilabel:`SRI Payment Method` is necessary to generate correctly the electronic
invoice from an eCommerce sale. Select a **payment method** to access its configuration menu and
the field.
.. seealso::
:doc:`Payment provider <../payment_providers>`
.. image:: ecuador/l10n-ec-sri-payment-method.png
:align: center
:alt: l10n_ec SRI Payment Method.
eCommerce workflow
~~~~~~~~~~~~~~~~~~
Type and identification number
******************************
The client who is making a purchase will have the option to indicate their identification type and
number during the checkout process. This information is required to correctly generate the
electronic invoice after the checkout is completed.
.. image:: ecuador/website-checkout-form.png
:align: center
:alt: Website checkout form.
.. note::
Verification is done to ensure the *Identification Number* field is completed and has the correct
number of digits. For RUC identification, 13 digits are required. For Cédula, 9 digits are
required.
After finishing the checkout process, a confirmed invoice is generated, ready to be sent manually or
asynchronously to the SRI.
Financial Reports
=================
In Ecuador, there are fiscal reports that the company presents to SRI. In Odoo, we have two of the
main financial reports used by companies. These are the reports 103 and 104.
In Ecuador, there are fiscal reports that the company presents to SRI. Odoo supports two of the main
financial reports used by companies: **reports 103** and **104**.
To get these reports go to the :guilabel:`Accounting` app and select :menuselection:`Reporting -->
To get these reports, go to the **Accounting** app and select :menuselection:`Reporting -->
Statements Reports --> Tax Report` and then filter by `Tax Report 103` or `Tax Report 104`.
Report 103
@@ -567,8 +665,8 @@ Report 103
This report contains information of income tax withholdings in a given period, this can be reported
monthly or semi-annually.
You can see the information needed to report, which includes base and tax amounts, which also
includes the tax code within the parenthesis in order to report it to the SRI.
You can see the information needed to report, which includes base and tax amounts, but also includes
the tax code within the parenthesis in order to report it to the SRI.
.. image:: ecuador/103-form.png
:align: center
@@ -580,9 +678,67 @@ Report 104
This report contains information on VAT tax and VAT withholding for a given period, this can be
monthly or semi-annually.
You can see the information needed to report, which includes base and tax amounts, which also
includes the tax code within the parenthesis in order to report it to the SRI.
You can see the information needed to report, which includes base and tax amounts, but also includes
the tax code within the parenthesis to report it to the SRI.
.. image:: ecuador/104-form.png
:align: center
:alt: Report 104 form for Ecuador.
.. _ecuador/ats:
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 depends 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -22,10 +22,10 @@ localization:
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`
* - Italy - E-invoicing
- `l10n_it_edi`
- e-invoice implementation
* - Italy - E-invoicing
- E-invoice implementation
* - Italy - E-invoicing (Withholding)
- `l10n_it_edi_withholding`
- e-invoice withholding
- E-invoice withholding
* - Italy - Accounting Reports
- `l10n_it_reports`
- Country-specific reports
@@ -33,10 +33,6 @@ localization:
- `l10n_it_stock_ddt`
- Transport documents - Documento di Trasporto (DDT)
.. image:: italy/italy-modules.png
:align: center
:alt: Italian localization modules
Company information
-------------------
@@ -49,70 +45,149 @@ section, click :guilabel:`Update info`. From here, fill out the fields:
- :guilabel:`Codice Fiscale`: the fiscal code of the company;
- :guilabel:`Tax System`: the tax system under which the company falls;
.. image:: italy/italy-company.png
:align: center
:alt: Company information to provide
.. image:: italy/company.png
:alt: Company information to be provided
Taxes configuration
-------------------
Many of the e-invoicing features are implemented using Odoo's tax system. As such, taxes must be
properly configured to generate invoices correctly and handle other billing use cases.
The **Italian** localization contains predefined **examples** of taxes for various purposes.
.. _italy/tax-exemption:
Tax exemption
~~~~~~~~~~~~~
The use of sale taxes that amount to **zero percent** (0%) is required by Italian authorities to
keep track of the exact :guilabel:`Tax Exemption Kind (Natura)` and :guilabel:`Law Reference` that
justify the exemption operated on an invoice line.
.. example::
The export tax in the EU can be used as reference (`0% EU`, invoice label `00eu`). It can be
found under :menuselection:`Accounting --> Configuration --> Taxes`. Exports are exempt from VAT,
and therefore, they require :guilabel:`Exoneration` kind and :guilabel:`Law Reference` filled in.
.. image:: italy/tax-exemption.png
:alt: Tax Exemption Settings
.. seealso::
There are many :guilabel:`Tax Exemption Kind (Natura)` and :guilabel:`Law Reference` codes. Make
sure you check the latest version available to get the latest information on:
- `Italian authorities documentation <https://www.agenziaentrate.gov.it/portale/web/guest/aree-tematiche/fatturazione-elettronica>`_
- `Official guide on Tax exemption <https://www.agenziaentrate.gov.it/portale/documents/20143/451259/Guida_compilazione-FE-Esterometro-V_1.9_2024-03-05.pdf/67fe4c2d-1174-e8de-f1ee-cea77b7f5203>`_
.. note::
If you need to use a different kind of exoneration, go to :menuselection:`Accounting -->
Configuration --> Taxes`, select a similar tax, then click on the cog icon and select
:guilabel:`Duplicate`. In the :guilabel:`Advanced Options` tab, add the :guilabel:`Exoneration`
and :guilabel:`Law Reference`. To confirm click on :guilabel:`Save`.
.. tip::
**Rename** your taxes in the :guilabel:`Name` field according to their :guilabel:`Exoneration` to
differentiate them easily.
.. _italy/reverse-charge:
Reverse charge
==============
The **reverse charge** mechanism is a VAT rule that shifts the liability to pay VAT from the
supplier to the customer. The customers pay the VAT *themselves* to the :abbr:`AdE (Agenzia delle
Entrate)` instead. There are different types:
- | :guilabel:`Internal Reverse Charge` (for domestic sales)
| The VAT responsibility is shifted to the buyer for certain categories of products and services.
- | :guilabel:`External Reverse Charge` (for intra-EU sales)
| VAT is due in the country of the delivery or in the country where the service is performed. When
the buyer is itself an Italian business, then the EU offers a mechanism that allows the seller
to transfer his responsibility to the buyer.
Invoices
--------
**Reverse-charged** customer invoices show no VAT amount, but the :abbr:`AdE (Agenzia delle
Entrate)` requires the seller to specify the :guilabel:`Tax Exemption` reason and the :guilabel:`Law
Reference` that enable the reverse-charge mechanism. Odoo provides a set of special 0% taxes that
can be assigned to each reverse-charged invoice lines, representing the most commonly used
configurations.
Vendor bills
------------
Italian companies subjected to Reverse Charge must send the information in the bill received to the
:abbr:`AdE (Agenzia delle Entrate)`.
.. note::
Self-reported VAT XML files must be issued and sent to the :abbr:`AdE (Agenzia Delle Entrate)`
for reverse charged bills.
When creating a vendor bill, **reverse charge** taxes are available to be added in the
:guilabel:`Taxes` field. You can check which taxes are available by going to
:menuselection:`Accounting --> Configuration --> Taxes`, you can see that the 10% Goods and 22%
Services taxes are activated, among others. Due to the automated configuration of the Italian fiscal
position, these are automatically activated in the tax list.
.. _italy/grids:
Tax grids
---------
The Italian localization has a specific :ref:`tax grid <tax-returns/tax-grids>` section for
**reverse charge** taxes. These tax grids are identifiable by the :ref:`VJ <italy/grids>` tag, and
can be found by going to :menuselection:`Accounting --> Reporting --> Audit Reports: Tax Report`.
.. image:: italy/grids.png
:alt: Reverse charge tax grid from the VJ section of the Tax Declaration
.. _italy/e-invoicing:
E-invoicing
-----------
===========
The :abbr:`SdI (Sistema di Interscambio)` is the electronic invoicing system used in Italy. It
enables to send and receive electronic invoices to and from customers. The documents must be in XML
format and formally validated by the system before being delivered.
The :abbr:`SdI (Sistema di Interscambio)` is the :doc:`electronic invoicing
<../accounting/customer_invoices/electronic_invoicing>` system used in Italy. It enables the sending
and receiving of electronic invoices to and from customers. The documents must be in an XML
:abbr:`EDI (Electronic Data Interchange)` format called **FatturaPA** and formally validated by the
system before being delivered.
To be able to receive invoices and notifications, the :abbr:`SdI (Sistema di Interscambio)` service
must be notified that the user's files are to be sent to **Odoo** and processed on their behalf. To
so, you must set up Odoo's :guilabel:`Codice Destinatario` on the **Agenzia Delle Entrate**
portal.
must be notified that the user's files need to be sent to Odoo and processed on their behalf. To do
so, you must set up Odoo's :guilabel:`Destination Code` on the :abbr:`AdE (Agenzia Delle
Entrate)` portal.
#. Go to https://ivaservizi.agenziaentrate.gov.it/portale/ and authenticate;
#. Go to `Italian authorities portal <https://ivaservizi.agenziaentrate.gov.it/portale>`_ and
authenticate;
#. Go to section :menuselection:`Fatture e Corrispettivi`;
#. Set the user as Legal Party for the VAT number you wish to configure the electronic address;
#. In :menuselection:`Servizi Disponibili --> Fatturazione Elettronica --> Registrazione
dellindirizzo telematico dove ricevere tutte le fatture elettroniche`, insert Odoo's
:guilabel:`Codice Destinatario` `K95IV18`, and confirm.
:guilabel:`Destination Code` `K95IV18`, and confirm.
Electronic Data Interchange (EDI)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Odoo uses the **FatturaPA** :abbr:`EDI (Electronic Data Interchange)` format for the Italian
localization and is enabled on the default journals when installed. When the **file processing
authorization** has been set, all **invoices** and **bills** are automatically sent.
.. note::
You can :ref:`enable electronic invoicing for other sales and purchase journals
<e-invoicing/configuration>` than the default ones.
You can check the current status of an invoice by the :guilabel:`Electronic invoicing` field. The
XML file can be found in the **chatter** of the invoice.
.. image:: italy/italy-test.png
:align: center
:alt: Electronic invoicing status (waiting for confirmation)
.. seealso::
:doc:`../accounting/customer_invoices/electronic_invoicing`
File processing authorization (Odoo)
------------------------------------
EDI Mode and authorization
--------------------------
Since the files are transmitted through Odoo's server before being sent to the :abbr:`SdI (Sistema
di Interscambio)` or received by your database, you need to authorize Odoo to process your files
from your database. To do so, go to :menuselection:`Accounting --> Configuration --> Settings -->
Electronic Document Invoicing`.
There are **three** modes available:
There are three modes available:
:guilabel:`Demo`
This mode simulates an environment in which invoices are sent to the government. In this mode,
invoices need to be *manually* downloaded as XML files and uploaded to the **Agenzia delle
Entrate**'s website.
:guilabel:`Test (experimental)`
This mode sends invoices to a non-production (i.e., test) service made available by the **Agenzia
delle Entrate**. Saving this change directs all companies on the database to use this
configuration.
:guilabel:`Official`
This is a production mode that sends your invoices directly to the **Agenzia delle Entrate**.
- | :guilabel:`Demo`
| This mode simulates an environment in which invoices are sent to the government. In this mode,
invoices need to be *manually* downloaded as XML files and uploaded to the :abbr:`AdE
(Agenzia delle Entrate)`'s website.
- | :guilabel:`Test (experimental)`
| This mode sends invoices to a non-production (i.e., test) service made available by the
:abbr:`AdE (Agenzia delle Entrate)`. Saving this change directs all companies on the database to
use this configuration.
- | :guilabel:`Official`
| This is a production mode that sends your invoices directly to the :abbr:`AdE (Agenzia delle
Entrate)`.
Once a mode is selected, you need to accept the **terms and conditions** by ticking :guilabel:`Allow
Odoo to process invoices`, and then :guilabel:`Save`. You can now record your transactions in Odoo
@@ -120,340 +195,436 @@ Accounting.
.. warning::
Selecting either :guilabel:`Test (experimental)` or :guilabel:`Official` is **irreversible**.
Once in :guilabel:`Official` mode, it is not possible to select :guilabel:`Test (experimental)`
or :guilabel:`Demo`, and same for :guilabel:`Test (experimental)`. We recommend creating a
separate database for testing purposes only.
For example, once in :guilabel:`Official` mode, it is not possible to select :guilabel:`Test
(experimental)` or :guilabel:`Demo`. We recommend creating a **separate database** for testing
purposes only.
.. note::
When in :guilabel:`Test (Experimental)` mode, all invoices sent *must* have a partner using one
of the following fake :guilabel:`Codice Destinatario` given by the **Agenzia Delle Entrate**:
`0803HR0` - `N8MIMM9` - `X9XX79Z`. Any real production :guilabel:`Codice Destinario` of your
customers will not be recognized as valid by the test service.
of the following fake :guilabel:`Destination Code` given by the :abbr:`AdE (Agenzia Delle
Entrate)`: `0803HR0` - `N8MIMM9` - `X9XX79Z`. Any real production :guilabel:`Codice Destinario`
of your customers will not be recognized as valid by the test service.
.. image:: italy/italy-edi.png
:align: center
:alt: Italy's electronic document invoicing options
.. image:: italy/edi.png
:alt: Electronic document invoicing settings
Taxes configuration
===================
.. _italy/e-invoicing-process:
Many of the e-invoicing features are implemented using Odoo's tax system. As such, it is very
important that taxes are properly configured in order to generate invoices correctly and handle
other billing use cases. For example, specific configurations are required for the **reverse
charge** type of taxes. In case of a **reverse charge** tax, the seller does *not* charge the
customer for the VAT but, instead, the customer pays the VAT *themselves* to their government. There
are **two** main types:
Process
-------
- :ref:`external reverse charge <italy/external-reverse>`;
- :ref:`internal reverse charge <italy/internal-reverse>`.
.. _italy/external-reverse:
External reverse charge
-----------------------
Invoices
~~~~~~~~
To make an export invoice, make sure that the invoice lines all use a tax configured for **reverse
charge**. The **Italian** localization contains an **example** of a reverse charge tax for export in
the EU to be used as reference (`0% EU`, invoice label `00eu`), which can be found under
:menuselection:`Accounting --> Configuration --> Taxes`. Exports are exempt from VAT, and therefore
**reverse charge** taxes require the :guilabel:`Has exoneration of tax (Italy)` option ticked, with
both the :guilabel:`Exoneration` kind and :guilabel:`Law Reference` filled in.
.. image:: italy/italy-tax.png
:align: center
:alt: External reverse charge settings
The submission of invoices to the :abbr:`SdI (Sistema di Interscambio)` for Italy is an electronic
process used for the mandatory transmission of tax documents in XML format between companies and the
:abbr:`AdE (Agenzia delle Entrate)` to reduce errors and verify the correctness of operations.
.. note::
If you need to use a different kind of :guilabel:`Exoneration`, click :menuselection:`Action -->
Duplicate` within the tax menu to create a copy of an existing similar tax. Then, select another
:guilabel:`Exoneration`, and :guilabel:`Save`. Repeat this process as many times as you need
different kind of :guilabel:`Exoneration` taxes.
You can check the current status of an invoice by the :guilabel:`SdI State` field. The XML file
is attached to the invoice.
.. tip::
**Rename** your taxes in the :guilabel:`Name` field according to their :guilabel:`Exoneration` to
differentiate them easily.
.. image:: italy/edi-process.png
:alt: EDI system architecture
On your invoice, select the corresponding tax you need in the :guilabel:`Taxes` field. You can find
the following **additional info** by opening the **XML** file of the issued invoice:
XML Documents creation
~~~~~~~~~~~~~~~~~~~~~~
- :guilabel:`SdI address (Codice Destinatario)`: must be filled for both **EU** or **non-EU**;
- :guilabel:`Country Id`: must contain the country of the foreign seller in the two-letter ISO
(Alpha-2) code (ex., `IT` for 'Italy');
- :guilabel:`CAP`: must be filled with `00000`;
- :guilabel:`Partita Iva` (**VAT number**): must contain the **VAT** number for **EU businesses**
and `OO99999999999` (double 'O' **letter**, not 'zero') for **non-EU businesses**. In case of
private customers without **VAT** number, use `0000000`;
- :guilabel:`Fiscal Code`: for foreign entities without an actual **Codice Fiscale**, any
recognizable identifier is valid.
Odoo generates the required XML files as attachments to invoices in the `FatturaPA` format required
by the :abbr:`AdE (Agenzia delle Entrate)`. Once the invoices needed are selected, go to
:guilabel:`Action` and click on :guilabel:`Send and Print`.
.. note::
Odoo does not support sending user-modified XML files.
.. image:: italy/edi-menu.png
:alt: Send and Print menu
For **invoices**, multiple configurations are technically identified by a :guilabel:`Tipo Documento`
code:
When the pop-up window opens there is a selection of actions that can be taken. :guilabel:`Generate
XML File` generates the attachments.
- `TD02` - Down payments;
- `TDO7` - Simplified invoice;
- `TD08` - Simplified credit note;
- `TD09` - Simplified debit note;
- `TD24` - Deferred invoice.
.. image:: italy/edi-send-and-print.png
:alt: Send and Print dialog
.. tabs::
The XML file as well as the PDF once can be found attached to the invoice.
.. tab:: `TD02`
.. image:: italy/edi-attachments.png
:alt: EDI Attachments
Down payments.
Submission to SDI
~~~~~~~~~~~~~~~~~
**Down payment** invoices are imported/exported with a different :guilabel:`Tipo Documento`
code `TDO2` than regular invoices. Upon import of the invoice, it creates a regular vendor
bill.
The :guilabel:`Send to Tax Agency` option in the :guilabel:`Send and Print` dialog sends the
attachment to the :guilabel:`Proxy Server`, which gathers all requests and then forwards them via a
WebServices channel to the :abbr:`SdI (Sistema di Interscambio)`. Check the sending status of the
invoice through the :guilabel:`Check Sending` button at the top of the invoice's view.
Odoo exports moves as `TD02` if the following conditions are met:
Processing by SDI
~~~~~~~~~~~~~~~~~
- Is an invoice;
- All invoice lines are related to **sales order lines** that have the flag `is_downpayment`
set as `True`.
The :abbr:`SdI (Sistema di Interscambio)` receives the document and verifies for any errors. At this
stage, the invoice is in the :guilabel:`SdI Processing` state, as shown on the invoice. The invoice
also gets assigned a :guilabel:`FatturaPA Transaction` number that is shown in the
:guilabel:`Electronic Invoicing` tab. The checks may take variable time, ranging from a few seconds
up to a day, depending on the queue of invoices sent throughout Italy.
.. tab:: `TD07`, `TD08`, and `TD09`
.. image:: italy/edi-processing.png
:alt: Check Sending button and Sdi Processing state
Simplified invoices, and credit/debit notes.
Acceptance
~~~~~~~~~~
Simplified invoices and credit notes can be used to certify **domestic transactions** under
**400 EUR** (VAT included). Its status is the same as a regular invoice, but with fewer
information requirements.
For a **simplified** invoice to be established, it must include:
- :guilabel:`Customer Invoice` reference: **unique** numbering sequence with **no gaps**;
- :guilabel:`Invoice Date`: issue **date** of the invoice;
- :guilabel:`Company Info`: the **seller**'s full credentials (VAT/TIN number, name, full
address) under :menuselection:`General Settings --> Companies (section)`;
- :guilabel:`VAT`: the **buyer**'s VAT/TIN number (on their profile card);
- :guilabel:`Total`: the total **amount** (VAT included) of the invoice.
In the :abbr:`EDI (Electronic Data Interchange)`, Odoo exports invoices as simplified if:
- It is a **domestic** transaction (i.e., the partner is from Italy);
- The buyer's data is **insufficient** for a regular invoice;
- The **required fields** for a regular invoice (address, ZIP code, city, country) are
provided;
- The total amount VAT included is **less** than **400 EUR**.
.. note::
The 400 EUR threshold was defined in `the decree of the 10th of May 2019 in the Gazzetta
Ufficiale <https://www.gazzettaufficiale.it/eli/id/2019/05/24/19A03271/sg>`_. We advise you
to check the current official value.
.. tab:: `TD24`
Deferred invoices.
The **deferred invoice** is an invoice that is **issued at a later time** than the sale of
goods or the provision of services. A **deferred invoice** has to be issued at the latest
within the **15th day** of the month following the delivery covered by the document.
It usually is a **summary invoice** containing a list of multiple sales of goods or services,
carried out in the month. The business is allowed to **group** the sales into **one invoice**,
generally issued at the **end of the month** for accounting purposes. Deferred invoices are
default for **wholesaler** having recurrent clients.
If the goods are transported by a **carrier**, every delivery has an associated **Documento di
Transporto (DDT)**, or **Transport Document**. The deferred invoice **must** indicate the
details of all the **DDTs** information for better tracing.
.. note::
E-invoicing of deferred invoices requires the `l10n_it_stock_ddt`
:ref:`module <italy/modules>`. In this case, a dedicated :guilabel:`Tipo Documento` `TD24`
is used in the e-invoice.
Odoo exports moves as `TD24` if the following conditions are met:
- Is an invoice;
- Is associated to deliveries whose **DDTs** have a **different** date than the issuance date
of the invoice.
Vendor bills
~~~~~~~~~~~~
Italian companies buying goods or services from EU countries (or services from non-EU countries)
must send the information contained within the bill received to the **Agenzia delle Entrate**. This
allows you to complete tax-related information on your bill, and to send it. The seller must be set
as :guilabel:`Cedente/Prestatore`, and the buyer as :guilabel:`Cessionario/Committente`. Contained
within the **XML** document for the vendor bill, the vendor's credentials show as
:guilabel:`Cedente/Prestatore`, and your company's credentials as
:guilabel:`Cessionario/Committente`.
.. note::
Self-billing invoices or VAT invoice integrations must be issued and sent to the tax agency.
When inputting taxes in a vendor bill, it is possible to select **reverse charge** taxes. These are
automatically activated in the Italian fiscal position. By going to :menuselection:`Accounting -->
Configuration --> Taxes`, the `10%` and `22%` :guilabel:`Goods` and :guilabel:`Services` tax scopes
are activated and preconfigured with the correct tax grids. These are set up automatically to ensure
the correct booking of accounting entries and display of the tax report.
For **vendor bills**, **three** types of configurations are technically identified by a code called
:guilabel:`Tipo Documento`:
- `TD17` - Buying services from **EU** and **non-EU** countries;
- `TD18` - Buying **goods** from **EU**;
- `TD19` - Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy**
in a **VAT deposit**.
.. tabs::
.. tab:: `TD17`
Buying **services** from **EU** and **non-EU** countries:
The foreign *seller* invoices a service with a **VAT-excluded** price, as it is not
taxable in Italy. The VAT is paid by the *buyer* in Italy;
- Within EU: the *buyer* integrates the invoice received with the **VAT information**
due in Italy (i.e., **vendor bill tax integration**);
- Non-EU: the *buyer* sends themselves an invoice (i.e., **self-billing**).
Odoo exports a transaction as `TD17` if the following conditions are met:
- Is a vendor bill;
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
- All invoice lines either have :guilabel:`Services` as **products**, or a tax with the
:guilabel:`Services` as **tax scope**.
.. tab:: `TD18`
Buying **goods** from **EU**:
Invoices issued within the EU follow a **standard format**, therefore only an integration of
the existing invoice is required.
Odoo exports a transaction as `TD18` if the following conditions are met:
- Is a vendor bill;
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
- All invoice lines either have :guilabel:`Consumable` as **products**, or a tax with the
:guilabel:`Goods` as **tax scope**.
.. tab:: `TD19`
Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy** in a
**VAT deposit**:
- From EU: the *buyer* integrates the invoice received with the **VAT information** due in
Italy (i.e., **vendor bill tax integration**);
- Non-EU: the *buyer* sends an invoice to *themselves* (i.e., **self-billing**).
Odoo exports a move as a `TD19` if the following conditions are met:
- Is a vendor bill;
- At least one tax on the invoice lines targets the tax grid :ref:`VJ3 <italy/grids>`;
- All invoice lines either have :guilabel:`Consumable` products, or a tax with
:guilabel:`Goods` as tax scope.
If the document is valid, it is recorded and considered fiscally valid by the :abbr:`AdE (Agenzia
delle Entrate)`, which will proceed with archiving in :guilabel:`Substitute Storage (Conservazione
Sostitutiva)` if explicitly requested on the Agency's portal.
.. warning::
Odoo does not offer the
`Conservazione Sostitutiva <https://www.agid.gov.it/index.php/it/piattaforme/conservazione>`_
requirements. Other providers and **Agenzia delle Entrate** supply free and certified storage to
meet the requested conditions.
Odoo does not offer the `Conservazione Sostitutiva
<https://www.agid.gov.it/index.php/it/piattaforme/conservazione>`_ requirements. Other providers
and :abbr:`AdE (Agenzia delle Entrate)` supply free and certified storage to meet the
specifications requested by law.
.. _italy/internal-reverse:
The :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` attempts to forward the
invoice to the customer at the provided address, whether it is a `PEC` email address or a
:abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` for their ERP's WebServices
channels. A maximum of 6 attempts are made every 12 hours, so even if unsuccessful, this process can
take up to three days. The invoice status is :guilabel:`Accepted by SDI, Forwarding to Partner`.
Internal reverse charge
-----------------------
Possible Rejection
~~~~~~~~~~~~~~~~~~
.. warning::
Odoo currently does not support domestic **internal reverse charge** processes.
The :abbr:`SdI (Sistema di Interscambio)` may find inaccuracies in the compilation, possibly even
formal ones. In this case, the invoice is in the :guilabel:`SDI Rejected` state. The :abbr:`SdI
(Sistema di Interscambio)`'s observations are inserted at the top of the Invoice tab. To resolve the
issue, it is sufficient to delete the attachments of the invoice, return the invoice to
:guilabel:`Draft`, and fix the errors. Once the invoice is ready, it can be resent.
.. _italy/grids:
.. note::
To regenerate the XML, both the XML attachment and the PDF report must be deleted, so that they
are then regenerated together. This ensures that both always contain the same data.
'Reverse Charge' tax grids
--------------------------
.. image:: italy/edi-rejected.png
:alt: EDI Rejected State
The Italian localization has a specific **tax grid** section for **reverse charge** taxes. These
tax grids are identifiable by the :ref:`VJ <italy/grids>` tag, and can be found under
:menuselection:`Accounting --> Reporting --> Audit Reports: Tax Report`.
Forwarding Completed
~~~~~~~~~~~~~~~~~~~~
.. image:: italy/italy-grids.png
:align: center
:alt: Italian reverse charge tax grids
The invoice has been delivered to the customer; however, you can still send a copy to the customer
in PDF via email or post. Its status is :guilabel:`Accepted by SDI, Delivered to Partner`.
San Marino
==========
If the :abbr:`SdI (Sistema di Interscambio)` cannot contact your customer, they may not be
registered on the :abbr:`AdE (Agenzia delle Entrate)` portal. In this case, just make sure to send
the invoice in PDF via email or by mail. The invoice is then in the :guilabel:`Accepted by SDI,
Partner Delivery Failed` state.
Tax Integration
---------------
When you receive a vendor bill, either from :abbr:`SdI (Sistema di Interscambio)`, from paper or
from an imported XML file, the Tax Agency might request that you send some tax information
integration back to the :abbr:`SdI (Sistema di Interscambio)`. It happens when a transaction that
was tax exempt becomes taxable for any reason.
.. example::
Here is a non-exhaustive list:
- | :ref:`italy/reverse-charge`
| As a buyer, you have to pay taxes on what you buy and integrate tax information.
:guilabel:`Reverse Charge` taxes.
- | :ref:`italy/split-payment`
| As a :abbr:`PA (Public Administration)` business buyer, you have to pay taxes and integrate
tax information. Be sure that you replace the :guilabel:`0% Sale Taxes` on the vendor bill
you received with the correct :guilabel:`Split Payment` taxes.
- | :guilabel:`Self Consumption`
| When, as a business owner, you use an asset that you bought for business for personal reasons
instead, you have to pay those taxes you originally deducted as a business cost for it.
Odoo may detect that your vendor bill can be interpreted as a document of a type that needs tax
integration, as detailed in the :ref:`italy/document-types` section.
.. important::
Be sure that you replace the :guilabel:`0% Sale Taxes` on the vendor bill you received with the
ones you're supposed to pay to the :abbr:`AdE (Agenzia delle Entrate)`. A button then appears on
the top of the single vendor bill form to send them.
When clicking on the :guilabel:`Send Tax Integration` button, an XML file of the appropriate
:guilabel:`Document Type` is generated, attached to the bill, and sent as for invoices.
.. image:: italy/edi-tax-integration-button.png
:alt: EDI Send Tax Integration button
.. _italy/document-types:
Document Types
--------------
The :abbr:`SdI (Sistema di Interscambio)` requires businesses to send customer invoices and other
documents through the :abbr:`EDI (Electronic Data Interchange)`.
The following :guilabel:`Document Type` codes all technically identify different business use cases.
TD01 - Invoices
~~~~~~~~~~~~~~~
This represents the standard **domestic** scenario for all invoices exchanged through the :abbr:`SdI
(Sistema di Interscambio)`. Any invoice that doesn't fall into one of the specific special cases
is categorized as a regular invoice, identified by the :guilabel:`Document Type` `TD01`.
TD02 - Down payments
~~~~~~~~~~~~~~~~~~~~
**Down payment** invoices are imported/exported with a different :guilabel:`Document Type` code
`TDO2` than regular invoices. Upon import of the invoice, a regular vendor bill is created.
Odoo exports transactions as `TD02` if the following conditions are met:
#. It is an invoice;
#. All invoice lines are related to down payment sales order lines.
TD04 - Credit notes
~~~~~~~~~~~~~~~~~~~
It is the standard scenario for all **credit notes** issued to **domestic** clients, when we need to
formally acknowledge that the seller is reducing or canceling a previously issued invoice, for
example, in case of overbilling, incorrect items, or overpayment. Just like invoices, they must be
sent to the :abbr:`SdI (Sistema di Interscambio)`, their :guilabel:`Document Type` `TD04`
TD07, TD08, TD09 - Simplified Invoicing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Simplified invoices (`TD07`), credit notes (`TD08`), and debit notes (`TD09`) can be used to certify
domestic transactions under 400 EUR (VAT included). Its status is the same as that of a regular
invoice, but with fewer information requirements.
For a simplified invoice to be established, it must include:
#. :guilabel:`Customer Invoice` reference: **unique** numbering sequence with **no gaps**;
#. :guilabel:`Invoice Date`: issue **date** of the invoice;
#. :guilabel:`Company Info`: the **seller**'s full credentials (VAT/TIN number, name, full address)
under :menuselection:`General Settings --> Companies (section)`;
#. :guilabel:`VAT`: the **buyer**'s VAT/TIN number (on the partner form);
#. :guilabel:`Total`: the total **amount** (VAT included) of the invoice.
In the :abbr:`EDI (Electronic Data Interchange)`, Odoo exports invoices as simplified if:
#. It is a domestic transaction (i.e., the partner is from Italy);
#. Your company's **required fields** (:guilabel:`VAT Number` or :guilabel:`Codice Fiscale`,
:guilabel:`Fiscal Regime`, and full **address**) are provided;
#. The partner's address is not fully specified (i.e., it misses the City or the ZipCode);
#. The total amount of VAT included is **less** than **400 EUR**.
.. note::
The 400 EUR threshold was defined in `the decree of the 10th of May 2019 in the Gazzetta
Ufficiale <https://www.gazzettaufficiale.it/eli/id/2019/05/24/19A03271/sg>`_. We advise you to
check the current official value.
TD16 - Internal Reverse Charge
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Internal reverse charge transactions (see :ref:`italy/tax-exemption` and
:ref:`italy/reverse-charge`) are exported as `TD16` if the following conditions are met:
- It is a vendor bill;
- It has at least **one tax** on the invoice lines that targets one of these :ref:`tax grids
<italy/grids>`: `VJ6`, `VJ7`, `VJ8`, `VJ12`, `VJ13`, `VJ14`, `VJ15`, `VJ16`, `VJ17`
TD17 - Buying services from abroad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When buying **services** from **EU** and **non-EU** countries, the foreign *seller* invoices a
service with a **VAT-excluded** price, as it is not taxable in Italy. The VAT is paid by the *buyer*
in Italy.
- Within the EU: the *buyer* integrates the invoice received with the **VAT information** due in
Italy (i.e., **vendor bill tax integration**);
- Non-EU: the *buyer* sends themselves an invoice (i.e., **self-billing**).
Odoo exports a transaction as `TD17` if the following conditions are met:
- It is a vendor bill;
- It has at least **one tax** on the invoice lines that targets the tax grid :ref:`VJ3
<italy/grids>`;
- All invoice lines either have :guilabel:`Services` as **products**, or a tax with the
:guilabel:`Services` as **tax scope**.
TD18 - Buying goods from EU
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Invoices issued within the EU follow a **standard format**, therefore only an integration of the
existing invoice is required.
Odoo exports a transaction as `TD18` if the following conditions are met:
- It is a vendor bill;
- The **partner** is from an **EU** country;
- It has at least one tax on the invoice lines that targets the tax grid :ref:`VJ9 <italy/grids>`;
- All invoice lines either have :guilabel:`Consumable` as **products**, or a tax with
:guilabel:`Goods` as **tax scope**.
TD19 - Buying goods from VAT deposit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Buying **goods** from a **foreign** vendor, but the **goods** are already in **Italy** in a **VAT
deposit**.
- From the EU: the *buyer* integrates the invoice received with the **VAT information** due in
Italy (i.e., **vendor bill tax integration**);
- Non-EU: the *buyer* sends an invoice to *themselves* (i.e., **self-billing**).
Odoo exports a transaction as a `TD19` if the following conditions are met:
- It is a vendor bill;
- It has at least one tax on the invoice lines that targets the tax grid :ref:`VJ3 <italy/grids>`;
- All invoice lines either have :guilabel:`Consumables` as products, or a tax with
:guilabel:`Goods` as **tax scope**.
TD24 - Deferred invoices
~~~~~~~~~~~~~~~~~~~~~~~~
The **deferred invoice** is an invoice that is **issued at a later time** than the sale of goods or
the provision of services. A **deferred invoice** has to be issued at the latest within the **15th
day** of the month following the delivery covered by the document.
It usually is a **summary invoice** containing a list of multiple sales of goods or services carried
out in the month. The business is allowed to **group** the sales into **one invoice**, generally
issued at the **end of the month** for accounting purposes. Deferred invoices are default for
**wholesalers** having recurrent clients.
If the goods are transported by a **carrier**, every delivery has an associated **Documento di
Transporto (DDT)**, or **Transport Document**. The deferred invoice **must** indicate the details of
all the **DDTs** information for better tracing.
.. note::
E-invoicing of deferred invoices requires the `l10n_it_stock_ddt` :ref:`module <italy/modules>`.
In this case, a dedicated :guilabel:`Document Type` `TD24` is used in the e-invoice.
Odoo exports transactions as `TD24` if the following conditions are met:
#. It is an invoice;
#. It is associated with deliveries whose **DDTs** have a **different** date than the issue date of
the invoice.
TD28 - San Marino
~~~~~~~~~~~~~~~~~
Invoices
--------
********
San Marino and Italy have special agreements on e-invoicing operations. As such, **invoices** follow
the regular **reverse charge** rules. Additional requirements are not enforced by Odoo, however, the
user is requested by the **State** to:
the regular **reverse charge** rules. You can use the proper :guilabel:`Document Type` depending on
the invoice type: `TD01`, `TD04`, `TD05`, `TD24`, `TD25`. Additional requirements are not enforced
by Odoo. However, the user is requested by the **State** to:
- Select a tax with the option :guilabel:`Has exoneration of tax (Italy)` ticked, and the
:guilabel:`Exoneration` set to `N3.3`;
- Use the generic :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Codice Destinatario` `2R4GT08`.
The invoice is then routed by a dedicated office in San Marino to the correct business.
- Select a tax with the :guilabel:`Tax Exemption Kind` set to `N3.3`;
- Use the generic :abbr:`SdI (Sistema di Interscambio)` :guilabel:`Destination Code` `2R4GT08`.
Bills
-----
The invoice is then routed by a dedicated office in San Marino to the correct business.
Vendor Bills
************
When a **paper bill** is received from San Marino, any Italian company **must** submit that invoice
to the **Agenzia delle Entrate** by indicating the e-invoice's :guilabel:`Tipo Documento` field with
the special value `TD28`.
to the :abbr:`AdE (Agenzia delle Entrate)` by indicating the e-invoice's :guilabel:`Document Type`
field with the special value `TD28`.
.. tabs::
Odoo exports a transaction as `TD28` if the following conditions are met:
.. tab:: `TD28`
#. It is a vendor bill;
#. It has at least one tax on the invoice lines that targets the tax grids :ref:`VJ <italy/grids>`;
#. The **country** of the partner is **San Marino**.
Odoo exports a move as `TD28` if the following conditions are met:
Public Administration Businesses (B2G)
======================================
- Is a vendor bill;
- At least one tax on the invoice lines targets the tax grids :ref:`VJ <italy/grids>`;
- The **country** of the partner is **San Marino**.
:abbr:`PA (Public Administration)` businesses are subjected to more control than private businesses
as they handle public money coming from taxpayers. The :abbr:`EDI (Electronic Data Interchange)`
process adds some steps to the :ref:`regular one <italy/e-invoicing-process>`, as :abbr:`PA (Public
Administration)` businesses can **accept** or **refuse** invoices.
Pubblica amministrazione (B2G)
==============================
.. note::
:abbr:`PA (Public Administration)` businesses have a 6-digit long :guilabel:`Destination Code`,
also called :abbr:`CUU (Codice Univoco Ufficio)`, that is **mandatory**, **PEC** address cannot
be used in this case.
.. warning::
Odoo does **not** send invoices directly to the government as they need to be signed. If we see
that the codice destinatario is 6 digits, then it is not sent to the PA automatically, but you
can download the XML, sign it with an external program and send it through the portal.
Digital qualified signature
---------------------------
For invoices and bills intended to the **Pubblica Amministrazione (B2G)**, a **Digital Qualified
Signature** is required for all files sent through the :abbr:`SdI (Sistema di Interscambio)`. The
**XML** file must be certified using a certificate that is either:
- a **smart card**;
- a **USB token**;
- a **Hardware Security Module (HSM)**.
.. seealso::
`Complete list of businesses that belong to the Public Administration along with their
Destination Code <https://www.agenziaentrate.gov.it/portale/web/guest/aree-tematiche/fatturazione-elettronica>`_
CIG, CUP, DatiOrdineAcquisto
----------------------------
To ensure the effective traceability of payments by public administrations, electronic invoices
issued to the public administrations must contain:
issued to public administrations must contain:
- The :abbr:`CIG (Codice Identificativo Gara)`, except in cases of exclusion from traceability
obligations provided by law n. 136 of August 13, 2010;
- The :abbr:`CUP (Codice Unico di Progetto)`, in case of invoices related to public works.
If the **XML** file requires it, the **Agenzia Delle Entrate** can *only* proceed payments of
electronic invoices when the **XML** file contains a :abbr:`CIG (Codice Identificativo Gara)` and
:abbr:`CUP (Codice Unico di Progetto)`. For each electronic invoice, it is **necessary** to indicate
the :abbr:`CUU (Codice Univoco Ufficio)`, which represents the unique identifier code that allows
the :abbr:`SdI (Sistema di Interscambio)` to correctly deliver the electronic invoice to the
recipient office.
If the XML file requires it, the :abbr:`AdE (Agenzia Delle Entrate)` can *only* proceed payments of
electronic invoices when the XML file contains a :abbr:`CIG (Codice Identificativo Gara)` and
:abbr:`CUP (Codice Unico di Progetto)`.
.. note::
- The :abbr:`Codice Unico di Progetto)` and the :abbr:`CIG (Codice Identificativo Gara)` must be
included in one of the **2.1.2** (DatiOrdineAcquisto), **2.1.3** (Dati Contratto), **2.1.4**
(DatiConvenzione), **2.1.5** (Date Ricezione), or **2.1.6** (Dati Fatture Collegate)
information blocks. These correspond to the elements named :guilabel:`CodiceCUP` and
:guilabel:`CodiceCIG` of the electronic invoice **XML** file, whose table can be found on the
government `website <http://www.fatturapa.gov.it/>`_.
- The :abbr:`CUU (Codice Univoco Ufficio)` must be included in the electronic invoice
corresponding to the element **1.1.4** (:guilabel:`CodiceDestinario`).
The :abbr:`CUP (Codice Unico di Progetto)` and the :abbr:`CIG (Codice Identificativo Gara)` must
be included in one of the `DatiOrdineAcquisto`, `DatiContratto`, `DatiConvenzione`,
`DateRicezione`, or `DatiFattureCollegate` XML tags.
These correspond to the elements named :guilabel:`CodiceCUP` and :guilabel:`CodiceCIG` of the
electronic invoice XML file, whose table can be found on the government `website
<http://www.fatturapa.gov.it/>`_.
.. _italy/split-payment:
Split Payment
-------------
The :guilabel:`Split Payment` mechanism behaves much like :ref:`italy/reverse-charge`.
.. example::
When an Italian company bills a :abbr:`PA (Public Administration)` business - for example,
cleaning services for a public building - the :abbr:`PA (Public Administration)` business
self-reports the VAT to the Tax Agency themselves, and the vendor just has to select the
appropriate tax with the right :guilabel:`Tax Exemption` for their invoice lines.
The specific :guilabel:`Scissione dei Pagamenti` fiscal position is available to deal with partners
belonging to the :abbr:`PA (Public Administration)`.
Process
-------
.. _italy/digital-signature:
Digital qualified signature
~~~~~~~~~~~~~~~~~~~~~~~~~~~
For invoices and bills intended for the :abbr:`PA (Public Administration)`, a **Digital Qualified
Signature** is required for all files sent through the :abbr:`SdI (Sistema di Interscambio)`. The
XML file must be certified using a certificate that is either:
- a **smart card**;
- a **USB token**;
- an :abbr:`HSM (Hardware Security Module)`.
.. warning::
Odoo **cannot** digitally sign documents for you. When a 6-digit long :guilabel:`Codice
Destinatario` is detected, then the :abbr:`EDI (Electronic Data Interchange)` process stops, and
the invoice is set on the :guilabel:`Requires user signature` state. You can download the
document in XML, sign it with any :guilabel:`Digital Qualified Signature` provider's external
program and send it through the :abbr:`AdE (Agenzia Delle Entrate)` portal.
Acceptance or Refusal
~~~~~~~~~~~~~~~~~~~~~
.. warning::
As Odoo does not handle sending signed invoices to :abbr:`PA (Public Administration)` businesses,
these states cannot be directly triggered by Odoo. When you upload the invoice on the :abbr:`AdE
(Agenzia Delle Entrate)` portal, Odoo receives notifications about it, putting the correct
:guilabel:`SdI State` on the invoice.
After receiving the invoice through the :abbr:`SdI (Sistema di Interscambio)`, the :abbr:`PA (Public
Administration)` business has 15 days to accept the invoice. If it does, then the process ends here.
If the :abbr:`PA (Public Administration)` business refuses the invoice, it is still considered valid
once it is accepted by the :abbr:`SdI (Sistema di Interscambio)`. You then have to issue a credit
note to compensate and send it to the :abbr:`SdI (Sistema di Interscambio)`.
Expired Terms
~~~~~~~~~~~~~
If the :abbr:`PA (Public Administration)` business doesn't reply within 15 days, you need to contact
the :abbr:`PA (Public Administration)` business directly, sending them both the invoice and the
received deadline notification by email. You can make an arrangement with them and manually set the
correct :guilabel:`SdI State` on your invoice.
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

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