Automation Rules

base_automation
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Nicolas Martinelli, Aaron Bohy, Lucas Perais, Julien Castiaux, Julien Mougenot, std-odoo, Achraf (abz), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, luvi, Julien Banken, Gaetan Vanden Bergh (gavb), Maximilien (malb), Victor Piryns (pivi), Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi, omra-odoo, Zelong Lin, Cyrus Robins, “Beekan”, Bruno Boi (boi), Lopes Marc (loma), Julien Segers (juse), Michaël Mattiello, Corentin Heinix (cohe), Krzysztof Magusiak (krma), Elijah Tay (elct), ramh, Bruno BOI
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - digest
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - sms
    - iap_mail
    - iap
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement automation rules for any object.
================================================================

Use automation rules to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_base_automation_form Automations base.automation form New
view_base_automation_kanban base.automation.kanban base.automation kanban New
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.list base.automation list New
view_server_action_form Server Actions ir.actions.server xpath Inherits base.view_server_action_form
Models touched (3)

New fields (26)
  • action_server_ids One2many → ir.actions.server
    compute='_compute_action_server_ids' context={'default_usage': 'base_automation'} readonly=False store=True string='Actions' args: 'ir.actions.server', 'base_automation_id'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • description Html
    string='Description'
  • filter_domain Char
    compute='_compute_filter_domain' help='If present, this condition must be satisfied before executing the automation rule.' readonly=False store=True string='Apply on'
  • filter_pre_domain Char
    compute='_compute_filter_pre_domain' help='If present, this condition must be satisfied before the update of the record. Not checked on record creation.' readonly=False store=True string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • log_webhook_calls Boolean
    default=False string='Log Calls'
  • model_id Many2one → ir.model
    domain=[('abstract', '=', False)] ondelete='cascade' required=True string='Model' tracking=True args: 'ir.model'
  • model_is_mail_thread Boolean
    related='model_id.is_mail_thread'
  • model_name Char
    inverse='_inverse_model_name' readonly=True related='model_id.model' string='Model Name'
  • name Char
    required=True string='Automation Rule Name' tracking=True translate=True
  • on_change_field_ids Many2many → ir.model.fields
    compute='_compute_on_change_field_ids' help='Fields that trigger the onchange.' readonly=False relation='base_automation_onchange_fields_rel' store=True string='On Change Fields Trigger' args: 'ir.model.fields'
  • previous_domain Char
    default=<expr> store=False
  • record_getter Char
    default="model.env[payload.get('_model')].browse(int(payload.get('_id')))" help='This code will be run to find on which record the automation rule should be run.'
  • trg_date_calendar_id Many2one → resource.calendar
    compute='_compute_trg_date_calendar_id' help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' readonly=False store=True string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    compute='_compute_trg_date_id' domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' readonly=False store=True string='Trigger Date' tracking=True args: 'ir.model.fields'
  • trg_date_range Integer
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay' tracking=True
  • trg_date_range_mode Selection
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay mode' tracking=True args: [('after', 'After'), ('before', 'Before')]
  • trg_date_range_type Selection
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay unit' tracking=True args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trg_field_ref Many2oneReference
    compute='_compute_trg_field_ref' help='Some triggers need a reference to another field. This field is used to store it.' model_field='trg_field_ref_model_name' readonly=False store=True string='Trigger Reference'
  • trg_field_ref_model_name Char
    compute='_compute_trg_field_ref_model_name' string='Trigger Field Model'
  • trg_selection_field_id Many2one → ir.model.fields.selection
    compute='_compute_trg_selection_field_id' domain="[('field_id', 'in', trigger_field_ids)]" help='Some triggers need a reference to a selection field. This field is used to store it.' readonly=False store=True string='Trigger Field' args: 'ir.model.fields.selection'
  • trigger Selection
    compute='_compute_trigger' readonly=False required=True store=True string='Trigger' tracking=True args: [('on_stage_set', 'Stage is set to'), ('on_user_set', 'User is set'), ('on_tag_set', 'Tag is added'), ('on_state_set', 'State is set to'), ('on_priority_set', 'Priority is set to'), ('on_archive', 'On archived'), ('on_unarchive', 'On unarchived'), ('on_create', 'On create'), ('on_create_or_write', 'On create and edit'), ('on_write', 'On update'), ('on_unlink', 'On deletion'), ('on_change', 'On UI change'), ('on_time', 'Based on date field'), ('on_time_created', 'After creation'), ('on_time_updated', 'After last update'), ('on_message_received', 'On incoming message'), ('on_message_sent', 'On outgoing message'), ('on_webhook', 'On webhook')]
  • trigger_field_ids Many2many → ir.model.fields
    compute='_compute_trigger_field_ids' help='The automation rule will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' readonly=False store=True string='Trigger Fields' args: 'ir.model.fields'
  • url Char
    compute='_compute_url' help='Use this URL in the third-party app to call this webhook.'
  • webhook_uuid Char
    copy=False default=<expr> readonly=True string='Webhook UUID'
Public methods (7)
  • action_open_scheduled_action(self)
  • action_rotate_webhook_uuid(self)
  • action_view_webhook_logs(self)
  • copy(self, default=None)
    Copy the actions of the automation while copying the automation itself.
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals: dict)

New fields (2)
  • base_automation_id Many2one → base.automation
    index='btree_not_null' ondelete='cascade' string='Automation Rule' args: 'base.automation'
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automation Rule')]
Public methods (1)
  • action_open_automation(self)

New fields (0)

No new fields.

Public methods (1)
  • action_open_automation(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Xavier Morel, Nicolas Martinelli, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Odoo Online, Lucas Perais, Julien Castiaux, Xavier-Do, Sébastien Theys, Julien Mougenot, Achraf (abz), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Stanislas Sobieski, Abdelouahab (abla), Julien Banken, bve-odoo, Thomas Lefebvre (thle), Gaetan Vanden Bergh (gavb), Louis Wicket (wil), nda, Maximilien (malb), amdi-odoo, Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi, Mattis Megevand (mmeg), omra-odoo, Cyrus Robins, “Beekan”, Bruno Boi (boi), Bastien Fafchamps (bafa), Julien Carion (juca), Lopes Marc (loma), Julien Segers (juse), sami odoo, Louis (wil), sabr, Pierre Pulinckx (pipu), Corentin Heinix (cohe), Elijah Tay (elct), Bruno BOI, saurabh
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - digest
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - sms
    - iap_mail
    - iap
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement automation rules for any object.
================================================================

Use automation rules to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
ir_actions_server_view_form_automation ir.actions.server.view.form.automation ir.actions.server xpath Inherits base.view_server_action_form
view_base_automation_form Automations base.automation form New
view_base_automation_kanban base.automation.kanban base.automation kanban New
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.list base.automation list New
Models touched (2)

New fields (25)
  • action_server_ids One2many → ir.actions.server
    compute='_compute_action_server_ids' context={'default_usage': 'base_automation'} readonly=False store=True string='Actions' args: 'ir.actions.server', 'base_automation_id'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • description Html
    string='Description'
  • filter_domain Char
    compute='_compute_filter_domain' help='If present, this condition must be satisfied before executing the automation rule.' readonly=False store=True string='Apply on'
  • filter_pre_domain Char
    compute='_compute_filter_pre_domain' help='If present, this condition must be satisfied before the update of the record. Not checked on record creation.' readonly=False store=True string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • least_delay_msg Char
    compute='_compute_least_delay_msg'
  • log_webhook_calls Boolean
    default=False string='Log Calls'
  • model_id Many2one → ir.model
    domain=[('field_id', '!=', False)] help='Model on which the automation rule runs.' ondelete='cascade' required=True string='Model' args: 'ir.model'
  • model_is_mail_thread Boolean
    related='model_id.is_mail_thread'
  • model_name Char
    inverse='_inverse_model_name' readonly=True related='model_id.model' string='Model Name'
  • name Char
    required=True string='Automation Rule Name' translate=True
  • on_change_field_ids Many2many → ir.model.fields
    compute='_compute_on_change_field_ids' help='Fields that trigger the onchange.' readonly=False relation='base_automation_onchange_fields_rel' store=True string='On Change Fields Trigger' args: 'ir.model.fields'
  • record_getter Char
    default="model.env[payload.get('_model')].browse(int(payload.get('_id')))" help='This code will be run to find on which record the automation rule should be run.'
  • trg_date_calendar_id Many2one → resource.calendar
    compute='_compute_trg_date_calendar_id' help='When calculating a day-based timed condition, it is possibleto use a calendar to compute the date based on working days.' readonly=False store=True string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    compute='_compute_trg_date_id' domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' readonly=False store=True string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    compute='_compute_trg_date_range_data' help='Delay after the trigger date. You can put a negative number if you need a delay before the trigger date, like sending a reminder 15 minutes before a meeting.' readonly=False store=True string='Delay after trigger date'
  • trg_date_range_type Selection
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trg_field_ref Many2oneReference
    compute='_compute_trg_field_ref' help='Some triggers need a reference to another field. This field is used to store it.' model_field='trg_field_ref_model_name' readonly=False store=True string='Trigger Reference'
  • trg_field_ref_model_name Char
    compute='_compute_trg_field_ref_model_name' string='Trigger Field Model'
  • trg_selection_field_id Many2one → ir.model.fields.selection
    compute='_compute_trg_selection_field_id' domain="[('field_id', 'in', trigger_field_ids)]" help='Some triggers need a reference to a selection field. This field is used to store it.' readonly=False store=True string='Trigger Field' args: 'ir.model.fields.selection'
  • trigger Selection
    compute='_compute_trigger' readonly=False required=True store=True string='Trigger' args: [('on_stage_set', 'Stage is set to'), ('on_user_set', 'User is set'), ('on_tag_set', 'Tag is added'), ('on_state_set', 'State is set to'), ('on_priority_set', 'Priority is set to'), ('on_archive', 'On archived'), ('on_unarchive', 'On unarchived'), ('on_create_or_write', 'On save'), ('on_create', 'On creation'), ('on_write', 'On update'), ('on_unlink', 'On deletion'), ('on_change', 'On UI change'), ('on_time', 'Based on date field'), ('on_time_created', 'After creation'), ('on_time_updated', 'After last update'), ('on_message_received', 'On incoming message'), ('on_message_sent', 'On outgoing message'), ('on_webhook', 'On webhook')]
  • trigger_field_ids Many2many → ir.model.fields
    compute='_compute_trigger_field_ids' help='The automation rule will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' readonly=False store=True string='Trigger Fields' args: 'ir.model.fields'
  • url Char
    compute='_compute_url'
  • webhook_uuid Char
    copy=False default=<expr> readonly=True string='Webhook UUID'
Public methods (6)
  • action_rotate_webhook_uuid(self)
  • action_view_webhook_logs(self)
  • copy(self, default=None)
    Copy the actions of the automation while copying the automation itself.
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals: dict)

New fields (3)
  • base_automation_id Many2one → base.automation
    ondelete='cascade' string='Automation Rule' args: 'base.automation'
  • name Char
    compute='_compute_name' readonly=False store=True
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automation Rule')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier Morel, Aaron Bohy, Damien Bouvy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Lucas Perais, Julien Castiaux, Xavier-Do, Sébastien Theys, Samuel Degueldre, Achraf (abz), Ivan Yelizariev, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Stanislas Sobieski, Abdelouahab (abla), Hubert Van De Walle, luvi, bve-odoo, Thomas Lefebvre (thle), Gaetan Vanden Bergh (gavb), Louis Wicket (wil), nda, Mahamadasif Ansari, Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi, FrancoisGe, Michael (mcm), Mattis Megevand (mmeg), Cyrus Robins, “Beekan”, Bruno Boi (boi), Julien Segers (juse), sami odoo, Louis (wil), sabr, Corentin Heinix (cohe), Elijah Tay (elct)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - web
    - mail
    - base_setup
    - bus
    - web_tour
    - sms
    - iap_mail
    - iap
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement automation rules for any object.
================================================================

Use automation rules to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
ir_actions_server_view_form_automation ir.actions.server.view.form.automation ir.actions.server xpath Inherits base.view_server_action_form
view_base_automation_form Automations base.automation form New
view_base_automation_kanban base.automation.kanban base.automation kanban New
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (2)

New fields (26)
  • action_server_ids One2many → ir.actions.server
    compute='_compute_action_server_ids' context={'default_usage': 'base_automation'} readonly=False store=True string='Actions' args: 'ir.actions.server', 'base_automation_id'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • description Html
    string='Description'
  • filter_domain Char
    compute='_compute_filter_domain' help='If present, this condition must be satisfied before executing the automation rule.' readonly=False store=True string='Apply on'
  • filter_pre_domain Char
    compute='_compute_filter_pre_domain' help='If present, this condition must be satisfied before the update of the record. Not checked on record creation.' readonly=False store=True string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • least_delay_msg Char
    compute='_compute_least_delay_msg'
  • log_webhook_calls Boolean
    default=False string='Log Calls'
  • model_id Many2one → ir.model
    domain=[('field_id', '!=', False)] help='Model on which the automation rule runs.' ondelete='cascade' required=True string='Model' args: 'ir.model'
  • model_is_mail_thread Boolean
    related='model_id.is_mail_thread'
  • model_name Char
    inverse='_inverse_model_name' readonly=True related='model_id.model' string='Model Name'
  • name Char
    required=True string='Automation Rule Name' translate=True
  • on_change_field_ids Many2many → ir.model.fields
    compute='_compute_on_change_field_ids' help='Fields that trigger the onchange.' readonly=False relation='base_automation_onchange_fields_rel' store=True string='On Change Fields Trigger' args: 'ir.model.fields'
  • record_getter Char
    default="model.env[payload.get('_model')].browse(int(payload.get('_id')))" help='This code will be run to find on which record the automation rule should be run.'
  • trg_date_calendar_id Many2one → resource.calendar
    compute='_compute_trg_date_calendar_id' help='When calculating a day-based timed condition, it is possibleto use a calendar to compute the date based on working days.' readonly=False store=True string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    compute='_compute_trg_date_id' domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' readonly=False store=True string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    compute='_compute_trg_date_range_data' help='Delay after the trigger date. You can put a negative number if you need a delay before the trigger date, like sending a reminder 15 minutes before a meeting.' readonly=False store=True string='Delay after trigger date'
  • trg_date_range_type Selection
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trg_field_ref Many2oneReference
    compute='_compute_trg_field_ref' help='Some triggers need a reference to another field. This field is used to store it.' model_field='trg_field_ref_model_name' readonly=False store=True string='Trigger Reference'
  • trg_field_ref_display_name Char
    compute='_compute_trg_field_ref__model_and_display_names' string='Trigger Reference Display Name'
  • trg_field_ref_model_name Char
    compute='_compute_trg_field_ref__model_and_display_names' string='Trigger Field Model'
  • trg_selection_field_id Many2one → ir.model.fields.selection
    compute='_compute_trg_selection_field_id' domain="[('field_id', 'in', trigger_field_ids)]" help='Some triggers need a reference to a selection field. This field is used to store it.' readonly=False store=True string='Trigger Field' args: 'ir.model.fields.selection'
  • trigger Selection
    compute='_compute_trigger_and_trigger_field_ids' readonly=False required=True store=True string='Trigger' args: [('on_stage_set', 'Stage is set to'), ('on_user_set', 'User is set'), ('on_tag_set', 'Tag is added'), ('on_state_set', 'State is set to'), ('on_priority_set', 'Priority is set to'), ('on_archive', 'On archived'), ('on_unarchive', 'On unarchived'), ('on_create_or_write', 'On save'), ('on_create', 'On creation'), ('on_write', 'On update'), ('on_unlink', 'On deletion'), ('on_change', 'On UI change'), ('on_time', 'Based on date field'), ('on_time_created', 'After creation'), ('on_time_updated', 'After last update'), ('on_message_received', 'On incoming message'), ('on_message_sent', 'On outgoing message'), ('on_webhook', 'On webhook')]
  • trigger_field_ids Many2many → ir.model.fields
    compute='_compute_trigger_and_trigger_field_ids' help='The automation rule will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' readonly=False store=True string='Trigger Fields' args: 'ir.model.fields'
  • url Char
    compute='_compute_url'
  • webhook_uuid Char
    copy=False default=<expr> readonly=True string='Webhook UUID'
Public methods (6)
  • action_rotate_webhook_uuid(self)
  • action_view_webhook_logs(self)
  • copy(self, default=None)
    Copy the actions of the automation while copying the automation itself.
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals: dict)

New fields (3)
  • base_automation_id Many2one → base.automation
    ondelete='cascade' string='Automation Rule' args: 'base.automation'
  • name Char
    compute='_compute_name' readonly=False store=True
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automation Rule')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Nicolas Lempereur, GitHub, Yannick Tivisse, Christophe Monniez, Jorge Pinna Puissant, Xavier-Do, Victor Feyens, Sébastien Theys, Florent de Labarre, Julien Mougenot, Samuel Degueldre, Ivan Yelizariev, Rémy Voet (ryv), Gorash, Stanislas Sobieski, bve-odoo, Bruno Boi, Michael (mcm), “Beekan”, Martin Trigaux (mat)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - web
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (2)

New fields (13)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    compute='_compute_filter_pre_domain' help='If present, this condition must be satisfied before the update of the record.' readonly=False store=True string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • least_delay_msg Char
    compute='_compute_least_delay_msg'
  • on_change_field_ids Many2many → ir.model.fields
    compute='_compute_on_change_field_ids' help='Fields that trigger the onchange.' readonly=False relation='base_automation_onchange_fields_rel' store=True string='On Change Fields Trigger' args: 'ir.model.fields'
  • trg_date_calendar_id Many2one → resource.calendar
    compute='_compute_trg_date_calendar_id' help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' readonly=False store=True string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    compute='_compute_trg_date_id' domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' readonly=False store=True string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    compute='_compute_trg_date_range_data' help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' readonly=False store=True string='Delay after trigger date'
  • trg_date_range_type Selection
    compute='_compute_trg_date_range_data' readonly=False store=True string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    required=True string='Trigger' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
  • trigger_field_ids Many2many → ir.model.fields
    compute='_compute_trigger_field_ids' help='The action will be triggered if and only if one of these fields is updated. If empty, all fields are watched.' readonly=False store=True string='Trigger Fields' args: 'ir.model.fields'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (1)
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Xavier Morel, Goffin Simon, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, GitHub, Lucas Perais (lpe), Yannick Tivisse, Julien Castiaux, Xavier-Do, Florent de Labarre, Julien Mougenot, Ivan Yelizariev, Stanislas Sobieski, bve-odoo, Louis Wicket (wil)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - web
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (2)

New fields (13)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    help='If present, this condition must be satisfied before the update of the record.' string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • least_delay_msg Char
    compute='_compute_least_delay_msg'
  • on_change_field_ids Many2many → ir.model.fields
    help='Fields that trigger the onchange.' relation='base_automation_onchange_fields_rel' string='On Change Fields Trigger' args: 'ir.model.fields'
  • trg_date_calendar_id Many2one → resource.calendar
    help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' string='Delay after trigger date'
  • trg_date_range_type Selection
    default='hour' string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    required=True string='Trigger' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
  • trigger_field_ids Many2many → ir.model.fields
    help='The action will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' string='Trigger Fields' args: 'ir.model.fields'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_model_id(self)
    @api.onchange('model_id')
  • onchange_trigger(self)
    @api.onchange('trigger')
  • unlink(self)
  • write(self, vals)

New fields (1)
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, GitHub, Barad Mahendra, Yannick Tivisse, Julien Castiaux, Xavier-Do, Moisés López, Florent de Labarre, Julien Mougenot, fw-bot, Ivan Yelizariev, bve-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - web
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
assets_backend base_automation assets ir.ui.view qweb Inherits web.assets_backend
qunit_suite base_automation_tests ir.ui.view qweb Inherits web.qunit_suite_tests
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (2)

New fields (13)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    help='If present, this condition must be satisfied before the update of the record.' string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • least_delay_msg Char
    compute='_compute_least_delay_msg'
  • on_change_field_ids Many2many → ir.model.fields
    help='Fields that trigger the onchange.' relation='base_automation_onchange_fields_rel' string='On Change Fields Trigger' args: 'ir.model.fields'
  • trg_date_calendar_id Many2one → resource.calendar
    help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' string='Delay after trigger date'
  • trg_date_range_type Selection
    default='hour' string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    required=True string='Trigger' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
  • trigger_field_ids Many2many → ir.model.fields
    help='The action will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' string='Trigger Fields' args: 'ir.model.fields'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_model_id(self)
    @api.onchange('model_id')
  • onchange_trigger(self)
    @api.onchange('trigger')
  • unlink(self)
  • write(self, vals)

New fields (1)
  • usage Selection
    ondelete={'base_automation': 'cascade'} selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Denis Ledoux, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Damien Bouvy, Yannick Tivisse, Adrian Torres, Xavier-Do, Ivan Yelizariev
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - web
    - mail
    - base_setup
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
assets_backend base_automation assets ir.ui.view qweb Inherits web.assets_backend
qunit_suite base_automation_tests ir.ui.view qweb Inherits web.qunit_suite
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (3)

New fields (12)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    help='If present, this condition must be satisfied before the update of the record.' string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • on_change_fields Char
    help='Comma-separated list of field names that triggers the onchange.' string='On Change Fields Trigger'
  • trg_date_calendar_id Many2one → resource.calendar
    help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' string='Delay after trigger date'
  • trg_date_range_type Selection
    default='day' string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    required=True string='Trigger Condition' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
  • trigger_field_ids Many2many → ir.model.fields
    help='The action will be triggered if and only if one of these fields is updated.If empty, all fields are watched.' string='Watched fields' args: 'ir.model.fields'
Public methods (5)
  • create(self, vals)
    @api.model
  • onchange_model_id(self)
    @api.onchange('model_id')
  • onchange_trigger(self)
    @api.onchange('trigger')
  • unlink(self)
  • write(self, vals)

New fields (1)
  • usage Selection
    selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • install_demo(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Christophe Simonis, Nicolas Martinelli, GitHub, Lucas Perais (lpe), Yannick Tivisse, Alexandre Kühn, Christophe Monniez, Xavier-Do, Ivan Yelizariev
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
Sales Team, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (3)

New fields (11)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    help='If present, this condition must be satisfied before the update of the record.' string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • on_change_fields Char
    help='Comma-separated list of field names that triggers the onchange.' string='On Change Fields Trigger'
  • trg_date_calendar_id Many2one → resource.calendar
    help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' string='Delay after trigger date'
  • trg_date_range_type Selection
    default='day' string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    oldname='kind' required=True string='Trigger Condition' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
Public methods (5)
  • create(self, vals)
    @api.model
  • onchange_model_id(self)
    @api.onchange('model_id')
  • onchange_trigger(self)
    @api.onchange('trigger')
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (1)
  • usage Selection
    selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • install_demo(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/base_automation
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Christophe Simonis, Richard Mathot, Jeremy Kersten, GitHub, Yannick Tivisse, Martin Geubelle, Odoo Online, Julien (juc) Castiaux
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - resource
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows to implement action rules for any object.
============================================================

Use automated actions to automatically trigger actions for various screens.

**Example:** A lead created by a specific user may be automatically set to a specific
sales channel, or an opportunity which still has status pending after 14 days might
trigger an automatic reminder email.
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_base_automation_form Automations base.automation xpath Inherits base.view_server_action_form
view_base_automation_search base.automation.search base.automation search New
view_base_automation_tree base.automation.tree base.automation tree New
Models touched (2)

New fields (11)
  • action_server_id Many2one → ir.actions.server
    delegate=True domain="[('model_id', '=', model_id)]" ondelete='restrict' required=True args: 'ir.actions.server', 'Server Actions'
  • active Boolean
    default=True help='When unchecked, the rule is hidden and will not be executed.'
  • filter_domain Char
    help='If present, this condition must be satisfied before executing the action rule.' string='Apply on'
  • filter_pre_domain Char
    help='If present, this condition must be satisfied before the update of the record.' string='Before Update Domain'
  • last_run Datetime
    copy=False readonly=True
  • on_change_fields Char
    help='Comma-separated list of field names that triggers the onchange.' string='On Change Fields Trigger'
  • trg_date_calendar_id Many2one → resource.calendar
    help='When calculating a day-based timed condition, it is possible to use a calendar to compute the date based on working days.' string='Use Calendar' args: 'resource.calendar'
  • trg_date_id Many2one → ir.model.fields
    domain="[('model_id', '=', model_id), ('ttype', 'in', ('date', 'datetime'))]" help='When should the condition be triggered.\n If present, will be checked by the scheduler. If empty, will be checked at creation and update.' string='Trigger Date' args: 'ir.model.fields'
  • trg_date_range Integer
    help='Delay after the trigger date.\n You can put a negative number if you need a delay before the\n trigger date, like sending a reminder 15 minutes before a meeting.' string='Delay after trigger date'
  • trg_date_range_type Selection
    default='day' string='Delay type' args: [('minutes', 'Minutes'), ('hour', 'Hours'), ('day', 'Days'), ('month', 'Months')]
  • trigger Selection
    oldname='kind' required=True string='Trigger Condition' args: [('on_create', 'On Creation'), ('on_write', 'On Update'), ('on_create_or_write', 'On Creation & Update'), ('on_unlink', 'On Deletion'), ('on_change', 'Based on Form Modification'), ('on_time', 'Based on Timed Condition')]
Public methods (5)
  • create(self, vals)
    @api.model
  • onchange_model_id(self)
    @api.onchange('model_id')
  • onchange_trigger(self)
    @api.onchange('trigger')
  • unlink(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (1)
  • usage Selection
    selection_add=[('base_automation', 'Automated Action')]
Public methods (0)

No public methods.