Sale Exception

sale_exception
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/19.0/sale_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Franco Leyes
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you attach several customizable exceptions to your
sale order in a way that you can filter orders by exceptions type and
fix them.

This is especially useful in an scenario for mass sales order import
because it's likely some orders have errors when you import them (like
product not found in Odoo, wrong line format etc.)

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
res_config_settings_view_form_sale_exception res.config.settings setting Inherits sale.res_config_settings_view_form
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (6)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • sale_exception_show_popup Boolean
    default=True string='Sale Exception Popup'
Public methods (0)

No public methods.

New fields (1)
  • sale_exception_show_popup Boolean
    readonly=False related='company_id.sale_exception_show_popup'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (6)
  • action_confirm(self)
  • action_draft(self)
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (4)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
  • is_exception_danger Boolean
    compute='_compute_is_exception_danger'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/18.0/sale_exception
VERSION
VERSION 2.2.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSThierry Ducrest, Weblate, OCA-git-bot, Iván Todorovich, oca-ci, Matias Peralta, Rafael Lima
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you attach several customizable exceptions to your
sale order in a way that you can filter orders by exceptions type and
fix them.

This is especially useful in an scenario for mass sales order import
because it's likely some orders have errors when you import them (like
product not found in Odoo, wrong line format etc.)

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
res_config_settings_view_form_sale_exception res.config.settings setting Inherits sale.res_config_settings_view_form
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (6)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • sale_exception_show_popup Boolean
    default=True string='Sale Exception Popup'
Public methods (0)

No public methods.

New fields (1)
  • sale_exception_show_popup Boolean
    readonly=False related='company_id.sale_exception_show_popup'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (6)
  • action_confirm(self)
  • action_draft(self)
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (4)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
  • is_exception_danger Boolean
    compute='_compute_is_exception_danger'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/17.0/sale_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, chien
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you attach several customizable exceptions to your
sale order in a way that you can filter orders by exceptions type and
fix them.

This is especially useful in an scenario for mass sales order import
because it's likely some orders have errors when you import them (like
product not found in Odoo, wrong line format etc.)

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (6)
  • action_confirm(self)
  • action_draft(self)
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (4)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
  • is_exception_danger Boolean
    compute='_compute_is_exception_danger'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/16.0/sale_exception
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSDenis Roussel, sbejaoui, David Alonso, Juan Jose Scarafia, Weblate, OCA-git-bot, oca-ci, hda, matiasperalta1, aliciagarzo
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:45
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (7)
  • action_confirm(self)
  • action_draft(self)
  • action_unlock(self)
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (4)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
  • is_exception_danger Boolean
    compute='_compute_is_exception_danger'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/15.0/sale_exception
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSDamien Crier, Weblate, OCA-git-bot, oca-ci, josep-tecnativa
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (7)
  • action_confirm(self)
  • action_draft(self)
  • create(self, vals)
    @api.model
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (3)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/14.0/sale_exception
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSOCA Transbot, Sébastien BEAU, Damien Crier, oca-travis, Weblate, OCA-git-bot, oca-ci, Alessandro Uffreduzzi, Hai Lang
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'sale.order': 'cascade', 'sale.order.line': 'cascade'} selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (7)
  • action_confirm(self)
  • action_draft(self)
  • create(self, vals)
    @api.model
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (3)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/13.0/sale_exception
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSOCA Transbot, Víctor Martínez, Thierry Ducrest, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)

New fields (0)

No new fields.

Public methods (7)
  • action_confirm(self)
  • action_draft(self)
  • create(self, vals)
    @api.model
  • detect_exceptions(self)
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

New fields (3)
  • exception_ids Many2many → exception.rule
    copy=False readonly=True string='Exceptions' args: 'exception.rule'
  • exceptions_summary Html
    compute='_compute_exceptions_summary' readonly=True
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/12.0/sale_exception
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSGuewen Baconnier, Renato Lima, Pedro M. Baeza, GitHub, sebalix, Daniel Reis, OCA Transbot, Florian da Costa, oca-travis, Weblate, OCA-git-bot, acm1pt-colorado
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - decimal_precision
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order sheet Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)
    @api.multi

New fields (0)

No new fields.

Public methods (8)
  • action_confirm(self)
    @api.multi
  • action_draft(self)
    @api.multi
  • create(self, vals)
    @api.model
  • detect_exceptions(self)
    @api.multi
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)
    @api.multi

New fields (1)
  • ignore_exception Boolean
    related='order_id.ignore_exception' store=True string='Ignore Exceptions'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/11.0/sale_exception
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSAlexandre Fayolle, Pedro M. Baeza, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Simone Orsi
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order field Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (3)

New fields (2)
  • model Selection
    selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • rule_group Selection
    selection_add=[('sale', 'Sale')]
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)
    @api.multi

New fields (1)
  • rule_group Selection
    default='sale' selection_add=[('sale', 'Sale')]
Public methods (7)
  • action_confirm(self)
    @api.multi
  • action_draft(self)
    @api.multi
  • create(self, vals)
    @api.model
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)
    @api.multi
REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/10.0/sale_exception
VERSION
VERSION 2.0.2
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Camptocamp, Sodexis
COMMITTERS
COMMITTERSYannick Vaucher, Guewen Baconnier, Pedro M. Baeza, GitHub, Denis Roussel, OCA Transbot, Florian da Costa, oca-travis, Weblate, OCA-git-bot, hparfr, Mourad Elhadj Mimoune, Mourad EL HADJ MIMOUNE, Florent THOMAS
WEBSITE
WEBSITEhttps://github.com/OCA/sale-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order field Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (4)

New fields (2)
  • model Selection
    selection_add=[('sale.order', 'Sale order'), ('sale.order.line', 'Sale order line')]
  • sale_ids Many2many → sale.order
    string='Sales' args: 'sale.order'
Public methods (0)

No public methods.

New fields (1)
  • related_model_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (1)
  • action_confirm(self)
    @api.multi

New fields (0)

No new fields.

Public methods (8)
  • action_confirm(self)
    @api.multi
  • action_draft(self)
    @api.multi
  • create(self, vals)
    @api.model
  • detect_exceptions(self)
    @api.multi
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • sale_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)
    @api.multi

New fields (1)
  • ignore_exception Boolean
    readonly=True related='order_id.ignore_exception' store=True string='Ignore Exceptions'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/sale-workflow
GIT
GIThttps://github.com/OCA/sale-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/sale-workflow/tree/9.0/sale_exception
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYGeneric Modules/Sale
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Sodexis
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Sodexis
COMMITTERS
COMMITTERSPedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Atchuthan, Sodexis
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_tip
    - web_planner
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
view_order_form sale_exception.view_order_form sale.order field Inherits sale.view_order_form
view_order_tree sale_exception.view_order_tree sale.order field Inherits sale.view_order_tree
view_quotation_tree sale_exception.view_order_tree sale.order field Inherits sale.view_quotation_tree
view_sale_exception_confirm Sale Exceptions sale.exception.confirm form New
view_sale_exception_form sale.exception.form sale.exception form New
view_sale_exception_tree sale.exception.tree sale.exception tree New
view_sales_order_filter sale_exception.view_sales_order_filter sale.order filter Inherits sale.view_sales_order_filter
Models touched (3)

New fields (7)
  • active Boolean
    args: 'Active'
  • code Text
    default='\n# Python code. Use failed = True to block the sale order.\n# You can use the following variables :\n# - self: ORM model of the record which is checked\n# - order or line: browse_record of the sale order or sale order line\n# - object: same as order or line, browse_record of the sale order or\n# sale order line\n# - pool: ORM model pool (i.e. self.pool)\n# - time: Python time module\n# - cr: database cursor\n# - uid: current user id\n# - context: current context\n' help='Python code executed to check if the exception apply or not. The code must apply block = True to apply the exception.' args: 'Python Code'
  • description Text
    translate=True args: 'Description'
  • model Selection
    required=True string='Apply on' args: [('sale.order', 'Sale Order'), ('sale.order.line', 'Sale Order Line')]
  • name Char
    required=True translate=True args: 'Exception Name'
  • sale_order_ids Many2many → sale.order
    readonly=True string='Sale Orders' args: 'sale.order', 'sale_order_exception_rel', 'exception_id', 'sale_order_id'
  • sequence Integer
    help='Gives the sequence order when applying the test' string='Sequence'
Public methods (0)

No public methods.

New fields (3)
  • exception_ids Many2many → sale.exception
    readonly=True string='Exceptions to resolve' args: 'sale.exception'
  • ignore Boolean
    args: 'Ignore Exceptions'
  • sale_id Many2one → sale.order
    args: 'sale.order', 'Sale'
Public methods (2)
  • action_confirm(self)
    @api.one
  • default_get(self, field_list)
    @api.model

New fields (3)
  • exception_ids Many2many → sale.exception
    string='Exceptions' args: 'sale.exception', 'sale_order_exception_rel', 'sale_order_id', 'exception_id'
  • ignore_exception Boolean
    copy=False args: 'Ignore Exceptions'
  • main_exception_id Many2one → sale.exception
    compute='_get_main_error' store=True string='Main Exception' args: 'sale.exception'
Public methods (7)
  • action_confirm(self)
    @api.multi
  • action_draft(self)
    @api.multi
  • check_sale_exception_constrains(self)
    @api.one@api.constrains('ignore_exception', 'order_line', 'state')
  • detect_exceptions(self)
    @api.multi
    returns the list of exception_ids for all the considered sale orders as a side effect, the sale order's exception_ids column is updated with the list of exceptions related to the SO
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • test_all_draft_orders(self)
    @api.model
  • test_exceptions(self)
    @api.multi
    Condition method for the workflow from draft to confirm