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
92 changes: 92 additions & 0 deletions sale_margin_pricelist_computation/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
=================================
Sale Margin Pricelist Computation
=================================

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

.. |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%2Fmargin--analysis-lightgray.png?logo=github
:target: https://github.com/OCA/margin-analysis/tree/18.0/sale_margin_pricelist_computation
:alt: OCA/margin-analysis
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/margin-analysis-18-0/margin-analysis-18-0-sale_margin_pricelist_computation
: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/margin-analysis&target_branch=18.0
:alt: Try me on Runboat

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

This module allows the use of formulas to calculate the margin of sale
order lines.

**Table of contents**

.. contents::
:local:

Usage
=====

1. Go to *Sales > Products > Pricelists* and select one or create a new
one.
2. Add a new Price Rule or select an existing one.
3. Fill in the fields *Margin Cost Price Formula* and/or *Margin Sale
Price Formula*.
4. Create a new Sales Order and set the previously created pricelist.
5. You will see that the margin is calculated using the formulas from
the pricelist.

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/margin-analysis/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/margin-analysis/issues/new?body=module:%20sale_margin_pricelist_computation%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
-------

* Tecnativa

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

- `Tecnativa <https://www.tecnativa.com>`__:

- Pedro M. Baeza
- Andrii Kompaniiets

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/margin-analysis <https://github.com/OCA/margin-analysis/tree/18.0/sale_margin_pricelist_computation>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions sale_margin_pricelist_computation/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models
15 changes: 15 additions & 0 deletions sale_margin_pricelist_computation/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright 2021 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Sale Margin Pricelist Computation",
"summary": "Calculation of margins based on price lists",
"version": "18.0.1.0.0",
"category": "Sale",
"website": "https://github.com/OCA/margin-analysis",
"author": "Tecnativa, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["sale_margin"],
"data": ["views/product_pricelist_item_views.xml"],
}
134 changes: 134 additions & 0 deletions sale_margin_pricelist_computation/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_margin_pricelist_computation
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-28 14:14+0000\n"
"PO-Revision-Date: 2026-04-28 16:16+0200\n"
"Last-Translator: Andrii Kompaniiets <andrii.kompaniiets@tecnativa.com>\n"
"Language-Team: \n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.9\n"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>env</code>: The Sale Order Line environment"
msgstr "<code>env</code>: El entorno de la línea de pedido de venta"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid ""
"<code>float_compare()</code>: utility function to compare floats based on a "
"specific precision"
msgstr ""
"<code>float_compare()</code>: función para comparar números de tipo float en "
"función de una precisión específica"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid ""
"<code>line.product_uom_qty</code>, <code>line.qty_delivered</code>: Ordered "
"and delivered quantities"
msgstr ""
"<code>line.product_uom_qty</code>, <code>line.qty_delivered</code>: "
"Cantidades pedidas y entregadas"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>line</code>: Order Line (sale.order.line)"
msgstr "<code>line</code>: Línea de pedido de venta (sale.order.line)"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>pricelist</code>: Current pricelist"
msgstr "<code>pricelist</code>: Lista de precios"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>pricelist_item</code>: Current pricelist rule"
msgstr "<code>item</code>: Regla de precio de la linea"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product.list_price</code>: Product sale price"
msgstr "<code>product.list_price</code>: Precio de venta del producto"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product.standard_price</code>: Product cost"
msgstr "<code>product.standard_price</code>: Precio del producto"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product</code>: The Sale Order Line product"
msgstr "<code>product</code>: El producto de la línea de pedido de venta"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "Example of Python code:"
msgstr "Ejemplo de código en Python:"

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,field_description:sale_margin_pricelist_computation.field_product_pricelist_item__margin_cost_price_formula
msgid "Margin Cost Price Formula"
msgstr "Margen del precio de coste"

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,field_description:sale_margin_pricelist_computation.field_product_pricelist_item__margin_sale_price_formula
msgid "Margin Sale Price Formula"
msgstr "Margen del precio de pedido de venta "

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "Margin's Formulas"
msgstr "Fórmulas de margen"

#. module: sale_margin_pricelist_computation
#: model:ir.model,name:sale_margin_pricelist_computation.model_product_pricelist_item
msgid "Pricelist Rule"
msgstr "Regla de precio"

#. module: sale_margin_pricelist_computation
#: model:ir.model,name:sale_margin_pricelist_computation.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de pedido de venta"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "The following variables can be used:"
msgstr "Se pueden utilizar las siguientes variables:"

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,help:sale_margin_pricelist_computation.field_product_pricelist_item__margin_cost_price_formula
msgid ""
"This formula is used to calculate the cost price for the purposes of "
"calculating the margin"
msgstr ""
"Esta fórmula se utiliza para calcular el precio de coste a efectos del "
"cálculo del margen"

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,help:sale_margin_pricelist_computation.field_product_pricelist_item__margin_sale_price_formula
msgid ""
"This formula is used to calculate the sales order price for the purposes of "
"margin calculation"
msgstr ""
"Esta fórmula se utiliza para calcular el precio del pedido de venta a "
"efectos del cálculo del margen"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "To return a result, assign: <code>result = {...}</code>"
msgstr "Para devolver un resultado, asigna: <code>result = {...}</code>"

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "result = 20 if line.price_unit &gt; 30 else 10"
msgstr ""
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_margin_pricelist_computation
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-28 14:14+0000\n"
"PO-Revision-Date: 2026-04-28 14:14+0000\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_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>env</code>: The Sale Order Line environment"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid ""
"<code>float_compare()</code>: utility function to compare floats based on a "
"specific precision"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid ""
"<code>line.product_uom_qty</code>, <code>line.qty_delivered</code>: Ordered "
"and delivered quantities"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>line</code>: Order Line (sale.order.line)"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>pricelist</code>: Current pricelist"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>pricelist_item</code>: Current pricelist rule"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product.list_price</code>: Product sale price"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product.standard_price</code>: Product cost"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "<code>product</code>: The Sale Order Line product"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "Example of Python code:"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,field_description:sale_margin_pricelist_computation.field_product_pricelist_item__margin_cost_price_formula
msgid "Margin Cost Price Formula"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,field_description:sale_margin_pricelist_computation.field_product_pricelist_item__margin_sale_price_formula
msgid "Margin Sale Price Formula"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "Margin's Formulas"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model,name:sale_margin_pricelist_computation.model_product_pricelist_item
msgid "Pricelist Rule"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model,name:sale_margin_pricelist_computation.model_sale_order_line
msgid "Sales Order Line"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "The following variables can be used:"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,help:sale_margin_pricelist_computation.field_product_pricelist_item__margin_cost_price_formula
msgid ""
"This formula is used to calculate the cost price for the purposes of "
"calculating the margin"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model:ir.model.fields,help:sale_margin_pricelist_computation.field_product_pricelist_item__margin_sale_price_formula
msgid ""
"This formula is used to calculate the sales order price for the purposes of "
"margin calculation"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "To return a result, assign: <code>result = {...}</code>"
msgstr ""

#. module: sale_margin_pricelist_computation
#: model_terms:ir.ui.view,arch_db:sale_margin_pricelist_computation.margin_product_pricelist_item_form_view
msgid "result = 20 if line.price_unit &gt; 30 else 10"
msgstr ""
2 changes: 2 additions & 0 deletions sale_margin_pricelist_computation/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import product_pricelist_item
from . import sale_order_line
Loading
Loading