Compare commits

...

87 Commits

Author SHA1 Message Date
Julian Roussieau
d782210ec2 [FIX] odoo_sh: change img who explain storage space
closes odoo/documentation#2616

X-original-commit: f52be8da2a
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-08-19 13:03:48 +02:00
poma-odoo
c36c26c28c [FW][FIX] developer/frontend: small typos
closes odoo/documentation#2609

Forward-port-of: odoo/documentation#2584
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-08-18 16:53:31 +02:00
Moens Alexandre
b9ed4bc522 [IMP] maintain : process for odoo.sh to odoo online
Correction to a typo that made the line completly nonsensical and made
people think that they could migrate just part of the database.

opw-2947684

closes odoo/documentation#2604

X-original-commit: a92671bd85
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-08-18 12:48:08 +02:00
Jonathan Castillo (jcs)
2a7646b634 [FIX] iot: typo in devices/scale
task-2956495

closes odoo/documentation#2598

X-original-commit: 81a23de57d
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-08-18 11:42:49 +02:00
Antoine Vandevenne (anv)
d15e642f7b [IMP] stripe: clarify the conditions for the support of a payment method
Even though the documentation was correct, it was confusing the reader
to state that local payment methods are considered enabled if their
related payment icon record does not exist in the database. The intended
meaning was that this statement only holds if the local payment method
is also supported, otherwise it cannot be enabled.

closes odoo/documentation#2591

X-original-commit: 8bcaa08531
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-08-18 10:38:05 +02:00
Donatienne Pirlot
cbb9085d7c [IMP] accounting: further information to be added regarding EDI
closes odoo/documentation#2579

Id: 2857860
X-original-commit: 0f42b4c94f
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-08-09 12:27:45 +02:00
Michelle Vu (mivu)
062f7c360e [IMP] helpdesk: update field names and screenshots
In Odoo v15, the field names for "Timesheet on Ticket" and "Time
Reinvoicing" changed to "Timesheets" and "Time Billing", respectively.
The "Tickets" button on the project card is also no longer available in
Odoo v15. Updated the RST file to reflect these changes, and also
updated screenshots to match.

Fixes PR #2094
Closes Odoo Task 2870115

closes odoo/documentation#2578

X-original-commit: 30a38d23d0
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-08-09 12:27:42 +02:00
Wesley Kao (weka)
bfd21870d0 [IMP] inventory and mrp: capitalized "MRP" in toctree
In the toctree, "MRP" wasn't capitalized in "Inventory & MRP."
Affects all branches, can be forward ported.

closes odoo/documentation#2565

X-original-commit: 8c665643ce
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-08-09 10:29:51 +02:00
Donatienne Pirlot
7912fa9e50 [ADD] accounting: creation of electronic invoicing documentation
closes odoo/documentation#2571

Id: 2857860
X-original-commit: 73204e6789
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-08-08 17:52:40 +02:00
Antoine Vandevenne (anv)
f3afc49f80 [IMP] install: guide the user through the login page
Developers sometimes have a hard time making the difference between the
PostgreSQL user and the internal user. They would try to log into Odoo's
web client with their PostgreSQL credentials rather than with admin. See
https://reddit.com/r/Odoo/comments/w8zubf/logging_in_on_source_install.

closes odoo/documentation#2547

X-original-commit: 1ddfcc49f4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-08-01 19:48:40 +02:00
Antoine Vandevenne (anv)
eb91cc5234 [IMP] rdtraining: mention that the second part needs to be completed too
closes odoo/documentation#2540

X-original-commit: 9279fb80a7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-08-01 16:35:46 +02:00
Tom Aarab (toaa)
90dd3835b0 [IMP] payment providers: ingenico documentation updated
This is a new documentation for the Ingenico payment provider, as support received a lot of tickets from customers having issues setting-up ingenico properly.

task - 2834329

closes odoo/documentation#2526

X-original-commit: b064a7ed6b
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-28 13:01:06 +02:00
Xavier
911daf825a [IMP] studio: complete update of Studio
The goal is to make the Studio users doc a sort of encyclopedia to accompany tutorials.
The doc isn't to explain the basics - or just briefly, as introductions - but instead to
give a full overview of all the available options.

closes odoo/documentation#2530

Task: 2817981
X-original-commit: c8ea9703f7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-28 11:55:51 +02:00
Victor Feyens
5926cd2fb5 [CLN] rdtraining: remove reference to unexisting file
The referenced `bypass.py` file isn't specified anywhere in
the training documentation or code content.

The paragraph is removed to avoid meaningless searches and
confusing trainees.

This commit also adds a missing parenthese in the preceding
code content.

Fixes #2488

closes odoo/documentation#2522

X-original-commit: 1c4abe4e07
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-25 14:29:55 +02:00
Benoit Socias
e1cb07eeb7 [IMP] rdtraining: update float utils information
The warning about float utils does not state where to find them, and
they are preceded by an example in the code that infringes the warning's
recommendation.

This commit indicates where to find the float utils and replaces the
example by one that uses them.

task-2925402

closes odoo/documentation#2512

X-original-commit: b8ee134a28
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-20 13:47:40 +02:00
Benoit Socias
e2e30ce0df [IMP] install: troubleshoot typical problems for Mac users
As mentioned in [1], because of [2], some python implementation for Mac
fail on startup with default parameters.

Also, when installing requirements, the psycopg requirement can fail
because the $PATH does not contain the postgresql tools installed with
the .app.

This commit provides instructions to avoid those issues.

[1]: https://github.com/odoo/odoo/issues/79112
[2]: https://bugs.python.org/issue40518

task-2922249

closes odoo/documentation#2505

X-original-commit: c40cf83073
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-19 16:13:58 +02:00
Romain Derie
9e44f59b99 [FIX] website: warn about google api deprecation
Google deprecated both its "Universal Analytics" and "Google Sign-In"
API. See community counterpart commit for a detailed explanation and
links.

closes odoo/documentation#2498

X-original-commit: 0d01565ac3
Related: odoo/odoo#96276
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
2022-07-19 15:05:02 +02:00
Stanislas Sobieski
89c71fac93 [IMP] install/maintain: update info about upgrade process on Odoo.sh
closes odoo/documentation#2493

Id: 2744270
X-original-commit: 815acb64c4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Pirlot Donatienne (dopi) <dopi@odoo.com>
Co-authored-by: Stanislas <sts@odoo.com>
Co-authored-by: Donatienne <dopi@odoo.com>
2022-07-18 12:28:39 +02:00
Victor Feyens
a9c8dbd36f [FIX] accounting_localization: use relative paths in csv-table's option
The `file` option for the `csv-table` directive expects relative file
paths rather than absolute file paths since Sphinx 4. Since this was the
only usage of the `ODOO_ABSPATH` placeholder, it is removed with this
commit.

Task - 2898477

closes odoo/documentation#2484

X-original-commit: 60adfacbc9
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-07-14 22:21:47 +02:00
Victor Feyens
bdf1717485 [IMP] conf.py, requirements.txt, *: allow building with Python 3.10
- Bump Sphinx version to 4.3.2 (default for Debian Jammy).
- Remove the retrocompatibility for Sphinx < 3.5 (warnings are raised in
  4.5).
- Fix translator issue crashing builds.
- Unpin jinja2 from the requirements as the base issue is solved in sphinx 4

Task - 2898477

X-original-commit: 217dba8bbe
Part-of: odoo/documentation#2484
2022-07-14 22:21:46 +02:00
Michelle Vu (mivu)
87d7e6ef3b [IMP] helpdesk: clarify postpaid support and delete mentions of tasks
If committed, this will delete mentions of project tasks in the "Invoice
Time Spent on Tickets (Postpaid Support Services)" v14.0 user doc. It
also deletes unnecessary steps and screenshots about creating and
configuring a new Project and updates the steps and screenshots for the
"Create a sales order" and "Link the Helpdesk ticket to the SO" sections.

Fixes PR #1901
Closes Odoo Task 2870104

closes odoo/documentation#2478

X-original-commit: 521cee8aa0
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-14 12:48:03 +02:00
Sam Lieber (sali)
ae32209d2e [ADD] maintain: google oauth doc
Added document and media files on the setup of Google Gmail using OAuth with Odoo.

closes odoo/documentation#2474

X-original-commit: 9b75dfd2ac
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-14 12:48:01 +02:00
Antoine Vandevenne (anv)
524794c59c [IMP] developer/rdtraining: simplify the development environment setup
In an attempt to help new developers install Odoo with a
straightforward procedure, Chapter 2 of the "Getting started" tutorial
included copy-pastes of parts of the "Installing Odoo" page. This proved
to be inefficient because it required maintaining documentation on the
installation procedure in several places and misled the readers by
suggesting installing the Python requirements *after* installing
PostgreSQL.

With this commit, the page on Chapter 2 is refreshed to be clearer to
the readers and redirect them to the "Installing Odoo" page when
necessary.

task-2908434

closes odoo/documentation#2468

X-original-commit: 291a3db45c
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-14 11:38:40 +02:00
Antoine Vandevenne (anv)
d58060d7f5 [REF] legal: convert the table from a grid to a list table
Prior to this commit, the /legal.html page relied on RST substitutions
to insert the images directives of legal agreements within the table.
This caused Sphinx to omit the `image-reference` class on all `<a>`
elements surrounding an `<img>` element, which it normally adds when the
`target` option is specified on an `image` directive. As the theme
relies on that class to hide the "external link" icon added with commit
343decf1, the layout of the page was broken.

While replacing the substitutions with the plain `image` directive, the
grid table is converted to a list table to avoid the hassle of expanding
table cells to fit the directives. This will also help in maintaining
the content of the table when we will add new translations for the legal
agreements.

task-2909167

closes odoo/documentation#2466

X-original-commit: 81bf067ba1
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-13 17:16:58 +02:00
Antoine Vandevenne (anv)
bcf3371bda [FIX] odoo_theme: show a cursor when hovering on an image without modal
The images that have the class `o-no-modal` cannot be clicked to open in
a modal, so the cursor should not be changed to a pointer when hovering
on them.

This commit also simplifies the theme's SCSS by replacing the hard-coded
SVG images used in the "Supported versions" page by unicode circles with
a custom styling.

X-original-commit: f648960c78
Part-of: odoo/documentation#2466
Co-authored-by: Elisabeth Dickinson (edi) <edi@odoo.com>
2022-07-13 17:16:58 +02:00
Antoine Vandevenne (anv)
419d3fa8b9 [FIX] odoo_theme: only open images that have no target in modal
Since clicking on the image redirects the user to the target URL, it's
useless to open the image in a modal. Also, it partially broke the
layout of the /legal.html page due to the modal div being inserted into
table cells.

This commit also introduces the possibility to add the `o-no-modal`
class on images that should not open in a modal.

task-2909167

X-original-commit: 7cbbb77746
Part-of: odoo/documentation#2466
2022-07-13 17:16:58 +02:00
Antoine Vandevenne (anv)
e30f49f021 [MOV] developer/reference: move up the standard_modules directory
With the renaming of the "Backend" and "Frontend" directories to "Python
framework" and "JavaScript framework", and since we may want to document
modules that mainly rely on JavaScript, it makes sense to move the
"Standard modules" one level up from under "Python framework" directly
under "Reference".

closes odoo/documentation#2458

X-original-commit: 62e80093bd
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-13 17:16:50 +02:00
Antoine Vandevenne (anv)
ff54520086 [IMP] developer: rename reference directories to "Py/Js framework"
It was confusing to label the directory for pages related to the Python
framework "Backend" as, in Odoo, the backend is the web client, and the
frontend is the portal/website. It also led to the "Standard modules"
directory to be placed within the "Backend" directory as of `saas-15.1`
to indicate that they were part of the backend too, but that was a
mistake. Indeed, most standard modules comprise JavaScript methods, and
we could want to document these in the reference at some point.

X-original-commit: 8046f742bc
Part-of: odoo/documentation#2458
2022-07-13 17:16:50 +02:00
Antoine Vandevenne (anv)
aa2bb20b99 [FIX] odoo_theme: fix the display of modal images in mobile
task-2908330

closes odoo/documentation#2450

X-original-commit: 5e0f14f683
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-12 16:50:49 +02:00
LoredanaLrpz
c2f4f6d565 [ADD] pos: add a doc about tracking numbers in pos
Task ID: 2622088

closes odoo/documentation#2449

X-original-commit: 235d2ad749
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Perazzo Loredana (lrpz) <lrpz@odoo.com>
Co-authored-by: Robin Boisdenghien <robo@odoo.com>
2022-07-12 16:50:46 +02:00
Antoine Vandevenne (anv)
3c9f6d03ff [CLN] conf.py: stop labelling saas-15.1 in version switcher
The branch was recently dropped from the supported versions. We no
longer need to add a label for it in the version switcher.

closes odoo/documentation#2436

X-original-commit: 2481e3d842
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-11 14:42:31 +02:00
LoredanaLrpz
6a5828290d [IMP] pos: add a warning about Six unusability in July
Task ID:2893426
Since Six payment terminal won't be usable starting in July 2022, I
added this warning.

closes odoo/documentation#2424

X-original-commit: ceec1b0436
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
Signed-off-by: Perazzo Loredana (lrpz) <lrpz@odoo.com>
2022-07-08 10:04:35 +02:00
“Lau-Odoo”
f33e300485 [IMP] ecommerce: remove one sub-menu to add it as a see also
task - 2904108 I removed the "website/publish" section from the toctree to add a link to the full website documentation inside off the see also.

closes odoo/documentation#2419

X-original-commit: 7307dac6a6
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-07 19:01:24 +02:00
Demesmaeker
797e793840 [FIX] sale_amazon: fix information displayed
Both carrier name and tracking reference are now displayed to the
customer, even when using the carrie `Self Delivery`

task-2900803

closes odoo/documentation#2411

X-original-commit: 471d0c2094
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-07 14:22:32 +02:00
LoredanaLrpz
65df2205b2 [ADD] pos: add a new doc page about sales orders in pos
Task ID: 2622084

closes odoo/documentation#2400

X-original-commit: 53744bea5b
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
Co-authored-by: Quentin Celis (qce) <qce@odoo.com>
Co-authored-by: Xavier Plateau (xpl) <xpl@odoo.com>
Co-authored-by: Robin Boisdenghien (robo) <robo@odoo.com>
2022-07-07 07:17:09 +02:00
LoredanaLrpz
e3f6e74a44 [IMP] pos: change the page heading
closes odoo/documentation#2403

X-original-commit: a5d850e230
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-07-07 06:16:59 +02:00
Ludvig Auvens
71746079eb [IMP] eCommerce: update of cross-selling doc for Odoo 15.0 and after.
closes odoo/documentation#2393

X-original-commit: db8b45ead2
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-06 18:21:37 +02:00
Antoine Vandevenne (anv)
507e0d69b1 [MOV] developer/misc: move all pages to a more logical location
Before this commit, the "Developer/Misc" directory of the doc, and
more particularly the "Developer/Misc/Other" sub-directory, was used as
a garbage dump where we moved all the pages that didn't fit elsewhere.
Due to that, interesting and important pages, such as the Coding
Guidelines, were buried in that directory never to be read again by Odoo
developers.

This commit moves most pages under "Misc" one or two levels up to be
located directly under "Developer" hence making them more accessible. A
new "Contributing/Development" directory is added to host the Coding
Guidelines page and soon many other pages.

task-2897143

closes odoo/documentation#2379

X-original-commit: 12ff9f118b
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-04 17:23:59 +02:00
Antoine Vandevenne (anv)
e2ecd7374d [IMP] developer/javascript: unify the styling of API references
Now that a new styling for API references was added with commit 934f45c,
we can remove the extra CSS that was crafted specifically for JavaScript
API references with commit 05a0a49a. While we're at it, this commit also
applies the new styling to definition lists that were missing it, like
it was done for the page on views with commit 120ae785.

closes odoo/documentation#2377

X-original-commit: 31a9d4a340
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-07-04 17:23:57 +02:00
“Lau-Odoo”
b3a9ba9637 [IMP] website: broken link removal
task - 2841794

closes odoo/documentation#2364

X-original-commit: c40059e0a7
Signed-off-by: Auvens Ludvig (lau) <lau@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-07-01 13:54:47 +02:00
Tom Aarab (toaa)
8e54552d0b [IMP] accounting: Adyen's backend changes for the webhook creation
Adyen's backend had slightly changed and the previous doc version was outdated (URL and HMAC key fields)

task - 2810213

closes odoo/documentation#2355

X-original-commit: da87312821
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-07-01 13:54:30 +02:00
Michelle Vu (mivu)
7a51ad79dd [IMP] discuss: custom ICE server list optional
This will edit the "Define a list of custom ICE servers" section in the
"Configure ICE servers with Twilio" v15.0 user doc. I added a line to
mention that defining a list of custom ICE servers is an optional step,
as Odoo only uses this list as a fallback if Twilio is not configured or
is not working at any given moment.

Fixes PR #1994
Closes Odoo Task 2882679

closes odoo/documentation#2347

X-original-commit: 7f2110e8a3
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-29 12:16:35 +02:00
Antoine Vandevenne (anv)
4ea50a7698 [IMP] developer/views: apply the new API references style
The documentation of view attributes was lacking visual structure to
help the reader figure out which attribute relates to which parent
element. Since this documentation was relying on RST block quotes to
represent the hierarchy of view attributes, we can apply the same new
styling that was added with commit 934f45cf and designed for autodoc,
and which relies on the exact same HTML structure as block quotes.

task-2755298

closes odoo/documentation#2341

X-original-commit: e2a3ca0631
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-29 09:11:21 +02:00
LoredanaLrpz
4d95d71378 [ADD] pos: adyen payment terminal
Task ID: 2808584
Do not Forward port r+

closes odoo/documentation#2334

X-original-commit: 85b5374995
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Perazzo Loredana (lrpz) <lrpz@odoo.com>
2022-06-28 14:57:36 +02:00
LoredanaLrpz
96da70e693 [IMP] pos: change titles
X-original-commit: 5618e5ad9b
Part-of: odoo/documentation#2334
2022-06-28 14:57:36 +02:00
Odoo's Mergebot
1049a2c7f8 [FW][MERGE] odoo_theme: styling fixes, tweaks, and general cleanup
**Special terms restyling:**
A general restyling of special terms has been made for better legibility
in text, and to differentiate roles (ie: `:command:`,`:file:`,`:dfn:`)
so writers can use these instead of italic and bold styling.
`:guilabel:` has not been changed because its use is too vast.

task-2790284

**Reference pages have a new look:**
`code` elements have been restyled to remove unnecessary spaces (ex:
`odoo.models .BaseModel`. See
https://www.odoo.com/documentation/15.0/developer/reference/backend/orm.html#odoo.models.BaseModel)
and to include visual aid of parent/children relations (left border).

Basic for task-2755298

**URL styling:**
When an image has an external link, the `external-link` icon appears
under the image. This has been removed. URLs with icons such as external
links or "Edit on Github" links have been modified to remove the
underline under the icons. On mobile, long URLs would push the content
outside the viewport. `overflow-wrap: anywhere` has been added to all
URLs on mobile devices.

**No more horizontal scroll on Windows thanks to css grid:**
Windows and Mac don't work the same (no kidding). Windows would add
±`1rem` of horizontal scroll when Mac doesn't. Adding that `1rem` to the
content's `max-width` calculations would make Mac unhappy (it left a
`1rem` gap). The solution for everyone to be happy was to change the
display type to `grid`. By doing this, the max-width calculations and
the left positioning according to the side-nav were not necessary
anymore. Great Success. Very Nice.

**Scrolling To:**
With the new subnav added with commit 10f62b6a, the scroll position was
wrong. This is fixed by changing the padding/margin top values in the
`o-scroll-padding` mixin.

**Replace "Hide Search Matches" with close icon:**
The title says it all.

**Forgotten scrollbar styling**
The scrollbar stylings for the side-nav should have been moved to
`o_side_nav-inner` during the previous restyling of the header.

**Clean up the mess:**
All these changes made me want to clean up a bit. By doing so I realised
that a lot of the utility mixins that were used in the old *old* doc
were still present here, but aren't being used. Same for some variables.
Some stying was using values instead of their variable counterparts, so
these have been replaced.

closes odoo/documentation#2327

Forward-port-of: odoo/documentation#2264
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-28 11:44:09 +02:00
Gopakumar N G
67400a763d [FIX] pos: change the tab name in the configuration steps
closes odoo/documentation#2312

X-original-commit: 2f41dc4445
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-28 11:44:07 +02:00
Elisabeth Dickinson
8c67532587 [REF] odoo_theme: replace values with variables in SCSS files
X-original-commit: c82d95b17c
2022-06-27 15:54:43 +02:00
Elisabeth Dickinson
6ff31ab382 [REF] odoo_theme: move stray mixins into the _mixins.scss file
X-original-commit: 7fa153594d
2022-06-27 15:54:42 +02:00
Elisabeth Dickinson
7648b23e76 [CLN] odoo_theme: remove unnecessary css
X-original-commit: fca78f44db
2022-06-27 15:54:41 +02:00
Elisabeth Dickinson
fb119171da [CLN] odoo_theme: remove old doc's unused variables
X-original-commit: 383e3d4206
2022-06-27 15:54:40 +02:00
Elisabeth Dickinson
c412efff2c [REF] odoo_theme: move scrollbar styling to .o_side_nav-inner
X-original-commit: b9ca38215d
2022-06-27 15:54:39 +02:00
Elisabeth Dickinson
5413e8d45f [CLN] odoo_theme: remove old doc's utility mixins
These mixins were used in the old doc and were kept "just in case". The
`valid-radius` mixin already exists in the bootstrap library.

X-original-commit: 9a2e8eefef
2022-06-27 15:54:38 +02:00
Elisabeth Dickinson
163a3d17ff [IMP] odoo_theme: replace "hide search matches" by a close button
X-original-commit: 994d273a59
2022-06-27 15:54:38 +02:00
Elisabeth Dickinson
f55b70c73b [IMP] odoo_theme: improve spacing around code blocks on reference pages
X-original-commit: 794e42f78b
2022-06-27 15:54:37 +02:00
Elisabeth Dickinson
be47502bb5 [FIX] odoo_theme: fix scrollTo margin/padding with new headers height
The scroll padding needed increasing with the new sub-header.
Unnecessary calc() and parenthesis on the headers-height variable are
removed.

X-original-commit: 0b536debac
2022-06-27 15:54:36 +02:00
Elisabeth Dickinson
10758fc7d6 [FIX] odoo_theme: remove the horizontal scroll bar
X-original-commit: 26bc1cd707
2022-06-27 15:54:35 +02:00
Elisabeth Dickinson
68cb30a3a7 [IMP] odoo_theme: improve URL stylings
- Remove external-link icon on images.
- Remove underline from external-link icon on link hover.
- Add overflow-wrap on URLs on mobile.

X-original-commit: 91cb3ca026
2022-06-27 15:54:34 +02:00
Elisabeth Dickinson
8952db8e01 [IMP] odoo_theme: improve general spacings and paddings
X-original-commit: 2e693b3c4a
2022-06-27 15:54:33 +02:00
Elisabeth Dickinson
297b9b2d5e [IMP] odoo_theme: improve special terms styling
Including the `:command:`, `:file:` and `:dfn:` roles, and code-styled
text in alerts.

task-2790284

X-original-commit: 7239986484
2022-06-27 15:54:32 +02:00
Jonathan Castillo (jcs)
87408fd81e [IMP] contributing: update the rst cheat sheet
task - 2810468

closes odoo/documentation#2319

X-original-commit: 9ff312298d
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Elisabeth Dickinson (edi) <edi@odoo.com>
2022-06-27 14:34:37 +02:00
Valentin Chevalier
8d22189b19 [IMP] developer/howtos: Add missing information about debug mode
In chapter 3 of the developer core training, one is asked to click on a
button that is only shown in debug mode but there is no indication about
this mode in this chapter.

closes odoo/documentation#2303

X-original-commit: 96d822bf87
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-27 10:06:56 +02:00
Donatienne Pirlot
015d1470c2 [IMP] accounting: note about outstanding accounts
task-2868642

closes odoo/documentation#2296

X-original-commit: 11f9c35191
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-06-24 17:47:00 +02:00
Antoine Vandevenne (anv)
c3336891a1 [IMP] redirects: split redirects.txt into multiple, per-version, files
The `redirects.txt` file used to specify redirect rules for renamed or
moved documentation pages is starting to grow too big to be easily
maintainable. The main reason is that the number of redirect rules that
were thought to be required has been largely underestimated when
implementing the 'redirects' extension. At first, we believed that no
guidelines or structure were necessary because only a small amount of
redirect rules would be specified. This proved wrong and the file is now
becoming a mess, making it increasingly difficult to figure out where,
why, when, and if a redirect rule is specified in the file.

As the file is versioned, another issue emerges: conflicts occur every
time a commit is forward-ported to a later version if that commit adds a
redirect rule at the end of the file or at a line that was changed in
the later version. As redirect rules are frequently added, and since
blocks of redirect rules for new versions are added at the end of the
file, this tends to happen a lot.

This commit attempts to hit two birds with one stone by splitting the
`redirects.txt` file into multiple files, one per version. While doing
so, the existing redirect rules are ordered alphabetically and moved
into contextual blocks. Instructions and guidelines on how to create
redirect rules are also listed in the `redirects/MANUAL.md` file. By
sorting the redirect rules and adding them in different files, the
number of conflicts should decrease by a lot.

task-2891912

closes odoo/documentation#2291

X-original-commit: f8b03c5554
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-24 10:20:09 +02:00
Antoine Vandevenne (anv)
d3d882757d [IMP] odoo_theme: open images in a modal
task-2358082

closes odoo/documentation#2283

X-original-commit: 2a867b4f60
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Elisabeth Dickinson (edi) <edi@odoo.com>
2022-06-23 17:59:49 +02:00
Antoine Vandevenne (anv)
4ff6271ad8 [FIX] odoo_theme: correctly test for fallback URLs when using switchers
closes odoo/documentation#2273

X-original-commit: 9e84b6f681
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-23 09:59:52 +02:00
Donatienne Pirlot
6655c0800e [IMP] accounting: new content for invoice digitization (ocr)
closes odoo/documentation#2261

Id: 2320188
X-original-commit: c8fd4608d4
Signed-off-by: Pirlot Donatienne (dopi) <dopi@odoo.com>
Signed-off-by: Castillo Jonathan (jcs) <jcs@odoo.com>
2022-06-21 20:21:25 +02:00
Antoine Vandevenne (anv)
d37c6c67bd [FIX] redirects: add missing redirect rule for external_api.rst
The redirect rule was omitted in commit 3465475f.

closes odoo/documentation#2256

X-original-commit: 060e8f2344
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-21 12:33:42 +02:00
“Chiara
187813cdbc [FW][IMP] accounting: remove the odoo tutorials invoices link
Deleting the Odoo Tutorials Invoices link since the course has been merged, and the link isn't necessary anymore.

closes odoo/documentation#2249

Forward-port-of: odoo/documentation#2243
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-06-20 18:56:45 +02:00
lma-odoo
ceed36b6f2 Update epos_ssc.rst
Because of a recent Chrome security update, a lot of customers using peripheral devices (printers, ...) will have to follow this doc.

Therefore, I followed the doc and did the flow on my side.

I modified 'Copy to file' to 'Export' and 'Trusted Root Certification Authorities' to 'Authorities' in order to have the exact same terms as in Chrome (I guess they updated their terms at some point).

closes odoo/documentation#2236

X-original-commit: 4c4b81b12c
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-06-16 13:16:55 +02:00
Elisabeth Dickinson
0d12103866 [FIX] odoo_theme: fix highlight blocks in field-list items
On pages such as /developer/reference/backend/orm.html#fields, the
highlight blocks inside `dl.field-list` items were pushing the width of
the page to go outside the screen on mobile. This is fixed by changing
the `.field-list`'s `display: grid` into `block` on mobile.

closes odoo/documentation#2229

X-original-commit: a689ea236d
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-15 19:05:00 +02:00
Odoo's Mergebot
359a71e83f [FW][MERGE] odoo_theme: revamp header and menu for better mobile support
Previously the switchers were hidden on mobile. These have been moved
to a sub-nav which also contains the button for the sidenav, leaving
more space for the searchbox so it can remain in the header. Like MDN
web docs, the navigation now slides in from the left instead of the
top.

See PR's commits for more details.

task-2800937

closes odoo/documentation#2221

Forward-port-of: odoo/documentation#2206
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-15 13:37:32 +02:00
Antoine Vandevenne (anv)
9f69d7d402 [FIX] odoo_theme: stop testing for valid URLs if in localhost
The mechanism that makes the version and language switchers test for
valid URLs crashed when testing in localhost. The mechanism is now
skipped if the URL starts with a '/'.

X-original-commit: 98e98f65c9
2022-06-15 11:46:06 +02:00
Elisabeth Dickinson
3780b0e135 [FIX] odoo_theme: fix searchbox's highlight-link
task-2800937

X-original-commit: 3fd32fe92a
2022-06-15 11:46:05 +02:00
Elisabeth Dickinson
886ba6150e [IMP] odoo_theme: revamp side menu to add overlay
task-2800937

X-original-commit: 4ed8c2238a
2022-06-15 11:46:04 +02:00
Elisabeth Dickinson
4d34066326 [FIX] odoo_theme: fix menu scrolling
task-2800937

X-original-commit: 9c53901db9
2022-06-15 11:46:03 +02:00
Elisabeth Dickinson
2836734afc [IMP] odoo_theme: add side menu collapse icon
task-2800937

X-original-commit: 7284b11a36
2022-06-15 11:46:02 +02:00
Elisabeth Dickinson
b03ce9947f [IMP] odoo_theme: change collapsing menu orientation
task-2800937

X-original-commit: dee96ad2da
2022-06-15 11:46:01 +02:00
Elisabeth Dickinson
bf1e7ee63e [IMP] odoo_theme: add subheader and adapt switchers and searchbar
task-2800937

X-original-commit: 411e1cb1d3
2022-06-15 11:46:00 +02:00
Elisabeth Dickinson
ddf9fe780e [IMP] odoo_theme: stop translating language names in the switcher
Before this commit, the language names were translated to display
"Français" instead of "French". This helped the user find their language
in the switcher but it was taking too much horizontal space, and that
space was not constant from one language to another.

This commit removes the translations of the language names and simply
goes with "FR", "NL", etc. which any user can identify as their
language.

task-2800937

X-original-commit: b1fa30f431
2022-06-15 11:45:59 +02:00
Elisabeth Dickinson
8a6e2e5d9f [IMP] design: add an icon behind external links
The external links' target attribute is now also updated to open the
link in a new tab. In addition, the "[source]" link of autodoc's models
is moved right next to the name of the model to correctly position the
icon.

task-2790244

closes odoo/documentation#2212

X-original-commit: 343decf192
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-14 14:54:06 +02:00
Elisabeth Dickinson
33c2ee98c8 [IMP] odoo_theme: show the "On this page" section in mobile
When the page gets too small for the "On this page" section (local tree
of content) to fit on the page, the section is now moved above the menu
(global tree of content) rather than being hidden.

task-2800970

closes odoo/documentation#2200

X-original-commit: c0040fa532
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-14 07:41:18 +02:00
LoredanaLrpz
1d01977ba5 [REM] pos: remove cash control doc page in 15 bc deprecated
Task ID: 2680699

closes odoo/documentation#2191

X-original-commit: c0036ae13c
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-13 09:34:06 +02:00
Julien Castiaux
7fdf0ffeb4 [IMP] rdtraining: tip about -i/-u for odoo-bin
It is never shown to the trainee that he can install/update a module
right from the CLI. Multiple developpers still use the app manager to
install/update their modules multiple months into the job.

closes odoo/documentation#2187

X-original-commit: 3d2f067e6c
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
Signed-off-by: Julien Castiaux <juc@odoo.com>
2022-06-10 21:50:51 +02:00
Antoine Vandevenne (anv)
1a57545ff3 [FIX] requirements: pin docutils to 0.16.0
Since sphinx-tabs 3.2.0 has the requirement docutils==0.16.0 and sphinx
3.5.4 has the requirement docutils>=0.12,<0.17, this commit pins
docutils to version 0.16.0.

While we're at it, the dependency to sphinx-tabs is also explicitly
listed, although it was already imported in the extensions. It causes
no trouble to install it from pip alongside the imported extension.

closes odoo/documentation#2177

X-original-commit: 9d36e4e2a4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-10 15:44:04 +02:00
Denis Vermylen
2a4e3cb788 [FIX] odoo.sh: remove hidden folder from documentation
it will also be renamed to .repositories in the near future

closes odoo/documentation#2165

X-original-commit: 1afee9e2c7
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-06-08 09:48:31 +02:00
Antoine Vandevenne (anv)
9b3a941753 [REL] freeze saas-15.4 branch
closes odoo/documentation#2130

Related: odoo/odoo#92735
Related: odoo/design-themes#565
Related: odoo/enterprise#27971
2022-06-07 18:12:13 +02:00
291 changed files with 4705 additions and 3020 deletions

View File

@@ -26,7 +26,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-15.4
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)

View File

@@ -4,11 +4,11 @@
### Requirements
- [Git](https://www.odoo.com/documentation/master/contributing/documentation.html#install-git)
- [Python 3.7 or 3.8](https://www.odoo.com/documentation/master/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/master/requirements.txt).
- [Make](https://www.odoo.com/documentation/master/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in master](https://github.com/odoo/odoo/tree/master) (Optional)
- [Git](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#install-git)
- [Python 3.7 or 3.8](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#python)
- Python dependencies listed in the file [`requirements.txt`](https://github.com/odoo/documentation/tree/saas-15.4/requirements.txt).
- [Make](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#make)
- A local copy of the [odoo/odoo repository in saas-15.4](https://github.com/odoo/odoo/tree/saas-15.4) (Optional)
### Instructions
@@ -23,7 +23,7 @@
2. Open the file `documentation/_build/html/index.html` in your web browser to display the render.
3. See [this guide](https://www.odoo.com/documentation/master/contributing/documentation.html#preview-your-changes)
3. See [this guide](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html#preview-your-changes)
for more detailed instructions.
Optional: to fully build the developer documentation with inline docstrings for documented Python
@@ -34,7 +34,7 @@ be shown.
## Contribute to the documentation
For contributions to the content of the documentation, please refer to the
[Introduction Guide](https://www.odoo.com/documentation/master/contributing/documentation.html).
[Introduction Guide](https://www.odoo.com/documentation/saas-15.4/contributing/documentation.html).
To **report a content issue**, **request new content** or **ask a question**, use the
[repository's issue tracker](https://github.com/odoo/documentation-user/issues) as usual.

36
conf.py
View File

@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
# `version` if the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = 'saas-15.4'
# The minimal Sphinx version required to build the documentation.
needs_sphinx = '3.0.0'
@@ -51,6 +51,10 @@ exclude_patterns = [
# See https://docutils.sourceforge.io/docs/ref/rst/roles.html#standard-roles for other roles.
default_role = 'literal'
# Whether scaled down images should be be wrapped in a `<a/>` tag linking to the image file or not.
html_scaled_image_link = False
# If true, '()' will be appended to :func: etc. cross-reference text
add_function_parentheses = True
@@ -87,7 +91,6 @@ else:
sys.version_info = (3, 7, 0)
odoo_dir = odoo_sources_dirs[0].resolve()
source_read_replace_vals['ODOO_RELPATH'] = '/../' + str(odoo_sources_dirs[0])
source_read_replace_vals['ODOO_ABSPATH'] = str(odoo_dir)
sys.path.insert(0, str(odoo_dir))
import odoo.addons
odoo.addons.__path__.append(str(odoo_dir) + '/addons')
@@ -184,8 +187,9 @@ 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-15.4': "Odoo Online",
'saas-15.3': "Odoo Online",
'saas-15.2': "Odoo Online",
'saas-15.1': "Odoo Online",
'15.0': "Odoo 15",
'14.0': "Odoo 14",
'13.0': "Odoo 13",
@@ -194,18 +198,18 @@ versions_names = {
# The language names that should be shown in the language switcher, if the config option `languages`
# is populated. If a language is passed to `languages` but is not listed here, it will not be shown.
languages_names = {
'de': 'Deutsch',
'en': 'English',
'es': 'Español',
'fr': 'Français',
'nl': 'Nederlands',
'pt_BR': 'Português (BR)',
'uk': 'українська',
'zh_CN': '简体中文',
'de': 'DE',
'en': 'EN',
'es': 'ES',
'fr': 'FR',
'nl': 'NL',
'pt_BR': 'PT',
'uk': 'UA',
'zh_CN': 'ZH',
}
# The specifications of redirect rules used by the redirects extension.
redirects_file = 'redirects.txt'
# The directory in which files holding redirect rules used by the 'redirects' extension are listed.
redirects_dir = 'redirects/'
sphinx_tabs_disable_tab_closing = True
sphinx_tabs_disable_css_loading = True
@@ -229,12 +233,12 @@ html_favicon = os.path.join(html_theme_path[0], html_theme, 'static', 'img', 'fa
# They are copied after the builtin static files, so a file named "default.css" will overwrite the
# builtin "default.css".
html_static_path = ['static']
html_add_permalinks = '' # Sphinx < 3.5
html_permalinks = True # Sphinx >= 3.5
html_permalinks = True
# Additional JS & CSS files that can be imported with the 'custom-js' and 'custom-css' metadata.
# Lists are empty because the files are specified in extensions/themes.
html_js_files = []
html_css_files = ["css/js.css"]
html_css_files = []
# PHP lexer option to not require <?php
highlight_options = {

View File

@@ -272,55 +272,80 @@ Enterprise Edition:
* `Official download page <download_>`_
* `GitHub repository <enterprise-repository_>`_
.. _setup/install/source/git:
Git
~~~
The following requires `git <https://git-scm.com/>`_ to be installed on your machine and that you
have basic knowledge of git commands.
The following requires `Git <git_>`_ to be installed on your machine and that you have basic
knowledge of Git commands. To clone a Git repository, you must choose between cloning with HTTPS or
SSH. If you do not know the difference between the two, the best option is most likely HTTPS. If you
are following the :doc:`Getting started </developer/howtos/rdtraining>` developer tutorial, or plan
on contributing to Odoo source code, choose SSH.
Community Edition:
.. note::
**The Enterprise Git repository does not contain the full Odoo source code**. It is only a
collection of extra add-ons. The main server code is in the Community version. Running the
Enterprise version actually means running the server from the Community version with the
addons-path option set to the folder with the Enterprise version. You need to clone both the
Community and Enterprise repository to have a working Odoo Enterprise installation. See
:ref:`setup/install/editions` to get access to the Enterprise repository.
.. tabs::
.. group-tab:: Windows
.. code-block:: doscon
.. tabs::
C:\> git clone https://github.com/odoo/odoo.git
.. tab:: Clone with HTTPS
.. code-block:: doscon
C:\> git clone https://github.com/odoo/odoo.git
C:\> git clone https://github.com/odoo/enterprise.git
.. tab:: Clone with SSH
.. code-block:: doscon
C:\> git clone git@github.com:odoo/odoo.git
C:\> git clone git@github.com:odoo/enterprise.git
.. group-tab:: Linux
.. code-block:: console
.. tabs::
$ git clone https://github.com/odoo/odoo.git
.. tab:: Clone with HTTPS
.. code-block:: console
$ git clone https://github.com/odoo/odoo.git
$ git clone https://github.com/odoo/enterprise.git
.. tab:: Clone with SSH
.. code-block:: console
$ git clone git@github.com:odoo/odoo.git
$ git clone git@github.com:odoo/enterprise.git
.. group-tab:: Mac OS
.. code-block:: console
.. tabs::
$ git clone https://github.com/odoo/odoo.git
.. tab:: Clone with HTTPS
Enterprise Edition: (see :ref:`setup/install/editions` to get access)
.. code-block:: console
.. tabs::
$ git clone https://github.com/odoo/odoo.git
$ git clone https://github.com/odoo/enterprise.git
.. group-tab:: Windows
.. tab:: Clone with SSH
.. code-block:: doscon
.. code-block:: console
C:\> git clone https://github.com/odoo/enterprise.git
.. group-tab:: Linux
.. code-block:: console
$ git clone https://github.com/odoo/enterprise.git
.. group-tab:: Mac OS
.. code-block:: console
$ git clone https://github.com/odoo/enterprise.git
$ git clone git@github.com:odoo/odoo.git
$ git clone git@github.com:odoo/enterprise.git
.. note::
**The Enterprise git repository does not contain the full Odoo source code**. It is only a
@@ -329,6 +354,8 @@ Enterprise Edition: (see :ref:`setup/install/editions` to get access)
addons-path option set to the folder with the Enterprise version. You need to clone both the
Community and Enterprise repository to have a working Odoo Enterprise installation.
.. _setup/install/source/prepare:
Prepare
-------
@@ -451,6 +478,11 @@ PostgreSQL
<https://postgresapp.com>`_ to download and install PostgreSQL (supported version: 10.0 and
later).
.. tip::
To make the command line tools bundled with `postgres.app` available, make sure to setup your
`$PATH` variable by following the `Postgres.app CLI Tools Instructions
<https://postgresapp.com/documentation/cli-tools.html>`_.
By default, the only user is `postgres` but Odoo forbids connecting as `postgres`, so you need
to create a new PostgreSQL user:
@@ -645,8 +677,8 @@ A typical way to run the server would be:
C:\> python odoo-bin -r dbuser -w dbpassword --addons-path=addons -d mydb
Where `CommunityPath` is the path of the Odoo Community installation, `dbuser` is the
PostgreSQL login, `dbpassword` is the PostgreSQL password and `mydb` is the default database
to serve on `localhost:8069`.
PostgreSQL login, `dbpassword` is the PostgreSQL password, and `mydb` is the name of the
PostgreSQL database.
.. group-tab:: Linux
@@ -655,8 +687,8 @@ A typical way to run the server would be:
$ cd /CommunityPath
$ python3 odoo-bin --addons-path=addons -d mydb
Where `CommunityPath` is the path of the Odoo Community installation and `mydb` is the default
database to serve on `localhost:8069`.
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
of the PostgreSQL database.
.. group-tab:: Mac OS
@@ -665,11 +697,27 @@ A typical way to run the server would be:
$ cd /CommunityPath
$ python3 odoo-bin --addons-path=addons -d mydb
Where `CommunityPath` is the path of the Odoo Community installation and `mydb` is the default
database to serve on `localhost:8069`.
Where `CommunityPath` is the path of the Odoo Community installation, and `mydb` is the name
of the PostgreSQL database.
.. warning::
Some versions of python on Mac might lead to the following error message: `current limit
exceeds maximum limit`. In that case, add the following parameter `--limit-memory-hard 0`
to avoid the problem.
After the server has started (the INFO log `odoo.modules.loading: Modules loaded.` is printed), open
http://localhost:8069 in your web browser and log in with the base administrator account: Use
`admin` for the :guilabel:`Email` and, again, `admin` for the :guilabel:`Password`. That's it, you
just logged into your own Odoo database!
.. tip::
- From there, you can create and manage new :doc:`users
</applications/general/users/manage_users>`.
- The user account you use to log into Odoo's web interface differs from the :option:`--db_user
<odoo-bin -r>` CLI argument.
.. seealso::
- :doc:`The exhaustive list of arguments for odoo-bin </developer/misc/other/cmdline>`.
:doc:`The exhaustive list of CLI arguments for odoo-bin </developer/cli>`.
.. _setup/install/docker:

View File

@@ -7,6 +7,7 @@ Maintain
.. toctree::
maintain/domain_names
maintain/google_oauth
maintain/update
maintain/enterprise
maintain/hosting_changes

View File

@@ -0,0 +1,192 @@
========================================
Connect Gmail to Odoo using Google OAuth
========================================
Odoo is compatible with Google's OAuth for Gmail. In order to send secure emails from a custom
domain, all that is required is to configure a few settings on Google's *Workspace* platform, as
well as on the back end of the Odoo database. This configuration works by using either a personal
email address or an address created by a custom domain.
.. tip::
For more information, visit `Google's documentation
<https://support.google.com/cloud/answer/6158849>`_ on setting up OAuth.
Setup in Google
===============
Create a new project
--------------------
To get started, go to the `Google API Platform
<https://console.cloud.google.com/apis/credentials/consent>`_. Log in with your *Google Workspace*
account if you have one, otherwise log in with your personal Gmail account (this should match the
email address you want to configure in Odoo).
After that, click on :guilabel:`Create Project`, located on the far right of the OAuth consent
screen. If a project has already been created in this account, then the :guilabel:`New Project`
option will be located on the top left under the :guilabel:`Select a project` drop-down menu.
On the :guilabel:`New Project` screen, rename the :guilabel:`Project name` to `Odoo` and browse for
the :guilabel:`Location`. Set the :guilabel:`Location` as the `Google Workspace` organization. If
you are using a personal Gmail account, then leave the :guilabel:`Location` as `No Organization`.
.. image:: google_oauth/new-project.png
:align: center
:alt: Project Name and Location for Google Oauth.
Click on :guilabel:`Create` to finish this step. On the next screen, :guilabel:`User Type` options,
select the :guilabel:`External` option, and then click on :guilabel:`Create` again, which will
finally navigate to the :guilabel:`Edit app registration` page.
Edit app registration
---------------------
- On the :guilabel:`Oauth consent screen` step, under the :guilabel:`App information` section,
enter `Odoo` in the :guilabel:`App name` field. Select the organization's email address under the
:guilabel:`User support` email field.
- Next, under :menuselection:`App Domain --> Authorized domains`, click on :guilabel:`Add Domain`
and enter `odoo.com`.
- After that, under the :guilabel:`Developer contact information` section, enter the organization's
email address. Google uses this email address to notify the organization about any changes to
your project.
- Next, click on the :guilabel:`Save and Continue` button.
- Then, skip the :guilabel:`Scopes` page by scrolling to the bottom and clicking on
:guilabel:`Save and Continue`.
- Next, add the email being configured under the :guilabel:`Test users` step by clicking on
:guilabel:`Add Users` and then the :guilabel:`Save and Continue` button. A summary of the
:guilabel:`App registration` appears.
- Finally, scroll to the bottom and click on :guilabel:`Back to Dashboard`.
Create Credentials
------------------
Now that you have set up the project, you need to create credentials, which includes the
:guilabel:`Client ID` and :guilabel:`Client Secret`. First, click on :guilabel:`Credentials` in the
left sidebar menu.
Then, click on :guilabel:`Create Credentials` in the top menu and select
:guilabel:`OAuth client ID` from the dropdown menu.
- Under :guilabel:`Application Type`, select :guilabel:`Web Application` from the dropdown menu.
- In the :guilabel:`Client ID` field, enter `Odoo`.
- Under the :guilabel:`Authorized redirect URIs` label, click the button :guilabel:`ADD URI`, and
then input `https://yourdbname.odoo.com/google_gmail/confirm` in the :guilabel:`URIs 1` field. Be
sure to replace the *yourdbname* part of the URL with your actual Odoo database name.
- Next, click on :guilabel:`Create` to generate an OAuth :guilabel:`Client ID` and
:guilabel:`Client Secret`. Finally, copy each generated value for later use when configuring in
Odoo, and then navigate to the Odoo database.
.. image:: google_oauth/client-credentials.png
:align: center
:alt: Client ID and Client Secret for Google OAuth.
Setup in Odoo
=============
Enter Google Credentials
------------------------
First, open Odoo and navigate to the :guilabel:`Apps` module. Then, remove the :guilabel:`Apps`
filter from the search bar and type in `Google`. Install the module called :guilabel:`Google Gmail`.
Next, navigate to :menuselection:`Settings --> General Settings`, and under the :guilabel:`Discuss`
section, ensure that the checkbox for :guilabel:`Custom Email Servers` is checked. This populates a
new option for :guilabel:`Gmail Credentials`. Then, copy and paste the :guilabel:`Client ID` and
:guilabel:`Client Secret` into the respective fields and :guilabel:`Save` the settings.
Configure outgoing email server
-------------------------------
After that, on the :guilabel:`General Settings` page, under :guilabel:`Custom Email Servers`, click
:guilabel:`Outgoing Email Servers` to configure the external Gmail account.
.. image:: google_oauth/outgoing-servers.png
:align: center
:alt: Configure Outgoing Email Servers in Odoo.
Then, :guilabel:`Create` a new email server and select the option for :guilabel:`Gmail`. Next, fill
in the :guilabel:`Description` (can be anything) and the email :guilabel:`Username` and click on
:guilabel:`Connect your Gmail account`.
A new window from :guilabel:`Google` opens to complete the authorization process. Select the
appropriate email address that is being configured in Odoo.
If the email address is a personal account, an extra step pops up, click :guilabel:`Continue` to
allow the verification and connect the Gmail account to Odoo.
Then, allow Odoo to access the Google account by clicking on :guilabel:`Continue` or
:guilabel:`Allow`. After that, the page navigates back to the newly configured outgoing email
server in Odoo. The configuration automatically loads the token in Odoo, and a tag stating
:guilabel:`Gmail Token Valid` appears in green.
.. image:: google_oauth/green-token.png
:align: center
:alt: Configure Outgoing Email Servers in Odoo.
Finally, save the settings and :guilabel:`Test the Connection`. A confirmation message should
appear. The Odoo database can now send safe, secure emails through Google using OAuth
authentication.
Google OAuth FAQ
================
Production VS Testing Publishing Status
---------------------------------------
Choosing :guilabel:`Production` as the :guilabel:`Publishing Status` (instead of Testing) will
display the following warning message:
.. image:: google_oauth/published-status.png
:align: center
:alt: OAuth is Limited to 100 Sensitive Scope Logins.
To correct this warning, navigate to the `Google API Platform
<https://console.cloud.google.com/apis/credentials/consent>`_. If the :guilabel:`Publishing status`
is :guilabel:`In Production`, click :guilabel:`Back to Testing` to correct the issue.
No Test Users Added
-------------------
If no test users are added to the OAuth consent screen, then a 403 access denied error will
populate.
.. image:: google_oauth/403-error.png
:align: center
:alt: 403 Access Denied Error.
To correct this error, return to the :guilabel:`OAuth consent screen` under
:guilabel:`APIs & Services` and add test user(s) to the app. Add the email that you are configuring
in Odoo.
Gmail Module not updated
------------------------
If the :guilabel:`Gmail Module` in Odoo has not been updated to the latest version, then a
:guilabel:`Forbidden` error message populates.
.. image:: google_oauth/forbidden-error.png
:align: center
:alt: Forbidden you don't have the permission to access the requested resource.
To correct this error, go to the :guilabel:`Apps` module and clear out the search terms. Then,
search for `Gmail` or `Google` and upgrade the :guilabel:`Google Gmail` module. Finally, click on
the three dots on the upper right of the module and select :guilabel:`Upgrade`.
Application Type
----------------
When creating the :guilabel:`Credentials` (OAuth Client ID and Client Secret), if
:guilabel:`Desktop App` is selected for the :guilabel:`Application Type`, an
:guilabel:`Authorization Error` appears.
.. image:: google_oauth/error-400.png
:align: center
:alt: Error 400 Redirect URI Mismatch.
To correct this error, delete the credentials already created and create new credentials, selecting
:guilabel:`Web Application` for the :guilabel:`Application Type`. Then, under
:guilabel:`Authorized redirect URIs`, click :guilabel:`ADD URI` and type:
`https://yourdbname.odoo.com/google_gmail/confirm` in the field.
.. note::
Replace *yourdbname* in the URL with the Odoo database name.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -53,7 +53,7 @@ From Odoo.sh to Odoo Online
- Your subscription number
- The URL you want to use for your database (e.g., `example.odoo.com`)
- Which brand you want to migrate
- Which branch you want to migrate
- In which region you want to be hosted:
- Americas

View File

@@ -68,14 +68,13 @@ This matrix shows the support status of every version.
🏁 Future version, not released yet
.. This is an awful way to display colored circles but "Large Green Circle Emoji" was only released
in 2019 (see https://unicode-table.com/en/1F7E2/). Let's wait a few more years...
.. |green| raw:: html
.. |green| image:: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMzIuMTkgMjMyLjE5Ij48Y2lyY2xlIGN4PSIxMTYuMDkiIGN5PSIxMTYuMDkiIHI9IjExNi4wOSIgc3R5bGU9ImZpbGw6IzAwYTcwMCIvPjwvc3ZnPg==
:width: 15
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
.. |red| image:: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMzIuMTkgMjMyLjE5Ij48Y2lyY2xlIGN4PSIxMTYuMDkiIGN5PSIxMTYuMDkiIHI9IjExNi4wOSIgc3R5bGU9ImZpbGw6I2QwMDAwMCIvPjwvc3ZnPg==
:width: 15
.. |red| raw:: html
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
I run an older version of Odoo/OpenERP/TinyERP
==============================================

View File

@@ -167,7 +167,7 @@ In the above commands, the argument:
* ``--stop-after-init`` will immediately shutdown the server instance after it completed the operations you asked.
More options are available and detailed in the
:doc:`CLI documentation </developer/misc/other/cmdline>`.
:doc:`CLI documentation </developer/cli>`.
You can find in the logs (*~/logs/odoo.log*) the addons path used by Odoo.sh to run your server.
Look for "*odoo: addons paths*":

View File

@@ -42,7 +42,7 @@ instance will be held temporarily unavailable for maintenance reason.
This method is equivalent to perform an upgrade of the module through the Apps menu,
or through the :code:`-u` switch of
:doc:`the command line </developer/misc/other/cmdline>`.
:doc:`the command line </developer/cli>`.
In the case the changes in the commit prevent the server to restart,
or if the modules update fails,
@@ -279,10 +279,21 @@ The *import database* feature accepts database archives in the format provided b
* the Odoo.sh backup download button of this *Backups* tab,
* the Odoo.sh dump download button in the :ref:`Builds view <odoosh-gettingstarted-builds>`.
.. _odoo_sh/upgrade:
Upgrade
-------
Available for production and staging branches for valid projects.
.. seealso::
:doc:`Upgrade - Odoo.sh <../../upgrade/odoo_sh>`
.. _odoosh-gettingstarted-branches-tabs-settings:
Settings
--------
Here you can find a couple of settings that only apply to the currently selected branch.
.. image:: branches/interface-branches-settings.jpg
@@ -384,7 +395,7 @@ we are considering the feature if there is enough demand.
In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM
(DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name
settings to increase the deliverability of your outgoing emails.
The configuration steps are explained in the documentation about :ref:`SPF
The configuration steps are explained in the documentation about :ref:`SPF
<email_communication/spf_compliant>` and :ref:`DKIM <email_communication/dkim_compliant>`.

View File

@@ -37,7 +37,6 @@ The working directory is composed of the following folders:
│ │ ├── enterprise Odoo Enterprise source code
│ │ ├── themes Odoo Themes source code
│ │ └── user Your repository branch source code
│ ├── repositories The Git repositories used by your project
│ ├── data
│ │ ├── filestore database attachments, as well as the files of binary fields
│ │ └── sessions visitors and users sessions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -1,66 +1,132 @@
=======
Odoo.sh
=======
Test upgrade request
====================
.. _upgrade/odoo_sh/overview:
Download a dump of your database (from the :ref:`Builds view
<odoosh-gettingstarted-builds-download-dump>`), choose the **exact copy** and **without filestore**
options. Upload the .sql.gz dump on https://upgrade.odoo.com/upload and select the testing purpose.
Once it's processed, you'll get a dump of the database in return.
Overview
========
.. important::
To have the most up-to-date test version of your database, create a backup of your production
database just before creating your request. Upload it in your staging branch, select **Exact
dump** and **Without filestore**, and then click *start*.
Test your upgraded database
===========================
At the beginning of your upgrade project, make sure that you create a new staging branch for testing
purposes by forking your main branch.
Once the staging build is complete (it doesn't matter if it failed due to the version
incompatibility), import your upgraded dump in the *Backups* tab of the branch.
Odoo.sh is integrated with the upgrade platform to make the upgrade process easier.
.. note::
The platform automatically detects the version of the dump and changes the version of Odoo's
source code to the corresponding version of the build.
The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid
projects with a valid production build.
Test the upgraded database and make sure everything runs as it's supposed to.
.. image:: odoo_sh/odoo-sh-menu.png
:align: center
:alt: Click on the upgrade menu
Upgrade your production database
================================
The suggested upgrade steps on Odoo.sh are:
Once you've tested everything and you're satisfied, start the process over to get an up-to-date
upgraded dump:
* Make a new dump of your production database (as described in step 1)
* Upload it on upgrade.odoo.com and select the Production purpose
* Receive the newly upgraded dump and import it in your production branch. The build might get
marked as failed because the platform will run it with the upgraded databases' Odoo version
together with the old custom code.
* Merge or commit the upgraded custom code in the production branch
If anything goes wrong, remember you can restore a backup. The platform will always make one before
you make any Odoo.sh operation on the production database. If the restored backup comes from a
previous version, the platform will detect it and change the project's Odoo version back if it needs
to.
Custom modules (if applicable)
==============================
The upgrade of a database that contains custom modules is a 2 step process.
#. The standard upgrade is done when your upgrade request is completed.
#. Your custom modules also need to be upgraded to keep them compatible with the new version.
Depending on your contract, the upgrade of your custom modules can be done
- by yourself
- by your Partner
- by Odoo (if you hold a subscription to 'Maintenance of Customizations')
#. On a :guilabel:`Development` branch, upgrade your custom modules to keep them compatible with the
new version and thoroughly **test them**.
#. Switch that branch to the :guilabel:`Staging` branch, **upgrade** the last daily production
backup and **test it**. Write upgrade scripts if necessary.
#. Trigger the production upgrade from your :guilabel:`Production` branch and sit tight.
.. seealso::
- :ref:`upgrade/sla`
- :doc:`../../administration/upgrade`
- :doc:`Upgrade FAQ <../upgrade/faq>`
- :doc:`Introduction to Odoo.sh <../odoo_sh/overview/introduction>`
.. _upgrade/odoo_sh/custom-modules:
Upgrade your custom modules
===========================
The first step is to upgrade your custom modules to keep them compatible with the new version. Fork
your :guilabel:`Production` branch in the :guilabel:`Development` stage, then go to the settings of
your :guilabel:`Development` branch and select the Odoo version you target. If needed, modify your
code to be compatible with the new version. Make sure to **test** your features are still working
correctly.
.. note::
Depending on your contract, the upgrade of your custom modules can be done by yourself, by your
Partner or by Odoo (if you hold a subscription including maintenance of customizations).
.. _upgrade/odoo_sh/testing-phase:
Upgrade your database on a staging branch
=========================================
Take the upgraded development branch and drag & drop it to :guilabel:`Staging`.
Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on
:guilabel:`Test Upgrade`.
.. image:: odoo_sh/odoo-sh-staging.png
:align: center
:alt: Odoo.sh project and tabs
The **latest production daily automatic backup** is sent to the
`upgrade platform <https://www.upgrade.odoo.com>`_ to start the upgrade test process.
.. note::
You can follow the upgrade process by going to the :guilabel:`Upgrade` menu of your
:guilabel:`Production` branch.
When the upgraded backup is ready on the `upgrade platform <https://www.upgrade.odoo.com>`_, it is
automatically downloaded back to your project.
The branch is now in a **special mode**: each time a **commit is pushed** on the branch, a
**restore operation** of the upgraded backup occurs, and an **update of all the custom modules**
happens. This allows you to quickly iterate on your custom modules upgrade scripts. The log file of
the upgrade process can be found at :file:`~/logs/upgrade.log` in your newly upgraded staging build.
.. note::
- The **special upgrade mode** is automatically closed after 30 days.
- It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
upgraded database are set to be updated. If the modules are missing in the code, the update
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
upgrade script are necessary to clean up the database. The complete removal of the module has
to be handled afterwards.
Functionally test your upgraded database
========================================
Now that the test upgraded database is available on your staging branch, **thoroughly test it** and
make sure everything runs as it's supposed to. Once you are satisfied with the result, you are ready
to upgrade your production database.
Production upgrade
==================
Once you are happy with your testing, you can start the process on the :guilabel:`Production`
branch.
On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the
:guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button.
.. image:: odoo_sh/odoo-sh-prod.png
:align: center
:alt: View from the upgrade tab
The actual process is **triggered as soon as you push a new commit** in your branch. Make sure you
are pushing code that is compatible with the new version. For example by merging the code from your
upgraded staging branch.
.. note::
You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main
branch.
.. image:: odoo_sh/odoo-sh-progress.png
:align: center
:alt: View showing the progress of the upgrade
.. important::
Your database is unavailable throughout the process.
.. note::
If anything goes wrong, the platform automatically reverts the upgrade, the same as it would be
for a regular update. In case of success, a backup is always made.
The update of your custom modules must be successful to complete the entire upgrade process. Make
sure the status of your staging upgrade is :guilabel:`successful` before trying it in production.
.. note::
It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
upgraded database are set to be updated. If the modules are missing in the code, the update
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
upgrade script are necessary to clean up the database. The complete removal of the module has to
be handled afterwards.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -15,7 +15,6 @@ development with features such as AI-powered invoice recognition, synchronizatio
accounts, smart matching suggestions, etc.
.. seealso::
- `Odoo Tutorials: Invoicing <https://www.odoo.com/slides/invoicing-18>`_
- `Odoo Tutorials: Accounting <https://www.odoo.com/slides/accounting-19>`_
- :doc:`Accounting Cheat Sheet <accounting/getting_started/memento>`

View File

@@ -42,5 +42,8 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
:alt: Select the toggle button and click on outstanding Accounts
.. note::
If you do not specify an outstanding payments account or an outstanding receipts account for a
specific journal, Odoo uses the default outstanding accounts.
- If you do not specify an outstanding payments account or an outstanding receipts account for a
specific journal, Odoo uses the default outstanding accounts.
- If your main bank account is added as an outstanding receipts account or outstanding payments
account, when a payment is registered, the invoice or bill's status is directly set to
:guilabel:`Paid`.

View File

@@ -11,4 +11,4 @@ Vendor bills
supplier_bills/purchase_receipts
supplier_bills/deferred_expenses
supplier_bills/assets
supplier_bills/ocr
supplier_bills/invoice_digitization

View File

@@ -0,0 +1,78 @@
=============================================================
Invoice digitization with optical character recognition (OCR)
=============================================================
**Invoice digitization** is the process of automatically encoding traditional paper invoices into
vendor bills and customer invoices forms in your accounting.
Odoo uses :abbr:`OCR (optical character recognition)` and artificial intelligence technologies to
recognize the content of the documents. Vendor bills and customer invoices forms are automatically
created and populated based on the scanned invoices.
.. seealso::
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
- :doc:`/applications/general/in_app_purchase`.
- `Odoo Tutorials: Invoice Digitization with OCR
<https://www.odoo.com/slides/slide/digitize-bills-with-ocr-1712>`_.
.. note::
- The more documents you scan, the better the system identifies the correct data.
Configuration
=============
In :menuselection:`Accounting --> Configuration --> Settings --> Digitalization`, check the box
:guilabel:`Document Digitalization` and choose whether :guilabel:`Vendor Bills` and
:guilabel:`Customer Invoices` should be processed automatically or manually.
The :guilabel:`Single Invoice Line Per Tax` option can also be selected. It enables to get only one
line created per tax in the new bill, regardless of the number of lines from the invoice.
Invoice upload
==============
Upload invoices manually
------------------------
From the :guilabel:`Accounting Dashboard`, click on the :guilabel:`Upload` button of your vendor
bills journal.
Alternatively, go to :menuselection:`Accounting --> Customers --> Invoices` or
:menuselection:`Accounting --> Vendors --> Bills` and select :guilabel:`Upload`.
Upload invoices using an email alias
------------------------------------
You can configure your connected scanner to send scanned documents to an email alias. Emails sent to
these aliases are converted into new draft customer invoices or vendor bills.
You can modify the email alias of a journal by going to :menuselection:`Accounting --> Configuration
--> Journals`, opening the appropriate journal, opening the :guilabel:`Advanced Settings` tab, and
modifying the :guilabel:`Email Alias` field.
If you use the :doc:`Documents <../../../documents>` app, you can send your scanned invoices to the
:guilabel:`Finance` workspace (e.g., `inbox-financial@example.odoo.com`).
Invoice digitization
====================
According to your settings, the document is either processed automatically, or you need to click on
:guilabel:`Send for digitalization` to do it manually.
Once the data is extracted from the PDF, you can correct it if necessary by clicking on the
respective tags (available in Edit mode) and selecting the proper information instead.
Pricing
=======
| The **invoice digitization** is an In-App Purchase (IAP) service that requires prepaid credits to
work. Digitizing one document consumes one credit.
| To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings --> Digitization`
and click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> Odoo IAP` and click on
:guilabel:`View My Services`.
.. important::
- If you are on Odoo Online (SaaS) and have the Enterprise version, you benefit from free trial
credits to test the feature.
.. seealso::
- `Our Privacy Policy <https://iap.odoo.com/privacy#header_6>`_.

View File

@@ -1,56 +0,0 @@
==============================================================
Digitize vendor bills with optical character recognition (OCR)
==============================================================
Encoding bills manually can be a time-consuming task. Having a solution that allows you to digitize
them and automatically import the data into your database reduces errors and saves you time.
.. important::
`Try it out <https://www.odoo.com/app/invoice-automation>`_! Upload one of your Bills or try one of our samples.
Set up the feature
==================
Go to :menuselection:`Accounting --> Settings --> Bill Digitalization`, and choose whether the bills
should be processed automatically (with OCR) or manually (on demand).
.. image:: ocr/setup_ocr.png
:align: center
:alt: Activate the feature going to the settings application in Odoo Accounting
Start digitizing your bills
---------------------------
Scan your bills and then go to :menuselection:`Accounting --> Vendors --> Bills` and upload your
document. Based on your configuration, it either processes the documents automatically, or you
need to click on *Send for Digitalization* to do it manually.
.. tip::
You can also create a vendor bill through the *Documents* app or by using an email alias on your
journals.
Once the data is extracted from the PDF, you can correct it if necessary by clicking on the
respective tag (available in *Edit* mode), and selecting the right information instead.
.. image:: ocr/example_ocr.png
:align: center
:height: 580
:alt: Example of a scanned bill in Odoo Accounting
.. note::
The more bills you scan, the better the system gets at identifying the correct data.
Pricing
=======
| The *Bill Digitalization* is an *In-App Purchase (IAP)* service which requires prepaid credits to
work. Digitizing one document consumes one credit.
| To buy credits, go to :menuselection:`Accounting --> Configuration --> Settings --> Bill
Digitalization` and click on *Buy credits*, or go to :menuselection:`Settings --> Odoo IAP` and
click on *View My Services*.
.. important::
- If you are on Odoo Online (SAAS) and have the Enterprise version, you benefit from free trial
credits to test the feature.
.. seealso::
- Our `Privacy Policy <https://iap.odoo.com/privacy#header_6>`_.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -15,3 +15,4 @@ Customer invoices
customer_invoices/credit_notes
customer_invoices/epc_qr_code
customer_invoices/snailmail
customer_invoices/electronic_invoicing

View File

@@ -0,0 +1,102 @@
================================================================
Electronic invoicing (:abbr:`EDI (electronic data interchange)`)
================================================================
EDI, or electronic data interchange, is the inter-company communication of business documents, such
as purchase orders and invoices, in a standard format. Sending documents according to an EDI
standard ensures that the machine receiving the message can interpret the information correctly.
Various EDI file formats exist and are available depending on your company's country.
EDI feature enables automating the administration between companies and might also be required by
some governments for fiscal control or to facilitate the administration.
Electronic invoicing of your documents such as customer invoices, credit notes or vendor bills is
one of the application of EDI.
Odoo supports, among others, the following formats.
.. list-table::
:header-rows: 1
* - Format Name
- Applicability
* - Factur-X (CII)
- Default format on Odoo (enabled by default)
* - Peppol BIS Billing 3.0 (UBL)
- For companies whose countries are part of the `EAS list
<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_
* - E-FFF
- For Belgian companies
* - XRechnung (UBL)
- For German companies
* - Fattura PA (IT)
- For Italian companies
* - CFDI (4.0)
- For Mexican companies
* - Peru UBL 2.1
- For Peruvian companies
* - SII IVA Llevanza de libros registro (ES)
- For Spanish companies
* - UBL 2.1 (Columbia)
- For Colombian companies
* - Egyptian Tax Authority
- For Egyptian companies
* - E-Invoice (IN)
- For Indian companies
* - NLCIUS (Netherlands)
- For Dutch companies
* - EHF 3.0
- For Norwegian companies
.. seealso::
- :doc:`../../fiscal_localizations/overview/fiscal_localization_packages`
Configuration
=============
Go to :menuselection:`Accounting --> Configuration --> Journals --> Customer Invoices --> Advanced
Settings --> Electronic Invoicing` and enable the formats you need for this journal.
.. image:: electronic_invoicing/formats.png
:align: center
:alt: Select the EDI format you need
Once an electronic invoicing format is enabled, XML documents are generated when clicking on
:guilabel:`Confirm` in documents such as invoices, credit notes, etc. These documents are either
visible in the attachment section, or embedded in the PDF.
.. note::
- For E-FFF, the xml file only appears after having generated the PDF (:guilabel:`Print` or
:guilabel:`Send & Print` button), since the PDF needs to be embedded inside the xml.
- By default, the :guilabel:`Factur-X` option is enabled. It means that an XML file is
automatically included in the PDF document that is sent.
- The formats available depend on the country registered in your company's :guilabel:`General
Information`.
- Odoo supports the **Peppol BIS Billing 3.0** format that can be used via existing access
points.
Add new formats to a database created before July 2022
------------------------------------------------------
If your database was created before July 2022 and you wish to use one of the formats available from
July 2022, you have to :ref:`install <general/install>` the module :guilabel:`Import/Export
electronic invoices with UBL/CII` (modules technical name: `account_edi_ubl_cii`) and your
country-specific module.
.. example::
If you want to use the Belgian format E-FFF in a database created prior to July 2022, you need to
:ref:`install <general/install>`:
.. list-table::
:header-rows: 1
* - Name
- Technical name
* - Belgium - E-Invoicing (UBL 2.0, e-fff)
- `l10n_be_edi`
* - Import/Export electronic invoices with UBL/CII
- `account_edi_ubl_cii`
.. note::
Once the new module is installed, UBL 2.0 and UBL 2.1 formats no longer appear in the journal
since UBL BIS Billing 3.0 is available and more widely supported.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -145,5 +145,18 @@ It remains possible to resequence the invoices but with some restrictions:
#. The feature does not work if the sequence is inconsistent with the month of the entry.
#. It does not work if the sequence leads to a duplicate.
#. The order of the invoice remains unchanged.
#. It is useful for people who use a numbering from another software and who want to continue the
#. It is useful for people who use a numbering from another software and who want to continue the
current year without starting over from the beginning.
Invoice digitization with optical character recognition (OCR)
---------------------------------------------------------------
**Invoice digitization** is the process of automatically encoding traditional paper invoices into
invoices forms in your accounting.
Odoo uses OCR and artificial intelligence technologies to recognize the content of the documents.
Vendor bills and customer invoices forms are automatically created and populated based on scanned
invoices.
.. seealso::
- :doc:`/applications/finance/accounting/payables/supplier_bills/invoice_digitization`

View File

@@ -2,14 +2,14 @@
Adyen
=====
`Adyen <https://www.adyen.com/>`_ is a Dutch-based company that offers several online payment
`Adyen <https://www.adyen.com/>`_ is a Dutch company that offers several online payment
possibilities.
Configuration
=============
.. seealso::
- :ref:`payment_acquirers/add_new`
:ref:`payment_acquirers/add_new`
Credentials tab
---------------
@@ -27,8 +27,10 @@ You can copy your credentials from your Adyen account, and paste them in the rel
the **Credentials** tab.
.. important::
If you are trying Adyen as a test, with a *test account*, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
If you are trying Adyen as a test, with an Adyen *test account*, head to
:menuselection:`Accounting --> Configuration --> Payment Acquirers`. There, click on
:guilabel:`Adyen`, enable :guilabel:`Test Mode` and enter your credentials in the
:guilabel:`Credentials` tab.
.. _adyen/api_and_client_keys:
@@ -39,11 +41,13 @@ In order to retrieve the API Key and the Client Key, log into your Adyen account
:menuselection:`Developers --> API Credentials`.
- If you already have an API user, open it.
- If you don't have an API user yet, click on **Create new credential**.
Go to :menuselection:`Authentication` and get or generate your **API Key** and **Client Key**. Be
careful to copy your API key as you'll not be allowed to get it later without generating a new one.
Go to :menuselection:`Server settings --> Authentification` and copy or generate your **API Key**.
Be careful to copy your API key as you'll not be allowed to get it later without generating a new
one.
This is also the place where you'll :ref:`allow payments to be made from your website
<adyen/allowed_origins>`.
Now, head to :menuselection:`Client settings --> Authentification` and cody or generate your
**Client Key**. This is also the place where you can :ref:`allow payments to be made from your
website <adyen/allowed_origins>`.
.. _adyen/hmac_key:
@@ -54,19 +58,23 @@ In order to retrieve the HMAC Key, you'll need to configure a `Standard Notifica
this, log into your Adyen account then go to :menuselection:`Developers --> Webhooks --> Add webhook
--> Add Standard notification`.
.. image:: adyen/adyen_add_webhook.png
.. image:: adyen/adyen-add-webhook.png
:align: center
:alt: Configure a webhook.
There, in :menuselection:`Transport --> URL`, enter your server address followed by
`/payment/adyen/notification`.
There, in :menuselection:`General --> Server configuration --> URL`, enter your server address
followed by `/payment/adyen/notification`.
.. image:: adyen/adyen_webhook_url.png
.. image:: adyen/adyen-webhook-url.png
:align: center
:alt: Enter the notification URL.
Then continue in :menuselection:`Additional Settings --> HMAC Key --> Generate new HMAC key`. Be
careful to copy it as you'll not be allowed to get it later without generating a new one.
Then enter :menuselection:`Security --> HMAC Key --> Generate`. Be careful to copy the key as you
will not be allowed to do it later without generating a new one.
.. image:: adyen/adyen-hmac-key.png
:align: center
:alt: Generate a HMAC key and save it.
You have to save the webhook to finalize its creation.
@@ -76,10 +84,11 @@ URLs
~~~~
To retrieve the URLs, log into your Adyen account, go to :menuselection:`Developers --> API URLs`.
Pick one of the URLs listed next to **Recurring** as your **Recurring API URL** and one of the URLs
listed next to **Checkout API** as your **Checkout API URL**.
Select one of the URLs listed next to :guilabel:`Classic Recurring API` as your
:guilabel:`Recurring API URL` and one listed next to :guilabel:`Checkout API` as your
:guilabel:`Checkout API URL`.
.. image:: adyen/adyen_api_urls.png
.. image:: adyen/adyen-api-urls.png
:align: center
:alt: Get the links for the different API.
@@ -92,10 +101,10 @@ Allow payments from a specific origin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To allow payment originated from your website, follow the steps in :ref:`adyen/api_and_client_keys`
to navigate to your API user and go to :menuselection:`Allowed Origins`, then add the URLs from
to navigate to your API user and go to :menuselection:`Add allowed origins`, then add the URLs from
where payments will be made (the URLs of the servers hosting your Odoo instances).
.. image:: adyen/adyen_allowed_origins.png
.. image:: adyen/adyen-allowed-origins.png
:align: center
:alt: Allows payments originated from a specific domain.
@@ -126,4 +135,4 @@ Then, open your Adyen Merchant Account, go to :menuselection:`Account --> Settin
**revoke** it.
.. seealso::
- :doc:`../payment_acquirers`
:doc:`../payment_acquirers`

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -5,84 +5,106 @@ Ogone
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
company that provides the technology involved in secure electronic transactions.
Configuration on Odoo
=====================
.. seealso::
- :ref:`payment_acquirers/add_new`
- `Ogone's documentation <https://epayments-support.ingenico.com/get-started/>`_.
Credentials tab
---------------
Settings in Ogone
=================
Odoo needs your **API Credentials** to connect with your Ogone account, which comprise:
Create an API user
------------------
- **PSPID**: The ID solely used to identify the account with Ogone. You chose it when you opened
your account.
- :ref:`API User ID <ogone/api_user>`: The ID solely used to identify the user with Ogone.
- :ref:`API User Password <ogone/api_user>`: Value used to identify the user with Ogone.
- :ref:`SHA Key IN <ogone/sha_key_in>`: Key used in the signature Odoo send to Ogone.
- :ref:`SHA Key OUT <ogone/sha_key_out>`: Key used in the signature Ogone send to Odoo.
Log into your Ogone account and head to the :guilabel:`Configuration` tab.
You can copy your credentials from your Ogone account, and paste them in the related fields under
the **Credentials** tab.
You need to create an **API user** to be used in the creation of transactions from Odoo. While you
can use your main account to do so, using an **API user** ensures that if the credentials used in
Odoo are leaked, no access to your Ogone configuration is possible. Additionally, passwords for
**API users** do not need to be updated regularly, unlike normal users.
.. _ogone/api_user:
To create an **API user**, go to :menuselection:`Configuration --> Users` and click on
:guilabel:`New User`. The following fields must be configured:
API User ID and Password
~~~~~~~~~~~~~~~~~~~~~~~~
.. _ogone/ogone:
If you already created a user and have both its ID and password, just copy them. You can also
generate a new password from :menuselection:`Configuration --> Users --> Your chosen user --> change
password`.
- :guilabel:`UserID`: you can choose anything you want.
- :guilabel:`User's Name, E-mail and Timezone`: you can enter the information you want.
- :guilabel:`Profile`: should be set to :guilabel:`Admin`.
- :guilabel:`Special user for API`: should be checked.
If you don't have a user, create one by going to :menuselection:`Configuration --> Users -->
New User`. Set your **User ID** to get your **password** when you save your new user.
After the creation of the user, you are required to generate a password. Save the password and
**UserID**, as they will be required later on during the setup.
.. image:: ogone/ogone_new_user.png
:align: center
:alt: Get your password when you save the new user.
.. tip::
If you already have an user set up, make sure it is activated without any error. If not, simply
click the :guilabel:`Activate(Errors)` button to reset the user.
.. _ogone/sha_key_in:
Set up Ogone for Odoo
---------------------
SHA Key IN
~~~~~~~~~~
Ogone must now be configured to accept payments from Odoo. Head to :menuselection:`Configuration -->
Technical Information --> Global Security Parameters`, select :guilabel:`SHA-512` as
:guilabel:`Hash Algorithm` and :guilabel:`UTF-8` as :guilabel:`character encoding`. Then, go to the
:guilabel:`Data and Origin verification` tab of the same page and leave the URL field of the
:guilabel:`e-Commerce and Alias Gateway` section blank.
In order to retrieve the SHA Key IN, log into your ogone account, go to
:menuselection:`Configuration --> Technical Information --> Data and origin verification -->
Checks for e-Commerce & Alias Gateway`, and retrieve **SHA Key IN**.
.. tip::
If you need to use another algorithm, such as `sha-1` or `sha-256`, within Odoo, activate the
:ref:`developer mode <developer-mode>` and go to the **Payment Acquirers** page in
:menuselection:`Accounting --> Configuration --> Payment Acquirers`. Click on :guilabel:`Ogone`,
and in the :guilabel:`Credentials` tab, select the algorithm you wish to use in the
:guilabel:`Hash function` field.
.. _ogone/sha_key_out:
You are now required to generate **SHA-IN** passphrases. **SHA-IN** and **SHA-OUT** passphrases are
used to digitally sign the transaction requests and responses between Odoo and Ogone. By using these
secret passphrases and the `sha-1` algorithm, both systems can ensure that the information they
receive from the other was not altered or tampered with.
SHA Key OUT
~~~~~~~~~~~
Enter the same **SHA-IN** passphrase in both :guilabel:`Checks for e-Commerce & Alias Gateway` and
:guilabel:`Checks for DirectLink and Batch (Automatic)`. You can leave the IP address field blank.
In order to retrieve the SHA Key OUT, log into your ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All transaction
submission modes`, and get or generate your **API Key** and **Client Key**. Be careful to copy your
API key as you'll not be allowed to get it later without generating a new one.
Your **SHA-IN** and **SHA-OUT** passphrases should be different, and between 16 and 32 characters
long. Make sure to use the same **SHA-IN** and **SHA-OUT** passphrases throughout the entire Ogone
configuration, as Odoo only allows a single **SHA-IN** and single **SHA-OUT** passphrase.
In order to retrieve the **SHA-OUT** key, log into your Ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All
transaction submission modes`, and get or generate your **API Key** and **Client Key**. Be careful
to copy your API key as youll not be allowed to get it later without generating a new one.
When done, head to :menuselection:`Configuration --> Technical Information --> Transaction Feedback`
and check the following options:
- The :guilabel:`URL` fields for :guilabel:`HTTP redirection in the browser` can be left empty, as
Odoo will specify these URLs for every transaction request.
- :guilabel:`I would like to receive transaction feedback parameters on the redirection URLs`:
should be checked.
- :guilabel:`Direct HTTP server-to-server request`: should to be set to `Online but switch to a
deferred request when the online request fails`.
- Both **URL** fields should contain the same following URL, with `<example>` replaced by your
database: `https://<example>/payment/ogone/return`.
- :guilabel:`Dynamic eCommerce Parameters` should contain the following values: `ALIAS`, `AMOUNT`,
`CARDNO`, `CN`, `CURRENCY`, `IP`, `NCERROR` `ORDERID`, `PAYID`, `PM`, `STATUS`, `TRXDATE`. Other
parameters can be included (if you have another integration with Ogone that requires them), but
are not advised.
- In the :guilabel:`All transaction submission modes` section, fill out **SHA-OUT** passphrase and
disable `HTTP request for status change`.
To allow your customers to save their credit card credentials for future use, head to
:menuselection:`Configuration --> Alias --> My alias information`. From this tab, you can configure
how the user can have its card details saved, for how long the information is saved, if a checkbox
to save the card information should be displayed, etc.
Settings in Odoo
================
To set up Ogone in Odoo, head to :menuselection:`Accounting --> Configuration --> Payment Acquirers`
and open the Ogone acquirer. In the :guilabel:`Credentials` tab, enter the **PSPID** of your Ogone
account, and fill out the other fields as configured in your :ref:`Ogone portal <ogone/ogone>`.
.. important::
If you are trying Ogone as a test, with the Test Account, change the **State** to *Test Mode*. We
recommend doing this on a test Odoo database, rather than on your main database.
Configuration on Ogone
======================
Now that Odoo can communicate with Ogone, we need to make sure that Ogone can send information to
your database.
To do so, log into your Ogone account and go to :menuselection:`Configuration --> Technical
Information --> Transaction feedback --> Direct HTTP server-to-server request`.
Then, fill the form with the following data:
- In the **Timing of the request**, select *Online but switch to a deferred request when the online
requests fail*.
- | Enter your Odoo databases URL in both **URLs** followed by ``/payment/ogone/return``.
| For example: ``https://yourcompany.odoo.com/payment/ogone/return``
- Select *POST* for the **Request Method**.
Save, and you are ready to go!
.. seealso::
- :doc:`../payment_acquirers`
If you wish to run tests with Ogone, within the accounting app, go to
:menuselection:`Configuration --> Payment Acquirers`. Click on :guilabel:`Ogone`, enable
:guilabel:`Test Mode` and enter your credentials in the :guilabel:`Credentials` tab. We recommend
doing this on an Odoo test database, rather than on your main database.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -155,15 +155,19 @@ Odoo supports the following local payment methods:
- iDEAL
- Przelewy24 (P24)
To enable specific local payment methods with Stripe, list them as supported payment icons. To do
so, go to :menuselection:`Payment Acquirers --> Stripe --> Configuration` and add the desired
To enable some of these local payment methods with Stripe, list them as supported payment icons. To
do so, go to :menuselection:`Payment Acquirers --> Stripe --> Configuration` and add the desired
payment methods in the **Supported Payment Icons** field. If the desired payment method is already
listed, you don't have anything to do. If a payment icon record doesn't exist in the database, its
related payment method is considered enabled with Stripe.
listed, you don't have anything to do.
.. image:: stripe/stripe_enable_local_payment_method.png
:align: center
:alt: Select and add icons of the payment methods you want to enable
.. note::
- If a payment icon record does not exist in the database and its related local payment method is
listed above, it is considered enabled with Stripe.
- If a local payment method is not listed above, it is not supported and cannot be enabled.
.. seealso::
- :doc:`../payment_acquirers`

View File

@@ -68,4 +68,4 @@ Offering my own services
I am more than welcome to offer my own IAP services through Odoo Apps! It is the perfect opportunity
to get recurring revenue for an ongoing service use rather than — and possibly instead of — a sole
initial purchase. Please, find more information at: :doc:`In-App Purchase
</developer/misc/api/iap>`.
</developer/api/iap>`.

View File

@@ -1,7 +1,7 @@
:nosearch:
===============
Inventory & Mrp
Inventory & MRP
===============

View File

@@ -16,9 +16,11 @@ terms of service. Then, click :guilabel:`Start your free trial`. Verify your ema
Twilio, as per their instructions.
Next, enter your phone number into Twilio. Then, Twilio will send you an SMS text message
containing a verification code. Enter the verification code into Twilio to verify your phone number.
containing a verification code. Enter the verification code into Twilio to verify your phone
number.
After that, Twilio redirects to a welcome page. Use the following list to answer Twilio's questions:
After that, Twilio redirects to a welcome page. Use the following list to answer Twilio's
questions:
- For :guilabel:`Which Twilio product are you here to use?`, select :guilabel:`Video`.
- For :guilabel:`What do you plan to build with Twilio?`, select :guilabel:`Other`.
@@ -47,8 +49,9 @@ Connect Twilio to Odoo
======================
Open the Odoo database and go to :menuselection:`Settings --> General Settings --> Discuss`. Check
the box next to :guilabel:`Use Twilio ICE servers` and enter the Twilio account's :guilabel:`Account
SID` and :guilabel:`Auth Token`. Finally, click :guilabel:`Save` to apply these changes.
the box next to :guilabel:`Use Twilio ICE servers` and enter the Twilio account's
:guilabel:`Account SID` and :guilabel:`Auth Token`. Finally, click :guilabel:`Save` to apply these
changes.
.. image:: ice_servers/connect-twilio-to-odoo.png
:align: center
@@ -57,6 +60,10 @@ SID` and :guilabel:`Auth Token`. Finally, click :guilabel:`Save` to apply these
Define a list of custom ICE servers
===================================
This step is not required for the Twilio configuration. However, if Twilio is not configured or is
not working at any given moment, Odoo will fall back on the custom ICE servers list. The user must
define the list of custom ICE servers.
In :menuselection:`Settings --> General Settings --> Discuss`, click the :guilabel:`ICE Servers`
button under :guilabel:`Custom ICE server list`.

View File

@@ -14,7 +14,7 @@ To link the scale to the **IoT Box**, connect them with a cable.
.. note::
In some cases, a serial to USB adapter may be needed.
If your scale is `compatibale with Odoo IoT Box <https://www.odoo.com/page/iot-hardware>`_, there
If your scale is `compatible with Odoo IoT Box <https://www.odoo.com/page/iot-hardware>`_, there
is no need to set up anything because it will be automatically detected as soon as it is connected.
.. image:: scale/iot-choice.png

View File

@@ -1,21 +1,30 @@
:nosearch:
:show-content:
:hide-page-toc:
:show-toc:
======
Studio
======
Learn all you need in order to build custom applications: customize views, create specific reports,
automate actions, define approval workflows, etc.
.. seealso::
- `Odoo Tutorials: Studio <https://www.odoo.com/slides/studio-31>`_
.. toctree::
:titlesonly:
studio/concepts
studio/use_cases
studio/how_to
studio/fields
studio/views
studio/models_modules_apps
studio/automated_actions
Studio is a toolbox that allows you to customize Odoo without coding knowledge. For example, you
can, on any app, add or modify:
- :doc:`Fields <studio/fields>`
- :doc:`Views <studio/views>`
- :doc:`Models <studio/models_modules_apps>`
- :doc:`Automated actions <studio/automated_actions>`
- PDF reports
- Approval rules
- Security rules
Or you can :doc:`build an app from scratch <studio/models_modules_apps>`.
.. seealso::
- `Odoo Tutorials: Studio <https://www.odoo.com/slides/studio-31>`_

View File

@@ -0,0 +1,249 @@
===============================
Automated actions (automations)
===============================
Automated actions are used to trigger automatic changes based on user actions (e.g., apply a
modification when a field is set to a specific value) or on time conditions (e.g., archive a record
7 days after its last update).
To create an automated action with Studio, go to :guilabel:`Automations` from anywhere within
Studio.
For every automated action you create, the following elements should be defined: the
:ref:`studio/automated-actions/model`, the :ref:`studio/automated-actions/trigger`, the
:ref:`studio/automated-actions/apply-on`, and the :ref:`studio/automated-actions/action`.
.. example::
.. image:: automated_actions/automated-action-example.png
:align: center
:alt: Example of an automated action on the Subscription model
.. _studio/automated-actions/model:
Model
=====
Select the model where the automated action should be applied.
.. note::
The model you are on when you click on :guilabel:`Automations` is pre-selected by default.
.. _studio/automated-actions/trigger:
Trigger
=======
Define when the automated action should be applied. Six triggers are available.
.. _studio/automated-actions/trigger/on-creation:
On Creation
-----------
The action is triggered when a record is created and then saved.
.. _studio/automated-actions/trigger/on-update:
On Update
---------
The action is triggered when a previously saved record is edited and then saved.
- Use :guilabel:`Trigger Fields` to specify which fields - and only those - trigger the action on
their update.
- To detect when a record changes from one state to another, define a :guilabel:`Before Update
Domain` filter, which checks if the condition is satisfied before the record is updated. Then set
an :ref:`studio/automated-actions/apply-on` filter, which checks if the condition is met after the
record is updated.
.. example::
If you want the automated action to happen when an email address is set on a contact, define
the :guilabel:`Before Update Domain` to `Email is not set`, and the :guilabel:`Apply on`
domain to `Email is set`.
.. image:: automated_actions/on-update-trigger-example.png
:align: center
:alt: Example of an On Update trigger
.. _studio/automated-actions/trigger/on-creation-update:
On Creation & Update
--------------------
The action is triggered when a record is created and saved or edited afterward and saved.
.. _studio/automated-actions/trigger/on-deletion:
On Deletion
-----------
The action is triggered when a record is deleted.
.. note::
This trigger is rarely used, as archiving records is usually preferred to deletion.
.. _studio/automated-actions/trigger/form-modification:
Based on Form Modification
--------------------------
The action is triggered when any change is done to a trigger field's value on the :ref:`Form view
<studio/views/general/form>`, even before saving the record. This trigger only works on the user
interface when a modification is made by a user. If the field is changed through another action and
not by the user, the action will not run.
.. note::
This trigger can only be used with the :ref:`Execute Python Code action
<studio/automated-actions/action/python-code>`, so development is required.
.. _studio/automated-actions/trigger/timed-condition:
Based on Timed Condition
------------------------
The action is triggered when a trigger field's date or date & time value is reached.
- To trigger the action after the :guilabel:`Trigger Date`, add a number of minutes, hours, days, or
months under :guilabel:`Delay after trigger date`. To trigger the action before, add a negative
number instead.
.. example::
If you want to send a reminder email 30 minutes before the start of a calendar event, select
the :guilabel:`Start (Calendar Event)` under :guilabel:`Trigger Date` and set the
:guilabel:`Delay after trigger date` to **-30** :guilabel:`Minutes`.
.. image:: automated_actions/timed-condition-trigger-example.png
:align: center
:alt: Example of a Based on Timed Condition trigger
.. note::
By default, the scheduler checks for trigger dates every 4 hours.
.. _studio/automated-actions/apply-on:
Apply on
========
Define on which records of the model the automated action should be applied. It works the same way
as when you apply filters on a model.
.. _studio/automated-actions/action:
Action
======
Determine what the automated action should do (server action). There are eight types of action to
choose from.
.. _studio/automated-actions/action/python-code:
Execute Python Code
-------------------
The action is used to execute Python code. The available variables are described on the
:guilabel:`Python Code` tab, which is also used to write your code, or on the :guilabel:`Help` tab.
- To allow the action to be run through the website, tick :guilabel:`Available on the Website` and
add a :guilabel:`Website Path`.
.. _studio/automated-actions/action/new-record:
Create a new Record
-------------------
The action is used to create a new record on any model.
.. note::
Selecting a :guilabel:`Target Model` is only required if you want to target another model than
the one you are on.
- To link the record that triggered the creation of the new record, select a field under
:guilabel:`Link Field`. For example, you could create a contact automatically when a lead is
turned into an opportunity.
- :guilabel:`Data to Write` tab: the tab is used to specify the new record's values. After selecting
a :guilabel:`Field`, select its :guilabel:`Evaluation Type`:
- :guilabel:`Value`: used to directly give the field's raw value in the :guilabel:`Value` column.
- :guilabel:`Reference`: used to select the record under the :guilabel:`Record` column and let
Studio add the internal ID in the :guilabel:`Value` column.
.. example::
If an automated action creates a new task in a project, you can assign it to a specific user
by setting the :guilabel:`Field` to :guilabel:`Responsible User (Project)`, the
:guilabel:`Evaluation Type` to :guilabel:`Reference`, and the :guilabel:`Record` to a
specific user.
.. image:: automated_actions/new-record-example.png
:align: center
:alt: Example of a Create a new Record action
- :guilabel:`Python expression`: used to dynamically define the newly created records value for a
field using Python code in the :guilabel:`Value` column.
.. _studio/automated-actions/action/update-record:
Update the Record
-----------------
The action is used to set value(s) for field(s) of any record on the current model.
.. note::
The process to fill in the :guilabel:`Data to Write` tab is the same as described under
:ref:`studio/automated-actions/action/new-record`.
.. _studio/automated-actions/action/several-actions:
Execute several actions
-----------------------
The action is used to trigger multiple actions at the same time. To do so, click on :guilabel:`Add a
line` under the :guilabel:`Actions` tab. In the :guilabel:`Child Actions` pop-up, click on
:guilabel:`Create` and configure the action.
.. _studio/automated-actions/action/send-email:
Send Email
----------
The action is used to send an email to a contact linked to a specific record. To do so, select or
create an :guilabel:`Email Template`.
.. _studio/automated-actions/action/add-followers:
Add Followers
-------------
The action is used to subscribe existing contacts to the record.
.. _studio/automated-actions/action/next-activity:
Create Next Activity
--------------------
The action is used to schedule a new activity linked to the record. Use the :guilabel:`Activity` tab
to set it up as usual, but instead of the :guilabel:`Assigned to` field, select an
:guilabel:`Activity User Type`. Select :guilabel:`Specific User` and add the user under
:guilabel:`Responsible` if the activity should always be assigned to the same user. To dynamically
target a user linked to the record, select :guilabel:`Generic User From Record` instead and change
the :guilabel:`User field name` if necessary.
.. example::
After a lead is turned into an opportunity, you want your automated action to set up a call for
the user responsible for the lead. To do so, set the :guilabel:`Activity` to :guilabel:`Call`
and set the :guilabel:`Activity User Type` to :guilabel:`Generic User From Record`.
.. image:: automated_actions/next-activity-example.png
:align: center
:alt: Example of a Create Next Activity action
.. _studio/automated-actions/action/send-sms:
Send SMS Text Message
---------------------
The action is used to send an SMS to a contact linked to the record. To do so, select or create an
:guilabel:`SMS Template`.
.. tip::
If you want sent messages to be logged in the Chatter, tick :guilabel:`Log as Note`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -1,11 +0,0 @@
:nosearch:
========
Concepts
========
.. toctree::
:titlesonly:
concepts/understanding_general
concepts/understanding_automated_actions

View File

@@ -1,77 +0,0 @@
===============================
Understanding Automated Actions
===============================
| Automated actions are used to trigger actions. They are based on conditions and happen on top of
Odoos default business logic.
| Examples of automated actions include: creating a next activity upon a quote's confirmation;
adding a user as a follower of a confirmed invoice if its total is higher than a
certain amount; or preventing a lead from changing stage if a field is not filled in.
.. image:: understanding_automated_actions/automated_action_flow.png
:align: center
:height: 270
:alt: Flowchart to exemplify an automated action rule for Odoo Studio
| Let's understand how to properly define *when* an automated action runs and *how* to create one:
| The first step is to choose the :doc:`Model <understanding_general>` on which the action is
applied.
| The **Trigger** field defines the event that causes the automated action to happen:
- *On Creation*: when a new record is created. Note that the record is created once saved for the
first time.
- *On Update*: when the record is updated. Note that the update happens once the record is saved.
- *On Creation & Update*: on the creation and/or on the update of a record once the form is saved.
- *On Deletion*: on the removal of a record under the condition set.
- *Based on Form Modification*: when the value of the specified *Trigger* field is changed in the
interface (user sees the changes before saving the record). Note that this action can only be used
with the *Execute Python Code* action type.
- *Based on Timed Condition*: a delay happens after a specific date/time. Set a *Delay after trigger
date* if you need a delay to happen before the *Trigger Date*. Example: to send a reminder 15min
before a meeting. If the date/time is not set on the form of the model chosen, the date/time
considered is the one of the creation/update of the record.
For every Trigger option, **conditions** can be applied, such as:
- *Before Update Domain*: if designated, this condition must be satisfied before the record is
updated.
- *Apply on*: if designated, this condition must be satisfied before executing the action rule
(*Action To Do*), and after the update.
| The **Active** option is to be turned off when the rule should be hidden and not executed.
| Under **Action To Do** choose the type of server action that must be executed once records meet
the *Trigger* conditions:
- *Execute Python Code*: a block of code is executed. A *Help* tab with the variables that can be
used is available.
- *Create New Record*: a new record with new values is created.
- *Update a Record*: updates the record that triggered the action.
- *Execute several actions*: defines an action that triggers other server actions.
- *Send Email*: an automatic :doc:`email </applications/general/email_communication/email_template>` is sent.
- *Add Followers*: followers are notified of changes in the task.
- *Create Next Activity*: creates an activity such as: *Call*, *Email*, *Reminder*.
- *Send SMS Text Message*: sends an :doc:`SMS </applications/marketing/sms_marketing/pricing/pricing_and_faq>`.
Example
~~~~~~~
This is the process of which the update of the *Email* field on the Lead/Opportunity *Model*, with a
*Trigger Condition* set to *On Update*, goes through:
.. image:: understanding_automated_actions/action_update_lead_example.png
:align: center
:alt: View of an automated action being created in Odoo Studio
#. The user creates the record without an email address set.
#. The user updates the record defining an email address.
#. Once the change is saved, the automation checks if any of the *Watched Fields* are being updated
(for the example: field name *email_from* (Email).
#. If true, it checks if the record matches the *Before Update Domain* (for the example: *email
is not set*).
#. If true, it checks (*after the update*) whether the record matches the *Apply on* domain (for the
example: *email is set*).
#. If true, the chosen *Action To Do* is performed on the record.
.. seealso::
- :doc:`understanding_general`
- :doc:`../use_cases/automated_actions`

View File

@@ -1,95 +0,0 @@
==============================
Understanding General Concepts
==============================
| Odoo Studio is a toolbox that allows you to add models or adapt functionalities on top of Odoos
standard behavior without coding knowledge. You can also create custom views and modify existing
ones without having to get into the XML code.
| Even for experienced developers, typing out code requires time. By using Odoo Studio, you can
quickly get your models up and going and focus on the crucial parts of your application. The
result is a user-friendly solution that makes customizations and designing new applications easy
with or without programming skills.
Getting started
===============
One you start using Odoo Studio, you automatically create a new *module* that contains all your
modifications. These modifications can be done on existing screens (*views*), by adding new
*fields* in existing applications, or by creating an entirely new *model*.
What is a Module?
-----------------
| An Odoo **Module** can contain a number of elements, such as: business objects (models), object
views, data files, web controllers, and static web data. An application is a collection of modules.
| In object-oriented programming, models usually represent a concept from the real world.
Example: Odoo has models for Sales Orders, Users, Countries, etc. If you were to build an
application to manage Real Estate sales, a model that represents the Properties for sale would
probably be your first step.
.. image:: understanding_general/new_app.png
:align: center
:alt: Overview of the main dashboard emphasizing the option to create a new app in Odoo Studio
.. _studio/concepts/understanding_general/models:
What is a Model (also called Object)?
-------------------------------------
A **Model** determines the logical structure of a database and fundamentally determines in which
manner data can be stored, organized, and manipulated. In other words, a model is a table of
information that can be bridged with other tables.
What are Fields?
----------------
| **Fields** compose models. It is where a record (a piece of data) is registered.
| Example: on the Real Estate application, fields on the Properties model would include
the price, address, a picture, a link to the current owner, etc.
| There are 2 main types of fields in Odoo: *basic (or scalar) fields* and *relational fields*.
| Basic fields represent simple values, like numbers or text. Relational fields represent relations
between models. So, if you have a model for *Customers* and another one for *Properties*, you
would use a relational field to link each Property to its Customer.
Relational Fields in detail
~~~~~~~~~~~~~~~~~~~~~~~~~~~
| **Relational Fields** provide the option to link the data of one model with the data of another
model.
| In Odoo, relational field types are: *One2many*, *Many2one*, *Many2many*.
.. image:: understanding_general/relational_fields.png
:align: center
:alt: Tables with a visual explanation of related fields for Odoo Studio
| An **One2many** field is a *one-way* direction of selecting *multiple* records from a table.
| Example: a Sales Order can contain multiple Sales Order Lines, which also contain multiple fields
of information.
| A **Many2one** field is a *one-way* direction of selecting *one* record from a table.
| Example: you can have many product categories, but each product can only belong to one category.
| A **Many2many** field is a *two-way* direction of selecting records from a table.
| Example: multiple tags can be added to a leads form.
.. note::
An *One2many* field must have a *Many2one* related to it.
What are Views?
---------------
**Views** define how records are displayed. They are specified in XML which means that they can be
edited independently from the models that they represent. There are various types of views in Odoo,
and each of them represents a mode of visualization. Some examples are: *form*, *list*, *kanban*.
What is a Menu?
---------------
A **Menu** is a button that executes an action. In Odoo Studio, to create menus (models) and
rearrange their hierarchy, click on *Edit Menu*.
.. image:: understanding_general/edit_menu.png
:align: center
:alt: Overview of a menu being edit in Odoo Studio
.. seealso::
- `Studio Basics <https://www.odoo.com/fr_FR/slides/studio-31>`_

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,493 @@
==================
Fields and widgets
==================
Fields structure the models of a database. If you picture a model as a table or spreadsheet, fields
are the columns where data is stored in the records (i.e., the rows). Fields also define the type of
data that is stored within them. How the data is presented and formatted on the :abbr:`UI (User
Interface)` is defined by their widget.
From a technical point of view, there are 15 field types in Odoo. However, you can choose from 20
fields in Studio, as some field types are available more than once with a different default widget.
.. tip::
:guilabel:`New Fields` can only be added to the :ref:`studio/views/general/form` and
:ref:`studio/views/multiple-records/list` views. On other views, you can only add
:guilabel:`Existing Fields` :dfn:`(fields already on the model)`.
.. _studio/fields/simple-fields:
Simple fields
=============
Simple fields contain basic values, such as text, numbers, files, etc.
.. note::
Non-default widgets, when available, are presented as bullet points below.
.. _studio/fields/simple-fields/text:
Text (`char`)
-------------
The :guilabel:`Text` field is used for short text containing any character. One text line is
displayed when filling out the field.
- :guilabel:`Badge`: displays the value inside a rounded shape, similar to a tag. The value cannot
be edited on the UI, but a default value can be set.
- :guilabel:`Copy to Clipboard`: users can copy the value by clicking a button.
- :guilabel:`E-mail`: the value becomes a clickable *mailto* link.
- :guilabel:`Image`: displays an image using a URL. The value cannot be edited manually, but a
default value can be set.
.. note::
This works differently than selecting the :ref:`Image field
<studio/fields/simple-fields/image>` directly, as the image is not stored in Odoo when using a
:guilabel:`Text` field with the :guilabel:`Image` widget. For example, it can be useful if you
want to save disk space.
- :guilabel:`Phone`: the value becomes a clickable *tel* link.
.. tip::
Tick :guilabel:`Enable SMS` to add an option to send an SMS directly from Odoo next to the
field.
- :guilabel:`URL`: the value becomes a clickable URL.
.. example::
.. image:: fields/text-examples.png
:align: center
:alt: Examples of Text fields with different widgets
.. _studio/fields/simple-fields/multiline-text:
Multiline Text (`text`)
-----------------------
The :guilabel:`Multiline Text` field is used for longer text containing any type of character. Two
text lines are displayed on the UI when filling out the field.
- :guilabel:`Copy to Clipboard`: users can copy the value by clicking a button.
.. example::
.. image:: fields/multiline-text-examples.png
:align: center
:alt: Examples of Multiline Text fields with different widgets
.. _studio/fields/simple-fields/integer:
Integer (`integer`)
-------------------
The :guilabel:`Integer` field is used for all integer numbers (:dfn:`positive, negative, or zero,
without a decimal`).
- :guilabel:`Percentage Pie`: displays the value inside a percentage circle, usually for a computed
value. The value cannot be edited on the UI, but a default value can be set.
- :guilabel:`Progress Bar`: displays the value next to a percentage bar, usually for a computed
value. The field cannot be edited manually, but a default value can be set.
- :guilabel:`Handle`: displays a drag handle icon to order records manually in :ref:`List view
<studio/views/multiple-records/list>`.
.. example::
.. image:: fields/integer-examples.png
:align: center
:alt: Examples of Integer fields with different widgets
.. _studio/fields/simple-fields/decimal:
Decimal (`float`)
-----------------
The :guilabel:`Decimal` field is used for all decimal numbers (:dfn:`positive, negative, or zero,
with a decimal`).
.. note::
Decimal numbers are displayed with two decimals after the decimal point on the UI, but they are
stored in the database with more precision.
- :guilabel:`Monetary`: it is similar to using the :ref:`Monetary field
<studio/fields/simple-fields/monetary>`. It is recommended to use the later as it offers more
functionalities.
- :guilabel:`Percentage`: displays a percent character `%` after the value.
- :guilabel:`Percentage Pie`: displays the value inside a percentage circle, usually for a computed
value. The field cannot be edited manually, but a default value can be set.
- :guilabel:`Progress Bar`: displays the value next to a percentage bar, usually for a computed
value. The field cannot be edited manually, but a default value can be set.
- :guilabel:`Time`: the value must follow the *hh:mm* format, with a maximum of 59 minutes.
.. example::
.. image:: fields/decimal-examples.png
:align: center
:alt: Examples of Decimal fields with different widgets
.. _studio/fields/simple-fields/monetary:
Monetary (`monetary`)
---------------------
The :guilabel:`Monetary` field is used for all monetary values.
.. note::
When you first add a :guilabel:`Monetary` field, you are prompted to add a :guilabel:`Currency`
field if none exists already on the model. Odoo offers to add the :guilabel:`Currency` field for
you. Once it is added, add the :guilabel:`Monetary` field again.
.. example::
.. image:: fields/monetary-example.png
:align: center
:alt: Example of a Monetary field along with its Currency field
.. _studio/fields/simple-fields/html:
Html (`html`)
-------------
The :guilabel:`Html` field is used to add text that can be edited using the Odoo HTML editor.
- :guilabel:`Multiline Text`: disables the Odoo HTML editor to allow editing raw HTML.
.. example::
.. image:: fields/html-example.png
:align: center
:alt: Examples of Html fields with different widgets
.. _studio/fields/simple-fields/date:
Date (`date`)
-------------
The :guilabel:`Date` field is used to select a date on a calendar.
- :guilabel:`Remaining Days`: the remaining number of days before the selected date is displayed
(e.g., *In 5 days*), based on the current date.
.. example::
.. image:: fields/date-examples.png
:align: center
:alt: Examples of Date fields with different widgets
.. _studio/fields/simple-fields/date-time:
Date & Time (`datetime`)
------------------------
The :guilabel:`Date & Time` field is used to select a date on a calendar and a time on a clock. The
user's current time is automatically used if no time is set.
- :guilabel:`Date`: used to record the time without displaying it on the UI.
- :guilabel:`Remaining days`: displays the remaining number of days before the selected date (e.g.,
*In 5 days*), based on the current date and time.
.. example::
.. image:: fields/date-time-examples.png
:align: center
:alt: Examples of Date & Time fields with different widgets
.. _studio/fields/simple-fields/checkbox:
Checkbox (`boolean`)
--------------------
The :guilabel:`Checkbox` field is used when a value should only be true or false, indicated by
checking or unchecking a checkbox.
- :guilabel:`Button`: displays a radio button. The widget works without switching to the edit mode.
- :guilabel:`Toggle`: displays a toggle button. The widget works without switching to the edit mode.
.. example::
.. image:: fields/checkbox-examples.png
:align: center
:alt: Examples of Checkbox fields with different widgets
.. _studio/fields/simple-fields/selection:
Selection (`selection`)
-----------------------
The :guilabel:`Selection` field is used when users should select a single value from a group of
predefined values.
- :guilabel:`Badge`: displays the value inside a rounded shape, similar to a tag. The value cannot
be edited on the UI, but a default value can be set.
- :guilabel:`Badges`: displays all selectable values simultaneously inside rectangular shapes,
organized horizontally.
- :guilabel:`Priority`: displays star symbols instead of values, which can be used to indicate an
importance or satisfaction level, for example. This has the same effect as selecting the
:ref:`Priority field <studio/fields/simple-fields/priority>`, although, for the latter, four
priority values are already predefined.
- :guilabel:`Radio`: displays all selectable values at the same time as radio buttons.
.. tip::
By default, radio buttons are organized vertically. Tick :guilabel:`display horizontally` to
switch the way they are displayed.
.. example::
.. image:: fields/selection-examples.png
:align: center
:alt: Examples of Selection fields with different widgets
.. _studio/fields/simple-fields/priority:
Priority (`selection`)
----------------------
The :guilabel:`Priority` field is used to display a three-star rating system, which can be used to
indicate importance or satisfaction level. This field type is a :ref:`Selection field
<studio/fields/simple-fields/selection>` with the :guilabel:`Priority` widget selected by default
and four priority values predefined. Consequently, the :guilabel:`Badge`, :guilabel:`Badges`,
:guilabel:`Radio`, and :guilabel:`Selection` widgets have the same effects as described under
:ref:`Selection <studio/fields/simple-fields/selection>`.
.. tip::
To change the number of available stars by adding or removing values, click :guilabel:`Edit
Values`. Note that the first value is equal to 0 stars (i.e., when no selection is made), so
having four values results in a three-star rating system, for example.
.. example::
.. image:: fields/priority-example.png
:align: center
:alt: Example of a Priority field
.. _studio/fields/simple-fields/file:
File (`binary`)
---------------
The :guilabel:`File` field is used to upload any type of file, or sign a form (:guilabel:`Sign`
widget).
- :guilabel:`Image`: users can upload an image file, which is then displayed in :ref:`Form view
<studio/views/general/form>`. This has the same effect as using the :ref:`Image field
<studio/fields/simple-fields/image>`.
- :guilabel:`PDF Viewer`: users can upload a PDF file, which can be then browsed from the
:ref:`Form view <studio/views/general/form>`.
- :guilabel:`Sign`: users can electronically sign the form. This has the same effect as selecting
the :ref:`Sign field <studio/fields/simple-fields/sign>`.
.. example::
.. image:: fields/file-examples.png
:align: center
:alt: Examples of File fields with different widgets
.. _studio/fields/simple-fields/image:
Image (`binary`)
----------------
The :guilabel:`Image` field is used to upload an image and display it in :ref:`Form view
<studio/views/general/form>`. This field type is a :ref:`File field
<studio/fields/simple-fields/file>` with the :guilabel:`Image` widget selected by default.
Consequently, the :guilabel:`File`, :guilabel:`PDF Viewer`, and :guilabel:`Sign` widgets have the
same effects as described under :ref:`File <studio/fields/simple-fields/file>`.
.. tip::
To change the display size of uploaded images, select :guilabel:`Small`, :guilabel:`Medium`, or
:guilabel:`Large` under the :guilabel:`Size` option.
.. _studio/fields/simple-fields/sign:
Sign (`binary`)
---------------
The :guilabel:`Sign` field is used to sign the form electronically. This field type is a :ref:`File
field <studio/fields/simple-fields/file>` with the :guilabel:`Sign` widget selected by default.
Consequently, the :guilabel:`File`, :guilabel:`Image`, and :guilabel:`PDF Viewer` widgets have the
same effects as described under :ref:`File <studio/fields/simple-fields/file>`.
.. tip::
To give users the :guilabel:`Auto` option when having to draw their signature, select one of the
available :guilabel:`Auto-complete with` fields (:ref:`Text <studio/fields/simple-fields/text>`,
:ref:`Many2One <studio/fields/relational-fields/many2one>`, and :ref:`Related Field
<studio/fields/relational-fields/related-field>` on the model only). The signature is
automatically generated using the data from the selected field.
.. _studio/fields/relational-fields:
Relational fields
=================
Relational fields are used to link and display the data from records on another model.
.. note::
Non-default widgets, when available, are presented as bullet points below.
.. _studio/fields/relational-fields/many2one:
Many2One (`many2one`)
---------------------
The :guilabel:`Many2One` field is used to link another record (from another model) to the record
being edited. The record's name from the other model is then displayed on the record being edited.
.. example::
On the *Sales Order* model, the :guilabel:`Customer` field is a :guilabel:`Many2One` field
pointing at the *Contact* model. This allows **many** sales orders to be linked to **one**
contact (customer).
.. image:: fields/many2one-diagram.png
:align: center
:alt: Diagram showing a many2one relationship
.. tip::
- To prevent users from creating a new record in the linked model, tick :guilabel:`Disable
creation`.
- To prevent users from opening records in a pop-up window, tick :guilabel:`Disable opening`.
- To help users only select the right record, click on :guilabel:`Domain` to create a filter.
- :guilabel:`Badge`: displays the value inside a rounded shape, similar to a tag. The value cannot
be edited on the UI.
- :guilabel:`Radio`: displays all selectable values at the same time as radio buttons.
.. _studio/fields/relational-fields/one2many:
One2Many (`one2many`)
---------------------
The :guilabel:`One2Many` field is used to display the existing relations between a record on the
current model and multiple records from another model.
.. example::
You could add a :guilabel:`One2Many` field on the *Contact* model to look at **one** customer's
**many** sales orders.
.. image:: fields/one2many-diagram.png
:align: center
:alt: Diagram showing a one2many relationship
.. note::
To use a :guilabel:`One2Many` field, the two models must have been linked already using a
:ref:`Many2One field <studio/fields/relational-fields/many2one>`. One2Many relations do not exist
independently: a reverse-search of existing Many2One relations is performed.
.. _studio/fields/relational-fields/lines:
Lines (`one2many`)
------------------
The :guilabel:`Lines` field is used to create a table with rows and columns (e.g., the lines of
products on a sales order).
.. tip::
To modify the columns, click on the :guilabel:`Lines` field and then :guilabel:`Edit List View`.
To edit the form that pops up when a user clicks on :guilabel:`Add a line`, click on
:guilabel:`Edit Form View` instead.
.. example::
.. image:: fields/lines-example.png
:align: center
:alt: Example of a Lines field
.. _studio/fields/relational-fields/many2many:
Many2Many (`many2many`)
-----------------------
The :guilabel:`Many2Many` field is used to link multiple records from another model to multiple
records on the current model. Many2Many fields can use :guilabel:`Disable creation`,
:guilabel:`Disable opening`, :guilabel:`Domain`, just like :ref:`Many2One fields
<studio/fields/relational-fields/many2one>`.
.. example::
On the *Task* model, the :guilabel:`Assignees` field is a :guilabel:`Many2Many` field pointing at
the *Contact* model. This allows a single user to be assigned to **many** tasks and **many**
users to be assigned to a single task.
.. image:: fields/many2many-diagram.png
:align: center
:alt: Diagram showing many2many relationships
- :guilabel:`Checkboxes`: users can select several values using checkboxes.
- :guilabel:`Tags`: users can select several values appearing in rounded shapes, also known as
*tags*. This has the same effect as selecting the :ref:`Tags field
<studio/fields/relational-fields/tags>`.
.. _studio/fields/relational-fields/tags:
Tags (`many2many`)
------------------
The :guilabel:`Tags` field is used to display several values from another model appearing in rounded
shapes, also known as *tags*. This field type is a :ref:`Many2Many field
<studio/fields/relational-fields/many2many>` with the :guilabel:`Tags` widget selected by default.
Consequently, the :guilabel:`Checkboxes` and :guilabel:`Many2Many` widgets have the same effects as
described under :ref:`Many2Many <studio/fields/relational-fields/many2many>`.
.. tip::
To display tags with different background colors, tick :guilabel:`Use colors`.
.. example::
.. image:: fields/tags-example.png
:align: center
:alt: Example of a Tags field
.. _studio/fields/relational-fields/related-field:
Related Field (`related`)
-------------------------
A :guilabel:`Related Field` is not a relational field per se; no relationship is created between
models. It uses an existing relationship to fetch and display information from another record.
.. example::
To display the email address of a customer on the *Sales Order* model, use the :guilabel:`Related
Field` `partner_id.email` by selecting :guilabel:`Customer` and then :guilabel:`Email`.
.. _studio/fields/properties:
Properties
==========
- :guilabel:`Invisible`: When it is not necessary for users to view a field on the UI, tick
:guilabel:`Invisible`. It helps clear the UI by only showing the essential fields depending on a
specific situation.
.. example::
On the *Form* view of the *Contact* model, the :guilabel:`Title` field only appears when
:guilabel:`Individual` is selected, as that field would not be helpful for a
:guilabel:`Company` contact.
.. note::
The :guilabel:`Invisible` attribute also applies to Studio. To view hidden fields inside
Studio, click on a view's :guilabel:`View` tab and tick :guilabel:`Show Invisible
Elements`.
- :guilabel:`Required`: If a field should always be completed by the user before being able to
proceed, tick :guilabel:`Required`.
- :guilabel:`Read only`: If users should not be able to modify a field, tick :guilabel:`Read only`.
.. note::
You can choose to apply these three properties only for specific records by clicking on
:guilabel:`Conditional` and creating a filter.
- :guilabel:`Label`: The :guilabel:`Label` is the field's name on the UI.
.. note::
This is not the same name as used in the PostgreSQL database. To view and change the latter,
activate the :ref:`Developer mode <developer-mode>`, and edit the :guilabel:`Technical Name`.
- :guilabel:`Help Tooltip`: To explain the purpose of a field, write a description under
:guilabel:`Help Tooltip`. It is displayed inside a tooltip box when hovering with your mouse over
the field's label.
- :guilabel:`Placeholder`: To provide an example of how a field should be completed, write it under
:guilabel:`Placeholder`. It is displayed in light gray in lieu of the field's value.
- :guilabel:`Widget`: To change the default appearance or functionality of a field, select one of
the available widgets.
- :guilabel:`Default value`: To add a default value to a field when a record is created, use
:guilabel:`Default value`.
- :guilabel:`Limit visibility to groups`: To limit which users can see the field, select a user
access group.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,12 +0,0 @@
:nosearch:
======
How To
======
.. toctree::
:titlesonly:
how_to/rainbow_man
how_to/reports
how_to/export_import

View File

@@ -1,28 +0,0 @@
=========================
Export and Import Modules
=========================
When you do customizations in Odoo Studio, a new module is created in your database, making it easy
to use Studio for prototyping.
To export these customizations, activate Studio on the main dashboard and, under the menu
*Customizations*, click on *Export*. The default filename is *customizations.zip*.
.. image:: export_import/customizations_menu.png
:align: center
:alt: View of the menu customizations in Odoo Studio
| The module created contains the definition of custom models and fields, as well as the UI elements
of any customization in an XML format.
| To import and install the customizations in another instance, connect to the destination database,
activate Studio and, under *Customizations*, click on *Import*.
.. image:: export_import/import_modules.png
:align: center
:alt: View of the import modules window for Odoo Studio
.. warning::
Studio does not know which apps are customized (because the same view can be modified on
different apps), therefore, it *does not* add the underlying modules as dependencies of the
exported module. In other words, the applications installed on the source database should be
installed on the destination database.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,23 +0,0 @@
===========================
Customizing the Rainbow Man
===========================
The Rainbow Man in Odoo is an animation shown once the user completes certain tasks and clicks on
certain buttons. It is a way to make the software fun to use, and rewarding, for employees.
.. image:: rainbow_man/crm_rainbow.png
:align: center
:alt: View of a sales form and the tab properties and its rainbow man field in Odoo Studio
| On most buttons in Odoo, such as *Send by Email*, *Confirm* or *Cancel*, once they are selected in
Studio, under their *Properties*, the *Rainbow Man* effect can be applied.
| By default, the feature is active:
- when opportunities are marked as won;
- when users empty their inboxes;
- when the user finishes a tour;
- when the user finishes doing reconciliations.
.. image:: rainbow_man/properties_rainbow.png
:align: center
:alt: View of a sales form and the tab properties and its rainbow man field in Odoo Studio

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -1,72 +0,0 @@
===================
Customizing Reports
===================
| Odoo uses HTML and CSS technologies to create reports. HTML is a markup language that uses tags,
also called elements. It is the core of any webpage because it provides its basic structure.
CSS interacts with HTML elements to add style to the page, establishing how the HTML is shown to
the user. Odoos reports also use Bootstraps grid layout, which is the containers, rows, and
columns to align content, and support Odoo's website themes.
| When creating a new report, choose the purpose of it and if you would like the report to include
header and footer (company logo, name, address, phone, email address, etc.).
.. image:: reports/report_typing.png
:align: center
:alt: View of the types of new reports in Odoo Studio
Under the tab **Add**, you find the fields to be dragged and dropped to the view. *Fields*, *Data
tables*, *Subtotal & Total*, and *Address Book* are dynamic elements (meaning that they need a
:doc:`one2many or a many2many <../concepts/understanding_general>` related object). *Text*, *Title
Block*, *Image*, and *Text in Cell* are static elements.
.. image:: reports/add_tab.png
:align: center
:alt: View of a report and the tab add in Odoo Studio
Once the element is added to the view, select it to see its **Options**. The first section shows the
hierarchy of the selected object and its properties, allowing you to individually edit
them. Fields with related objects have their directives shown on *Field Expression*.
.. image:: reports/options_tab.png
:align: center
:alt: View of a report and the tab options in Odoo Studio
| Under **Visible if**, define the rule(s) to set visibility conditions to fields.
| Example: if choosing to display a product image, you could set a visibility rule to only display
the ones that are *set* in the product form, avoiding having a plain icon when they are not set.
| **Visible for** is used to set which :doc:`groups </applications/general/users>` can have access
to specific elements in the report. **Limit visibility to groups**, under *Report*, sets the
visibility of the report to specifics groups, meaning that users belonging to other groups do not
see the same final document.
.. image:: reports/limit_visibility.png
:align: center
:alt: View of a reports settings emphasizing the field limit visibility to groups in Odoo Studio
Under the **Report** tab, name your report, choose the paper format, and if the report should be
added to the *Print* menu list on its respective document form.
.. image:: reports/print_menu.png
:align: center
:alt: View of an invoice form emphasizing the menu print for Odoo Studio
If activating the :ref:`developer mode <developer-mode>`, additional fields such as *Class* under
*Options*, and *Reload from attachment* under *Report*, become visible.
- *Class*: add custom CSS classes to the selected element (e.g. Bootstrap classes such as
*text-danger*).
- *Reload from attachment*: saves the report as an attachment of the document when printed. When the
report is reprinted, it re-downloads that attachment instead of re-printing it.
This means that if the underlying record (e.g. Invoice) changes when compared to the first
impression, the report does not reflect the changes because they were done after the attachment was
created. This is typically useful for reports linked to documents that should not change, such as
Invoices.
.. tip::
Actions in Odoo Studio can be undone until you *Close* the toolbox. Once you have closed Studio,
changes can not be undone anymore.
.. image:: reports/undo_redo.png
:align: center
:alt: View of a report being built and emphasizing the undo and redo buttons in Odoo Studio

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

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