Base Sub State

base_substate
REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/19.0/base_substate
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, bosd, Camille Morand
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provide abstract models to manage customizable substates to
be applied on different models (sale order, purchase, ...).

## example:

- for the quotation state of a sale order we can define 3 substates "In
  negotiation", "Won" and "Lost".
- We can also send mail when the substate is reached.

It is not useful by itself. You can see an example of implementation in
the 'purchase_substate' module. (purchase-workflow repository).

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_list base.substate.type list New
base_substate_type_view_search base.substate.type search New
base_substate_view_form base.substate form New
base_substate_view_list base.substate list New
base_substate_view_search base.substate search New
target_state_value_view_form target.state.value form New
target_state_value_view_list target.state.value list New
target_state_value_view_search target.state.value search New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=True args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/18.0/base_substate
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSStefan Rijnhart, Carlos Lopez, Weblate, OCA-git-bot, oca-ci, Saran440
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provide abstract models to manage customizable substates to
be applied on different models (sale order, purchase, ...).

## example:

- for the quotation state of a sale order we can define 3 substates "In
  negotiation", "Won" and "Lost".
- We can also send mail when the substate is reached.

It is not useful by itself. You can see an example of implementation in
the 'purchase_substate' module. (purchase-workflow repository).

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_list base.substate.type list New
base_substate_type_view_search base.substate.type search New
base_substate_view_form base.substate form New
base_substate_view_list base.substate list New
base_substate_view_search base.substate search New
target_state_value_view_form target.state.value form New
target_state_value_view_list target.state.value list New
target_state_value_view_search target.state.value search New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=True args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/17.0/base_substate
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Mohamed Osman, len
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provide abstract models to manage customizable substates to
be applied on different models (sale order, purchase, ...).

## example:

- for the quotation state of a sale order we can define 3 substates "In
  negotiation", "Won" and "Lost".
- We can also send mail when the substate is reached.

It is not useful by itself. You can see an example of implementation in
the 'purchase_substate' module. (purchase-workflow repository).

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=5 args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/16.0/base_substate
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Ethan Hildick, oca-ci, Saran440
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=5 args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/15.0/base_substate
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, Alexei Rivera, saran
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=5 args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, values)
    @api.model
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/14.0/base_substate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, oca-ci, Kitti U, oca-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' tracking=True args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, values)
    @api.model
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/13.0/base_substate
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSStefan Rijnhart, oca-travis, OCA-git-bot, oca-ci, Kitti U, newtratip
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' track_visibility='onchange' args: 'base.substate'
Public methods (4)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • check_substate_id_value(self)
    @api.constrains('substate_id', _state_field)
  • create(self, values)
    @api.model
  • write(self, values)

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-ux
GIT
GIThttps://github.com/OCA/server-ux.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-ux/tree/12.0/base_substate
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSoca-travis, OCA-git-bot, Mourad, Héctor Villarreal Ortega
WEBSITE
WEBSITEhttps://github.com/OCA/server-ux
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
base_substate_type_view_form base.substate.type form New
base_substate_type_view_search base.substate.type search New
base_substate_type_view_tree base.substate.type tree New
base_substate_view_form base.substate form New
base_substate_view_search base.substate search New
base_substate_view_tree base.substate tree New
target_state_value_view_form target.state.value form New
target_state_value_view_search target.state.value search New
target_state_value_view_tree target.state.value tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
    translate=True
  • mail_template_id Many2one → mail.template
    help='If set, an email will be sent to the partner when the object reaches this substate.' string='Email Template' args: 'mail.template'
  • model Selection
    help='Model for technical use' readonly=True related='target_state_value_id.model' store=True
  • name Char
    required=True translate=True args: 'Substate Name'
  • sequence Integer
    help='Gives the sequence order when applying the default substate' index=True
  • target_state_value_id Many2one → target.state.value
    ondelete='restrict' string='Target State Value' args: 'target.state.value'
Public methods (0)

No public methods.

New fields (1)
  • substate_id Many2one → base.substate
    copy=False default=<expr> domain=<expr> index=True ondelete='restrict' string='Sub State' track_visibility='onchange' args: 'base.substate'
Public methods (3)
  • check_substate_id_consistency(self)
    @api.constrains('substate_id')
  • create(self, values)
    @api.model
  • write(self, values)
    @api.multi

New fields (3)
  • model Selection
    required=True selection=[] string='Apply on'
  • name Char
    required=True translate=True
  • target_state_field Char
    help='Technical target state field name. Ex for sale order "state" for other "status" ... ' required=True
Public methods (0)

No public methods.

New fields (4)
  • base_substate_type_id Many2one → base.substate.type
    ondelete='restrict' string='Substate Type' args: 'base.substate.type'
  • model Selection
    help='Model for technical use' readonly=True related='base_substate_type_id.model' store=True
  • name Char
    help='Target state translateble name.\nEx: for sale order "Quotation", "Sale order", "Locked"...' required=True translate=True args: 'Target state Name'
  • target_state_value Char
    help='Technical target state value.\nEx: for sale order "draft", "sale", "done", ...' required=True
Public methods (0)

No public methods.