Joao Alfredo Gama Batista has proposed merging lp:~joao-gama/openerp-product-attributes/product_weight into lp:openerp-product-attributes.
Requested reviews: Product Core Editors (product-core-editors) For more details, see: https://code.launchpad.net/~joao-gama/openerp-product-attributes/product_weight/+merge/143710 Add the module product_weight that calculates the product's net weight based on the product's components weight. -- https://code.launchpad.net/~joao-gama/openerp-product-attributes/product_weight/+merge/143710 Your team OpenERP Community is subscribed to branch lp:openerp-product-attributes.
=== added directory 'product_weight' === added file 'product_weight/__init__.py' --- product_weight/__init__.py 1970-01-01 00:00:00 +0000 +++ product_weight/__init__.py 2013-01-17 15:40:33 +0000 @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). +# +# 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/>. +# +############################################################################## + +import wizard === added file 'product_weight/__openerp__.py' --- product_weight/__openerp__.py 1970-01-01 00:00:00 +0000 +++ product_weight/__openerp__.py 2013-01-17 15:40:33 +0000 @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). +# +# 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/>. +# +############################################################################## + +{ + "name": "Product Weight Calculation", + "version": "0.1", + "author": "Savoir-faire Linux", + "website": "http://www.savoirfairelinux.com", + "license": "AGPL-3", + "category": "Warehouse", + "description": """ + This module updates product net weight based on it's components weight + """, + "depends": [ + "base", + "mrp", + ], + "demo": [], + "data": [ + "product_view.xml", + "wizard/product_weight_update_view.xml" + ], + "installable": True, +} === added file 'product_weight/product_view.xml' --- product_weight/product_view.xml 1970-01-01 00:00:00 +0000 +++ product_weight/product_view.xml 2013-01-17 15:40:33 +0000 @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + <record id="product_weight_form_view" model="ir.ui.view"> + <field name="name">product.weight.form</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_normal_form_view"/> + <field name="arch" type="xml"> + <data> + <field name="weight_net" position="replace"> + <label for="weight_net" /> + <div> + <field name="weight_net" attrs="{'readonly': [('type','=','service')]}" class="oe_inline" /> + <button name="%(action_view_product_weight_update)d" type="action" string="update" attrs="{'invisible':[('type','=','service')]}" class="oe_link" /> + </div> + </field> + </data> + </field> + </record> + </data> +</openerp> === added directory 'product_weight/wizard' === added file 'product_weight/wizard/__init__.py' --- product_weight/wizard/__init__.py 1970-01-01 00:00:00 +0000 +++ product_weight/wizard/__init__.py 2013-01-17 15:40:33 +0000 @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). +# +# 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/>. +# +############################################################################## + +import product_weight_update === added file 'product_weight/wizard/product_weight_update.py' --- product_weight/wizard/product_weight_update.py 1970-01-01 00:00:00 +0000 +++ product_weight/wizard/product_weight_update.py 2013-01-17 15:40:33 +0000 @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). +# +# 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/>. +# +############################################################################## + +import logging +from openerp.osv import fields, osv +from openerp.tools.translate import _ + +_logger = logging.getLogger(__name__) + + +class product_weight_update(osv.osv_memory): + _name = "product.weight.update" + _description = "Update Product Weight" + _columns = { + 'product_id': fields.many2one('product.product', 'Product'), + 'bom_id': fields.many2one('mrp.bom', 'BoM', domain="[('product_id', '=', product_id)]"), + } + + def default_get(self, cr, uid, fields, context): + """ To get default values for the object. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + @return: A dictionary which of fields with values. + """ + product_id = context and context.get('active_id', False) or False + res = super(product_weight_update, self).default_get(cr, uid, fields, context=context) + + bom_id = self.pool.get('mrp.bom').search( + cr, uid, [('product_id', '=', product_id)])[0] + + if 'product_id' in fields: + res.update({'product_id': product_id}) + + res.update({'bom_id': bom_id}) + + return res + + def update_weight(self, cr, uid, ids, context=None): + mrp_bom = self.pool.get("mrp.bom") + product_uom_categ = self.pool.get("product.uom.categ") + product_product = self.pool.get("product.product") + + if context is None: + context = {} + + rec_id = context and context.get('active_id', False) + assert rec_id, _('Active ID is not set in Context') + + for i in self.browse(cr, uid, ids, context=context): + weight_net = 0.0 + bom_ids = mrp_bom.search(cr, uid, + [('bom_id', '=', i.bom_id.id)]) + for bom in mrp_bom.browse(cr, uid, bom_ids, context=context): + _logger.warning(_('Weight')) + if bom.product_uom.category_id.id == 2: + weight_net += bom.product_qty + else: + weight_net += (bom.product_qty * bom.product_id.weight_net) + + _logger.warning("%s (%s): %0.2f" % ( + bom.product_id.name, + bom.product_uom.category_id.name, weight_net)) + weight_net = weight_net / mrp_bom.browse( + cr, uid, i.bom_id.id, context=context).product_qty + product_product.write(cr, uid, rec_id, + {'weight_net': weight_net}, + context=context) + return {} + +product_weight_update() === added file 'product_weight/wizard/product_weight_update_view.xml' --- product_weight/wizard/product_weight_update_view.xml 1970-01-01 00:00:00 +0000 +++ product_weight/wizard/product_weight_update_view.xml 2013-01-17 15:40:33 +0000 @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + <record id="view_product_weight_update" model="ir.ui.view"> + <field name="name">Update Product Weight</field> + <field name="model">product.weight.update</field> + <field name="arch" type="xml"> + <form string="Update Product Weight" version="7.0"> + <group> + <field name="product_id" invisible="1" /> + <field name="bom_id" /> + </group> + <footer> + <button name="update_weight" string="_Apply" type="object" class="oe_highlight"/> + or + <button string="Cancel" class="oe_link" special="cancel" /> + </footer> + </form> + </field> + </record> + + <record id="action_view_product_weight_update" model="ir.actions.act_window"> + <field name="name">Update Product Weight</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">product.weight.update</field> + <field name="view_type">form</field> + <field name="view_mode">form</field> + <field name="view_id" ref="view_product_weight_update"/> + <field name="target">new</field> + </record> + + </data> +</openerp> +
_______________________________________________ Mailing list: https://launchpad.net/~openerp-community Post to : [email protected] Unsubscribe : https://launchpad.net/~openerp-community More help : https://help.launchpad.net/ListHelp

