Purchase Exception

purchase_exception
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/18.0/purchase_exception
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYGeneric Modules/Purchase
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, Maksym Yankin, Ricardoalso
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you attach several customizable exceptions to your
purchase order in a way that you can filter orders by exceptions type
and fix them.

This is especially useful in an scenario for mass purchases 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 (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order sheet Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'purchase.order': 'cascade', 'purchase.order.line': 'cascade'} selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
  • button_draft(self)
  • detect_exceptions(self)
  • purchase_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/17.0/purchase_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Purchase
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, sonhd91
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you attach several customizable exceptions to your
purchase order in a way that you can filter orders by exceptions type
and fix them.

This is especially useful in an scenario for mass purchases 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 (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order sheet Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'purchase.order': 'cascade', 'purchase.order.line': 'cascade'} selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
  • button_draft(self)
  • detect_exceptions(self)
  • purchase_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/16.0/purchase_exception
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYGeneric Modules/Purchase
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, Aungkokolin1997, aliciagarzo
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order sheet Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'purchase.order': 'cascade', 'purchase.order.line': 'cascade'} selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (7)
  • button_confirm(self)
  • button_draft(self)
  • button_unlock(self)
  • detect_exceptions(self)
  • purchase_check_exception(self)
  • test_all_draft_orders(self)
    @api.model
  • write(self, vals)

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/15.0/purchase_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Purchase
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, Maksym Yankin
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order sheet Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'purchase.order': 'cascade', 'purchase.order.line': 'cascade'} selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
  • button_draft(self)
  • detect_exceptions(self)
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • purchase_check_exception(self)
    @api.constrains('ignore_exception', 'order_line', 'state')
  • test_all_draft_orders(self)
    @api.model

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/14.0/purchase_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Purchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Kitti U
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order sheet Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    ondelete={'purchase.order': 'cascade', 'purchase.order.line': 'cascade'} selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
  • button_draft(self)
  • detect_exceptions(self)
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • purchase_check_exception(self)
    @api.constrains('ignore_exception', 'order_line', 'state')
  • test_all_draft_orders(self)
    @api.model

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/13.0/purchase_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Purchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSmreficent, OCA Transbot, oca-travis, OCA-git-bot, Alba Riera
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order header Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
  • button_draft(self)
  • detect_exceptions(self)
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • purchase_check_exception(self)
    @api.constrains('ignore_exception', 'order_line', 'state')
  • test_all_draft_orders(self)
    @api.model

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/12.0/purchase_exception
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYGeneric Modules/Purchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSGitHub, mreficent, OCA Transbot, Florian da Costa, David Beal, oca-travis, Weblate, OCA-git-bot, Sudhir Arya, sudhir-erpharbor
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order header Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (4)

New fields (2)
  • model Selection
    selection_add=[('purchase.order', 'Purchase order'), ('purchase.order.line', 'Purchase order line')]
  • purchase_ids Many2many → purchase.order
    comodel_name='purchase.order' string='Purchases'
Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (6)
  • button_confirm(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • detect_exceptions(self)
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • purchase_check_exception(self)
    @api.constrains('ignore_exception', 'order_line', 'state')
  • test_all_draft_orders(self)
    @api.model

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

No public methods.

REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/11.0/purchase_exception
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Purchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion
COMMITTERS
COMMITTERSJordi Ballester Alomar, OCA Transbot, oca-travis
WEBSITE
WEBSITEhttp://www.akretion.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/server-tools:
    - base_exception
odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - barcodes
    - web_planner
    - account
    - analytic
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_order_form purchase_exception.view_order_form purchase.order header Inherits purchase.purchase_order_form
view_order_tree purchase_exception.view_order_tree purchase.order field Inherits purchase.purchase_order_tree
view_purchase_order_filter purchase_exception.view_purchases_order_filter purchase.order filter Inherits purchase.view_purchase_order_filter
Models touched (3)

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

No public methods.

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

New fields (1)
  • rule_group Selection
    default='purchase' selection_add=[('purchase', 'Purchase')]
Public methods (5)
  • button_confirm(self)
    @api.multi
  • button_draft(self)
    @api.multi
  • onchange_ignore_exception(self)
    @api.onchange('order_line')
  • purchase_check_exception(self)
    @api.constrains('ignore_exception', 'order_line', 'state')
  • test_all_draft_orders(self)
    @api.model