diff --git a/addons/mrp/__openerp__.py b/addons/mrp/__openerp__.py index 3065516b125..5fc5456ee9a 100644 --- a/addons/mrp/__openerp__.py +++ b/addons/mrp/__openerp__.py @@ -69,6 +69,7 @@ 'wizard/change_production_qty_view.xml', 'wizard/mrp_price_view.xml', 'wizard/mrp_workcenter_load_view.xml', + 'wizard/mrp_change_standard_price_view.xml', # 'wizard/mrp_track_prod_view.xml', 'mrp_view.xml', 'mrp_wizard.xml', diff --git a/addons/mrp/product.py b/addons/mrp/product.py index 8954d234510..1af0bd686ce 100644 --- a/addons/mrp/product.py +++ b/addons/mrp/product.py @@ -63,11 +63,12 @@ class product_product(osv.osv): """ res = super(product_product, self).do_change_standard_price(cr, uid, ids, datas, context=context) bom_obj = self.pool.get('mrp.bom') + change = context.get('change_parent_price', False) def _compute_price(bom): price = 0.0 - if bom.bom_id : - if bom.bom_id.bom_lines : - for bom_line in bom.bom_id.bom_lines : + if bom.bom_id and change: + if bom.bom_id.bom_lines: + for bom_line in bom.bom_id.bom_lines: prod_price = self.read(cr, uid, bom_line.product_id.id, ['standard_price'])['standard_price'] price += bom_line.product_qty * prod_price diff --git a/addons/mrp/wizard/__init__.py b/addons/mrp/wizard/__init__.py index aa4408e543e..be148883d10 100644 --- a/addons/mrp/wizard/__init__.py +++ b/addons/mrp/wizard/__init__.py @@ -24,6 +24,7 @@ import mrp_price import mrp_workcenter_load #import mrp_track_prod import change_production_qty +import mrp_change_standard_price # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mrp/wizard/mrp_change_standard_price.py b/addons/mrp/wizard/mrp_change_standard_price.py new file mode 100644 index 00000000000..0a5a054762b --- /dev/null +++ b/addons/mrp/wizard/mrp_change_standard_price.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import fields, osv + +class change_standard_price(osv.osv_memory): + _inherit = "stock.change.standard.price" + _description = "Change Standard Price" + + _columns = { + 'change_parent_price': fields.boolean('Change Parent Price'), + } + + + def change_price(self, cr, uid, ids, context): + """ Changes the Standard Price of Parent Product according to BoM + only when the field 'change_parent_price' is True. + And creates an account move accordingly. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param ids: List of IDs selected + @param context: A standard dictionary + @return: + """ + res = self.browse(cr, uid, ids) + context.update({'change_parent_price': res[0].change_parent_price}) + return super(change_standard_price, self).change_price(cr, uid, ids, context=context) + +change_standard_price() diff --git a/addons/mrp/wizard/mrp_change_standard_price_view.xml b/addons/mrp/wizard/mrp_change_standard_price_view.xml new file mode 100644 index 00000000000..6c9b2059aca --- /dev/null +++ b/addons/mrp/wizard/mrp_change_standard_price_view.xml @@ -0,0 +1,17 @@ + + + + + Change Standard Price (Inherit) + stock.change.standard.price + + form + + + + + + + + +