| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/17.0/sale_commission |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Christian-RB, ambientWave |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:04 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/commission: - account_commission - commission odoo/odoo: - sale - sales_team - base - 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 adds the function to calculate commissions in sales orders. Commission lines assigned to sales order lines will be passed to the corresponding invoice lines. Creating settlements directly from the sales order lines is outside the scope of this module. This module depends on the account_commission module. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter_agent |
view_sales_order_filter_agent | sale.order | field | Inherits sale.view_sales_order_filter |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
partner_agent_ids
Many2many → res.partner
comodel_name='res.partner'
compute='_compute_agents'
search='_search_agents'
string='Agents'
recompute_lines_agents(self)
recompute_lines_agents_amount(self)
agent_ids
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/16.0/sale_commission |
| VERSION | |
| VERSION | 1.0.3 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Weblate, OCA-git-bot, David, Ethan Hildick, oca-ci, Christian-RB |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/commission: - account_commission - commission odoo/odoo: - sale - sales_team - base - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter_agent |
view_sales_order_filter_agent | sale.order | field | Inherits sale.view_sales_order_filter |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
partner_agent_ids
Many2many → res.partner
comodel_name='res.partner'
compute='_compute_agents'
search='_search_agents'
string='Agents'
recompute_lines_agents(self)
recompute_lines_agents_amount(self)
agent_ids
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/15.0/sale_commission |
| VERSION | |
| VERSION | 2.1.1 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Yoshi Tashiro, Weblate, OCA-git-bot, David, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:33 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/commission: - account_commission - commission odoo/odoo: - sale - sales_team - base - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter_agent |
view_sales_order_filter_agent | sale.order | field | Inherits sale.view_sales_order_filter |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
partner_agent_ids
Many2many → res.partner
comodel_name='res.partner'
compute='_compute_agents'
search='_search_agents'
string='Agents'
recompute_lines_agents(self)
agent_ids
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/14.0/sale_commission |
| VERSION | |
| VERSION | 1.10.2 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | eLBati, Maxime Chambreuil, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Alfredo Zamora, Oihane Crucelaegui, Ethan Hildick, oca-ci, Alessandro Uffreduzzi, Neto, stenex, Ilyas, Olga Marco, oca-git-bot, Zar21, Alessio Renda, PicchiSeba, Felipe |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_line_agent_tree |
account.invoice.line.agent | tree | New | |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
report_settlement |
report_settlement | ir.ui.view | qweb | New |
res_partner_view_search |
res.partner.select | res.partner | filter | Inherits account.res_partner_view_search |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_account_invoice_filter_agent |
view_account_invoice_filter_agent | account.move | field | Inherits account.view_account_invoice_filter |
view_move_form |
account.invoice.form.agent | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
account.move.line | xpath | Inherits account.view_move_line_form | |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_sale_commission_analysis_graph |
sale.commission.analysis.graph | sale.commission.analysis.report | graph | New |
view_sale_commission_analysis_pivot |
sale.commission.analysis.pivot | sale.commission.analysis.report | pivot | New |
view_sale_commission_analysis_search |
sale.commission.analysis.search | sale.commission.analysis.report | search | New |
view_sale_commission_mixin_agent_only |
sale.commission.mixin | form | New | |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter_agent |
view_sales_order_filter_agent | sale.order | field | Inherits sale.view_sales_order_filter |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company'
store=True
currency_id
Many2one
readonly=True
related='object_id.currency_id'
invoice_date
Date
readonly=True
related='invoice_id.invoice_date'
store=True
string='Invoice date'
invoice_id
Many2one → account.move
comodel_name='account.move'
related='object_id.move_id'
store=True
string='Invoice'
object_id
Many2one → account.move.line
comodel_name='account.move.line'
settled
Boolean
compute='_compute_settled'
store=True
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
partner_agent_ids
Many2many → res.partner
comodel_name='res.partner'
compute='_compute_agents'
search='_search_agents'
string='Agents'
action_post(self)
button_cancel(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
recompute_lines_agents(self)
unlink(self)
agent_ids
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
any_settled
Boolean
compute='_compute_any_settled'
settlement_id
Many2one → sale.commission.settlement
comodel_name='sale.commission.settlement'
copy=False
help='Settlement that generates this invoice line'
No public methods.
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_ids
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain=[('agent', '=', True)]
readonly=False
relation='partner_agent_rel'
string='Agents'
agent_type
Selection
default='agent'
selection=[('agent', 'External agent')]
string='Type'
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
selection=[('biweekly', 'Bi-weekly'), ('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlement_ids
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent_id'
readonly=True
No public methods.
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
help="Select the base amount for computing the percentage:\n* 'Sale/Invoice Amount': percentage is computed from the amount put on sales order/invoice.\n* 'Margin (Amount - Cost)': percentage is computed from the profit only, taken the cost from the product."
required=True
selection=[('gross_amount', 'Sale/Invoice Amount'), ('net_amount', 'Margin (Amount - Cost)')]
string='Base'
commission_type
Selection
default='fixed'
help='Select the percentage type of the commission:\n* \'Fixed percentage\': all commissions are computed with a fixed percentage. You can fill the percentage in the field "Fixed percentage".\n* \'By sections\': percentage varies depending amount intervals. You can fill intervals and percentages in the section "Rate definition".'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
help="Select the invoice status for settling the commissions:\n* 'Invoice Based': Commissions are settled when the invoice is issued.\n* 'Payment Based': Commissions are settled when the invoice is paid (or refunded)."
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
section_ids
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission_id'
string='Sections'
calculate_section(self, base)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
balance
Float
readonly=True
string='Balance'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_invoice
Date
readonly=True
args: 'Date Invoice'
invoice_line_id
Many2one → account.move.line
readonly=True
args: 'account.move.line', 'Invoice line'
invoice_state
Selection
readonly=True
selection='_get_selection_invoice_state'
string='Invoice Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
settled
Boolean
readonly=True
args: 'Settled'
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom', 'Unit of Measure'
init(self)
agent_id
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
amount
Monetary
compute='_compute_amount'
store=True
string='Commission Amount'
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
compute='_compute_commission_id'
copy=True
ondelete='restrict'
readonly=False
required=True
store=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
object_id
Many2one → sale.commission.mixin
comodel_name='sale.commission.mixin'
copy=False
ondelete='cascade'
required=True
string='Parent'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='journal_id.company_id'
date
Date
default=fields.Date.context_today
from_settlement
Boolean
default=_default_from_settlement
grouped
Boolean
string='Group invoices'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal_id
domain="[('type', '=', 'purchase')]"
required=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlement_ids
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlement_ids
domain="[('state', '=', 'settled'),('agent_type', '=', 'agent'),('company_id', '=', company_id)]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
create_settlements_and_invoices(self)
agent_ids
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_payment_to
Date
default=fields.Date.today()
help='For payment-based commissions, settlements will be created for payments with date up to the one set in this field.'
args: 'Payment date up to'
date_to
Date
default=fields.Date.today()
help='For invoice-based commissions, settlements will be created for invoices with date up to the one set in this field.'
required=True
args: 'Invoice date up to'
action_settle(self)
agent_ids
One2many → sale.commission.line.mixin
comodel_name='sale.commission.line.mixin'
compute='_compute_agent_ids'
copy=True
help='Agents/Commissions related to the invoice line.'
inverse_name='object_id'
readonly=False
store=True
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
commission_status
Char
compute='_compute_commission_status'
string='Commission'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
button_edit_agents(self)
recompute_agents(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission_id
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent_id
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent_id.agent_type'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice_id
Many2one → account.move
comodel_name='account.move'
compute='_compute_invoice_id'
store=True
invoice_line_ids
One2many → account.move.line
comodel_name='account.move.line'
inverse_name='settlement_id'
readonly=True
string='Generated invoice'
line_ids
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement_id'
readonly=True
string='Settlement lines'
name
Char
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
make_invoices(self, journal, product, date=False, grouped=False)
unlink(self)
agent_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent_id'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission_id'
company_id
Many2one → res.company
comodel_name='res.company'
related='settlement_id.company_id'
currency_id
Many2one
readonly=True
related='agent_line.currency_id'
store=True
date
Date
related='agent_line.invoice_date'
store=True
invoice_line_id
Many2one → account.move.line
comodel_name='account.move.line'
related='agent_line.object_id'
store=True
string='Source invoice line'
settled_amount
Monetary
readonly=True
related='agent_line.amount'
store=True
settlement_id
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
partner_agent_ids
Many2many → res.partner
comodel_name='res.partner'
compute='_compute_agents'
search='_search_agents'
string='Agents'
recompute_lines_agents(self)
agent_ids
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
currency_id
Many2one
related='object_id.currency_id'
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/13.0/sale_commission |
| VERSION | |
| VERSION | 1.8.0 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | eLBati, Renato Lima, Pedro M. Baeza, Jairo Llopis, Enric Tobella, OCA Transbot, Víctor Martínez, João Marques, oca-travis, Weblate, OCA-git-bot, oca-ci, SilvioGregorini, ao-landoo, Olga Marco, Denny Biasiolli |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - 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 | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_line_agent_tree |
account.invoice.line.agent | tree | New | |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
report_settlement |
report_settlement | ir.ui.view | qweb | New |
res_partner_view_search |
res.partner.select | res.partner | filter | Inherits account.res_partner_view_search |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_move_form |
account.invoice.form.agent | account.move | xpath | Inherits account.view_move_form |
view_move_line_form |
account.move.line | xpath | Inherits account.view_move_line_form | |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_sale_commission_analysis_graph |
sale.commission.analysis.graph | sale.commission.analysis.report | graph | New |
view_sale_commission_analysis_pivot |
sale.commission.analysis.pivot | sale.commission.analysis.report | pivot | New |
view_sale_commission_analysis_search |
sale.commission.analysis.search | sale.commission.analysis.report | search | New |
view_sale_commission_mixin_agent_only |
sale.commission.mixin | form | New | |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company'
store=True
currency_id
Many2one
readonly=True
related='object_id.currency_id'
invoice_date
Date
readonly=True
related='invoice_id.date'
store=True
string='Invoice date'
invoice_id
Many2one → account.move
comodel_name='account.move'
related='object_id.move_id'
store=True
string='Invoice'
object_id
Many2one → account.move.line
comodel_name='account.move.line'
settled
Boolean
compute='_compute_settled'
store=True
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
button_cancel(self)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
post(self)
recompute_lines_agents(self)
agent_ids
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
any_settled
Boolean
compute='_compute_any_settled'
settlement_id
Many2one → sale.commission.settlement
comodel_name='sale.commission.settlement'
copy=False
help='Settlement that generates this invoice line'
No public methods.
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_ids
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain=[('agent', '=', True)]
readonly=False
relation='partner_agent_rel'
string='Agents'
agent_type
Selection
default='agent'
selection=[('agent', 'External agent')]
string='Type'
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
selection=[('biweekly', 'Bi-weekly'), ('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlement_ids
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent_id'
readonly=True
No public methods.
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
section_ids
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission_id'
string='Sections'
calculate_section(self, base)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
balance
Float
readonly=True
string='Balance'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_invoice
Date
readonly=True
args: 'Date Invoice'
invoice_line_id
Many2one → account.move.line
readonly=True
args: 'account.move.line', 'Invoice line'
invoice_state
Selection
readonly=True
selection='_get_selection_invoice_state'
string='Invoice Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
settled
Boolean
readonly=True
args: 'Settled'
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom', 'Unit of Measure'
init(self)
agent_id
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
amount
Monetary
compute='_compute_amount'
store=True
string='Commission Amount'
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
compute='_compute_commission_id'
copy=True
ondelete='restrict'
readonly=False
required=True
store=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
object_id
Many2one → sale.commission.mixin
comodel_name='sale.commission.mixin'
copy=False
ondelete='cascade'
required=True
string='Parent'
No public methods.
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='journal_id.company_id'
date
Date
default=fields.Date.context_today
from_settlement
Boolean
default=_default_from_settlement
grouped
Boolean
string='Group invoices'
journal_id
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal_id
domain="[('type', '=', 'purchase')]"
required=True
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlement_ids
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlement_ids
domain="[('state', '=', 'settled'),('agent_type', '=', 'agent'),('company_id', '=', company_id)]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agent_ids
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
agent_ids
One2many → sale.commission.line.mixin
comodel_name='sale.commission.line.mixin'
compute='_compute_agent_ids'
copy=True
help='Agents/Commissions related to the invoice line.'
inverse_name='object_id'
readonly=False
store=True
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
commission_status
Char
compute='_compute_commission_status'
string='Commission'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
button_edit_agents(self)
recompute_agents(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission_id
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent_id
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent_id.agent_type'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice_id
Many2one → account.move
comodel_name='account.move'
compute='_compute_invoice_id'
store=True
invoice_line_ids
One2many → account.move.line
comodel_name='account.move.line'
inverse_name='settlement_id'
readonly=True
string='Generated invoice'
line_ids
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement_id'
readonly=True
string='Settlement lines'
name
Char
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
make_invoices(self, journal, product, date=False, grouped=False)
unlink(self)
agent_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent_id'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission_id
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission_id'
company_id
Many2one → res.company
comodel_name='res.company'
related='settlement_id.company_id'
currency_id
Many2one
readonly=True
related='agent_line.currency_id'
store=True
date
Date
related='agent_line.invoice_date'
store=True
invoice_line_id
Many2one → account.move.line
comodel_name='account.move.line'
related='agent_line.object_id'
store=True
string='Source invoice line'
settled_amount
Monetary
readonly=True
related='agent_line.amount'
store=True
settlement_id
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
recompute_lines_agents(self)
agent_ids
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
currency_id
Many2one
related='object_id.currency_id'
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/12.0/sale_commission |
| VERSION | |
| VERSION | 3.3.3 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | eLBati, Renato Lima, Pedro M. Baeza, GitHub, Jairo Llopis, tafaRU, OCA Transbot, oca-travis, Weblate, OCA-git-bot, SimoRubi, Simone Rubino, oca-ci, Jaime Arroyo, SilvioGregorini, Rubén Cerdà, ferran-S73, stenex |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - uom - analytic - portal - http_routing - digest - sale_management - sale - sales_team - payment |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_form_agent |
account.invoice.form.agent | account.invoice | field | Inherits account.invoice_form |
invoice_line_agent_tree |
account.invoice.line.agent.tree | account.invoice.line.agent | tree | New |
invoice_line_form_agent |
account.invoice.line.form.agent | account.invoice.line | field | Inherits account.view_invoice_line_form |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
report_settlement |
report_settlement | ir.ui.view | qweb | New |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_account_invoice_filter_agent |
view_account_invoice_filter_agent | account.invoice | field | Inherits account.view_account_invoice_filter |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_res_partner_filter |
res.partner.select | res.partner | filter | Inherits base.view_res_partner_filter |
view_sale_commission_analysis_graph |
sale.commission.analysis.graph | sale.commission.analysis.report | graph | New |
view_sale_commission_analysis_pivot |
sale.commission.analysis.pivot | sale.commission.analysis.report | pivot | New |
view_sale_commission_analysis_search |
sale.commission.analysis.search | sale.commission.analysis.report | search | New |
view_sale_commission_mixin_agent_only |
sale.commission.mixin | form | New | |
view_sale_order_commission_analysis_graph |
sale.order.commission.analysis.graph | sale.order.commission.analysis.report | graph | New |
view_sale_order_commission_analysis_pivot |
sale.order.commission.analysis.pivot | sale.order.commission.analysis.report | pivot | New |
view_sale_order_commission_analysis_search |
sale.order.commission.analysis.search | sale.order.commission.analysis.report | search | New |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter_agent |
view_sales_order_filter_agent | sale.order | field | Inherits sale.view_sales_order_filter |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
agent_ids
Many2many → res.partner
compute='_compute_agents'
search='_search_agents'
string='Agents'
args: 'res.partner'
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
action_cancel(self)
invoice_validate(self)
recompute_lines_agents(self)
agents
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
any_settled
Boolean
compute='_compute_any_settled'
create(self, vals_list)
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company'
store=True
currency_id
Many2one
readonly=True
related='object_id.currency_id'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='object_id.invoice_id'
store=True
string='Invoice'
invoice_date
Date
readonly=True
related='invoice.date_invoice'
store=True
string='Invoice date'
object_id
Many2one → account.invoice.line
comodel_name='account.invoice.line'
oldname='invoice_line'
settled
Boolean
compute='_compute_settled'
store=True
No public methods.
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_type
Selection
default='agent'
selection=[('agent', 'External agent')]
string='Type'
agents
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain=[('agent', '=', True)]
relation='partner_agent_rel'
commission
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
selection=[('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlements
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent'
readonly=True
create(self, vals)
default_get(self, fields_list)
onchange_agent_type(self)
onchange_parent_id(self)
write(self, vals)
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
sections
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission'
settlements
Many2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
calculate_section(self, base)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_invoice
Date
readonly=True
args: 'Date Invoice'
invoice_line_id
Many2one → account.invoice.line
readonly=True
args: 'account.invoice.line', 'Invoice line'
invoice_state
Selection
readonly=True
selection='_get_selection_invoice_state'
string='Invoice Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_subtotal_signed
Float
readonly=True
string='Price subtotal signed'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
settled
Boolean
readonly=True
args: 'Settled'
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom', 'Unit of Measure'
init(self)
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
amount
Monetary
compute='_compute_amount'
store=True
string='Commission Amount'
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
object_id
Many2one → sale.commission.mixin
comodel_name='sale.commission.mixin'
copy=False
ondelete='cascade'
required=True
string='Parent'
onchange_agent(self)
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='journal.company_id'
date
Date
from_settlement
Boolean
default=_default_from_settlement
journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'purchase')]"
required=True
product
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlements
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlements
domain="[('state', '=', 'settled'),('agent_type', '=', 'agent'),('company_id', '=', company_id)]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agents
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
agents
One2many → sale.commission.line.mixin
comodel_name='sale.commission.line.mixin'
copy=True
default=<expr>
help='Agents/Commissions related to the invoice line.'
inverse_name='object_id'
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
commission_status
Char
compute='_compute_commission_status'
string='Commission'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
button_edit_agents(self)
recompute_agents(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent.agent_type'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
readonly=True
string='Generated invoice'
lines
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement'
readonly=True
string='Settlement lines'
name
Char
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
create_invoice_header(self, journal, date)
make_invoices(self, journal, product, date=False)
unlink(self)
agent
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission'
company_id
Many2one → res.company
comodel_name='res.company'
related='settlement.company_id'
currency_id
Many2one
readonly=True
related='agent_line.currency_id'
store=True
date
Date
related='agent_line.invoice_date'
store=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
related='agent_line.object_id'
store=True
settled_amount
Monetary
readonly=True
related='agent_line.amount'
store=True
settlement
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
agent_ids
Many2many → res.partner
compute='_compute_agents'
search='_search_agents'
string='Agents'
args: 'res.partner'
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
recompute_lines_agents(self)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_order
Date
readonly=True
args: 'Order Date'
order_line_id
Many2one → sale.order.line
readonly=True
args: 'sale.order.line', 'Order line'
order_state
Selection
readonly=True
selection='_get_selection_order_state'
string='Order Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
salesman_id
Many2one → res.users
readonly=True
string='Salesperson'
args: 'res.users'
uom_id
Many2one → uom.uom
readonly=True
args: 'uom.uom', 'Unit of Measure'
init(self)
agents
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
string='Agents & commissions'
create(self, vals)
currency_id
Many2one
readonly=True
related='object_id.currency_id'
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
oldname='sale_line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/11.0/sale_commission |
| VERSION | |
| VERSION | 2.3.0 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Davide Corio, Pedro M. Baeza, GitHub, Enric Tobella, Stéphane Bidoul (ACSONE), Jordi Ballester Alomar, Alex Comba, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Levent Karakaş, Oihane Crucelaegui, rgarnau, javierjcf, ernesto, etobella, rodrigo, acm1pt-colorado |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/commission |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - web_planner - portal - http_routing - sale_management - sale - sales_team - account_invoicing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_form_agent |
account.invoice.form.agent | account.invoice | field | Inherits account.invoice_form |
invoice_line_agent_tree |
account.invoice.line.agent.tree | account.invoice.line.agent | tree | New |
invoice_line_form_agent |
account.invoice.line.form.agent | account.invoice.line | field | Inherits account.view_invoice_line_form |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
report_settlement |
report_settlement | ir.ui.view | qweb | New |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_res_partner_filter |
res.partner.select | res.partner | filter | Inherits base.view_res_partner_filter |
view_sale_commission_analysis_graph |
sale.commission.analysis.graph | sale.commission.analysis.report | graph | New |
view_sale_commission_analysis_pivot |
sale.commission.analysis.pivot | sale.commission.analysis.report | pivot | New |
view_sale_commission_analysis_search |
sale.commission.analysis.search | sale.commission.analysis.report | search | New |
view_sale_commission_mixin_agent_only |
sale.commission.mixin | form | New | |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
action_cancel(self)
invoice_validate(self)
recompute_lines_agents(self)
agents
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
any_settled
Boolean
compute='_compute_any_settled'
create(self, vals)
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company'
store=True
currency_id
Many2one
readonly=True
related='object_id.currency_id'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='object_id.invoice_id'
store=True
string='Invoice'
invoice_date
Date
readonly=True
related='invoice.date_invoice'
store=True
string='Invoice date'
object_id
Many2one → account.invoice.line
comodel_name='account.invoice.line'
oldname='invoice_line'
settled
Boolean
compute='_compute_settled'
store=True
No public methods.
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_type
Selection
default='agent'
required=True
selection=[('agent', 'External agent')]
string='Type'
agents
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain=[('agent', '=', True)]
relation='partner_agent_rel'
commission
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
required=True
selection=[('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlements
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent'
readonly=True
create(self, vals)
default_get(self, fields_list)
onchange_agent_type(self)
onchange_parent_id(self)
write(self, vals)
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
sections
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission'
settlements
Many2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
calculate_section(self, base)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_invoice
Date
readonly=True
args: 'Date Invoice'
invoice_line_id
Many2one → account.invoice.line
readonly=True
args: 'account.invoice.line', 'Invoice line'
invoice_state
Selection
readonly=True
selection='_get_selection_invoice_state'
string='Invoice Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
settled
Boolean
readonly=True
args: 'Settled'
uom_id
Many2one → product.uom
readonly=True
args: 'product.uom', 'Unit of Measure'
init(self)
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
amount
Monetary
compute='_compute_amount'
store=True
string='Commission Amount'
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
object_id
Many2one → sale.commission.mixin
comodel_name='sale.commission.mixin'
copy=False
ondelete='cascade'
required=True
string='Parent'
onchange_agent(self)
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='journal.company_id'
date
Date
from_settlement
Boolean
default=_default_from_settlement
journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'purchase')]"
required=True
product
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlements
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlements
domain="[('state', '=', 'settled'),('agent_type', '=', 'agent'),('company_id', '=', company_id)]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agents
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
agents
One2many → sale.commission.line.mixin
comodel_name='sale.commission.line.mixin'
copy=True
default=<expr>
help='Agents/Commissions related to the invoice line.'
inverse_name='object_id'
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
commission_status
Char
compute='_compute_commission_status'
string='Commission'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
button_edit_agents(self)
recompute_agents(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent.agent_type'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
readonly=True
string='Generated invoice'
lines
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement'
readonly=True
string='Settlement lines'
name
Char
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
create_invoice_header(self, journal, date)
make_invoices(self, journal, product, date=False)
unlink(self)
agent
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='settlement.company_id'
currency_id
Many2one
readonly=True
related='agent_line.currency_id'
store=True
date
Date
related='agent_line.invoice_date'
store=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
related='agent_line.object_id'
store=True
settled_amount
Monetary
readonly=True
related='agent_line.amount'
store=True
settlement
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
recompute_lines_agents(self)
agents
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
string='Agents & commissions'
create(self, vals)
currency_id
Many2one
readonly=True
related='object_id.currency_id'
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
oldname='sale_line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/10.0/sale_commission |
| VERSION | |
| VERSION | 2.6.0 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), AvanzOSC, Agile Business Group |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), AvanzOSC, Agile Business Group |
| COMMITTERS | |
| COMMITTERS | eLBati, Pedro M. Baeza, GitHub, Carlos Dauden, OCA Transbot, hurrinico, oca-travis, Weblate, OCA-git-bot, Hendrix Costa, SimoRubi, javierjcf |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:19:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - account - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - web_planner - sale - sales_team - procurement |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_form_agent |
account.invoice.form.agent | account.invoice | field | Inherits account.invoice_form |
invoice_line_agent_tree |
account.invoice.line.agent.tree | account.invoice.line.agent | tree | New |
invoice_line_form_agent |
account.invoice.line.form.agent | account.invoice.line | field | Inherits account.view_invoice_line_form |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
report_settlement |
report_settlement | ir.ui.view | qweb | New |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_account_invoice_filter |
Commission filter on account invoices | account.invoice | search | Inherits account.view_account_invoice_filter |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | xpath | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_res_partner_filter |
res.partner.select | res.partner | filter | Inherits base.view_res_partner_filter |
view_sale_commission_analysis_graph |
sale.commission.analysis.graph | sale.commission.analysis.report | graph | New |
view_sale_commission_analysis_pivot |
sale.commission.analysis.pivot | sale.commission.analysis.report | pivot | New |
view_sale_commission_analysis_search |
sale.commission.analysis.search | sale.commission.analysis.report | search | New |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_sales_order_filter |
Commission filter on sale orders | sale.order | search | Inherits sale.view_sales_order_filter |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_pivot |
sale.commission.settlement.line.pivot | sale.commission.settlement.line | pivot | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
action_cancel(self)
invoice_validate(self)
recompute_lines_agents(self)
agents
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
No public methods.
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
amount
Float
compute='_compute_amount'
store=True
string='Amount settled'
company_id
Many2one
readonly=True
related='object_id.company_id'
store=True
currency_id
Many2one
readonly=True
related='object_id.currency_id'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='object_id.invoice_id'
store=True
string='Invoice'
invoice_date
Date
readonly=True
related='invoice.date_invoice'
store=True
string='Invoice date'
object_id
Many2one → account.invoice.line
comodel_name='account.invoice.line'
oldname='invoice_line'
product
Many2one → product.product
comodel_name='product.product'
related='object_id.product_id'
settled
Boolean
compute='_compute_settled'
copy=False
store=True
No public methods.
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_type
Selection
default='agent'
required=True
selection=[('agent', 'External agent')]
string='Type'
agents
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain=[('agent', '=', True)]
relation='partner_agent_rel'
commission
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
required=True
selection=[('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlements
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent'
readonly=True
onchange_agent_type(self)
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
sections
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission'
settlements
Many2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
calculate_section(self, base)
agent_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
amount
Float
readonly=True
args: 'Amount'
categ_id
Many2one → product.category
readonly=True
args: 'product.category', 'Category of Product'
commission_id
Many2one → sale.commission
readonly=True
args: 'sale.commission', 'Sale commission'
company_id
Many2one → res.company
readonly=True
args: 'res.company', 'Company'
date_invoice
Date
readonly=True
args: 'Date Invoice'
invoice_line_id
Many2one → account.invoice.line
readonly=True
args: 'account.invoice.line', 'Invoice line'
invoice_state
Selection
readonly=True
selection='_get_selection_invoice_state'
string='Invoice Status'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Partner'
percentage
Integer
readonly=True
args: 'Percentage of commission'
price_subtotal
Float
readonly=True
args: 'Price subtotal'
price_unit
Float
readonly=True
args: 'Price unit'
product_id
Many2one → product.product
readonly=True
args: 'product.product', 'Product'
quantity
Float
readonly=True
args: '# of Qty'
settled
Boolean
readonly=True
args: 'Settled'
uom_id
Many2one → product.uom
readonly=True
args: 'product.uom', 'Unit of Measure'
init(self)
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
object_id
Many2one → sale.commission.mixin
comodel_name='sale.commission.mixin'
copy=False
ondelete='cascade'
required=True
string='Parent'
onchange_agent(self)
date
Date
from_settlement
Boolean
default=_default_from_settlement
journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'purchase')]"
required=True
product
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlements
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlements
domain="[('state', '=', 'settled')]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agents
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
agents
One2many → sale.commission.line.mixin
comodel_name='sale.commission.line.mixin'
copy=True
default=_default_agents
help='Agents/Commissions related to the invoice line.'
inverse_name='object_id'
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
commission_status
Char
compute='_compute_commission_status'
string='Commission'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
create(self, vals)
recompute_agents(self)
write(self, vals)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent.agent_type'
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
readonly=True
string='Generated invoice'
lines
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement'
readonly=True
string='Settlement lines'
name
Char
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
create_invoice_header(self, journal, date)
make_invoices(self, journal, product, date=False)
unlink(self)
agent
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission'
company_id
Many2one → res.company
comodel_name='res.company'
related='settlement.company_id'
currency_id
Many2one
readonly=True
related='agent_line.currency_id'
store=True
date
Date
related='agent_line.invoice_date'
store=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
related='agent_line.object_id'
store=True
settled_amount
Float
readonly=True
related='agent_line.amount'
store=True
settlement
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
recompute_lines_agents(self)
agents
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
No public methods.
amount
Float
compute='_compute_amount'
store=True
object_id
Many2one → sale.order.line
comodel_name='sale.order.line'
oldname='sale_line'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/9.0/sale_commission |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Pexego, Abstract, Serv. Tecnol. Avanzados - Pedro M. Baeza, Avanzosc, Savoir-faire linux |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Pexego, Abstract, Serv. Tecnol. Avanzados - Pedro M. Baeza, Avanzosc, Savoir-faire linux |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, Oihane Crucelaegui, Hugo Rodrigues |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:19 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - account - base_setup - web_kanban - web - product - decimal_precision - bus - report - analytic - web_tip - web_planner - sale - sales_team - procurement |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_team_salesteams_view_kanban |
crm.team.kanban | crm.team | data | Inherits sales_team.crm_team_salesteams_view_kanban |
invoice_form_agent |
account.invoice.form.agent | account.invoice | field | Inherits account.invoice_form |
invoice_line_agent_tree |
account.invoice.line.agent.tree | account.invoice.line.agent | tree | New |
invoice_line_form_agent |
account.invoice.line.form.agent | account.invoice.line | field | Inherits account.view_invoice_line_form |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | field | Inherits sale.view_order_form |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_res_partner_filter |
res.partner.select | res.partner | filter | Inherits base.view_res_partner_filter |
view_sale_order_line_tree |
sale.order.line.agent.tree | sale.order.line.agent | tree | New |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
action_cancel(self)
invoice_validate(self)
agents
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
copy=True
default=_default_agents
help='Agents/Commissions related to the invoice line.'
inverse_name='invoice_line'
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
amount
Float
compute='_compute_amount'
store=True
string='Amount settled'
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_date
Date
readonly=True
related='invoice.date_invoice'
store=True
string='Invoice date'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
copy=False
ondelete='cascade'
required=True
product
Many2one → product.product
comodel_name='product.product'
related='invoice_line.product_id'
settled
Boolean
compute='_compute_settled'
copy=False
store=True
onchange_agent(self)
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_type
Selection
default='agent'
required=True
selection=[('agent', 'External agent')]
string='Type'
agents
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain="[('agent', '=', True)]"
relation='partner_agent_rel'
commission
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
required=True
selection=[('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlements
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent'
readonly=True
onchange_agent_type(self)
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
sections
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission'
calculate_section(self, base)
date
Date
from_settlement
Boolean
default=_default_from_settlement
journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'purchase')]"
required=True
product
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
settlements
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlements
domain="[('state', '=', 'settled')]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agents
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent.agent_type'
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
readonly=True
string='Generated invoice'
lines
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement'
readonly=True
string='Settlement lines'
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
make_invoices(self, journal, product, date=False)
unlink(self)
agent
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission'
date
Date
related='agent_line.invoice_date'
store=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
related='agent_line.invoice_line'
store=True
settled_amount
Float
readonly=True
related='agent_line.amount'
store=True
settlement
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
No public methods.
agents
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
copy=True
default=_default_agents
inverse_name='sale_line'
readonly=True
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True')]"
ondelete='restrict'
required=True
amount
Float
compute='_compute_amount'
store=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
sale_line
Many2one → sale.order.line
comodel_name='sale.order.line'
ondelete='cascade'
required=True
onchange_agent(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/8.0/sale_commission |
| VERSION | |
| VERSION | 3.1.1 |
| CATEGORY | |
| CATEGORY | Sales Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA), Pexego, Abstract, Avanzosc, Savoire-faire linux |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA), Pexego, Abstract, Avanzosc, Savoire-faire linux |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Holger Brunn, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, PabloCM, Danimar Ribeiro, Nicola Malcontenti, oca-travis, Weblate, Daniel-CA, oihane, sergio, Iván Todorovich, Magno Costa - Akretion, Hendrix Costa, Nicolas Mac Rouillon, Giorgio Borelli, jesusVMayor |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:21 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/web: - web_widget_one2many_tags odoo/odoo: - base - account - base_setup - web_kanban - web - product - decimal_precision - report - analytic - board - edi - email_template - sale - sales_team - web_kanban_sparkline - account_voucher - procurement |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
invoice_form_agent |
account.invoice | field | Inherits account.invoice_form | |
invoice_line_agent_form |
account.invoice.line.agent | form | New | |
invoice_line_agent_tree |
account.invoice.line.agent | tree | New | |
invoice_line_form_agent |
account.invoice.line | field | Inherits account.view_invoice_line_form | |
product_template_form_view_commission |
product.template.common.form.commission | product.template | label | Inherits product.product_template_form_view |
sale_commission_form |
Sales commissions form | sale.commission | form | New |
sale_commission_make_invoice_form |
Make invoices | sale.commission.make.invoice | form | New |
sale_commission_tree |
Sales commissions tree | sale.commission | tree | New |
view_order_agent_form_inherit |
sale.order | field | Inherits sale.view_order_form | |
view_partner_form_agent |
res.partner.form.agent | res.partner | xpath | Inherits base.view_partner_form |
view_res_partner_filter |
res.partner.select | res.partner | filter | Inherits base.view_res_partner_filter |
view_sale_order_line_form |
sale.order.line.agent | form | New | |
view_sale_order_line_tree |
sale.order.line.agent | tree | New | |
view_settled_wizard |
Select period to settle | sale.commission.make.settle | form | New |
view_settlement_form |
Settlements | sale.commission.settlement | form | New |
view_settlement_line_graph |
sale.commission.settlement.line.graph | sale.commission.settlement.line | graph | New |
view_settlement_line_search |
sale.commission.settlement.line.search | sale.commission.settlement.line | search | New |
view_settlement_line_tree |
Settlement lines | sale.commission.settlement.line | tree | New |
view_settlement_search |
sale.commission.settlement.search | sale.commission.settlement | search | New |
view_settlement_tree |
Settlements tree | sale.commission.settlement | tree | New |
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
action_cancel(self)
invoice_validate(self)
agents
One2many → account.invoice.line.agent
comodel_name='account.invoice.line.agent'
copy=True
default=_default_agents
help='Agents/Commissions related to the invoice line.'
inverse_name='invoice_line'
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
ondelete='restrict'
required=True
agent_line
Many2many → sale.commission.settlement.line
column1='agent_line_id'
column2='settlement_id'
comodel_name='sale.commission.settlement.line'
copy=False
relation='settlement_agent_line_rel'
amount
Float
compute='_compute_amount'
store=True
string='Amount settled'
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
company_id
Many2one → res.company
related='invoice.company_id'
store=True
args: 'res.company', 'Company'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_date
Date
readonly=True
related='invoice.date_invoice'
store=True
string='Invoice date'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
copy=False
ondelete='cascade'
required=True
product
Many2one → product.product
comodel_name='product.product'
related='invoice_line.product_id'
settled
Boolean
compute='_compute_settled'
copy=False
store=True
name_get(self)
onchange_agent(self)
commission_free
Boolean
default=False
string='Free of commission'
No public methods.
agent
Boolean
help='Check this field if the partner is a creditor or an agent.'
string='Creditor/Agent'
agent_type
Selection
default='agent'
required=True
selection=[('agent', 'External agent')]
string='Type'
agents
Many2many → res.partner
column1='partner_id'
column2='agent_id'
comodel_name='res.partner'
domain="[('agent', '=', True)]"
relation='partner_agent_rel'
commission
Many2one → sale.commission
comodel_name='sale.commission'
help='This is the default commission used in the sales where this agent is assigned. It can be changed on each operation if needed.'
string='Commission'
settlement
Selection
default='monthly'
required=True
selection=[('monthly', 'Monthly'), ('quaterly', 'Quarterly'), ('semi', 'Semi-annual'), ('annual', 'Annual')]
string='Settlement period'
settlements
One2many → sale.commission.settlement
comodel_name='sale.commission.settlement'
inverse_name='agent'
readonly=True
onchange_agent_type(self)
active
Boolean
default=True
amount_base_type
Selection
default='gross_amount'
required=True
selection=[('gross_amount', 'Gross Amount'), ('net_amount', 'Net Amount')]
string='Base'
commission_type
Selection
default='fixed'
required=True
selection=[('fixed', 'Fixed percentage'), ('section', 'By sections')]
string='Type'
company_id
Many2one → res.company
default=_get_default_company_id
string='Company'
args: 'res.company'
fix_qty
Float
string='Fixed percentage'
invoice_state
Selection
default='open'
required=True
string='Invoice Status'
args: [('open', 'Invoice Based'), ('paid', 'Payment Based')]
name
Char
required=True
args: 'Name'
sections
One2many → sale.commission.section
comodel_name='sale.commission.section'
inverse_name='commission'
calculate_section(self, base)
date
Date
from_settlement
Boolean
default=_default_from_settlement
journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_journal
domain="[('type', '=', 'purchase')]"
required=True
product
Many2one → product.product
comodel_name='product.product'
required=True
string='Product for invoicing'
refund_journal
Many2one → account.journal
comodel_name='account.journal'
default=_default_refund_journal
domain="[('type', '=', 'purchase_refund')]"
required=True
string='Refund Journal'
settlements
Many2many → sale.commission.settlement
column1='wizard_id'
column2='settlement_id'
comodel_name='sale.commission.settlement'
default=_default_settlements
domain="[('state', '=', 'settled')]"
relation='sale_commission_make_invoice_settlement_rel'
button_create(self)
agents
Many2many → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
date_to
Date
default=fields.Date.today()
required=True
args: 'Up to'
action_settle(self)
amount_from
Float
string='From'
amount_to
Float
string='To'
commission
Many2one → sale.commission
string='Commission'
args: 'sale.commission'
percent
Float
required=True
string='Percent'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True)]"
agent_type
Selection
related='agent.agent_type'
company_id
Many2one → res.company
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=_default_currency
readonly=True
date_from
Date
string='From'
date_to
Date
string='To'
invoice
Many2one → account.invoice
comodel_name='account.invoice'
readonly=True
string='Generated invoice'
lines
One2many → sale.commission.settlement.line
comodel_name='sale.commission.settlement.line'
inverse_name='settlement'
readonly=True
string='Settlement lines'
state
Selection
default='settled'
readonly=True
selection=[('settled', 'Settled'), ('invoiced', 'Invoiced'), ('cancel', 'Canceled'), ('except_invoice', 'Invoice exception')]
string='State'
total
Float
compute='_compute_total'
readonly=True
store=True
action_cancel(self)
action_invoice(self)
make_invoices(self, journal, refund_journal, product, date=False)
unlink(self)
agent
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='agent_line.agent'
store=True
agent_line
Many2many → account.invoice.line.agent
column1='settlement_id'
column2='agent_line_id'
comodel_name='account.invoice.line.agent'
relation='settlement_agent_line_rel'
required=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
related='agent_line.commission'
company_id
Many2one → res.company
related='settlement.company_id'
store=True
args: 'res.company', 'Company'
date
Date
related='agent_line.invoice_date'
store=True
invoice
Many2one → account.invoice
comodel_name='account.invoice'
related='invoice_line.invoice_id'
store=True
string='Invoice'
invoice_line
Many2one → account.invoice.line
comodel_name='account.invoice.line'
related='agent_line.invoice_line'
store=True
settled_amount
Float
readonly=True
related='agent_line.amount'
store=True
settlement
Many2one → sale.commission.settlement
ondelete='cascade'
readonly=True
required=True
args: 'sale.commission.settlement'
No public methods.
commission_total
Float
compute='_compute_commission_total'
store=True
string='Commissions'
No public methods.
agents
One2many → sale.order.line.agent
comodel_name='sale.order.line.agent'
copy=True
default=_default_agents
inverse_name='sale_line'
readonly=True
string='Agents & commissions'
commission_free
Boolean
readonly=True
related='product_id.commission_free'
store=True
string='Comm. free'
No public methods.
agent
Many2one → res.partner
comodel_name='res.partner'
domain="[('agent', '=', True')]"
ondelete='restrict'
required=True
amount
Float
compute='_compute_amount'
store=True
commission
Many2one → sale.commission
comodel_name='sale.commission'
ondelete='restrict'
required=True
sale_line
Many2one → sale.order.line
comodel_name='sale.order.line'
ondelete='cascade'
required=True
name_get(self)
onchange_agent(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/commission |
| GIT | |
| GIT | https://github.com/OCA/commission.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/commission/tree/7.0/sale_commission |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/Sales & Purchases |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Pexego |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Pexego |
| COMMITTERS | |
| COMMITTERS | Davide Corio, Alexandre Fayolle, Joao Alfredo Gama Batista, Sandy Carter, Maxime Chambreuil, Pedro M. Baeza, marta pexego, Luis Felipe Mileo, Alex Comba, Launchpad Translations on behalf of openerp-icm |
| WEBSITE | |
| WEBSITE | |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:13 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - account - base_setup - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template - sale - account_voucher - hr - resource - stock |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Sales commissions
=================
This modules allow you to define sales agents and assign customers to them.
You can then generate the supplier invoices to pay their commissions.
Video : http://www.youtube.com/watch?v=NDqRnF1qKS0
Contributors
============
Davide Corio <davide.corio@domsense.com>
Joao Alfredo Gama Batista <joao.gama@savoirfairelinux.com>
Sandy Carter <sandy.carter@savoirfairelinux.com>
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
commission_form |
Commissions | commission | form | New |
commission_tree |
commission.tree | commission | tree | New |
invoice_form_add_agent_field |
account.invoice.form.add_agent_field | account.invoice | field | Inherits account.invoice_form |
invoice_form_add_code_country |
account.invoice.form.add_code_country | account.invoice | field | Inherits account.invoice_tree |
invoice_line_agent_form |
invoice.line.agent.form | invoice.line.agent | form | New |
invoice_line_agent_tree |
invoice.line.agent.tree | invoice.line.agent | tree | New |
invoice_line_form_agent |
account.invoice.line.agent.form | account.invoice.line | field | Inherits account.view_invoice_line_form |
invoice_supplier_form_add_agent_field |
account.invoice.supplier.form.add_agent_field | account.invoice | field | Inherits account.invoice_supplier_form |
product_normal_form_view_exclude_commisions |
product.normal.form.exclude_commissions | product.product | field | Inherits product.product_normal_form_view |
sale_order_agent_comision_form |
sale.order.agent.comision.form. | sale.order.agent | form | New |
stock_picking_form_add_agent_field |
stock.picking.form.add_agent_field | stock.picking | field | Inherits stock.view_picking_out_form |
view_order_agent_form_inherit |
sale.agent.order.inherit.form | sale.order | field | Inherits sale.view_order_form |
view_partner_agent_comision_form |
partner.agent.comision.form.inherit | res.partner.agent | form | New |
view_partner_agent_comision_tree |
partner.agent.comision.tree.inherit | res.partner.agent | tree | New |
view_partner_form_add_agent |
res.partner.form.add_agent | res.partner | xpath | Inherits base.view_partner_form |
view_partner_form_add_agents |
res.partner.form.add_agents | res.partner | field | Inherits view_partner_form_add_agent |
view_recalculate_commision_wizard |
Select period to recalculate | recalculate.commission.wizard | form | New |
view_sale_agen_search model |
commission.sale.agent.search | sale.agent | search | New |
view_sale_agent_comision_tree |
sale.agent.comision.tree | sale.order.agent | tree | New |
view_saleagent_form |
saleagent.info.form | sale.agent | form | New |
view_saleagent_tree |
saleagent.info.tree | sale.agent | tree | New |
view_settled_invoice |
Make invoices | settled.invoice.wizard | form | New |
view_settled_invoice_agent_form |
Settled_invoice_agent_form | settled.invoice.agent | form | New |
view_settled_invoice_agent_tree |
Settled_invoice_agent_tree | settled.invoice.agent | tree | New |
view_settled_invoice_summary_search |
commission.settled.invoice.summary.search | settled.invoice.agent | search | New |
view_settled_wizard |
Select period to settle | settled.wizard | form | New |
view_settlement_agent_form |
Settlement Agent | settlement.agent | form | New |
view_settlement_agent_search |
commission.settlement.agent.summary.search | settlement.agent | search | New |
view_settlement_agent_tree |
Settlement_agent_tree | settlement.agent | tree | New |
view_settlement_form |
Settlements | settlement | form | New |
view_settlement_line_tree |
Settlement Lines | settlement.line | tree | New |
view_settlement_search |
settlement.search | settlement | search | New |
view_settlement_tree |
settlements_tree | settlement | tree | New |
No new fields.
Public methods (1)onchange_partner_id(self, cr, uid, ids, type, part, date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)calcula_tramos(self, cr, uid, ids, base, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (3)calculate_commission(self, cr, uid, ids, context=None)
onchange_agent_id(self, cr, uid, ids, agent_id, context=None)
onchange_commission_id(self, cr, uid, ids, agent_id, commission_id, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, connect=None, context=None)
recalculate_exec(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (3)name_get(self, cr, uid, ids, context=None)
onchange_agent_id(self, cr, uid, ids, agent_id, context=None)
onchange_commission_id(self, cr, uid, ids, agent_id=False, commission_id=False, context=None)
No new fields.
Public methods (1)calcula_tramos(self, cr, uid, ids, base, context=None)
No new fields.
Public methods (4)action_ship_create(self, cr, uid, ids, context=None)
create(self, cr, uid, values, context=None)
onchange_partner_id(self, cr, uid, ids, part, context=None)
write(self, cr, uid, ids, values, context=None)
No new fields.
Public methods (3)name_get(self, cr, uid, ids, context=None)
onchange_agent_id(self, cr, uid, ids, agent_id, context=None)
onchange_commission_id(self, cr, uid, ids, agent_id=False, commission_id=False, context=None)
No new fields.
Public methods (1)invoice_line_create(self, cr, uid, ids, context=None)
No new fields.
Public methods (1)init(self, cr)
No new fields.
Public methods (1)create_invoice(self, cr, uid, ids, context=None)
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, connect=None, context=None)
settlement_exec(self, cr, uid, ids, context=None)
No new fields.
Public methods (4)action_cancel(self, cr, uid, ids, context=None)
action_invoice_create(self, cursor, user, ids, journal_id, product_id, context=None)
calcula(self, cr, uid, ids, agent_ids, date_from, date_to, context=None)
unlink(self, cr, uid, ids, context=None)
No new fields.
Public methods (3)action_invoice_create(self, cr, uid, ids, journal_id, product_id, context=None)
calcula(self, cr, uid, ids, date_from, date_to, context=None)
get_currency_id(self, cr, uid, picking, context=None)
No new fields.
Public methods (1)calcula(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.