Sales commissions based on paid amount

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

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_invoice_line_agent_form_partial_only account.invoice.line.agent form New
commission_settlement_line_partial_search commission.settlement.line.partial.search sale.commission.settlement.line.partial search New
commission_settlement_line_partial_tree commission.settlement.line.partial.tree sale.commission.settlement.line.partial tree Inherits commission_settlement_line_partial_tree_embedded
commission_settlement_line_partial_tree_embedded commission.settlement.line.partial.tree.embedded sale.commission.settlement.line.partial tree New
invoice_line_agent_partial_search invoice.line.agent.partial.search account.invoice.line.agent.partial search New
invoice_line_agent_partial_tree invoice.line.agent.partial.tree account.invoice.line.agent.partial tree Inherits invoice_line_agent_partial_tree_embedded
invoice_line_agent_partial_tree_embedded invoice.line.agent.partial.tree.embedded account.invoice.line.agent.partial tree New
invoice_line_agent_tree account.invoice.line.agent field Inherits sale_commission.invoice_line_agent_tree
res_config_settings_view_form res.config.settings.view.form.inherit.sale.management res.config.settings xpath Inherits sale_management.res_config_settings_view_form
sale_commission_payment_amount sale.commission.payment.amount.form sale.commission field Inherits sale_commission.sale_commission_form
view_settlement_form Settlements sale.commission.settlement xpath Inherits sale_commission.view_settlement_form
Models touched (10)

New fields (5)
  • commission_settlement_line_partial_ids One2many → sale.commission.settlement.line.partial
    compute='_compute_commission_settlement_line_partial_ids' args: 'sale.commission.settlement.line.partial'
  • invoice_line_agent_partial_ids One2many → account.invoice.line.agent.partial
    compute='_compute_invoice_line_agent_partial_ids' store=True args: 'account.invoice.line.agent.partial', 'invoice_line_agent_id'
  • is_fully_settled Boolean
    compute='_compute_is_fully_settled' store=True
  • partial_settled Monetary
    compute='_compute_partial_settled' store=True string='Partial Commission Amount Settled'
  • payment_amount_type Selection
    related='commission_id.payment_amount_type'
Public methods (1)
  • action_see_partial_commissions(self)

New fields (14)
  • account_partial_reconcile_id Many2one → account.partial.reconcile
    args: 'account.partial.reconcile'
  • agent_id Many2one
    related='invoice_line_agent_id.agent_id' store=True
  • amount Monetary
    compute='_compute_amount' store=True string='Commission Amount'
  • company_id Many2one → res.company
    related='move_id.company_id' args: 'res.company'
  • currency_id Many2one
    related='invoice_line_agent_id.currency_id'
  • date_maturity Date
    related='move_line_id.date_maturity' store=True
  • invoice_date Date
    related='invoice_line_agent_id.invoice_date' store=True
  • invoice_line_agent_id Many2one → account.invoice.line.agent
    ondelete='cascade' required=True args: 'account.invoice.line.agent'
  • invoice_line_id Many2one
    related='invoice_line_agent_id.object_id' string='Invoice Line'
  • is_settled Boolean
    compute='_compute_settled_amount' store=True string='Fully settled'
  • move_id Many2one
    related='move_line_id.move_id' string='Invoice'
  • move_line_id Many2one → account.move.line
    ondelete='cascade' required=True args: 'account.move.line'
  • settled_amount Monetary
    compute='_compute_settled_amount' store=True
  • settlement_line_partial_ids One2many → sale.commission.settlement.line.partial
    compute='_compute_settlement_line_partial_ids' store=True args: 'sale.commission.settlement.line.partial', 'invoice_agent_partial_id'
Public methods (0)

No public methods.

New fields (1)
  • account_invoice_line_agent_partial_ids One2many → account.invoice.line.agent.partial
    args: 'account.invoice.line.agent.partial', 'account_partial_reconcile_id'
Public methods (0)

No public methods.

New fields (1)
  • commission_show_settlement_dates Boolean
    args: 'Show invoice and payment dates in settlements'
Public methods (0)

No public methods.

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

No public methods.

New fields (1)
  • payment_amount_type Selection
    default='full' required=True string='Payment amount type' args: [('full', 'Full amount'), ('paid', 'Paid amount')]
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (4)
  • action_settle(self)
  • action_settle_partial(self)
  • get_partial_settlement_domain(self, agent, date_to_agent, date_to_payment)
  • get_partial_settlement_lines(self, agent, date_to_agent, date_to_payment)

New fields (3)
  • settlement_date_payment_to Date
    help='The payment date used to create the settlement' readonly=True string='Payment date up to'
  • settlement_date_to Date
    help='The invoice date used to create the settlement' readonly=True string='Invoice date up to'
  • show_settlement_dates Boolean
    related='company_id.commission_show_settlement_dates'
Public methods (0)

No public methods.

New fields (3)
  • agent_line_partial_ids Many2many → account.invoice.line.agent.partial
    column1='settlement_id' column2='agent_line_partial_id' comodel_name='account.invoice.line.agent.partial' relation='settlement_agent_line_partial_rel'
  • settled_amount Monetary
    compute='_compute_settled_amount' readonly=True related=False store=True
  • settlement_line_partial_ids Many2many → sale.commission.settlement.line.partial
    comodel_name='sale.commission.settlement.line.partial' relation='settlement_line_line_partial_rel'
Public methods (0)

No public methods.

New fields (17)
  • agent_id Many2one
    index=True related='invoice_agent_partial_id.agent_id' store=True
  • amount Monetary
    compute='_compute_amount' store=True
  • company_id Many2one
    related='move_id.company_id'
  • currency_id Many2one
    related='invoice_agent_partial_id.currency_id'
  • date_maturity Date
    index=True related='partial_reconcile_id.max_date' store=True
  • invoice_agent_partial_id Many2one → account.invoice.line.agent.partial
    comodel_name='account.invoice.line.agent.partial' ondelete='cascade' required=True
  • invoice_date Date
    related='invoice_agent_partial_id.invoice_date' store=True
  • invoice_line_agent_id Many2one
    related='invoice_agent_partial_id.invoice_line_agent_id'
  • invoice_line_id Many2one
    related='invoice_agent_partial_id.invoice_line_id'
  • is_settled Boolean
    compute='_compute_settlement_id' index=True store=True
  • move_id Many2one
    related='invoice_agent_partial_id.move_id'
  • partial_reconcile_id Many2one → account.partial.reconcile
    comodel_name='account.partial.reconcile' ondelete='cascade' required=True
  • reconcile_amount Monetary
    related='partial_reconcile_id.amount' string='Payment amount'
  • reconcile_credit_move_id Many2one → account.move.line
    related='partial_reconcile_id.credit_move_id' string='Credit move line' args: 'account.move.line'
  • reconcile_debit_move_id Many2one → account.move.line
    related='partial_reconcile_id.debit_move_id' string='Debit move line' args: 'account.move.line'
  • settlement_id Many2one → sale.commission.settlement
    compute='_compute_settlement_id' store=True args: 'sale.commission.settlement'
  • settlement_line_ids Many2many → sale.commission.settlement.line
    comodel_name='sale.commission.settlement.line' relation='settlement_line_line_partial_rel'
Public methods (2)
  • name_get(self)
  • unlink(self)