Repository
OCA/commission · module folder · Try on Runboat
Module version
1.0.0
Category
Sales Management
Folder size
0.17 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/commission
Last tracking update
2026-08-07 08:42:54
Authors
Odoo Community Association (OCA), Ooops404, Ilyas
Maintainers
Odoo Community Association (OCA), Ooops404, Ilyas
Committers
Weblate, OCA-git-bot, oca-ci, David Bañón
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
sale_commission_oca_product_criteria_semaphore
Description
This module allows to set in the same Commission Type different
commission rates according to the product on SO/invoice line.

This is made possible since this module adds a new "Product criteria"
type to Commission Type and applies commission rates with the same logic
of sale pricelist items.

For example, such a Commission Type can grant:

10% on a specific Product A, 10\$ on Product B, 4% on products in
Category 1 and 5\$ on all other products.

In SO/invoice, system will apply different commissions based on
variant/product/category or global, applied hierarchically. This means
that for the example above, if product A is assigned to Category 1,
commission assigned is 10%, as per variant/product/category/global rule
application order.

Furthermore, these commission type items can be accessed and created by
a specific menu, to facilitate their management in environments with
lots of records.

The form for commission type item can be extended by future modules with
further conditions to decide when to apply a specific item.

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.list commission.item list New
report_settlement_document report_settlement_document ir.ui.view qweb Inherits commission_oca.report_settlement_document
sale_commission_form_lines_mod commission.form.view.inherit commission form Inherits commission_oca.commission_form
view_order_agent_form_inherit_sale_commission_oca_product_criteria_mod sale.agent.order.inherit.form.sale_commission_oca_product_criteria.mod sale.order form Inherits sale_commission_oca.view_order_agent_form_inherit
view_sale_order_line_tree_mod sale.order.line.agent.mod sale.order.line.agent tree Inherits sale_commission_oca.view_sale_order_line_tree
HTTP endpoints (0)

No HTTP endpoints found for this module.

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' 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 (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
Open migration PR — not merged yet for this version
CI status
green — ready to merge
Open since
28 days ago
Last activity
6 days ago
Repository
OCA/commission
Pull request
[19.0][MIG] sale_commission_oca_product_criteria: Migration to 19.0 (#683)