Product Cost Price History Views

product_price_history
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/12.0/product_price_history
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), GRAP, Pordenone Linux User Group (PNLUG)
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), GRAP, Pordenone Linux User Group (PNLUG)
COMMITTERS
COMMITTERSeLBati, Sylvain LE GAL, OCA Transbot, oca-travis, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_product_normal_form_view_price_history view.product.normal.form.view.price.history product.product xpath Inherits product.product_normal_form_view
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_graph product.price.history graph New
view_product_price_history_tree view.product.price.history.tree product.price.history tree New
view_product_template_only_form_price_history view.product.template.only.form.price.history product.template xpath Inherits product.product_template_only_form_view
Models touched (3)

New fields (2)
  • cost Float
    group_operator='avg'
  • product_tmpl_id Many2one
    related='product_id.product_tmpl_id' store=True string='Product Template'
Public methods (0)

No public methods.

New fields (1)
  • price_history_count Integer
    compute='_compute_price_history_count' args: 'Price History Count'
Public methods (0)

No public methods.

New fields (1)
  • price_history_count Integer
    compute='_compute_price_history_count' args: 'Price History Count'
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_price_history
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - purchase
    - stock_account
    - stock
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Product Price History
=====================

This module allows you to:

* Record various prices of a same product for different companies. This
  way, every company can have its own costs (average or standard) and
  sale prices.
* Historize the prices in a way that you'll then be able to retrieve the
  cost (or sale) price at a given date.

Note that to benefit those values in stock report (or any other view that is based on SQL),
you'll have to adapt it to include this new historized table. Especially true for stock
valuation.

This module also contains demo data and various tests to ensure it works well. It shows
how to configure OpenERP properly when you have various company, each of them having 
their product setup in average price and using different currencies. The goal is to share
the products between all companies, keeping the right price for each of them.

As the prices are now historized, some information aren't revelant anymore in some report. This
module also hide the price information in those view to avoid having wrong informations. Instead
you'll find a view that allow you to retrive the product price and stock at a given date to value
your inventory properly.

Technically, this module updates the definition of field standard_price, list_price 
of the product and will make them stored in an external table. We override the read, 
write and create methods to achieve that and don't used ir.property for performance
and historization purpose.

You may want to also use the module analytic_multicurrency from `bzr branch lp:account-analytic/7.0`
in order to have a proper computation in analytic line as well (standard_price will be converted
in company currency with this module when computing cost of analytic line).

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

* Joël Grand-Guillaume <joel.grand-guillaume@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
product_price_type_view product.price.type.form product.price.type field Inherits product.product_price_type_view
product_search_form_view_stock product.product.price_history.form product.product div Inherits product.product_normal_form_view
view_historical_prices historic.prices.form historic.prices form New
view_product_price_history product.product.price.history.tree product.product tree New
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_from_product product.price.history.tree product.price.history tree New
view_stock_inventory_tree report.stock.inventory.tree report.stock.inventory field Inherits stock.view_stock_inventory_tree
view_stock_tree report.stock.move.tree report.stock.move field Inherits stock.view_stock_tree
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • open_product_historic_prices(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, values, context=None)
    Add the historization at product creation.
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, values, context=None)
    Create an entry in the history table for every modified price of every products with current datetime (or given one in context)
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_price_history
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - purchase
    - stock_account
    - stock
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Product Price History
=====================

This module allows you to:

* Record various prices of a same product for different companies. This
  way, every company can have its own costs (average or standard) and
  sale prices.
* Historize the prices in a way that you'll then be able to retrieve the
  cost (or sale) price at a given date.

Note that to benefit those values in stock report (or any other view that is based on SQL),
you'll have to adapt it to include this new historized table. Especially true for stock
valuation.

This module also contains demo data and various tests to ensure it works well. It shows
how to configure OpenERP properly when you have various company, each of them having 
their product setup in average price and using different currencies. The goal is to share
the products between all companies, keeping the right price for each of them.

As the prices are now historized, some information aren't revelant anymore in some report. This
module also hide the price information in those view to avoid having wrong informations. Instead
you'll find a view that allow you to retrive the product price and stock at a given date to value
your inventory properly.

Technically, this module updates the definition of field standard_price, list_price 
of the product and will make them stored in an external table. We override the read, 
write and create methods to achieve that and don't used ir.property for performance
and historization purpose.

You may want to also use the module analytic_multicurrency from `bzr branch lp:account-analytic/7.0`
in order to have a proper computation in analytic line as well (standard_price will be converted
in company currency with this module when computing cost of analytic line).

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

* Joël Grand-Guillaume <joel.grand-guillaume@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
product_price_type_view product.price.type.form product.price.type field Inherits product.product_price_type_view
product_search_form_view_stock product.product.price_history.form product.product div Inherits product.product_normal_form_view
view_historical_prices historic.prices.form historic.prices form New
view_product_price_history product.product.price.history.tree product.product tree New
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_from_product product.price.history.tree product.price.history tree New
view_stock_inventory_tree report.stock.inventory.tree report.stock.inventory field Inherits stock.view_stock_inventory_tree
view_stock_tree report.stock.move.tree report.stock.move field Inherits stock.view_stock_tree
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • open_product_historic_prices(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, values, context=None)
    Add the historization at product creation.
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, values, context=None)
    Create an entry in the history table for every modified price of every products with current datetime (or given one in context)
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_price_history
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStéphane Bidoul, Alexandre Fayolle, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - purchase
    - stock_account
    - stock
    - procurement
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Product Price History
=====================

This module allows you to:

* Record various prices of a same product for different companies. This
  way, every company can have its own costs (average or standard) and
  sale prices.
* Historize the prices in a way that you'll then be able to retrieve the
  cost (or sale) price at a given date.

Note that to benefit those values in stock report (or any other view that is based on SQL),
you'll have to adapt it to include this new historized table. Especially true for stock
valuation.

This module also contains demo data and various tests to ensure it works well. It shows
how to configure OpenERP properly when you have various company, each of them having 
their product setup in average price and using different currencies. The goal is to share
the products between all companies, keeping the right price for each of them.

As the prices are now historized, some information aren't revelant anymore in some report. This
module also hide the price information in those view to avoid having wrong informations. Instead
you'll find a view that allow you to retrive the product price and stock at a given date to value
your inventory properly.

Technically, this module updates the definition of field standard_price, list_price 
of the product and will make them stored in an external table. We override the read, 
write and create methods to achieve that and don't used ir.property for performance
and historization purpose.

You may want to also use the module analytic_multicurrency from `bzr branch lp:account-analytic/7.0`
in order to have a proper computation in analytic line as well (standard_price will be converted
in company currency with this module when computing cost of analytic line).

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

* Joël Grand-Guillaume <joel.grand-guillaume@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
product_price_type_view product.price.type.form product.price.type field Inherits product.product_price_type_view
product_search_form_view_stock product.product.price_history.form product.product div Inherits product.product_normal_form_view
view_historical_prices historic.prices.form historic.prices form New
view_product_price_history product.product.price.history.tree product.product tree New
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_from_product product.price.history.tree product.price.history tree New
view_stock_inventory_tree report.stock.inventory.tree report.stock.inventory field Inherits stock.view_stock_inventory_tree
view_stock_tree report.stock.move.tree report.stock.move field Inherits stock.view_stock_tree
Models touched (4)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • open_product_historic_prices(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, values, context=None)
    Add the historization at product creation.
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, values, context=None)
    Create an entry in the history table for every modified price of every products with current datetime (or given one in context)
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/8.0/product_price_history
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYProduct
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Pordenone Linux User Group (PNLUG)
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Pordenone Linux User Group (PNLUG)
COMMITTERS
COMMITTERSAndrea, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_product_normal_form_view_price_history view.product.normal.form.view.price.history product.product xpath Inherits product.product_normal_form_view
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_tree view.product.price.history.tree product.price.history tree New
view_product_template_only_form_price_history view.product.template.only.form.price.history product.template xpath Inherits product.product_template_only_form_view
Models touched (2)

New fields (1)
  • price_history_count Integer
    compute='_compute_price_history_count' args: 'Price History Count'
Public methods (1)
  • action_product_price_history_view(self)
    @api.multi

New fields (1)
  • price_history_count Integer
    compute='_compute_price_history_count' args: 'Price History Count'
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_price_history
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYGeneric Modules/Inventory Control
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSYannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Laetitia Gangloff, Joel Grand-Guillaume
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - purchase
    - stock
    - account
    - analytic
    - board
    - edi
    - email_template
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Product Price History
=====================

This module allows you to:

* Record various prices of a same product for different companies. This way,
  every company can have its own costs (average or standard) and sale prices.
* Historize the prices in a way that you'll then be able to retrieve the cost
  (or sale) price at a given date.

Note that to benefit those values in stock report (or any other view that is
based on SQL), you'll have to adapt it to include this new historized
table. Especially true for stock valuation.

This module also contains demo data and various tests to ensure it works
well. It shows how to configure OpenERP properly when you have various company,
each of them having their product setup in average price and using different
currencies. The goal is to share the products between all companies, keeping
the right price for each of them.

As the prices are now historized, some information aren't revelant anymore in
some report. This module also hide the price information in those view to avoid
having wrong informations. Instead you'll find a view that allow you to retrive
the product price and stock at a given date to value your inventory properly.

Technically, this module updates the definition of field standard_price,
list_price of the product and will make them stored in an external table. We
override the read, write and create methods to achieve that and don't used
ir.property for performance and historization purpose.

You may want to also use the module analytic_multicurrency from `bzr branch
lp:account-analytic/7.0` in order to have a proper computation in analytic line
as well (standard_price will be converted in company currency with this module
when computing cost of analytic line).

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

* Joël Grand-Guillaume <joel.grand-guillaume@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
product_price_type_view product.price.type.form product.price.type field Inherits product.product_price_type_view
product_search_form_view_stock product.product.price_history.form product.product div Inherits product.product_normal_form_view
view_historical_prices historic.prices.form historic.prices form New
view_product_price_history product.product.price.history.tree product.product tree New
view_product_price_history_filter product.price.history.filter product.price.history search New
view_product_price_history_from_product product.price.history.tree product.price.history tree New
view_stock_inventory_tree report.stock.inventory.tree report.stock.inventory field Inherits stock.view_stock_inventory_tree
view_stock_tree report.stock.move.tree report.stock.move field Inherits stock.view_stock_tree
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • action_open_window(self, cr, uid, ids, context=None)
    Open the historical prices view

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • open_product_historic_prices(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • create(self, cr, uid, values, context=None)
    Add the historization at product creation.
  • unlink(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, values, context=None)
    Create an entry in the history table for every modified price of every products with current datetime (or given one in context)