"""
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
--- /dev/null
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# 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 <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+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()
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <record id="view_change_standard_price_inherit" model="ir.ui.view">
+ <field name="name">Change Standard Price (Inherit)</field>
+ <field name="model">stock.change.standard.price</field>
+ <field name="inherit_id" ref="stock.view_change_standard_price"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <field name="new_price" position="after">
+ <field name="change_parent_price"/>
+ </field>
+ </field>
+ </record>
+
+ </data>
+</openerp>