Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions sale_commission_margin_oca/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
======================
Sale Commission Margin
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:8106e37e1be0140a76412653a94e7c1e14f2817690d3a275bcf62c4958861053
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcommission-lightgray.png?logo=github
:target: https://github.com/OCA/commission/tree/18.0/sale_commission_margin_oca
:alt: OCA/commission
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/commission-18-0/commission-18-0-sale_commission_margin_oca
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/commission&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the functionality of sale_margin and sale_commission
to deduct commissions from margin

**Table of contents**

.. contents::
:local:

Usage
=====

- Go to Sales -> Configuration -> Settings

- Scroll to pricing settings and check 'Margins' box.

- Go to Sales -> Orders -> Quotations

- Create new quotation and set:

1. Customer
2. One order line

- In the order line created press edit agents button and set an agent.

- The agent commission amount should be deducted from margin.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/commission/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/commission/issues/new?body=module:%20sale_commission_margin_oca%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Dixmit

Contributors
------------

-Luis Rodríguez luis.rodriguez@dixmit.com
(`www.dixmit.com <http://www.dixmit.com>`__)

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/commission <https://github.com/OCA/commission/tree/18.0/sale_commission_margin_oca>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions sale_commission_margin_oca/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
19 changes: 19 additions & 0 deletions sale_commission_margin_oca/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2025 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Sale Commission Margin",
"summary": """This addons allows commissions to be deducted from the margin.""",
"version": "18.0.1.0.0",
"license": "AGPL-3",
"author": "Dixmit,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/commission",
"depends": [
"sale_margin",
"sale_commission_oca",
],
"data": [
"views/sale_order_view.xml",
],
"demo": [],
}
74 changes: 74 additions & 0 deletions sale_commission_margin_oca/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_commission_margin
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-06-04 10:26+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents & commissions"
msgstr "Agenti & provvigioni"

#. module: sale_commission_margin
#: model:ir.model.fields,help:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents/Commissions related to the invoice line."
msgstr "Agenti/provvigioni collegati alla riga fattura."

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__commission_free
msgid "Comm. free"
msgstr "Senza provvigione"

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__commission_id
msgid "Commission"
msgstr "Provvigione"

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__amount
msgid "Commission Amount"
msgstr "Importo provvigione"

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_mixin
msgid ""
"Mixin model for applying to any object that wants to handle commissions"
msgstr ""
"Modello mixin da applicare a qualsiasi oggetto che voglia gestire le "
"provvigioni"

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_line_mixin
msgid ""
"Mixin model for having commission agent lines in any object inheriting from "
"this one"
msgstr ""
"Modello mixin per avere righe di provvigione agente in qualsiasi oggetto che "
"erediti dall'attuale"

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"
68 changes: 68 additions & 0 deletions sale_commission_margin_oca/i18n/pt_BR.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_commission_margin
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents & commissions"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,help:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents/Commissions related to the invoice line."
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__commission_free
msgid "Comm. free"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__commission_id
msgid "Commission"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__amount
msgid "Commission Amount"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_mixin
msgid ""
"Mixin model for applying to any object that wants to handle commissions"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_line_mixin
msgid ""
"Mixin model for having commission agent lines in any object inheriting from "
"this one"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
67 changes: 67 additions & 0 deletions sale_commission_margin_oca/i18n/sale_commission_margin.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_commission_margin
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents & commissions"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,help:sale_commission_margin.field_account_move_line__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_commission_mixin__agent_ids
#: model:ir.model.fields,help:sale_commission_margin.field_sale_order_line__agent_ids
msgid "Agents/Commissions related to the invoice line."
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_move_line__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_mixin__commission_free
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line__commission_free
msgid "Comm. free"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__commission_id
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__commission_id
msgid "Commission"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model.fields,field_description:sale_commission_margin.field_account_invoice_line_agent__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_commission_line_mixin__amount
#: model:ir.model.fields,field_description:sale_commission_margin.field_sale_order_line_agent__amount
msgid "Commission Amount"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_mixin
msgid ""
"Mixin model for applying to any object that wants to handle commissions"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_commission_line_mixin
msgid ""
"Mixin model for having commission agent lines in any object inheriting from "
"this one"
msgstr ""

#. module: sale_commission_margin
#: model:ir.model,name:sale_commission_margin.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
2 changes: 2 additions & 0 deletions sale_commission_margin_oca/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import commission_mixin
from . import sale_order_line
36 changes: 36 additions & 0 deletions sale_commission_margin_oca/models/commission_mixin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2025 Dixmit - Luis Rodríguez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class CommissionMixin(models.AbstractModel):
_inherit = "commission.mixin"

agent_ids = fields.One2many(
compute="_compute_agent_ids",
store=True,
precompute=True,
)

commission_free = fields.Boolean(
compute="_compute_commission_free",
store=True,
precompute=True,
)


class CommissionLineMixin(models.AbstractModel):
_inherit = "commission.line.mixin"

commission_id = fields.Many2one(
compute="_compute_commission_id",
store=True,
precompute=True,
)

amount = fields.Monetary(
compute="_compute_amount",
store=True,
precompute=True,
)
22 changes: 22 additions & 0 deletions sale_commission_margin_oca/models/sale_order_line.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2025 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, models


class SaleOrderLine(models.Model):
_inherit = "sale.order.line"

@api.depends(
"price_subtotal", "product_uom_qty", "purchase_price", "agent_ids.amount"
)
def _compute_margin(self):
for line in self:
line.margin = (
line.price_subtotal
- (line.purchase_price * line.product_uom_qty)
- sum(line.mapped("agent_ids.amount"))
)
line.margin_percent = (
line.price_subtotal and line.margin / line.price_subtotal
)
3 changes: 3 additions & 0 deletions sale_commission_margin_oca/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
1 change: 1 addition & 0 deletions sale_commission_margin_oca/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-Luis Rodríguez <luis.rodriguez@dixmit.com> (www.dixmit.com)
Loading
Loading