Sale Commission Product Criteria

sale_commission_product_criteria
REPOSITORY
REPOSITORYOCA/commission
GIT
GIThttps://github.com/OCA/commission.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/commission/tree/16.0/sale_commission_product_criteria
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ilyas, Ooops404
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ilyas, Ooops404
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Simone Rubino, oca-ci, Eduard Brahas, sygel
WEBSITE
WEBSITEhttps://github.com/OCA/commission
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/commission:
    - sale_commission
    - account_commission
    - commission
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 (6)
XML IDNameModelTypeStatus
commission_item_form_view commission.item.form commission.item form New
commission_item_search commission.item.search.view commission.item search New
commission_item_tree_view commission.item.tree commission.item tree New
sale_commission_form_lines_mod commission.form.view.inherit commission xpath Inherits commission.commission_form
view_order_agent_form_inherit_sale_commission_product_criteria_mod sale.agent.order.inherit.form.sale_commission_product_criteria.mod sale.order button Inherits sale_commission.view_order_agent_form_inherit
view_sale_order_line_tree_mod sale.order.line.agent.mod sale.order.line.agent field Inherits sale_commission.view_sale_order_line_tree
Models touched (7)

New fields (1)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
Public methods (0)

No public methods.

New fields (2)
  • commission_type Selection
    ondelete={'product': 'set default'} selection_add=[('product', 'Product criteria')]
  • item_ids One2many → commission.item
    copy=True args: 'commission.item', 'commission_id'
Public methods (4)
  • action_unarchive(self)
  • check_type_change_allowed_moves(self)
  • check_type_change_allowed_sale(self)
  • onchange_commission_type(self)
    @api.onchange('commission_type')

New fields (15)
  • active Boolean
    default=True
  • applied_on Selection
    default='3_global' help='Commission Item applicable on selected option' required=True args: [('3_global', 'All Products'), ('2_product_category', 'Product Category'), ('1_product', 'Product'), ('0_product_variant', 'Product Variant')], 'Apply On'
  • based_on Selection
    default='sol' required=True args: [('sol', 'Any Sale Order Line')]
  • categ_id Many2one → product.category
    help='Specify a product category if this rule only applies to products belonging to this category or its children categories. Keep empty otherwise.' ondelete='cascade' args: 'product.category', 'Product Category'
  • commission_id Many2one → commission
    domain=[('commission_type', '=', 'product')] required=True string='Commission' args: 'commission'
  • commission_type Selection
    default='fixed' index=True required=True args: [('fixed', 'Fixed'), ('percentage', 'Percentage')]
  • commission_value Char
    compute='_compute_commission_item_name_value' args: 'Value'
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company', 'Company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' args: 'res.currency'
  • fixed_amount Float
    digits='Product Price'
  • name Char
    compute='_compute_commission_item_name_value' help='Explicit rule name for this commission line.'
  • percent_amount Float
    args: 'Percentage Amount'
  • product_id Many2one → product.product
    check_company=True help='Specify a product if this rule only applies to one product. Keep empty otherwise.' ondelete='cascade' args: 'product.product', 'Product Variant'
  • product_tmpl_id Many2one → product.template
    check_company=True help='Specify a template if this rule only applies to one product template. Keep empty otherwise.' ondelete='cascade' args: 'product.template', 'Product'
  • sequence Integer
    default=10
Public methods (3)
  • create(self, values_list)
    @api.model_create_multi
  • validate_values(self, values)
  • write(self, values)

New fields (2)
  • applied_commission_id Many2one → commission
    readonly=True args: 'commission'
  • commission_id Many2one → commission
    comodel_name='commission' compute='_compute_commission_id' copy=True ondelete='restrict' readonly=False required=False store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
  • applied_on_name Char
    related='applied_commission_item_id.name'
  • based_on Selection
    related='applied_commission_item_id.based_on'
  • commission_type Selection
    related='applied_commission_item_id.commission_type'
  • discount Float
    related='object_id.discount'
  • fixed_amount Float
    related='applied_commission_item_id.fixed_amount'
  • percent_amount Float
    related='applied_commission_item_id.percent_amount'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/commission
GIT
GIThttps://github.com/OCA/commission.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/commission/tree/15.0/sale_commission_product_criteria
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ilyas, Ooops404
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ilyas, Ooops404
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, CarlosRoca13
WEBSITE
WEBSITEhttps://github.com/OCA/commission
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:33
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/commission:
    - sale_commission
    - account_commission
    - commission
OCA/web:
    - web_domain_field
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 (7)
XML IDNameModelTypeStatus
commission_item_form_view commission.item.form commission.item form New
commission_item_search commission.item.search.view commission.item search New
commission_item_tree_view commission.item.tree commission.item tree New
report_settlement_add_value_column report_settlement_add_value_column ir.ui.view qweb Inherits commission.report_settlement_document
sale_commission_form_lines_mod commission.form.view.inherit commission xpath Inherits commission.commission_form
view_order_agent_form_inherit_sale_commission_product_criteria_mod sale.agent.order.inherit.form.sale_commission_product_criteria.mod sale.order button Inherits sale_commission.view_order_agent_form_inherit
view_sale_order_line_tree_mod sale.order.line.agent.mod sale.order.line.agent xpath Inherits sale_commission.view_sale_order_line_tree
Models touched (6)

New fields (1)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
Public methods (0)

No public methods.

New fields (2)
  • commission_type Selection
    ondelete={'product': 'set default'} selection_add=[('product', 'Product criteria')]
  • item_ids One2many → commission.item
    copy=True args: 'commission.item', 'commission_id'
Public methods (4)
  • action_unarchive(self)
  • check_type_change_allowed_moves(self)
  • check_type_change_allowed_sale(self)
  • onchange_commission_type(self)
    @api.onchange('commission_type')

New fields (15)
  • active Boolean
    default=True
  • applied_on Selection
    default='3_global' help='Commission Item applicable on selected option' required=True args: [('3_global', 'All Products'), ('2_product_category', 'Product Category'), ('1_product', 'Product'), ('0_product_variant', 'Product Variant')], 'Apply On'
  • based_on Selection
    default='sol' required=True args: [('sol', 'Any Sale Order Line')]
  • categ_id Many2one → product.category
    help='Specify a product category if this rule only applies to products belonging to this category or its children categories. Keep empty otherwise.' ondelete='cascade' args: 'product.category', 'Product Category'
  • commission_id Many2one → commission
    domain=[('commission_type', '=', 'product')] required=True string='Commission Type' args: 'commission'
  • commission_type Selection
    default='fixed' index=True required=True args: [('fixed', 'Fixed'), ('percentage', 'Percentage')]
  • commission_value Char
    compute='_compute_commission_item_name_value' args: 'Value'
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company', 'Company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' args: 'res.currency'
  • fixed_amount Float
    digits='Product Price'
  • name Char
    compute='_compute_commission_item_name_value' help='Explicit rule name for this commission line.'
  • percent_amount Float
  • product_id Many2one → product.product
    check_company=True help='Specify a product if this rule only applies to one product. Keep empty otherwise.' ondelete='cascade' args: 'product.product', 'Product Variant'
  • product_tmpl_id Many2one → product.template
    check_company=True help='Specify a template if this rule only applies to one product template. Keep empty otherwise.' ondelete='cascade' args: 'product.template', 'Product'
  • sequence Integer
    default=10
Public methods (3)
  • create(self, values)
    @api.model
  • validate_values(self, values)
  • write(self, values)

New fields (2)
  • applied_commission_id Many2one → commission
    readonly=True args: 'commission'
  • commission_id Many2one → commission
    comodel_name='commission' compute='_compute_commission_id' copy=True ondelete='restrict' readonly=False required=False store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
  • applied_on_name Char
    related='applied_commission_item_id.name'
  • based_on Selection
    related='applied_commission_item_id.based_on'
  • commission_type Selection
    related='applied_commission_item_id.commission_type'
  • discount Float
    related='object_id.discount'
  • fixed_amount Float
    related='applied_commission_item_id.fixed_amount'
  • percent_amount Float
    related='applied_commission_item_id.percent_amount'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/commission
GIT
GIThttps://github.com/OCA/commission.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/commission/tree/14.0/sale_commission_product_criteria
VERSION
VERSION 1.1.7
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Ilyas, Ooops404
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Ilyas, Ooops404
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Simone Rubino, oca-ci, Alessandro Uffreduzzi, Ilyas, PicchiSeba
WEBSITE
WEBSITEhttps://github.com/OCA/commission
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:56
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/commission:
    - sale_commission
OCA/web:
    - web_domain_field
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - sale_management
    - sale
    - sales_team
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
commission_item_form_view commission.item.form commission.item form New
commission_item_search commission.item.search.view commission.item search New
commission_item_tree_view commission.item.tree commission.item tree New
report_settlement report_settlement ir.ui.view qweb Inherits sale_commission.report_settlement
sale_commission_form_lines_mod sale.commission.form.view.inherit sale.commission xpath Inherits sale_commission.sale_commission_form
view_order_agent_form_inherit_sale_commission_product_criteria_mod sale.agent.order.inherit.form.sale_commission_product_criteria.mod sale.order button Inherits sale_commission.view_order_agent_form_inherit
view_sale_order_line_tree_mod sale.order.line.agent.mod sale.order.line.agent field Inherits sale_commission.view_sale_order_line_tree
Models touched (6)

New fields (1)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
Public methods (0)

No public methods.

New fields (15)
  • active Boolean
    default=True
  • applied_on Selection
    default='3_global' help='Commission Item applicable on selected option' required=True args: [('3_global', 'All Products'), ('2_product_category', 'Product Category'), ('1_product', 'Product'), ('0_product_variant', 'Product Variant')], 'Apply On'
  • based_on Selection
    default='sol' required=True string='Based On' args: [('sol', 'Any Sale Order Line')]
  • categ_id Many2one → product.category
    help='Specify a product category if this rule only applies to products belonging to this category or its children categories. Keep empty otherwise.' ondelete='cascade' args: 'product.category', 'Product Category'
  • commission_id Many2one → sale.commission
    domain=[('commission_type', '=', 'product')] required=True args: 'sale.commission'
  • commission_type Selection
    default='fixed' index=True required=True args: [('fixed', 'Fixed'), ('percentage', 'Percentage')]
  • commission_value Char
    compute='_compute_commission_item_name_value' args: 'Value'
  • company_id Many2one → res.company
    default=<expr> readonly=True args: 'res.company', 'Company'
  • currency_id Many2one → res.currency
    readonly=True related='company_id.currency_id' args: 'res.currency'
  • fixed_amount Float
    digits='Product Price' args: 'Fixed Amount'
  • name Char
    compute='_compute_commission_item_name_value' help='Explicit rule name for this commission line.' args: 'Name'
  • percent_amount Float
    args: 'Percentage Amount'
  • product_id Many2one → product.product
    check_company=True help='Specify a product if this rule only applies to one product. Keep empty otherwise.' ondelete='cascade' args: 'product.product', 'Product Variant'
  • product_tmpl_id Many2one → product.template
    check_company=True help='Specify a template if this rule only applies to one product template. Keep empty otherwise.' ondelete='cascade' args: 'product.template', 'Product'
  • sequence Integer
    default=10
Public methods (3)
  • create(self, values)
    @api.model
  • validate_values(self, values)
  • write(self, values)

New fields (2)
  • commission_type Selection
    ondelete={'product': 'set default'} selection_add=[('product', 'Product criteria')]
  • item_ids One2many → commission.item
    copy=True args: 'commission.item', 'commission_id'
Public methods (4)
  • action_unarchive(self)
  • check_type_change_allowed_moves(self)
  • check_type_change_allowed_sale(self)
  • onchange_commission_type(self)
    @api.onchange('commission_type')

New fields (2)
  • applied_commission_id Many2one → sale.commission
    readonly=True args: 'sale.commission'
  • commission_id Many2one → sale.commission
    comodel_name='sale.commission' compute='_compute_commission_id' copy=True ondelete='restrict' readonly=False required=False store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • applied_commission_item_id Many2one → commission.item
    args: 'commission.item'
  • applied_on_name Char
    related='applied_commission_item_id.name'
  • based_on Selection
    related='applied_commission_item_id.based_on'
  • commission_type Selection
    related='applied_commission_item_id.commission_type'
  • discount Float
    related='object_id.discount'
  • fixed_amount Float
    related='applied_commission_item_id.fixed_amount'
  • percent_amount Float
    related='applied_commission_item_id.percent_amount'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/commission
PULL REQUEST
PULL REQUEST[18.0][MIG] sale_commission_product_criteria_oca: Migration to 18.0 (#653)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/commission
PULL REQUEST
PULL REQUEST[19.0][MIG] sale_commission_product_criteria_oca (#664)