From 3e853095d3ee4094570a64f62ee7f37e87862887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CAudrey?= <“auva@odoo.com”> Date: Tue, 13 Feb 2024 13:19:06 +0100 Subject: [PATCH] [ADD] Studio: approval rules task-3553095 closes odoo/documentation#10164 X-original-commit: 28d58566405f379347d0d502a36583376de21ece Signed-off-by: Audrey Vandromme (auva) --- content/applications/studio.rst | 16 +++- .../applications/studio/approval_rules.rst | 79 ++++++++++++++++++ .../approval_rules/approvals-awaiting.png | Bin 0 -> 5144 bytes .../approval_rules/approvals-button.png | Bin 0 -> 4456 bytes 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 content/applications/studio/approval_rules.rst create mode 100644 content/applications/studio/approval_rules/approvals-awaiting.png create mode 100644 content/applications/studio/approval_rules/approvals-button.png diff --git a/content/applications/studio.rst b/content/applications/studio.rst index 604d096cc..48e40d2b9 100644 --- a/content/applications/studio.rst +++ b/content/applications/studio.rst @@ -13,19 +13,27 @@ Studio studio/models_modules_apps studio/automated_actions studio/pdf_reports + studio/approval_rules Studio is a toolbox that allows you to customize Odoo without coding knowledge. For example, you -can, on any app, add or modify: +can, in any app, add or modify: - :doc:`Fields ` - :doc:`Views ` - :doc:`Models ` - :doc:`Automated actions ` - :doc:`PDF reports ` -- Approval rules +- :doc:`Approval rules ` - Security rules -Or you can :doc:`build an app from scratch `. +You can also :doc:`build an app from scratch `. + +.. _studio/access: + +To access Studio, navigate to the app and model you want to modify, then click the **Toggle Studio** +button, or vice versa. + +To close Studio, click :guilabel:`Close` in the upper right corner. .. seealso:: - - `Odoo Tutorials: Studio `_ + `Odoo Tutorials: Studio `_ diff --git a/content/applications/studio/approval_rules.rst b/content/applications/studio/approval_rules.rst new file mode 100644 index 000000000..6463c7218 --- /dev/null +++ b/content/applications/studio/approval_rules.rst @@ -0,0 +1,79 @@ +============== +Approval rules +============== + +Studio 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. + +Configuration +============= + +To add approval rules, proceed as follows: + +#. :ref:`Open Studio ` and switch to the required :doc:`view `. +#. Select the button for which you want to add approval rules. +#. In the :guilabel:`Properties` tab on the left, enable the :guilabel:`Set approval rules` + feature. +#. Specify the :guilabel:`Allowed Group` to limit the approval permission to a specific user + group. +#. Select the :guilabel:`Responsible` user to create an activity for a specific user when approval + is requested from them. +#. Select the :guilabel:`Users to notify` via internal note. +#. Add a :guilabel:`Description` to be displayed in the :ref:`Approval dialog `. + +Optionally, you can also add conditions for the approval rule to be applied by clicking the +:icon:`fa-filter` (:guilabel:`filter`) icon next to the :guilabel:`Allowed Group` field. + +To add another rule, click :guilabel:`Add an approval rule`. When there are multiple approval rules, +you can: + +- enable :guilabel:`Exclusive Approval` to require approvers to be different users; +- change the :guilabel:`Notification Order` of the approval rule so that the :guilabel:`Responsible` + and :guilabel:`Users to notify` are only notified when the previous rule has been approved, and + their approval is required. If the approval rules have the same :guilabel:`Notification Order`, + all users are notified at the same time when the first approval is requested. + +Click the :icon:`fa-trash` (:guilabel:`trash`) icon next to the :guilabel:`Allowed Group` field to +delete the approval rule. + +.. tip:: + You can create :ref:`user groups ` specifically for approvals. + +.. _approval-rules/use: + +Use +=== + +Once approval rules have been defined for a button: + +- A **user avatar** icon is displayed next to the button's label for each approval rule that has + been defined. + + .. image:: approval_rules/approvals-button.png + :alt: Confirm button with approval for purchase orders + +- When an unauthorized user clicks the button, an error message is displayed in the top-right corner + and an activity is created for the user specified in the :guilabel:`Responsible` field. +- Only users from the group defined in the :guilabel:`Allowed Group` field are authorized to approve + or reject the action. + +Authorized users can: + +- approve and perform the action by clicking the button; +- approve the action and allow another user to perform it by clicking the **user avatar** icon next + to the button's label, then clicking the :icon:`fa-check` (:guilabel:`Approve`) button in the + dialog that opens; +- reject the action by clicking the **user avatar** icon next to the button's label, then clicking + the :icon:`fa-times` (:guilabel:`Reject`) button in the dialog that opens. + +.. image:: approval_rules/approvals-awaiting.png + :alt: Approval dialog + +.. tip:: + - The user who approved/rejected the action can revoke their decision by clicking the **user + avatar** icon next to the button's label, then clicking the :icon:`fa-undo` + (:guilabel:`Revoke`) button. + - 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 the approval entries, :doc:`activate + the developer mode ` and go to :menuselection:`Settings + --> Technical --> Studio Approval Entries`. diff --git a/content/applications/studio/approval_rules/approvals-awaiting.png b/content/applications/studio/approval_rules/approvals-awaiting.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e412357913be38ea18d24e004bbcd29c5505e9 GIT binary patch literal 5144 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 E0I8#O!~g&Q literal 0 HcmV?d00001 diff --git a/content/applications/studio/approval_rules/approvals-button.png b/content/applications/studio/approval_rules/approvals-button.png new file mode 100644 index 0000000000000000000000000000000000000000..9a156d9c103e651407d0999fa09273da9766f3e0 GIT binary patch literal 4456 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