Product Margin and Margin Rate

product_standard_margin
REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/18.0/product_standard_margin
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Cyril VINH-TUNG, oca-ci, Bhavesh Heliconia
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add 2 fields on the product form that compute the standard (or
theorical) margin and markup based on the current values of sale and
standard price present in the product form. We take care of taxe
included or excluded.

It will just compute it as follow: Margin : (Sale Price without tax -
Standard Price) / Sale Price without tax Markup : (Sale Price without
tax - Standard Price) / Standard Price

![](../static/description/product_form.png)

**Note:**

As this module will base his simple computation on sale and cost prices,
it suppose you have them both in the same currency (the price type must
of the same currency for both of them). Remember this is the default
OpenERP configuration (price type of all product price fields are set as
the same as the company currency). We don't take care of it cause
otherwise we should have added a dependency on sale module.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_product_form product.product field Inherits product.product_normal_form_view
view_product_product_form_easy product.product field Inherits product.product_variant_easy_edit_view
view_product_product_tree_margin product.product field Inherits product.product_product_tree_view
view_product_template_form product.template xpath Inherits product.product_template_only_form_view
view_product_template_tree_margin product.template xpath Inherits product.product_template_tree_view
Models touched (2)

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' store=True string='Markup (%)'
Public methods (0)

No public methods.

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' string='Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' string='Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' string='Markup (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/16.0/product_standard_margin
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSSylvain LE GAL, Weblate, OCA-git-bot, oca-ci, Álvaro, Anh Vu, Hugo
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_product_form product.product field Inherits product.product_normal_form_view
view_product_product_form_easy product.product field Inherits product.product_variant_easy_edit_view
view_product_product_tree_margin product.product field Inherits product.product_product_tree_view
view_product_template_form product.template xpath Inherits product.product_template_only_form_view
view_product_template_tree_margin product.template xpath Inherits product.product_template_tree_view
Models touched (2)

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' store=True string='Markup (%)'
Public methods (0)

No public methods.

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' string='Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' string='Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' string='Markup (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/15.0/product_standard_margin
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSDenis Leemann, Weblate, OCA-git-bot, oca-ci, Nilesh Sheliya
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_product_form product.product field Inherits product.product_normal_form_view
view_product_product_form_easy product.product field Inherits product.product_variant_easy_edit_view
view_product_product_tree_margin product.product field Inherits product.product_product_tree_view
view_product_template_form product.template xpath Inherits product.product_template_only_form_view
view_product_template_tree_margin product.template xpath Inherits product.product_template_tree_view
Models touched (2)

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Theorical Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' store=True string='Theorical Markup (%)'
Public methods (0)

No public methods.

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' string='Theorical Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' string='Theorical Markup (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/14.0/product_standard_margin
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSDaniel Reis, Weblate, OCA-git-bot, Cyril VINH-TUNG, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_product_form product.product field Inherits product.product_normal_form_view
view_product_product_form_easy product.product field Inherits product.product_variant_easy_edit_view
view_product_product_tree_margin product.product field Inherits product.product_product_tree_view
view_product_template_form product.template xpath Inherits product.product_template_only_form_view
view_product_template_tree_margin product.template xpath Inherits product.product_template_tree_view
Models touched (2)

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Theorical Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' store=True string='Theorical Markup (%)'
Public methods (0)

No public methods.

New fields (4)
  • list_price_vat_excl Float
    compute='_compute_margin' digits='Product Price' string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits='Product Price' help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits='Product Price' help='Margin rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' string='Theorical Margin (%)'
  • standard_markup_rate Float
    compute='_compute_margin' digits='Product Price' help='Markup rate is [ Theorical Margin / cost price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no cost price set, will display 999.0' string='Theorical Markup (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/12.0/product_standard_margin
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSSylvain LE GAL, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_product_product_form product.product field Inherits product.product_normal_form_view
view_product_product_form_easy product.product field Inherits product.product_variant_easy_edit_view
view_product_template_form product.template xpath Inherits product.product_template_only_form_view
Models touched (2)

New fields (3)
  • list_price_vat_excl Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') help='Markup rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Theorical Margin (%)'
Public methods (0)

No public methods.

New fields (3)
  • list_price_vat_excl Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' string='Theorical Margin'
  • standard_margin_rate Float
    compute='_compute_margin' digits=dp.get_precision('Product Price') help='Margin rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' string='Theorical Margin (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/10.0/product_standard_margin
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE), Francisco Fernández @PlanetaTIC, oca-travis, OCA-git-bot, Marc Poch @PlanetaTIC
WEBSITE
WEBSITEhttps://github.com/OCA/margin-analysis
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/margin-analysis:
    - product_replenishment_cost
odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - sales_team
    - account
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Add a field on the product form that compute the standard (or theorical)
margin based on the current values of sale and replenishment cost present in
the product form. We take care of taxe included or excluded.

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
product_template_form_view product.template xpath Inherits product.product_template_only_form_view
view_product_product_form product.product xpath Inherits product.product_normal_form_view
Models touched (2)

New fields (3)
  • list_price_vat_excl Float
    compute='_get_margin' digits=dp.get_precision('Product Price') store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute='_get_margin' digits=dp.get_precision('Product Price') help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Margin'
  • standard_margin_rate Float
    compute='_get_margin' digits=dp.get_precision('Product Margin Precision') help='Markup rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude. If no sale price set, will display 999.0' store=True string='Margin (%)'
Public methods (0)

No public methods.

New fields (2)
  • standard_margin Float
    compute='_compute_standard_margin' digits=dp.get_precision('Product Price') help='Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Margin'
  • standard_margin_rate Float
    compute='_compute_standard_margin' digits=dp.get_precision('Product Price') help='Markup rate is [ Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude. If no sale price set, will display 999.0' store=True string='Margin (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/9.0/product_standard_margin
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.camptocamp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/margin-analysis:
    - product_replenishment_cost
odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - account
    - analytic
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_product_product_form product.product xpath Inherits product.product_normal_form_view
Models touched (1)

New fields (3)
  • list_price_vat_excl Float
    compute=_get_margin digits_compute=dp.get_precision('Product Price') store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute=_get_margin digits_compute=dp.get_precision('Product Price') help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Theorical Margin'
  • standard_margin_rate Float
    compute=_get_margin digits_compute=dp.get_precision('Product Margin Precision') help='Markup rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Theorical Margin (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/8.0/product_standard_margin
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp, GRAP
COMMITTERS
COMMITTERSStéphane Bidoul, Alexandre Fayolle, Sylvain LE GAL, Stéphane Bidoul (ACSONE), OCA-git-bot
WEBSITE
WEBSITEhttp://www.camptocamp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/margin-analysis:
    - product_replenishment_cost
odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - account
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_product_product_form product.product xpath Inherits product.product_normal_form_view
Models touched (1)

New fields (3)
  • list_price_vat_excl Float
    compute=_get_margin digits_compute=dp.get_precision('Product Price') store=True string='Sale Price VAT Excluded'
  • standard_margin Float
    compute=_get_margin digits_compute=dp.get_precision('Product Price') help='Theorical Margin is [ sale price (Wo Tax) - cost price ] of the product form (not based on historical values). Take care of tax include and exclude. If no sale price, the margin will be negativ.' store=True string='Theorical Margin'
  • standard_margin_rate Float
    compute=_get_margin digits_compute=dp.get_precision('Product Margin Precision') help='Markup rate is [ Theorical Margin / sale price (Wo Tax) ] of the product form (not based on historical values).Take care of tax include and exclude.. If no sale price set, will display 999.0' store=True string='Theorical Margin (%)'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/7.0/product_standard_margin
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSCamptocamp
COMMITTERS
COMMITTERSYannick Vaucher, Alexandre Fayolle, Joel Grand-Guillaume, Sylvain LE GAL
WEBSITE
WEBSITEhttp://www.camptocamp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/margin-analysis:
    - product_get_cost_field
odoo/odoo:
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - account
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
  Add a field on the product form that compute the standard (or theorical)
  margin based on the current values of sale and cost price present in the
  product form. We take care of taxe included or excluded.

  It will just compute it as follow: (Sale Price without tax - Cost Price) /
  Sale Price without tax

  Remember that this module can be used in conjonction with
  product_cost_incl_bom to have the cost price computed from the BOM when a
  product has one.

  WARNING:

  1) As this module will base his simple computation on sale and cost prices,
  it suppose you have them both in the same currency (the price type must of
  the same currency for both of them). Remember this is the default OpenERP
  configuration (price type of all product price fields are set as the same as
  the company currency). We don't take care of it cause otherwise we should
  have added a dependency on sale module.

  

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
sale_markup_product_form product.markup.view.form product.product xpath Inherits product.product_normal_form_view
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/margin-analysis
GIT
GIThttps://github.com/OCA/margin-analysis.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/margin-analysis/tree/6.1/product_standard_margin
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSCamptocamp
COMMITTERS
COMMITTERSAlexandre Fayolle, Joël Grand-Guillaume, unknown, Alexandre Fayolle @ camptocamp, Guewen Baconnier @ Camptocamp, Endian Solutions
WEBSITE
WEBSITEhttp://www.camptocamp.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/margin-analysis:
    - product_get_cost_field
odoo/odoo:
    - product
    - base
    - process
    - decimal_precision
    - account
    - base_setup
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
  Add a field on the product form that compute the standard (or theorical) margin based on the
  current values of sale and cost price present in the product form. We take care of taxe included
  or excluded.
  
  It will just compute it as follow : (Sale Price without tax - Cost Price) / Sale Price without tax
  
  Remember that this module can be used in conjonction with product_cost_incl_bom to have the 
  cost price computed from the BOM when a product has one.
  
  WARNING: 
  
  1) As this module will base his simple computation on sale and cost prices, it suppose
  you have them both in the same currency (the price type must of the same currency for both of 
  them). Remember this is the default OpenERP configuration (price type of all product price 
  fields are set as the same as the company currency). We don't take care of it cause otherwise
  we should have added a dependency on sale module.
  
  
  

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
sale_markup_product_form product.markup.view.form product.product group Inherits product.product_normal_form_view
Models touched (1)

New fields (0)

No new fields.

Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/margin-analysis
PULL REQUEST
PULL REQUEST[17.0] [MIG] product_standard_margin: Migration to 17.0 (#256)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/margin-analysis
PULL REQUEST
PULL REQUEST[MIG] product_standard_margin: Migration to 19.0 (#261)