Files
odoo-docs/locale/sources/studio.pot
Tiffany Chang (tic) 966a8ef2da [I18N] *: re-export pot files
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>
2025-12-11 10:09:01 +00:00

2905 lines
146 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 companys 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 ""