mirror of
https://github.com/odoo/documentation.git
synced 2025-12-12 07:29:27 +07:00
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)
closes odoo/documentation#15638
X-original-commit: d0e7554241
Signed-off-by: Dylan Kiss (dyki) <dyki@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2905 lines
146 KiB
Plaintext
2905 lines
146 KiB
Plaintext
# SOME DESCRIPTIVE TITLE.
|
||
# Copyright (C) Odoo S.A.
|
||
# This file is distributed under the same license as the Odoo package.
|
||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||
#
|
||
#, fuzzy
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: Odoo 18.0\n"
|
||
"Report-Msgid-Bugs-To: \n"
|
||
"POT-Creation-Date: 2025-12-10 08:58+0000\n"
|
||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||
"MIME-Version: 1.0\n"
|
||
"Content-Type: text/plain; charset=UTF-8\n"
|
||
"Content-Transfer-Encoding: 8bit\n"
|
||
|
||
#: ../../content/applications/studio.rst:6
|
||
msgid "Studio"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:18
|
||
msgid "**Odoo Studio** is a toolbox used to customize Odoo without coding knowledge. For example, in any app, add or modify:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:21
|
||
msgid ":doc:`Fields <studio/fields>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:22
|
||
msgid ":doc:`Views <studio/views>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:23
|
||
msgid ":doc:`Models <studio/models_modules_apps>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:24
|
||
msgid ":doc:`Automation rules <studio/automated_actions>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:25
|
||
msgid ":doc:`Webhooks <studio/automated_actions/webhooks>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:26
|
||
msgid ":doc:`PDF reports <studio/pdf_reports>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:27
|
||
msgid ":doc:`Approval rules <studio/approval_rules>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:28
|
||
msgid "Security rules"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:30
|
||
msgid "Learn how to :doc:`build an app from scratch <studio/models_modules_apps>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:34
|
||
msgid "To access **Studio**, navigate to the app and model you want to modify, then click the :icon:`oi-studio` (:guilabel:`Toggle Studio`) icon. Alternatively, with any app open, click the :icon:`oi-studio` (:guilabel:`Toggle Studio`) icon and navigate to the relevant app and model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:38
|
||
msgid "To close **Studio**, click :guilabel:`Close` in the upper-right corner."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:41
|
||
msgid "Installing **Studio** in an Odoo database on the *Standard* pricing plan automatically triggers an upsell to the *Custom* pricing plan."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:44
|
||
msgid "**For yearly or multi-year contracts**: An upsell order is created with a 30-day limit."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:45
|
||
msgid "**For monthly contracts**: The subscription automatically switches to the *Custom* plan and the new rate is applied when the next bill is generated."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:48
|
||
msgid "For more information, refer to `Odoo's pricing page <https://www.odoo.com/pricing-plan>`_ or contact your account manager."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio.rst:52
|
||
msgid "`Odoo Tutorials: Studio <https://www.odoo.com/slides/studio-31>`_"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:3
|
||
msgid "Approval rules"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:5
|
||
msgid "Approval rules are used to automate approval processes for actions. They allow you to define the criteria for when an approval is required before an action can be performed using a button."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:9
|
||
msgid "Configuration"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:11
|
||
msgid "To add approval rules with Studio, proceed as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:13
|
||
msgid ":ref:`Open Studio <studio/access>` and switch to the required :doc:`view <views>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:14
|
||
msgid "Select the button to which the rule should be applied."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:15
|
||
msgid "Click :icon:`fa-plus` :guilabel:`Add an approval step` in the :icon:`fa-server` :guilabel:`Properties` tab."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:17
|
||
msgid "Specify which users are responsible for approving the action by using one of the following fields or both:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:20
|
||
msgid ":guilabel:`Approvers` to specify one or several users;"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:21
|
||
msgid ":guilabel:`Approver Group` to specify one user group."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:24
|
||
msgid "An activity is created for all users set as :guilabel:`Approvers` when their approval is requested."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:27
|
||
msgid "(*optional*) Select the :guilabel:`Users to Notify` via an internal note when the action is approved or rejected."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:29
|
||
msgid "(*optional*) Add a :guilabel:`Description` to be displayed on the button."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:32
|
||
msgid "You can specify under which condition(s) an approval step should be applied by clicking the :icon:`fa-filter` (:guilabel:`filter`) icon next to the :guilabel:`Approvers` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:35
|
||
msgid "To add another approval step, click :icon:`fa-plus` :guilabel:`Add an approval step`. When there are multiple steps, you can:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:38
|
||
msgid "Enable :guilabel:`Exclusive Approval` on any step so that a user who approves a step cannot approve another step for the same record."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:40
|
||
msgid "Change the :guilabel:`Approval Order` of the steps by selecting a number, `1` being the first step, `2` the second step, and so on. A user responsible for a higher step can approve/reject previous step(s) unless :guilabel:`Exclusive Approval` is selected."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:44
|
||
msgid "Click the :icon:`fa-trash` (:guilabel:`trash`) icon next to the :guilabel:`Approvers` field to remove an approval step."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:48
|
||
msgid "You can create :ref:`user groups <access-rights/groups>` specifically for approvals."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:53
|
||
msgid "Use"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:55
|
||
msgid "Once an approval rule has been defined for a button, a **user avatar** icon is displayed next to the button's label for each approval step. Clicking an icon reveals the step(s)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:-1
|
||
msgid "Confirm button with two approval steps"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:62
|
||
msgid "If an unauthorized user clicks the button, an error message is displayed and an activity is created for the users specified in the :guilabel:`Approvers` field, if any."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:65
|
||
msgid "Authorized users can:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:67
|
||
msgid "Perform the action directly by clicking the button if it is the last/only approval step."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:68
|
||
msgid "Approve the action and let another user perform it - or move it to the next approval step - by clicking the **user avatar** icon next to the button's label, then clicking the :icon:`fa-check` (:guilabel:`approve`)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:71
|
||
msgid "Reject the action by clicking the **user avatar** icon next to the button's label and then the :icon:`fa-times` (:guilabel:`reject`) button."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:73
|
||
msgid "(only for users selected under the :guilabel:`Approvers` field) Delegate their approval rights to one or several users for **all records** by:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:76
|
||
msgid "Clicking the :icon:`oi-view-kanban` (:guilabel:`kanban view`) icon and then :guilabel:`Delegate`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:78
|
||
msgid "Selecting one or several :guilabel:`Approvers`, :guilabel:`Until` when they will have approval rights (forever if left empty), and, optionally, the user(s) who should be notified via an internal note using the :guilabel:`Notify to` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:0
|
||
msgid "Delegate to dialog"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:86
|
||
msgid "A user who approves/rejects an action can revoke their decision by clicking the **user avatar** icon next to the button's label and then the :icon:`fa-undo` (:guilabel:`revoke`) button. They can also revoke the decision of other users for steps with a lower :guilabel:`Approval Order` unless :guilabel:`Exclusive Approval` is enabled."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/approval_rules.rst:90
|
||
msgid "Approvals are tracked in the record's chatter. An approval entry is also created every time a Studio approval-related action is performed. To access approval entries, :doc:`activate the developer mode </applications/general/developer_mode>` and go to :menuselection:`Settings --> Technical --> Studio Approval Entries`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:5
|
||
msgid "Automation rules"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:7
|
||
msgid "Automation rules allow the execution of one or more predefined actions in response to a specific trigger, e.g., create an activity when a field is set to a specific value, or archive a record 7 days after its last update."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:11
|
||
msgid "When creating an automation rule, :ref:`domain filters <studio/automated-actions/conditions>` allow you to add conditions that must be met for the automation rule to run, e.g., the opportunity must be assigned to a specific salesperson, or the state of the record must not be :guilabel:`Draft`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:16
|
||
msgid "To create an automation rule with **Odoo Studio**, proceed as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:18
|
||
msgid ":ref:`Open Studio <studio/access>` and click :guilabel:`Automations`, then :guilabel:`New`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:19
|
||
msgid "Give the automation rule a clear, meaningful name that identifies its purpose."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:20
|
||
msgid "Select the :ref:`trigger <studio/automated-actions/trigger>` and, if necessary, fill in the fields that appear on the screen based on the chosen trigger."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:22
|
||
msgid "Click :guilabel:`Add an action`, then select the :guilabel:`Type` of :ref:`action <studio/automated-actions/action>` and fill in the fields that appear on the screen based on your selected action."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:25
|
||
msgid "Click :guilabel:`Save & Close` or :guilabel:`Save & New`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:29
|
||
msgid "To ensure follow-up on less satisfied clients, this automation rule creates an activity 3 months after a sales order is created for clients with a satisfaction percentage lower than 30%."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Example of an automation rule on the Subscription model"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:37
|
||
msgid "Use the :guilabel:`Notes` tab to document the purpose and functioning of automation rules. This makes rules easier to maintain and facilitates collaboration between users."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:39
|
||
msgid "To modify the :doc:`model <models_modules_apps>` targeted by the automation rule, switch models before clicking :guilabel:`Automations` in Studio, or :ref:`activate developer mode <developer-mode>`, create or edit an automation rule, and select the :guilabel:`Model` in the :guilabel:`Automation Rules` form."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:43
|
||
msgid "Automation rules can be created from any kanban stage by clicking the :icon:`fa-cog` :guilabel:`(Settings)` icon that appears when hovering over the kanban stage name, then selecting :guilabel:`Automations`. In this case, the :guilabel:`Trigger` is set to :guilabel:`Stage is set to` by default, but it can be changed if necessary."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Create automations from a kanban stage"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:54
|
||
msgid "Trigger"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:56
|
||
msgid "The :guilabel:`Trigger` is used to define what kind of event needs to occur for the automation rule to run. The available triggers depend on the :doc:`model <models_modules_apps>`. Five trigger categories are available overall:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:60
|
||
msgid ":ref:`studio/automated-actions/trigger-values-updated`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:61
|
||
msgid ":ref:`studio/automated-actions/trigger-email-events`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:62
|
||
msgid ":ref:`studio/automated-actions/trigger-timing-conditions`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:63
|
||
msgid ":ref:`studio/automated-actions/trigger-custom`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:64
|
||
msgid ":ref:`studio/automated-actions/trigger-external`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:69
|
||
msgid "Adding conditions"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:71
|
||
msgid "Domain filters allow you to determine the records an automation rule should target or exclude. Efficient filtering enhances overall performance as it avoids unnecessary processing on records that are not impacted by the rule."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:76
|
||
msgid ":ref:`Activate developer mode <developer-mode>` before creating an automation rule to have the most flexibility in adding domain filters."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:79
|
||
msgid "Depending on the trigger chosen, it is possible to define one or more conditions a record must meet *before* and/or *after* a trigger occurs."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:82
|
||
msgid "The :guilabel:`Before Update Domain` defines the conditions a record must meet *before* the trigger event occurs, e.g., the record must have `Type = Customer Invoice` and `Status = Posted`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:85
|
||
msgid "With :ref:`developer mode activated <developer-mode>`, click :guilabel:`Edit Domain`, if available, then :guilabel:`New Rule`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:88
|
||
msgid ":guilabel:`Extra Conditions`, or in some cases :guilabel:`Apply on` filters, define the conditions a record must meet *after* the trigger event occurs, e.g., the customer invoice must have `Payment Status = Partially Paid`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:92
|
||
msgid "With :ref:`developer mode activated <developer-mode>` if needed, click :guilabel:`Add conditions` or :guilabel:`Edit Domain`, as relevant, then :guilabel:`New Rule`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:95
|
||
msgid "When a :ref:`trigger <studio/automated-actions/trigger>` occurs, e.g., the payment status of a posted customer invoice is updated, the automation rule checks the defined conditions and only executes the :ref:`action <studio/automated-actions/action>` if the record matches those conditions."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:100
|
||
msgid "If the automated action should be executed when an email address is set for the first time (in contrast to modifying an email address) on an existing contact that is an individual rather than a company, use `Email is not set` and `Is a Company is not set` as the :guilabel:`Before Update Domain` and `Email is set` as the :guilabel:`Apply on` domain."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Example of a trigger with a Before Update Domain"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:109
|
||
msgid "The :guilabel:`Before Update Domain` is not checked upon the creation of a record."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:114
|
||
msgid "Values Updated"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:116
|
||
msgid "Trigger automated actions when specific changes happen in the database. The triggers available in this category depend on the model and are based on common changes, such as adding a specific tag (e.g., to a task) or setting a field's value (e.g., setting the :guilabel:`User` field)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:120
|
||
msgid "Select the trigger, then select a value if required."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:125
|
||
msgid "Email Events"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:127
|
||
msgid "Trigger automated actions upon receiving or sending emails."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:132
|
||
msgid "Timing Conditions"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:134
|
||
msgid "Trigger automated actions at a point in time relative to a date field or to the creation or update of a record. The following triggers are available:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:137
|
||
msgid ":guilabel:`Based on date field`: The action is triggered a defined period of time before or after the date of the selected date field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:139
|
||
msgid ":guilabel:`After creation`: The action is triggered a defined period of time after a record is created and saved."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:141
|
||
msgid ":guilabel:`After last update`: The action is triggered a defined period of time after an existing record is edited and saved."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:144
|
||
msgid "You can then define:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:146
|
||
msgid "a :guilabel:`Delay`: Specify the number of minutes, hours, days, or months. To have an action executed before the trigger date, specify a negative number. If you selected the :guilabel:`Based on date field` trigger, you must also select the date field to be used to determine the delay."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:151
|
||
msgid "By default, the scheduler checks for time-triggered automation rules every 240 minutes, or 4 hours. This frequency is generally sufficient for delays such as 3 months after the order date or 7 days after the last update."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:155
|
||
msgid "For delays of less than the equivalent of 2400 minutes, or 40 hours, the system recalculates the frequency of this check to ensure that more granular delays, e.g., 1 hour before the event start date and time, or 30 minutes after creation, can be respected as closely as possible."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:159
|
||
msgid "An on-screen message indicates the possible delay after the scheduled triggering of the rule."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Message about possible delay after scheduled execution"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:164
|
||
msgid "To view or manually edit the frequency of the scheduler, with :ref:`developer mode activated <developer-mode>`, go to :menuselection:`Settings --> Technical --> Scheduled Actions` to see all scheduled actions for your database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:168
|
||
msgid "Enter `Automation` in the search bar, then, in the list of results, click :guilabel:`Automation Rules: check and execute`. If desired, update the value of the :guilabel:`Execute Every` field. Click :guilabel:`Run Manually` at any time to manually trigger this scheduled action."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:172
|
||
msgid ":guilabel:`Extra Conditions`: Click :guilabel:`Add condition`, then specify the conditions to be met for the automation rule to run. Click :guilabel:`New Rule` to add another condition."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:175
|
||
msgid "The action is executed when the delay is reached and the conditions are met."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:178
|
||
msgid "To send a reminder email 30 minutes *before* the start of a calendar event, select :guilabel:`Start (Calendar Event)` as the date field for the :guilabel:`Trigger` and set the :guilabel:`Delay` to `-30` :guilabel:`Minutes`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
#: ../../content/applications/studio/automated_actions.rst:-1
|
||
msgid "Example of a Based on date field trigger"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:188
|
||
msgid "Custom"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:190
|
||
msgid "Trigger automated actions:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:192
|
||
msgid ":guilabel:`On save`: when a record is saved."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:193
|
||
msgid ":guilabel:`On deletion`: when a record is deleted."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:194
|
||
msgid ":guilabel:`On UI change`: when a field's value is changed on the :ref:`Form view <studio/views/general/form>`, even before the record is saved."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:197
|
||
msgid "For the :guilabel:`On save` and :guilabel:`On UI change` triggers, you **must** then select the field(s) to be used to trigger the automation rule in the :guilabel:`When updating` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:201
|
||
msgid "If no field is selected in the :guilabel:`When updating` field, the automated action may be executed multiple times per record."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:204
|
||
msgid "Optionally, you can also define additional conditions to be met to trigger the automation rule in the :guilabel:`Apply on` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:208
|
||
msgid "To trigger an automated action *upon* the creation of a record, e.g., when a new contact is created, select the :ref:`On save <studio/automated-actions/trigger-custom>` trigger and use `ID is not set` as the :guilabel:`Before Update Domain` and `ID is set` as the :guilabel:`Apply on` domain. Make sure the correct field is selected in the :guilabel:`When updating` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:214
|
||
msgid "When a new contact is saved, it is automatically assigned a database ID, thereby triggering the automation rule."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Example of a triggering an action upon creation of a record"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:221
|
||
msgid "The :guilabel:`On UI change` trigger can only be used with the :ref:`Execute Code <studio/automated-actions/action-execute-code>` action and only works when a modification is made manually. The action is not executed if the field is changed through another automation rule."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:228
|
||
msgid "External"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:230
|
||
msgid "Trigger automated actions based on a specific event in an external system or application using a :doc:`webhook <automated_actions/webhooks>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:233
|
||
msgid "After the webhook is configured in Odoo, where the webhook's URL is generated and the target record defined, it needs to be implemented in the external system."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:237
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:6
|
||
msgid "It is *highly recommended* to consult with a developer, solution architect, or another technical role when deciding to use webhooks and throughout the implementation process. If not properly configured, webhooks may disrupt the Odoo database and can take time to revert."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:245
|
||
msgid "It is also possible to set up an automated action that :ref:`sends data to a external system's webhook <studio/automated-actions/action-webhook>` when an event occurs in your Odoo database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:249
|
||
msgid ":doc:`Webhook documentation <automated_actions/webhooks>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:254
|
||
msgid "Actions"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:256
|
||
msgid "Once you have defined the automation rule's :ref:`trigger <studio/automated-actions/trigger>`, click :guilabel:`Add an action` in the :guilabel:`Actions To Do` tab to define the action to be executed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:260
|
||
msgid "You can define multiple actions for the same automation rule. By default, actions are executed in the order in which they were defined."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:263
|
||
msgid "This means, for example, that if you define an :guilabel:`Update record` action and then a :guilabel:`Send email` action where the email references the field that was updated, the email uses the updated values. However, if the :guilabel:`Send email` action is defined before the :guilabel:`Update record` action, the email uses the values set *before* the record is updated."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:268
|
||
msgid "To change the order of defined actions, click the :icon:`oi-draggable` :guilabel:`(drag handle)` icon beside an action and drag it to the desired position."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:274
|
||
msgid "Update Record"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:276
|
||
msgid "This action updates one of the record's (related) fields. Click the :guilabel:`Update` field and, in the list that opens, select or search for the field to be updated. If needed, click the :icon:`oi-chevron-right` :guilabel:`(right arrow)` next to the field name to access the list of related fields."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:281
|
||
msgid "If you selected a :ref:`many2many field <studio/fields/relational-fields-many2many>`, choose whether the field must be updated by :guilabel:`Adding`, :guilabel:`Removing`, or :guilabel:`Setting it to` the selected value or by :guilabel:`Clearing it`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:286
|
||
msgid "If you want the automated action to remove a tag from the customer record, set the :guilabel:`Update` field to :guilabel:`Customer > Tags`, select :guilabel:`by Removing`, then select the tag."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Example of an Update Record action"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:294
|
||
msgid "Alternatively, you can also set a record's field dynamically using Python code. To do so, select :guilabel:`Compute` instead of :guilabel:`Update`, then enter the code to be used for computing the field's value. For example, if you want the automation rule to compute a custom :ref:`datetime field <studio/fields/simple-fields-date-time>` when a task's priority is set to `High` (by starring the task), you can define the trigger :guilabel:`Priority is set to` to `High` and define the :guilabel:`Update Record` action as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Compute a custom datetime field using a Python expression"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:307
|
||
msgid "Create Activity"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:309
|
||
msgid "This action is used to schedule a new activity linked to the record. Select an :guilabel:`Activity Type`, enter a :guilabel:`Title` and description, then specify when you want the activity to be scheduled in the :guilabel:`Due Date In` field, and select a :guilabel:`User type`:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:313
|
||
msgid "To always assign the activity to the same user, select :guilabel:`Specific User`, then add the user in the :guilabel:`Responsible` field;"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:315
|
||
msgid "To target a user linked to the record dynamically, select :guilabel:`Dynamic User (based on record)` and change the :guilabel:`User Field` if necessary."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:319
|
||
msgid "After a lead is turned into an opportunity, you want the automated action to set up a call for the user responsible for the lead. To do so, set the :guilabel:`Activity Type` to :guilabel:`Call` and the :guilabel:`User Type` to :guilabel:`Dynamic User (based on record)`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:0
|
||
msgid "Example of a Create Activity action"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:329
|
||
msgid "Send Email and Send SMS"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:331
|
||
msgid "These actions are used to send an email or a text message to a contact linked to a specific record. To do so, select or create an :guilabel:`Email Template` or an :guilabel:`SMS Template`, then, in the :guilabel:`Send Email As` or :guilabel:`Send SMS As` field, choose how you want to send the email or text message:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:336
|
||
msgid ":guilabel:`Email`: to send the message as an email to the recipients of the :guilabel:`Email Template`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:338
|
||
msgid ":guilabel:`Message`: to post the message on the record and notify the record's followers."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:339
|
||
msgid ":guilabel:`Note`: to send the message as an internal note visible to internal users in the chatter."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:341
|
||
msgid ":guilabel:`SMS (without note)`: to send the message as a text message to the recipients of the :guilabel:`SMS template`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:343
|
||
msgid ":guilabel:`SMS (with note)`: to send the message as a text message to the recipients of the :guilabel:`SMS template` and post it as an internal note in the chatter."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:345
|
||
msgid ":guilabel:`Note only`: to only post the message as an internal note in the chatter."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:350
|
||
msgid "Send WhatsApp"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:353
|
||
msgid "To automate the sending of WhatsApp messages, one or more :ref:`WhatsApp templates <productivity/whatsapp/templates>` must be created."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:356
|
||
msgid "This action is used to send a WhatsApp message to a contact linked to a specific record. To do so, select the appropriate :guilabel:`WhatsApp Template` from the dropdown menu."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:362
|
||
msgid "Add Followers and Remove Followers"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:364
|
||
msgid "This action is used to subscribe/unsubscribe existing contacts to/from the record."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:369
|
||
msgid "Create Record"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:371
|
||
msgid "This action is used to create a new record on any model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:373
|
||
msgid "Select the required model in the :guilabel:`Record to Create` field; it contains the current model by default. Specify a :guilabel:`Name` for the record, and then, if you want to create the record on another model, select a field in the :guilabel:`Link Field` field to link the record that triggered the creation of the new record."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:379
|
||
msgid "The dropdown list related to the :guilabel:`Link Field` field only contains :ref:`one2many fields <studio/fields/relational-fields-one2many>` existing on the current model that are linked to a :ref:`many2one field <studio/fields/relational-fields-many2one>` on the target model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:384
|
||
msgid "You can create another automation rule with :ref:`studio/automated-actions/action-update-record` actions to update the fields of the new record if necessary. For example, you can use a :guilabel:`Create Record` action to create a new project task and then assign it to a specific user using an :guilabel:`Update Record` action."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:392
|
||
msgid "Execute Code"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:395
|
||
msgid "For automation rules that require the execution of :ref:`custom code <studio/automated-actions/action-execute-code>`, note that maintenance of custom code is not included in the *Standard* or *Custom* pricing plans and incurs :ref:`additional fees <charges_standard>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:400
|
||
msgid "This action is used to execute Python code. You can write your code into the :guilabel:`Code` tab using the following variables:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:403
|
||
msgid "`env`: environment on which the action is triggered"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:404
|
||
msgid "`model`: model of the record on which the action is triggered; is a void recordset"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:405
|
||
msgid "`record`: record on which the action is triggered; may be void"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:406
|
||
msgid "`records`: recordset of all records on which the action is triggered in multi-mode; this may be left empty"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:408
|
||
msgid "`time`, `datetime`, `dateutil`, `timezone`: useful Python libraries"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:409
|
||
msgid "`float_compare`: utility function to compare floats based on specific precision"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:410
|
||
msgid "`log(message, level='info')`: logging function to record debug information in ir.logging table"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:412
|
||
msgid "`_logger.info(message)`: logger to emit messages in server logs"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:413
|
||
msgid "`UserError`: exception class for raising user-facing warning messages"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:414
|
||
msgid "`Command`: x2many commands namespace"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:415
|
||
msgid "`action = {...}`: to return an action"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:418
|
||
msgid "The available variables are described both in the :guilabel:`Code` and :guilabel:`Help` tabs."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:421
|
||
msgid ":doc:`Odoo's ORM capabilities <../../developer/reference/backend/orm>`"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:426
|
||
msgid "Send Webhook Notification"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:428
|
||
msgid "This action is used to send a `POST` API request with the values of the selected :guilabel:`Fields` to the webhook URL specified in the :guilabel:`URL` field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:431
|
||
msgid "The :guilabel:`Sample Payload` provides a preview of the data included in the request using a random record's data or dummy data if no record is available."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:435
|
||
msgid "It is also possible to set up an automated action that :doc:`uses a webhook to receive data from an external system <automated_actions/webhooks>` when a predefined event occurs in that system."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:441
|
||
msgid "Execute Existing Actions"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions.rst:443
|
||
msgid "The action is used to trigger multiple actions (linked to the current model) at the same time. To do so, click on :guilabel:`Add a line`, then, in the :guilabel:`Add: Child Actions` pop-up, select an existing action or click :guilabel:`New` to create a new one."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:3
|
||
msgid "Webhooks"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:10
|
||
msgid "Webhooks, which can be created in **Odoo Studio**, allow you to automate an action in your Odoo database when a specific event occurs in another, external system."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:13
|
||
msgid "In practice, this works as follows: when the event occurs in the external system, a data file (the \"payload\") is sent to the Odoo webhook's URL via a `POST` API request, and a predefined action is performed in your Odoo database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:17
|
||
msgid "Unlike scheduled actions, which run at predefined intervals, or manual API requests, which need to be explicitly invoked, webhooks enable real-time, event-driven communication and automation. For example, you can set up a webhook to have your Odoo inventory data updated automatically when a sales order is confirmed in an external point-of-sale system."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:22
|
||
msgid "Setting up a webhook in Odoo requires no coding when connecting two Odoo databases, but :ref:`testing a webhook <studio/webhooks/test-webhook>` requires an external tool. :ref:`Custom target records or actions <studio/webhooks/webhook-example>` may require programming skills."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:28
|
||
msgid "This article covers creating a webhook that *receives* data from an external source. However, it is also possible to create an automated action that :ref:`sends data to an external webhook <studio/automated-actions/action-webhook>` when a change occurs in your Odoo database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:35
|
||
msgid "Create a webhook in Odoo"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:38
|
||
msgid "Before implementing a webhook in a live database, configure and test it using a :ref:`duplicate database <odoo-online/duplicate>` to ensure the webhook performs as intended."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:42
|
||
msgid ":ref:`Activating developer mode <developer-mode>` before creating up a webhook gives greater flexibility in selecting the :doc:`model <../models_modules_apps>` the automation rule targets. It also allows you to find the technical name of the model and fields, which may be needed to configure the payload."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:47
|
||
msgid "To find a model's technical name, with developer mode activated, hover over the model name and then click :icon:`fa-arrow-right` :guilabel:`(Internal link)`. The technical name can be found in the :guilabel:`Model` field. For example, a sales order webhook uses the *Sales Order* model, but the technical name `sale.order` is used in the payload."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:52
|
||
msgid "To create a webhook in **Studio**, proceed as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:54
|
||
msgid ":ref:`Open Studio <studio/access>` and click :guilabel:`Webhooks`, then :guilabel:`New`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:55
|
||
msgid "Give the webhook a clear, meaningful name that identifies its purpose."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:56
|
||
msgid "If needed, and provided developer mode is activated, select the appropriate :guilabel:`Model` from the dropdown. If developer mode is not activated, the automation rule targets the current model by default."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:60
|
||
msgid "The webhook's URL is automatically generated, but can be changed if needed by clicking :guilabel:`Rotate Secret`. This is the URL that should be used when implementing the webhook in the external system that will send updates to the database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:65
|
||
msgid "The URL is **confidential** and should be treated with care. Sharing it online or without caution can provide unintended access to the Odoo database. If the URL is updated after the initial implementation, make sure to update it in the external system."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:69
|
||
msgid "If desired, enable :guilabel:`Log Calls` to track the history of API requests made to the webhook's URL, e.g., for troubleshooting purposes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:72
|
||
msgid "If the system sending the webhook is not Odoo, adjust the :guilabel:`Target Record` code to look for the JSON record included in the payload when the API request is made to the webhook's URL. If the system sending the webhook is an Odoo database, ensure that the `id` and `model` appear in the payload."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:77
|
||
msgid "If the webhook is used to create records in the Odoo database, use `model.browse(i)` or `model.search(i)` instead of the default :guilabel:`Target Record` format."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:80
|
||
msgid "Click :guilabel:`Add an action` in the :guilabel:`Actions To Do` tab to define the :ref:`actions <studio/automated-actions/action>` to be executed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:82
|
||
msgid "Before implementing the webhook in the external system, :ref:`test <studio/webhooks/test-webhook>` it to ensure it works as intended."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:86
|
||
msgid "Webhooks can also be created via the :guilabel:`Automations` menu in **Studio** by selecting the trigger :guilabel:`On webhook`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:88
|
||
msgid "To access the history of API requests if :guilabel:`Log Calls` has been enabled, click the :guilabel:`Logs` smart button at the top of the :guilabel:`Automation rules` form."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:90
|
||
msgid "If the purpose of the webhook is anything other than to update an existing record, e.g., to create a new record, the :guilabel:`Execute Code` action must be chosen."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:96
|
||
msgid "Test a webhook"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:98
|
||
msgid "Testing a webhook requires a test payload and an external tool or system, like `Postman <https://www.postman.com/>`_, to send the payload via a `POST` API request. This section presents the steps to test a webhook in Postman."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:103
|
||
msgid "See the :ref:`webhook use cases section <studio/webhooks/webhook-examples>` for step-by-step explanations of how to test webhooks using test payloads."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:105
|
||
msgid "To get specific help with testing a webhook with Postman, contact their support team."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:107
|
||
msgid "In Postman, create a new HTTP request and set its method to :guilabel:`POST`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:108
|
||
msgid "Copy the webhook's URL from your Odoo database using the :icon:`fa-link` :guilabel:`(link)` icon and paste it into the URL field in Postman."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:110
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:192
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:267
|
||
msgid "Click the :guilabel:`Body` tab and select :guilabel:`raw`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:111
|
||
msgid "Set the file type to :guilabel:`JSON`, then copy the code from the test payload and paste it into the code editor."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:113
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:206
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:281
|
||
msgid "Click :guilabel:`Send`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:117
|
||
msgid "In the :guilabel:`Response` viewer at the bottom of the screen in Postman, details, including a HTTP response code, indicate whether or not the webhook is functioning correctly."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:120
|
||
msgid "A `200 OK` or `status: ok` message indicates that the webhook is functioning properly on Odoo's side. From here, implementation can begin with the other system to automatically send the API requests to the Odoo webhook's URL."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:124
|
||
msgid "If any other response is returned, the number associated with it helps to identify the problem. For example, a `500 Internal Server Error` message means that Odoo could not interpret the call properly. In this case, ensure the fields found in the JSON file are properly mapped in the webhook's configuration and in the system sending the test call."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:130
|
||
msgid "Turning on call logging in the webhook's configuration in Odoo provides error logs if the webhook is not functioning as intended."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:134
|
||
msgid "Implement a webhook in an external system"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:136
|
||
msgid "When the webhook has been successfully created in Odoo and tested, implement it in the system that sends data to the Odoo database, making sure the `POST` API requests are sent to the webhook's URL."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:142
|
||
msgid "Webhook use cases"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:144
|
||
msgid "Below are two examples of how to use webhooks in Odoo. A test payload is provided for each example, and can be found in the section on testing the webhook. `Postman <https://www.postman.com/>`_ is used to send the test payload."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:149
|
||
msgid "Update a sales order's currency"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:151
|
||
msgid "This webhook updates a sales order in the **Sales** app to `USD` when the external system sends a `POST` API request to the webhook's URL that includes that sales order number (which is identified by the payload's `id` record)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:155
|
||
msgid "This could be useful for subsidiaries outside the United States with a mother company located inside the United States or during mergers when consolidating data into one Odoo database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:159
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:221
|
||
msgid "Create the webhook"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:161
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:223
|
||
msgid "To create this webhook, proceed as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:163
|
||
msgid "Open the **Sales** app, then :ref:`open Studio <studio/access>` and click :guilabel:`Webhooks`. The *Sales Order* model is selected by default."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:165
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:227
|
||
msgid "Click :guilabel:`New`. The :guilabel:`Trigger` is set to :guilabel:`On webhook` by default."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:166
|
||
msgid "Set the :guilabel:`Target Record` to `model.env[payload.get('model')].browse(int(payload.get('id')))`, where:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:169
|
||
msgid "`payload.get('model')` retrieves the value associated with the `model` key in the payload, i.e., `sale.order`, which is the technical name of the *Sales Order* model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:171
|
||
msgid "`payload.get('id')` retrieves the value associated with the `id` key in the payload, i.e., the number of the target sales order in your Odoo database with the `S` and leading zeros removed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:174
|
||
msgid "`int` converts the retrieved id to an integer (i.e., a whole number) because the method `browse()` can only be used with an integer."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:177
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:231
|
||
msgid "Click :guilabel:`Add an action`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:178
|
||
msgid "In the :guilabel:`Type` section, click :guilabel:`Update Record`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:179
|
||
msgid "In the :guilabel:`Action details` section, select :guilabel:`Update`, choose the field :guilabel:`Currency`, and select :guilabel:`USD`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:181
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:256
|
||
msgid "Click :guilabel:`Save & Close`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:184
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:259
|
||
msgid "Test the webhook"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:186
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:261
|
||
msgid "To test this webhook, proceed as follows:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:188
|
||
msgid "With `Postman <https://www.postman.com/>`_ open, create a new HTTP request and set its method to :guilabel:`POST`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:190
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:265
|
||
msgid "Copy the URL of the Odoo webhook using the :icon:`fa-link` :guilabel:`(link)` icon and paste it into the URL field in Postman."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:193
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:268
|
||
msgid "Set the file type to :guilabel:`JSON`, then copy this code, i.e., the payload, and paste it into the code editor:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:203
|
||
msgid "In your Odoo database, choose a sales order to test the webhook on. In the pasted code, replace `SALES ORDER NUMBER` with the sales order's number without the `S` or any zeros before the number. For example, a sales order with the number `S00007` should be entered as `7` in Postman."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:207
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:282
|
||
msgid "Consult the :ref:`Response viewer <studio/webhooks/test-webhook-response>` in Postman to determine whether or not the webhook is functioning properly. If a message other than `200 OK` or `status: ok` is returned, the number associated with the message helps to identify the problem."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:214
|
||
msgid "Create a new contact"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:216
|
||
msgid "This webhook uses custom code to create a new contact in an Odoo database when the external system sends a `POST` API request to the webhook's URL that includes the contact's information. This could be helpful for automatically creating new vendors or customers."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:225
|
||
msgid "Open the **Contacts** app, then :ref:`open Studio <studio/access>` and click :guilabel:`Webhooks`. The *Contact* model is selected by default."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:228
|
||
msgid "Set the :guilabel:`Target Record` to `model.browse([2])`. This is essentially a placeholder as the code in the automated action tells the webhook what needs to be retrieved from the payload and in which model the record needs to be created."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:232
|
||
msgid "In the :guilabel:`Type` section, click :guilabel:`Execute Code`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:233
|
||
msgid "Copy this code and paste it into the code editor in the :guilabel:`Code` tab of the :guilabel:`Action details` section:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:263
|
||
msgid "In `Postman <https://www.postman.com/>`_, create a new HTTP request and set its method to :guilabel:`POST`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/automated_actions/webhooks.rst:279
|
||
msgid "In the pasted code, replace the `CONTACT NAME`, `CONTACTEMAIL@EMAIL.COM`, and `CONTACT PHONE NUMBER` with a new contact's information."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:3
|
||
msgid "Fields and widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:5
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:10
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:14
|
||
msgid ":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)`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:21
|
||
msgid "Simple fields"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:23
|
||
msgid "Simple fields contain basic values, such as text, numbers, files, etc."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:26
|
||
msgid "Non-default widgets, when available, are presented as bullet points or sub-headings below."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:31
|
||
msgid "Text (`char`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:33
|
||
msgid "The :guilabel:`Text` field is used for short text containing any character. One text line is displayed when filling out the field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:36
|
||
#: ../../content/applications/studio/fields.rst:258
|
||
msgid ":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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:38
|
||
#: ../../content/applications/studio/fields.rst:70
|
||
msgid ":guilabel:`Copy to Clipboard`: users can copy the value by clicking a button."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:39
|
||
msgid ":guilabel:`E-mail`: the value becomes a clickable *mailto* link."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:40
|
||
msgid ":guilabel:`Image`: displays an image using a URL. The value cannot be edited manually, but a default value can be set."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:44
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:49
|
||
msgid ":guilabel:`Phone`: the value becomes a clickable *tel* link."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:52
|
||
msgid "Tick :guilabel:`Enable SMS` to add an option to send an SMS directly from Odoo next to the field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:55
|
||
msgid ":guilabel:`URL`: the value becomes a clickable URL."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Text fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:65
|
||
msgid "Multiline Text (`text`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:67
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Multiline Text fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:80
|
||
msgid "Integer (`integer`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:82
|
||
msgid "The :guilabel:`Integer` field is used for all integer numbers (:dfn:`positive, negative, or zero, without a decimal`)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:85
|
||
msgid ":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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:87
|
||
#: ../../content/applications/studio/fields.rst:115
|
||
msgid ":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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:89
|
||
msgid ":guilabel:`Handle`: displays a drag handle icon to order records manually in :ref:`List view <studio/views/multiple-records/list>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Integer fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:100
|
||
msgid "Decimal (`float`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:102
|
||
msgid "The :guilabel:`Decimal` field is used for all decimal numbers (:dfn:`positive, negative, or zero, with a decimal`)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:106
|
||
msgid "Decimal numbers are displayed with two decimals after the decimal point on the UI, but they are stored in the database with more precision."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:109
|
||
msgid ":guilabel:`Monetary`: it is similar to using the :ref:`Monetary field <studio/fields/simple-fields-monetary>`. It is recommended to use the latter as it offers more functionalities."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:112
|
||
msgid ":guilabel:`Percentage`: displays a percent character `%` after the value."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:113
|
||
msgid ":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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:117
|
||
msgid ":guilabel:`Time`: the value must follow the *hh:mm* format, with a maximum of 59 minutes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Decimal fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:127
|
||
msgid "Monetary (`monetary`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:129
|
||
msgid "The :guilabel:`Monetary` field is used for all monetary values."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:132
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Example of a Monetary field along with its Currency field"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:144
|
||
msgid "Html (`html`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:146
|
||
msgid "The :guilabel:`Html` field is used to add text that can be edited using the Odoo HTML editor."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:148
|
||
msgid ":guilabel:`Multiline Text`: disables the Odoo HTML editor to allow editing raw HTML."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Html fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:158
|
||
msgid "Date (`date`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:160
|
||
msgid "The :guilabel:`Date` field is used to select a date on a calendar."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:162
|
||
msgid ":guilabel:`Remaining Days`: the remaining number of days before the selected date is displayed (e.g., *In 5 days*), based on the current date. This field should be set to :guilabel:`Read only`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Date fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:173
|
||
msgid "Date & Time (`datetime`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:175
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:180
|
||
msgid "As well as :ref:`general properties <studio/fields/properties>`, some :ref:`specific properties <studio/fields/properties-date-datetime>` are available for :guilabel:`Date & Time` fields that have the :guilabel:`Date & Time` or :guilabel:`Date Range` widget set."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:186
|
||
msgid "Date Range (`daterange`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:188
|
||
msgid "The :guilabel:`Date Range` widget is used to display a period of time defined by a start date and an end date in a single line. A date range can have a mandatory start and end date, e.g., for a multi-day event, or allow an optional start or end date, e.g., for a field service intervention or a project task."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:193
|
||
msgid "Adding a date range requires two fields: a :guilabel:`Date & Time` field with the :guilabel:`Date Range` widget set and another field that is selected as the start date *or* end date. This underlying field can be an existing :ref:`Date <studio/fields/simple-fields-date>` or :guilabel:`Date & Time` field, or one created specifically for this purpose."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:198
|
||
msgid "To add a date range:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:200
|
||
msgid "Identify an existing :guilabel:`Date` or :guilabel:`Date & Time` field that can be used as the underlying start/end date field, or add a new one. If the date range:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:203
|
||
msgid "has a mandatory start date and end date, this field can be either the start date or end date; the outcome is the same."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:205
|
||
msgid "allows an optional start or end date, this field is the start date or end date, respectively."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:208
|
||
msgid "To avoid displaying the same information twice, the underlying start/end date field can be made invisible by enabling :guilabel:`Invisible` or removed from the view by clicking :guilabel:`Remove from view`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:212
|
||
msgid "Add a :guilabel:`Date & Time` field and set the :guilabel:`Widget` field to :guilabel:`Date Range`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:214
|
||
msgid "Enter an appropriate :guilabel:`Label`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:215
|
||
msgid "Select the underlying start/end date field from the :guilabel:`Start date field` or :guilabel:`End date field` dropdown, as relevant."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:217
|
||
msgid "If the date range should have a mandatory start and end date, enable :guilabel:`Always range`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:218
|
||
msgid "Update any other :ref:`general properties <studio/fields/properties>` or specific :ref:`properties for Date & Time fields <studio/fields/properties-date-datetime>` as needed, then click :guilabel:`Close` in the upper right corner of the screen."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Date & Time fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:228
|
||
msgid "Remaining Days (`remaining_days`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:230
|
||
msgid "The :guilabel:`Remaining Days` widget displays the remaining number of days before the selected date (e.g., *In 5 days*), based on the current date and time. This field should be set to :guilabel:`Read only`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:237
|
||
msgid "Checkbox (`boolean`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:239
|
||
msgid "The :guilabel:`Checkbox` field is used when a value should only be true or false, indicated by checking or unchecking a checkbox."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:242
|
||
msgid ":guilabel:`Button`: displays a radio button. The widget works without switching to the edit mode."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:243
|
||
msgid ":guilabel:`Toggle`: displays a toggle button. The widget works without switching to the edit mode."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Checkbox fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:253
|
||
msgid "Selection (`selection`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:255
|
||
msgid "The :guilabel:`Selection` field is used when users should select a single value from a group of predefined values."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:260
|
||
msgid ":guilabel:`Badges`: displays all selectable values simultaneously inside rectangular shapes, organized horizontally."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:262
|
||
msgid ":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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:266
|
||
#: ../../content/applications/studio/fields.rst:392
|
||
msgid ":guilabel:`Radio`: displays all selectable values at the same time as radio buttons."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:269
|
||
msgid "By default, radio buttons are organized vertically. Enable :guilabel:`Display horizontally` to switch the way they are displayed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:272
|
||
msgid ":guilabel:`Status Bar`: displays all selectable values at the same time as an arrow progress bar."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:275
|
||
msgid "By default, values on the status bar are selectable. Disable :guilabel:`Clickable` to prevent the value being edited on the UI."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of Selection fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:286
|
||
msgid "Priority (`selection`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:288
|
||
msgid "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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:296
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Example of a Priority field"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:308
|
||
msgid "File (`binary`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:310
|
||
msgid "The :guilabel:`File` field is used to upload any type of file, or sign a form (:guilabel:`Sign` widget)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:313
|
||
msgid ":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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:316
|
||
msgid ":guilabel:`PDF Viewer`: users can upload a PDF file, which can be then browsed from the :ref:`Form view <studio/views/general/form>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:318
|
||
msgid ":guilabel:`Sign`: users can electronically sign the form. This has the same effect as selecting the :ref:`Sign field <studio/fields/simple-fields-sign>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Examples of File fields with different widgets"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:329
|
||
msgid "Image (`binary`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:331
|
||
msgid "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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:338
|
||
msgid "To change the display size of uploaded images, select :guilabel:`Small`, :guilabel:`Medium`, or :guilabel:`Large` under the :guilabel:`Size` option."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:344
|
||
msgid "Sign (`binary`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:346
|
||
msgid "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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:352
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:361
|
||
msgid "Relational fields"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:363
|
||
msgid "Relational fields are used to link and display the data from records on another model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:366
|
||
msgid "Non-default widgets, when available, are presented as bullet points below."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:371
|
||
msgid "Many2One (`many2one`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:373
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:377
|
||
msgid "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)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Diagram showing a many2one relationship"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:385
|
||
msgid "To prevent users from creating a new record in the linked model, tick :guilabel:`Disable creation`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:387
|
||
msgid "To prevent users from opening records in a pop-up window, tick :guilabel:`Disable opening`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:388
|
||
msgid "To help users only select the right record, click on :guilabel:`Domain` to create a filter."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:390
|
||
msgid ":guilabel:`Badge`: displays the value inside a rounded shape, similar to a tag. The value cannot be edited on the UI."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:397
|
||
msgid "One2Many (`one2many`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:399
|
||
msgid "The :guilabel:`One2Many` field is used to display the existing relations between a record on the current model and multiple records from another model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:403
|
||
msgid "You could add a :guilabel:`One2Many` field on the *Contact* model to look at **one** customer's **many** sales orders."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Diagram showing a one2many relationship"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:410
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:417
|
||
msgid "Lines (`one2many`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:419
|
||
msgid "The :guilabel:`Lines` field is used to create a table with rows and columns (e.g., the lines of products on a sales order)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:423
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Example of a Lines field"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:435
|
||
msgid "Many2Many (`many2many`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:437
|
||
msgid "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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:443
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Diagram showing many2many relationships"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:450
|
||
msgid ":guilabel:`Checkboxes`: users can select several values using checkboxes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:451
|
||
msgid ":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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:458
|
||
msgid "Tags (`many2many`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:460
|
||
msgid "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>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:467
|
||
msgid "To display tags with different background colors, tick :guilabel:`Use colors`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:0
|
||
msgid "Example of a Tags field"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:477
|
||
msgid "Related Field (`related`)"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:479
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:483
|
||
msgid "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`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:489
|
||
msgid "Properties"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:492
|
||
msgid "General properties"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:494
|
||
msgid ":guilabel:`Invisible`: Enable this property when it is not necessary for users to view a field on the UI. This helps declutter the UI by only showing the essential fields depending on a specific situation."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:498
|
||
msgid "The :guilabel:`Invisible` attribute also applies inside Studio. To view hidden fields in Studio, click on a view's :guilabel:`View` tab and enable :guilabel:`Show Invisible Elements`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:501
|
||
msgid ":guilabel:`Required`: Enable this property if a field should always be completed by the user before being able to proceed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:504
|
||
msgid ":guilabel:`Readonly`: Enable this property if users should not be able to modify a field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:507
|
||
msgid "You can choose to enable :guilabel:`Invisible`, :guilabel:`Required` and :guilabel:`Readonly` for specific records only by clicking on :guilabel:`Conditional` and creating a filter."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:511
|
||
msgid "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."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:515
|
||
msgid ":guilabel:`Label`: the field's name on the UI. This is not the name used in the PostgreSQL database. To view and change the latter, activate the :ref:`developer mode <developer-mode>` and edit the :guilabel:`Technical Name`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:519
|
||
msgid ":guilabel:`Help Tooltip`: To explain the purpose of a field, add a description. The text is displayed inside a tooltip box when hovering with your mouse over the question mark beside the field's label."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:523
|
||
msgid ":guilabel:`Widget`: To change the default appearance or functionality of a field, select one of the available widgets."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:526
|
||
msgid ":guilabel:`Placeholder`: To provide an example of how a field should be completed, add placeholder text. The text appears in light gray until a value is entered."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:529
|
||
msgid ":guilabel:`Default value`: To display a default value in a field when a record is created, add a value."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:532
|
||
msgid ":guilabel:`Allow visibility to groups`: To limit which users can view the field, select one or more user access :ref:`groups <access-rights/groups>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:534
|
||
msgid ":guilabel:`Forbid visibility to groups`: To prevent certain users from seeing the field, select one or more user access :ref:`groups <access-rights/groups>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:540
|
||
msgid "Properties for Date & Time fields"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:542
|
||
msgid "For :guilabel:`Date & Time` fields that have the :guilabel:`Date & Time` or :guilabel:`Date Range` widget set, some specific properties are available:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:545
|
||
msgid ":guilabel:`Minimal precision`: Determine the smallest date unit that must be selected in the date selector. The possible values are :guilabel:`Day`, :guilabel:`Month`, :guilabel:`Year` or :guilabel:`Decade`. If no value is selected, the user must select a day in the date selector."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:548
|
||
msgid ":guilabel:`Maximal precision`: Determine the largest date unit that can be used to navigate the date selector. The possible values are :guilabel:`Day`, :guilabel:`Month`, :guilabel:`Year` or :guilabel:`Decade`. If no value is selected, the user can navigate the date selector by decade."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:551
|
||
msgid ":guilabel:`Warning for future dates`: Enable this property to display a warning icon if a future date is selected."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:553
|
||
msgid ":guilabel:`Condensed display`: Enable this property to show days, months and hours with no leading zeros, e.g., `4/2/2025 8:05:00` instead of `04/02/2025 08:05:00`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:555
|
||
msgid ":guilabel:`Show time`: This property is enabled by default for :guilabel:`Date & Time` fields. On a read-only field, disable the property to show only the date. This can keep a list view less cluttered, for example."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:558
|
||
msgid ":guilabel:`Show seconds`: This property is enabled by default for :guilabel:`Date & Time` fields. Disable the property to show only hours and minutes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:560
|
||
msgid ":guilabel:`Time interval`: Enter a value to determine the minute intervals shown in the time selector. For example, enter 15 to allow quarter-hour intervals. The default value is set to 5 minutes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:563
|
||
msgid ":guilabel:`Earliest accepted date`: Enter the earliest date that can be selected in the date selector in ISO-format, i.e., `YYYY-MM-DD`. If the current date is always the earliest accepted date, enter `today`. On the date selector, dates prior to the earliest accepted date are grayed out."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/fields.rst:567
|
||
msgid ":guilabel:`Latest accepted date`: Enter the latest date that can be selected in the date selector in ISO-format, i.e., `YYYY-MM-DD`. If the current date is always the latest accepted date, enter `today`. On the date selector, dates later than the latest accepted date are grayed out."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:3
|
||
msgid "Models, modules, and apps"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:5
|
||
msgid "Models determine the logical structure of a database and how data is stored, organized, and manipulated. In other words, a model is a table of information that can be linked with other tables. A model usually represents a business concept, such as a *sales order*, *contact*, or *product*."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:9
|
||
msgid "Modules and apps contain various elements, such as models, views, data files, web controllers, and static web data."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:13
|
||
msgid "All apps are modules. Larger, standalone modules are typically referred to as apps, whereas other modules usually serve as add-ons to said apps."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:19
|
||
msgid "Suggested features"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:21
|
||
msgid "When you create a new model or app with Studio, you can choose to add up to 14 features to speed up the creation process. These features bundle fields, default settings, and views that are usually used together to provide some standard functionality. Most of these features can be added later on, but adding them from the start makes the model creation process much easier. Furthermore, these features interact together in some cases to increase their usefulness."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:28
|
||
msgid "Creating a model with the :ref:`studio/models-modules-apps/suggested-features/picture` and :ref:`studio/models-modules-apps/suggested-features/pipeline-stages` features enabled adds the image in the card layout of the :ref:`Kanban view <studio/views/multiple-records/kanban>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:0
|
||
msgid "Combination of the Picture and Pipeline stages features on the Kanban view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:39
|
||
msgid "Contact details"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:41
|
||
msgid "Selecting :guilabel:`Contact details` adds to the :ref:`Form view <studio/views/general/form>` a :ref:`Many2One field <studio/fields/relational-fields-many2one>` linked to the *Contact* model and two of its :ref:`Related Fields <studio/fields/relational-fields-related-field>`: :guilabel:`Phone` and :guilabel:`Email`. The :guilabel:`Contact` field is also added to the :ref:`List view <studio/views/multiple-records/list>`, and the :ref:`Map view <studio/views/multiple-records/map>` is activated."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:0
|
||
msgid "Contact details feature on the Form view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:57
|
||
msgid "User assignment"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:59
|
||
msgid "Selecting :guilabel:`User assignment` adds to the :ref:`Form view <studio/views/general/form>` a :ref:`Many2One field <studio/fields/relational-fields-many2one>` linked to the *Contact* model, with the following :guilabel:`Domain`: `Share User is not set` to only allow the selection of *Internal Users*. In addition, the :guilabel:`many2one_avatar_user` widget is used to display the user's avatar. The :guilabel:`Responsible` field is also added to the :ref:`List view <studio/views/multiple-records/list>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:0
|
||
msgid "User assignment feature on the Form view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:75
|
||
msgid "Date & Calendar"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:77
|
||
msgid "Selecting :guilabel:`Date & Calendar` adds to the :ref:`Form view <studio/views/general/form>` a :ref:`Date field <studio/fields/simple-fields-date>` and activates the :ref:`Calendar view <studio/views/timeline/calendar>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:84
|
||
msgid "Date range & Gantt"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:86
|
||
msgid "Selecting :guilabel:`Date range & Gantt` adds to the :ref:`Form view <studio/views/general/form>` two :ref:`Date fields <studio/fields/simple-fields-date>` next to each other: one to set a start date, the other to set an end date, using the :guilabel:`daterange` widget, and activates the :ref:`Gantt view <studio/views/timeline/gantt>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:94
|
||
msgid "Pipeline stages"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:96
|
||
msgid "Selecting :guilabel:`Pipeline stages` activates the :ref:`Kanban view <studio/views/multiple-records/kanban>`, adds several fields such as :ref:`Priority <studio/fields/simple-fields-priority>` and :guilabel:`Kanban State`, and three stages: :guilabel:`New`, :guilabel:`In Progress`, and :guilabel:`Done`. The :guilabel:`Pipeline status bar` and the :guilabel:`Kanban State` field are added to the :ref:`Form view <studio/views/general/form>`. The :guilabel:`Color` field is added to the :ref:`List view <studio/views/multiple-records/list>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:105
|
||
msgid "The :guilabel:`Pipeline stages` feature can be added at a later stage."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:110
|
||
msgid "Tags"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:112
|
||
msgid "Selecting :guilabel:`Tags` adds to the :ref:`studio/views/general/form` and :ref:`studio/views/multiple-records/list` views a :ref:`Tags field <studio/fields/relational-fields-tags>`, creating a *Tag* model with preconfigured access rights in the process."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:120
|
||
msgid "Picture"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:122
|
||
msgid "Selecting :guilabel:`Picture` adds to the top-right of the :ref:`Form view <studio/views/general/form>` an :ref:`Image field <studio/fields/simple-fields-image>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:126
|
||
msgid "The :guilabel:`Picture` feature can be added at a later stage."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:131
|
||
msgid "Lines"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:133
|
||
msgid "Selecting :guilabel:`Lines`: adds to the :ref:`Form view <studio/views/general/form>` a :ref:`Lines field <studio/fields/relational-fields-lines>` inside a :guilabel:`Tab` component."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:139
|
||
msgid "Notes"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:141
|
||
msgid "Selecting :guilabel:`Notes` adds to the :ref:`Form view <studio/views/general/form>` an :ref:`Html field <studio/fields/simple-fields-html>` using the full width of the form."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:147
|
||
msgid "Monetary value"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:149
|
||
msgid "Selecting :guilabel:`Monetary value` adds to the :ref:`studio/views/general/form` and :ref:`studio/views/multiple-records/list` views a :ref:`Monetary field <studio/fields/simple-fields-monetary>`. The :ref:`studio/views/reporting/graph` and :ref:`studio/views/reporting/pivot` views are also activated."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:155
|
||
msgid "A *Currency* field is added and hidden from the view."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:160
|
||
msgid "Company"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:162
|
||
msgid "Selecting :guilabel:`Company` adds to the :ref:`studio/views/general/form` and :ref:`studio/views/multiple-records/list` views a :ref:`Many2One field <studio/fields/relational-fields-many2one>` linked to the *Company* model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:167
|
||
msgid "This is only useful if you work in a multi-company environment."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:172
|
||
msgid "Custom Sorting"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:174
|
||
msgid "Selecting :guilabel:`Custom Sorting` adds to the :ref:`List view <studio/views/multiple-records/list>` a drag handle icon to manually reorder records."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:0
|
||
msgid "Custom Sorting feature on the List view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:186
|
||
msgid "Chatter"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:188
|
||
msgid "Selecting :guilabel:`Chatter` adds to the :ref:`Form view <studio/views/general/form>` Chatter functionalities (sending messages, logging notes, and scheduling activities)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:192
|
||
msgid "The :guilabel:`Chatter` feature can be added at a later stage."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:0
|
||
msgid "Chatter feature on the Form view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:203
|
||
msgid "Archiving"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:205
|
||
msgid "Selecting :guilabel:`Archiving` adds to the :ref:`studio/views/general/form` and :ref:`studio/views/multiple-records/list` views the :guilabel:`Archive` action and hides archived records from searches and views by default."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:212
|
||
msgid "Export and import customizations"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:214
|
||
msgid "When you do any customization with Studio, a new module named `studio_customization` is added to your database. You can export this module as a ZIP file using the :guilabel:`Studio Export` function. The module can then be imported into another Odoo database. This may be useful, for example, when setting up a new module or for training purposes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:220
|
||
msgid "Exporting and importing customizations in this way, rather than using the :doc:`standard Odoo export and import <../essentials/export_import_data>` functions, means data is imported in a logical way. For example, if the module contains customers and sales orders, the customers are created first, since these are required for the sales orders to be created."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:228
|
||
msgid "Export customizations"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:230
|
||
msgid "To export customizations, click the :icon:`oi-studio` :guilabel:`(Toggle Studio)` button on the main Odoo dashboard, then :guilabel:`Export`, then either:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:233
|
||
msgid "download all Studio customizations by clicking the :guilabel:`Export` button; or"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:234
|
||
msgid "choose what data to export by clicking :ref:`Configure data and demo data to export <studio/export-import/export/configure>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:240
|
||
msgid "Configure data to export"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:242
|
||
msgid "To select specific models to export, click :guilabel:`New` on the :guilabel:`Studio Export` screen, then start typing the name of the relevant model or select it from the list."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:246
|
||
msgid "Click :guilabel:`Preset` to see a list of all models in your database with records that have been modified using Studio and all custom models created using Studio. To configure one of these models for export, click on the model to open it and make the required changes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:250
|
||
msgid "Tick the following options as relevant:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:252
|
||
msgid ":guilabel:`Demo`: if the exported records should be considered as demo data when imported."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:253
|
||
msgid ":guilabel:`Attachments`: if attachments related to exported records should be included in the export."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:255
|
||
msgid ":guilabel:`Updatable`: if the exported records should be able to be updated during a module update."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:257
|
||
msgid "If necessary, edit the :guilabel:`Domain` to determine which of the model's records should be exported. To do so, click the :guilabel:`Edit Domain` button or :icon:`fa-caret-right` :guilabel:`(Modify filter)` then :guilabel:`Edit Domain`, as appropriate. Proceed to make any required changes."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:262
|
||
msgid "After configuring a model for export, click :guilabel:`Studio Export` to return to the main screen. To download a ZIP file with the customizations for all the listed models, click :guilabel:`Export`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:266
|
||
msgid "It is not necessary to select one or more models as all listed models will be included in the export. To remove a model from the export, select it and click the :icon:`fa-cog` :guilabel:`Actions` button then :icon:`fa-trash-o` :guilabel:`Delete`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:270
|
||
msgid "In the :guilabel:`Studio Export` window:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:272
|
||
msgid "leave the checkboxes unticked to export only the customizations done with Studio."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:273
|
||
msgid "tick :guilabel:`Include Data` to include data from the selected models in the export."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:274
|
||
msgid "tick :guilabel:`Include Demo Data` to include data from the selected models that is flagged as demo data. Ticking this option also ticks :guilabel:`Include Data`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:277
|
||
msgid "Click the :guilabel:`Export` button to download the ZIP file."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:-1
|
||
msgid "Choosing to export both data and demo data"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:285
|
||
msgid "Import customizations"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:288
|
||
msgid "Before importing, make sure the destination database is on the same Odoo version and contains the same apps and modules as the source database. Studio does not add the underlying modules as dependencies of the exported module."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:292
|
||
msgid "To import and install Studio customizations in another Odoo database:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:294
|
||
msgid "Connect to the destination database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:295
|
||
msgid "Click the :icon:`oi-studio` :guilabel:`(Toggle Studio)` button on the main Odoo dashboard, then :guilabel:`Import`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:297
|
||
msgid "Upload the exported ZIP file. If demo data should be imported, tick :guilabel:`Load demo data`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/models_modules_apps.rst:298
|
||
msgid "Click :guilabel:`Install`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:3
|
||
msgid "PDF reports"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:5
|
||
msgid "With Studio, you can :ref:`edit existing PDF reports <studio/pdf-reports/edit>` (e.g., invoices, quotations, etc.) or :ref:`create new ones <studio/pdf-reports/edit>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:11
|
||
msgid "Default layout"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:13
|
||
msgid "The default layout of reports is managed outside Studio. Go to :menuselection:`Settings`, then, in the :guilabel:`Companies` section of the main page, click :guilabel:`Configure Document Layout`. Layout settings are company-specific but apply to all reports."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:18
|
||
msgid "You can see how the different settings affect the report layout in the report preview on the right side of the :guilabel:`Configure your document layout` window. When creating or editing a report, you can see a preview of the report by clicking :guilabel:`Print preview` on the left side of the screen."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:23
|
||
msgid "Use the following settings:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:27
|
||
msgid ":guilabel:`Layout`: Seven layouts are available:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:31
|
||
msgid "Light"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Light report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:37
|
||
msgid "Boxed"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Boxed report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:43
|
||
msgid "Bold"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Bold report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:49
|
||
msgid "Striped"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Striped report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:55
|
||
msgid "Bubble"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Bubble report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:61
|
||
msgid "Wave"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Wave report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:67
|
||
msgid "Folder"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Folder report layout sample"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:75
|
||
msgid ":guilabel:`Background`: The following backgrounds are available:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:77
|
||
msgid ":guilabel:`Blank`: Nothing is displayed."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:78
|
||
msgid ":guilabel:`Demo logo`: A demo logo is displayed in the background."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:79
|
||
msgid ":guilabel:`Custom`: Upload a custom background image."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:83
|
||
msgid ":guilabel:`Text`: Eight fonts are available: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (which supports Arabic and Latin scripts), and Fira Mono. Go to the `Google Fonts website <https://fonts.google.com/>`_ to preview them."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:89
|
||
msgid ":guilabel:`Company logo`: Click the :guilabel:`Edit` button to upload or change the logo. This adds the logo to the company’s record on the *Company* model, which you can access by going to :menuselection:`Settings` and then clicking :guilabel:`Update Info` in the :guilabel:`Companies` section."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:96
|
||
msgid ":guilabel:`Colors`: Change the primary and secondary colors used to structure reports. The default colors are automatically generated based on the colors of the logo."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:101
|
||
msgid ":guilabel:`Address`: The company name and address are displayed in the header of :ref:`external reports <studio/pdf-reports/header-footer>`. You can add multiple lines of text."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:106
|
||
msgid ":guilabel:`Tagline`: This is displayed in the header of :ref:`external reports <studio/pdf-reports/header-footer>` using the Light, Striped, Bubble, Wave and Folder layouts and in the footer of external reports using the Boxed and Bold layouts. You can add multiple lines of text."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:113
|
||
msgid ":guilabel:`Footer`: This text is used in the footer of :ref:`external reports <studio/pdf-reports/header-footer>`. You can add multiple lines of text. You can also edit the footer using the :ref:`report editor <studio/pdf-reports/edit>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:119
|
||
msgid ":guilabel:`Paper format`: This defines the default paper size of reports. You can select :guilabel:`A4` (21 cm x 29.7 cm) and :guilabel:`US Letter` (21.59 cm x 27.54 cm). This can also be defined for individual reports in the :guilabel:`Paper format` field in :ref:`Studio <studio/pdf-reports/edit-options>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:125
|
||
msgid "Other paper formats may be available depending on which apps or modules you have installed, for example, label sheets for the Inventory app or event badges for the Events app."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:131
|
||
msgid "Creating new PDF reports"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:133
|
||
msgid "To create a new report for a :doc:`model </applications/studio/models_modules_apps>`, (e.g., sales orders) access the model, click the :icon:`oi-studio` (:guilabel:`Toggle Studio`) button, then click :guilabel:`Reports`. Click :guilabel:`New` and, in the popup window that opens, select the type of report. This is solely used to determine what is displayed in the header and footer:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:141
|
||
msgid ":guilabel:`External`:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:143
|
||
msgid "The header displays the company's :ref:`logo <studio/pdf-reports/default-layout-logo>` and its :ref:`name and address <studio/pdf-reports/default-layout-address>`. For reports using the Light, Striped, Bubble, Wave and Folder layouts, the :ref:`tagline <studio/pdf-reports/default-layout-tagline>` also appears in the header."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:148
|
||
msgid "The footer displays the values set in the :ref:`Footer <studio/pdf-reports/default-layout-footer>` field and the page number. For reports using the Boxed and Bold layouts, the :ref:`tagline <studio/pdf-reports/default-layout-tagline>` also appears in the footer."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:153
|
||
msgid ":guilabel:`Internal`: The header displays the user's current date and time, the company's :ref:`name and address <studio/pdf-reports/default-layout-address>` and the page number. There is no footer."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:157
|
||
msgid ":guilabel:`Blank`: There is neither a header nor a footer. Click in the upper left corner of the page to edit the report."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:160
|
||
msgid "Once you have created the report, you can start :ref:`editing it <studio/pdf-reports/edit>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:165
|
||
msgid "Editing PDF reports"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:167
|
||
msgid "To access the reports available for a model, access the model, click the :icon:`oi-studio` (:guilabel:`Toggle Studio`) button, then click :guilabel:`Reports`. Select an existing report to open it."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:171
|
||
msgid "Alternatively, you can also open Studio, click :guilabel:`Reports`, and search for a specific report or model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:175
|
||
msgid "It is strongly recommended to **duplicate** the standard report and make changes in the duplicated version. To duplicate a report, hover the mouse pointer on the top right corner of the report, click the :icon:`fa-ellipsis-vertical` (:guilabel:`vertical ellipsis`) icon, and then select :guilabel:`Duplicate`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Duplicating a PDF report"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:186
|
||
msgid "Options"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:188
|
||
msgid "Once you have selected or created a report, you can use the options in the left part of the screen to:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:191
|
||
msgid "Change the :guilabel:`Report name`: The new name is applied everywhere (in Studio, in the :guilabel:`Print` menu under the :icon:`fa-cog` (:guilabel:`gear`) icon in the form view, and in the PDF file name)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:194
|
||
msgid "Modify the :guilabel:`Paper format`: If no value is selected, the format defined in the :ref:`default layout <studio/pdf-reports/default-layout-paper>` is used."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:196
|
||
msgid ":guilabel:`Show in print menu`: to add the report to the :guilabel:`Print` menu in the form view."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:197
|
||
msgid ":guilabel:`Reload from attachment`: to save the report as an attachment on the record the first time it is generated and reload the original version of the report any subsequent time. This is legally required for invoices and is mainly used in this case."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:200
|
||
msgid ":guilabel:`Limit visibility to groups`: to limit the availability of the PDF report to specific :doc:`user groups <../general/users/access_rights>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:202
|
||
msgid ":guilabel:`Edit sources`: to modify the report directly in the :ref:`XML file <studio/pdf-reports/XML-editing>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:204
|
||
msgid ":guilabel:`Reset report`: to discard all changes made to the report and reset it to its standard version."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:206
|
||
msgid ":guilabel:`Print preview`: to generate and download a report preview."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:211
|
||
msgid "Report editor"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:213
|
||
msgid "The report editor allows you to modify the content and formatting of the report."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:216
|
||
msgid "You can :guilabel:`Undo` or :guilabel:`Redo` changes using the related buttons or the shortcuts `CTRL` + `Z` and `CTRL` + `Y`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:219
|
||
msgid "Changes are saved automatically when you leave the report or manually using the :guilabel:`Save` button."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:222
|
||
msgid "You can reset the report to its standard version by clicking the :guilabel:`Reset report` button in the left part of the screen."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:226
|
||
msgid "Editing the header and footer of a report impacts all standard and custom reports."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:229
|
||
msgid "Conditional blocks"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:231
|
||
msgid "The dashed rectangles represent **conditional blocks** (*if/else* statements). These are used to show/hide content based on specific conditions. Click on the block to view the conditions."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:-1
|
||
msgid "View conditions applied to a block."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:237
|
||
msgid "Select a value to preview its corresponding output and edit it if necessary."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:-1
|
||
msgid "Preview the output of another condition."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:243
|
||
msgid "Conditions can only be edited in the :ref:`XML <studio/pdf-reports/XML-editing>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:246
|
||
msgid "Other content"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:248
|
||
msgid "There are two types of text content in reports:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:250
|
||
msgid "Static text, i.e., the text that is not highlighted in blue, which can be modified directly in the editor."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:252
|
||
msgid "Dynamic text, i.e., the text that is highlighted in blue, which is replaced by :doc:`field </applications/studio/fields>` values when the report is generated, e.g., the sales order number or the quotation date."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:256
|
||
msgid "You can add content (e.g., fields, lists, tables, images, banners, etc.) to the report using commands. Type `/` to open the :ref:`powerbox <essentials/html_editor/commands>`, then type the command's name or select it from the list."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:260
|
||
msgid "To add static text to the report, type the text where you want it."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:262
|
||
msgid "For more advanced changes, you can :ref:`edit the report in the XML directly <studio/pdf-reports/XML-editing>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:268
|
||
msgid "Add a field"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:270
|
||
msgid "To add a field, type `/` and select the :guilabel:`Field` command. In the list that opens, select or search for the field; click the right arrow next to the field name to access the list of related fields if needed. Then, specify the default value that will be shown if the field is not completed in the record and press `Enter`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:-1
|
||
msgid "Select a related field."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:281
|
||
msgid "Add or edit a table"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:283
|
||
msgid "There are two types of tables in reports:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:285
|
||
msgid ":ref:`Static tables <studio/pdf-reports/static-table>`, which are used to display static text or fields. For this type of table, you define the number of columns and rows when adding the table."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:287
|
||
msgid ":ref:`Dynamic tables <studio/pdf-reports/dynamic-table>`, which are used to display data from :ref:`relational fields <studio/fields/relational-fields>`. For this type of table, you only define the number of columns when adding the table. The number of rows in the generated report will be determined by the number of records in the related model that are linked with the current model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:294
|
||
msgid "In a sales order report, a dynamic table is used to show the order lines related to the sales order. If the sales order contains 10 order lines, the table in the generated report has 10 rows; if it contains two order lines, the table has two rows."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:301
|
||
msgid "Add or edit a static table"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:303
|
||
msgid "To add a static table, type `/` and select the :guilabel:`Table` command. Determine the number of columns and rows for the table. Once the table has been added, you can start editing it."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:306
|
||
msgid "You can insert, move and delete columns and rows using the table tools. Position the cursor on top of the column or to the left of the row then click the purple rectangle and select an option."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:-1
|
||
msgid "List of available options for editing table structure."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:312
|
||
msgid "To resize a column, drag the column border to the desired position; reset all columns to their standard size by selecting :guilabel:`Reset Size` from the table tools."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:315
|
||
msgid "Add the :ref:`field of your choice <studio/pdf-reports/add-field>` in a cell or add static text by typing."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:319
|
||
msgid "To add text in a structured way without using a table, you can use columns. Add columns by typing `/` and selecting the appropriate command: :guilabel:`2 columns`, :guilabel:`3 columns` or :guilabel:`4 columns`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:326
|
||
msgid "Add or edit a dynamic table"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:329
|
||
msgid "Only relations of type `one2many` or `many2many` can be displayed as dynamic tables."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:330
|
||
msgid "An existing dynamic table in a standard report has a more complex structure than a dynamic table you add yourself. For such tables, it is possible to insert or delete columns; it is not possible to move columns or to insert, move or delete rows."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:334
|
||
msgid "To add a dynamic table, type `/` and select the :guilabel:`Dynamic Table` command. In the list that opens, select or search for the relation the table will be based on and press `Enter`. Once the table has been added, you can start editing it."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:338
|
||
msgid "You can insert, move and delete columns using the table tools, as for a :ref:`static table <studio/pdf-reports/static-table>`. It is also possible to insert static rows that will appear above or below the generated rows."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:342
|
||
msgid "To add a field to a cell, delete any placeholder text then add the :ref:`field of your choice <studio/pdf-reports/add-field>`. The dialog box that opens shows the source object for the field (e.g., the *Order Lines* model) and the list of available fields."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:-1
|
||
msgid "List of available fields for the sale order lines model."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:349
|
||
msgid "Replace the :guilabel:`Column name` label by the label of your choice."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:352
|
||
msgid "The default row automatically iterates over the field's content, generating a row on the report for each field value (e.g., one row per order line)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:356
|
||
msgid "Formatting"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:358
|
||
msgid "To format text in the report, select it, then format it using the options in the :doc:`text editor </applications/essentials/html_editor>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Format text using the text editor."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:367
|
||
msgid "Editing the report's XML"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:370
|
||
msgid "Modifying the XML directly may result in report issues during :doc:`upgrades <../../../administration/upgrade>`. If this happens, simply copy your changes from the old database into your upgraded database."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:374
|
||
msgid "To edit the report's XML, click :guilabel:`Edit sources` in the left pane."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:377
|
||
msgid "Examples"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:381
|
||
msgid "To change how data is presented in your report, you can modify a field's default :doc:`widget </applications/studio/fields>` manually. In the example below, the order date shows the date and time by default, while the unit price defaults to a precision of two decimal places."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:394
|
||
msgid "By using `t-options`, in this case the `widget` option, these fields can be modified to show only the date and a precision of four decimal places, respectively:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:407
|
||
msgid "If you want to show/hide content based on specific conditions, you can manually add `if/else` control statements in the report XML."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:410
|
||
msgid "For example, if you want to hide a custom data table if there are no tags, you can use the `t-if` attribute to define the condition, which is then evaluated as `True` or `False`. The table will not be displayed if there are no tags in the quotation."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:439
|
||
msgid "If you want to display another block in case the `t-if` statement is evaluated as `False`, you can specify it using the `t-else` statement. The `t-else` block must directly follow the `t-if` block in the document structure. There is no need to specify any condition in the `t-else` attribute. As an example, let's show a quick message explaining that there are no tags on the quotation:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:471
|
||
msgid "By using the `t-if/t-else` notation, the report editor recognizes that these sections are mutually exclusive and should be displayed as conditional blocks:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Output preview if there are tags."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:477
|
||
msgid "You can switch conditions using the editor to preview their output:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Output preview if there are no tags."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:482
|
||
msgid "If you wish to have multiple options, you can also use `t-elif` directives to add intermediary conditions. For example, this is how the title of sales order reports changes based on the condition of the underlying document."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:495
|
||
msgid "The title *Pro-Forma Invoice* is used depending on some contextual conditions. If these conditions are not met and the state of the document is either `draft` or `sent`, then *Quotation* is used. If none of those conditions are met, the report's title is *Order*."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:501
|
||
msgid "Working with images in a report can be challenging, as precise control over image size and behavior is not always obvious. You can insert image fields using the report editor (by using the :ref:`Field command <studio/pdf-reports/add-field>`), but inserting them in XML using the `t-field` directive and accompanying `t-options` attributes provides better sizing and positioning control."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:507
|
||
msgid "For example, the following code outputs the field `image_128` of the line's product as a 64px-wide image (with an automatic height based on the image's aspect ratio)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:514
|
||
msgid "The following options are available for image widgets:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:516
|
||
msgid "`width`: width of the image, usually in pixels or CSS length units (e.g., `rem`) (leave empty for auto-width)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:518
|
||
msgid "`height`: height of the image, usually in pixels or CSS length units (e.g., `rem`) (leave empty for auto-height)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:520
|
||
msgid "`class`: CSS classes applied on the `img` tag; `Bootstrap classes <https://getbootstrap.com/docs/5.1/content/tables>`_ are available."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:522
|
||
msgid "`alt`: alternative text of the image"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:523
|
||
msgid "`style`: style attribute; it allows you to override styles more freely than with `Bootstrap classes <https://getbootstrap.com/docs/5.1/content/tables>`_."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:526
|
||
msgid "These attributes must contain strings, i.e., text enclosed within quotes within quotes, e.g., `t-options-width=\"'64px'\"` (or, alternatively, a valid Python expression)."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:530
|
||
msgid "The image widget cannot be used on an `img` tag. Instead, set the `t-field` directive on a `span` (for inline content) or `div` (for block content) node."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:533
|
||
msgid "For example, let's add a column with the product image in the quotation table:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:561
|
||
msgid "The `t-options-width` attribute restricts the image width to 64 pixels, and the Bootstrap classes used in `t-options-class` create a thumbnail-like border with rounded corners and a shadow."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/pdf_reports.rst:0
|
||
msgid "Add a column with the product image in the quotation table."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:3
|
||
msgid "Views"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:5
|
||
msgid "Views are the interface that allows displaying the data contained in a :doc:`model <models_modules_apps>`. One model can have several views, which are simply different ways to show the same data. In Studio, views are organized into four categories: :ref:`general <studio/views/general>`, :ref:`multiple records <studio/views/multiple-records>`, :ref:`timeline <studio/views/timeline>`, and :ref:`reporting <studio/views/reporting>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:12
|
||
msgid "To change the default view of a model, :ref:`access Studio <studio/access>`, go to :guilabel:`Views`, click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon next to the desired view, and click :guilabel:`Set as Default`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:15
|
||
msgid "You can modify views using the built-in XML editor: Activate the :ref:`Developer mode <developer-mode>`, go to the view you want to edit, select the :guilabel:`View` tab, and click :guilabel:`</> XML`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:20
|
||
msgid "If you are editing a view using the XML editor, avoid making changes directly to standard and inherited views, as these would be reset and lost during updates or module upgrades. Always make sure you select the right Studio inherited views: When you modify a view in Studio by dragging and dropping a new field, for example, a specific Studio inherited view and its corresponding XPath, which defines the modified part of the view, are automatically generated."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:30
|
||
msgid "General views"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:33
|
||
#: ../../content/applications/studio/views.rst:106
|
||
#: ../../content/applications/studio/views.rst:207
|
||
#: ../../content/applications/studio/views.rst:322
|
||
msgid "The settings described below are found under the view's :guilabel:`View` tab unless specified otherwise."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:39
|
||
msgid "Form"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:41
|
||
msgid "The :guilabel:`Form` :icon:`fa-address-card` view is used when creating and editing records, such as contacts, sales orders, products, etc."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:44
|
||
msgid "To structure a form, drag and drop the :guilabel:`Tabs and Columns` element found under the :guilabel:`+ Add` tab."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:46
|
||
#: ../../content/applications/studio/views.rst:139
|
||
msgid "To prevent users from creating, editing, or deleting records, untick :guilabel:`Can Create`, :guilabel:`Can Edit`, or :guilabel:`Can Delete`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:48
|
||
msgid "To add a button, click :guilabel:`Add a button` at the top of the form, enter a :guilabel:`Label`, and select the button's action:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:51
|
||
#: ../../content/applications/studio/views.rst:155
|
||
msgid ":guilabel:`Run a Server Action`: select the :ref:`server action <reference/actions/server>` to be executed from the dropdown list;"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:53
|
||
#: ../../content/applications/studio/views.rst:157
|
||
msgid ":guilabel:`Call a method`: specify an existing Python method already defined in Odoo."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:55
|
||
msgid "To change a button's label or style, click the button and edit its :guilabel:`Label` or :guilabel:`Class` (either `btn-primary` or `btn-secondary`) in the :guilabel:`Properties` tab."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:57
|
||
msgid "To add a smart button, click the :icon:`fa-plus-square` (:guilabel:`plus`) icon in the top-right corner of the form. Enter a :guilabel:`Label`, choose an :guilabel:`Icon`, and select a :ref:`related field <studio/fields/relational-fields-related-field>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Sales order model's Form view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:69
|
||
msgid "Activity"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:71
|
||
msgid "The :guilabel:`Activity` :icon:`fa-clock-o` view is used to schedule and have an overview of activities (emails, calls, etc.) linked to records."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:75
|
||
msgid "This view can only be modified within Studio by editing the XML code."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Lead/Opportunity model's Activity view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:85
|
||
msgid "Search"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:87
|
||
msgid "The :guilabel:`Search` :icon:`oi-search` view is added on top of other views to filter, group, and search records."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:90
|
||
msgid "To add custom :guilabel:`Filters` and structure them using :guilabel:`Separators`, go to the :guilabel:`+ Add` tab and drag and drop them under :guilabel:`Filters`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:92
|
||
msgid "To add an existing field under the search dropdown menu, go to the :guilabel:`+ Add` tab and drag and drop it under :guilabel:`Autocompletion Fields`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Project model's Search view on the Kanban view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:103
|
||
msgid "Multiple records views"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:112
|
||
msgid "Kanban"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:114
|
||
msgid "The :guilabel:`Kanban` :icon:`oi-view-kanban` view is often used to support business flows by moving records across stages or as an alternative way to display records inside *cards*."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:118
|
||
msgid "If the :guilabel:`Kanban` view exists, it is used by default to display data on mobile devices instead of the :ref:`List view <studio/views/multiple-records/list>`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:121
|
||
msgid "To prevent users from creating new records, untick :guilabel:`Can Create`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:122
|
||
msgid "To create records directly within the view, in a minimalistic form, enable :guilabel:`Quick Create`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:124
|
||
#: ../../content/applications/studio/views.rst:151
|
||
msgid "To set a default grouping for records, select a field under :guilabel:`Default Group By`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Project model's Kanban view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:134
|
||
msgid "List"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:136
|
||
msgid "The :guilabel:`List` :icon:`oi-view-list` view is used to overview many records at once, look for records, and edit simple records."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:141
|
||
msgid "To create and edit records directly within the view, select either :guilabel:`Add record at the bottom`, :guilabel:`Add record on top` or :guilabel:`Open form view` under :guilabel:`When Creating Record`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:146
|
||
msgid "This prevents users from opening records in :ref:`Form view <studio/views/general/form>` from the :guilabel:`List` view."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:149
|
||
msgid "To edit several records at once, tick :guilabel:`Enable Mass Editing`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:150
|
||
msgid "To change the way records are sorted by default, select a field under :guilabel:`Sort By`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:152
|
||
msgid "To add a button, click :guilabel:`Add a button` at the top of the list, enter a :guilabel:`Label`, and select the button's action:"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:160
|
||
msgid "To add a :icon:`oi-draggable` (:guilabel:`drag handle`) icon to reorder records manually, add an :ref:`Integer field <studio/fields/simple-fields-integer>` with the :guilabel:`Handle` widget."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Drag handle icon enabling to sort records manually in List view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Sales order model's List view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:174
|
||
msgid "Map"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:176
|
||
msgid "The :guilabel:`Map` :icon:`fa-map-marker` view is used to display records on a map. For example, it is used in the Field Service app to plan an itinerary between different tasks."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:180
|
||
msgid "A :ref:`Many2One field <studio/fields/relational-fields-many2one>` linked to the *Contact* model is required to activate the view, as the contact address is used to position records on the map."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:183
|
||
msgid "To select which kind of contact should be used on the map, select it under :guilabel:`Contact Field`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:185
|
||
msgid "To hide the name or the address of the record, tick :guilabel:`Hide Name` or :guilabel:`Hide Address`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:187
|
||
msgid "To add information from other fields, select them under :guilabel:`Additional Fields`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:188
|
||
msgid "To have a route suggested between the different records, tick :guilabel:`Enable Routing` and select which field should be used to sort records for the routing."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Task model's Map view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:199
|
||
msgid "Timeline views"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:202
|
||
msgid "When you first activate one of the timeline views, you need to select which :ref:`Date <studio/fields/simple-fields-date>` or :ref:`Date & Time <studio/fields/simple-fields-date-time>` fields on your model should be used to define when the records start and stop in order to display them on the view. You can modify the :guilabel:`Start Date Field` and :guilabel:`Stop Date Field` after activating the view."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:213
|
||
msgid "Calendar"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:215
|
||
msgid "The :guilabel:`Calendar` :icon:`fa-calendar` view is used to overview and manage records inside a calendar."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:218
|
||
msgid "To create records directly within the view instead of opening the :ref:`Form view <studio/views/general/form>`, enable :guilabel:`Quick Create`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:222
|
||
msgid "This only works on specific models that can be *quick-created* using only a *name*. However, most models do not support quick creation and open the :guilabel:`Form` view to fill in the required fields."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:226
|
||
msgid "To color records on the calendar, select a field under :guilabel:`Color`. All the records sharing the same value for that field are displayed using the same color."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:230
|
||
msgid "As the number of colors is limited, the same color can end up being assigned to different values."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:233
|
||
msgid "To display events lasting the whole day at the top of the calendar, select a :ref:`Checkbox field <studio/fields/simple-fields-checkbox>` that specifies if the event lasts the whole day."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:236
|
||
msgid "To choose the default time scale used to display events, select :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, or :guilabel:`Year` under :guilabel:`Default Display Mode`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:240
|
||
msgid "You can also use a :guilabel:`Delay Field` to display the duration of the event in hours by selecting a :ref:`Decimal <studio/fields/simple-fields-decimal>` or :ref:`Integer <studio/fields/simple-fields-integer>` field on the model which specifies the duration of the event. However, if you set an :guilabel:`End Date Field`, the :guilabel:`Delay Field` will not be taken into account."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Calendar Event model's Calendar view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:254
|
||
msgid "Cohort"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:256
|
||
msgid "The :guilabel:`Cohort` :icon:`oi-view-cohort` view is used to examine the life cycle of records over a time period. For example, it is used in the Subscriptions app to view the subscriptions' retention rate."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:260
|
||
msgid "To display a measure (i.e., the aggregated value of a given field) by default on the view, select a :guilabel:`Measure Field`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:262
|
||
msgid "To choose which time interval is used by default to group results, select :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, or :guilabel:`Year` under :guilabel:`Interval`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:264
|
||
msgid "To change the cohort :guilabel:`Mode`, select either :guilabel:`Retention` :dfn:`the percentage of records staying over a period of time, it starts at 100% and decreases with time` or :guilabel:`Churn` :dfn:`the percentage of records moving out over a period of time - it starts at 0% and increases with time`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:268
|
||
msgid "To change the way the :guilabel:`Timeline` (i.e., the columns) progresses, select either :guilabel:`Forward` (from 0 to +15) or :guilabel:`Backward` (from -15 to 0). For most purposes, the :guilabel:`Forward` timeline is used."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Subscription model's Cohort view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:280
|
||
msgid "Gantt"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:282
|
||
msgid "The :guilabel:`Gantt` :icon:`fa-tasks` view is used to forecast and examine the overall progress of records. Records are represented by a bar under a time scale."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:285
|
||
msgid "To prevent users from creating or editing records, untick :guilabel:`Can Create` or :guilabel:`Can Edit`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:287
|
||
msgid "To fill cells in gray whenever a record should not be created there (e.g., on weekends for employees), tick :guilabel:`Display Unavailability`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:291
|
||
msgid "The underlying model must support this feature, and support for it cannot be added using Studio. It is supported for the Project, Time Off, Planning, and Manufacturing apps."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:294
|
||
msgid "To show a total row at the bottom, tick :guilabel:`Display Total row`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:295
|
||
msgid "To collapse multiple records in a single row, tick :guilabel:`Collapse First Level`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:296
|
||
msgid "To choose which way records are grouped by default on rows (e.g., per employee or project), select a field under :guilabel:`Default Group by`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:298
|
||
msgid "To define a default time scale to view records, select :guilabel:`Day`, :guilabel:`Week`, :guilabel:`Month`, or :guilabel:`Year` under :guilabel:`Default Scale`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:300
|
||
msgid "To color records on the view, select a field under :guilabel:`Color`. All the records sharing the same value for that field are displayed using the same color."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:304
|
||
msgid "As the number of colors is limited, the same color can be assigned to different values."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:306
|
||
msgid "To specify with which degree of precision each time scale should be divided by, select :guilabel:`Quarter Hour`, :guilabel:`Half Hour`, or :guilabel:`Hour` under :guilabel:`Day Precision`, :guilabel:`Half Day` or :guilabel:`Day` under :guilabel:`Week Precision`, and :guilabel:`Month Precision`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Planning Shift model's Gantt view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:319
|
||
msgid "Reporting views"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:328
|
||
msgid "Pivot"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:330
|
||
msgid "The :guilabel:`Pivot` :icon:`oi-view-pivot` view is used to explore and analyze the data contained in records in an interactive manner. It is especially useful to aggregate numeric data, create categories, and drill down the data by expanding and collapsing different levels of data."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:334
|
||
msgid "To access all records whose data is aggregated under a cell, tick :guilabel:`Access records from cell`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:336
|
||
msgid "To divide the data into different categories, select field(s) under :guilabel:`Column grouping`, :guilabel:`Row grouping - First level`, or :guilabel:`Row grouping - Second level`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:338
|
||
msgid "To add different types of data to be measured using the view, select a field under :guilabel:`Measures`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:340
|
||
msgid "To display a count of records that made up the aggregated data in a cell, tick :guilabel:`Display count`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Purchase Report model's Pivot view"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:351
|
||
msgid "Graph"
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:353
|
||
msgid "The :guilabel:`Graph` :icon:`fa-area-chart` view is used to showcase data from records in a bar, line, or pie chart."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:356
|
||
msgid "To change the default chart, select :guilabel:`Bar`, :guilabel:`Line`, or :guilabel:`Pie` under :guilabel:`Type`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:358
|
||
msgid "To choose a default data dimension (category), select a field under :guilabel:`First dimension` and, if needed, another under :guilabel:`Second dimension`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:360
|
||
msgid "To select a default type of data to be measured using the view, select a field under :guilabel:`Measure`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:362
|
||
msgid "*For Bar and Line charts only*: To sort the different data categories by their value, select :guilabel:`Ascending` (from lowest to highest value) or :guilabel:`Descending` (from highest to lowest) under :guilabel:`Sorting`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:365
|
||
msgid "*For Bar and Pie charts only*: To access all records whose data is aggregated under a data category on the chart, tick :guilabel:`Access records from graph`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:367
|
||
msgid "*For Bar charts only*: When using two data dimensions (categories), display the two columns on top of each other by default by ticking :guilabel:`Stacked graph`."
|
||
msgstr ""
|
||
|
||
#: ../../content/applications/studio/views.rst:0
|
||
msgid "Sales Analysis Report model's Bar chart on Graph view"
|
||
msgstr ""
|