Help

2

How to display the qty on hand for each entry in a Bill Of Materials?

Avatar
simon

When viewing a BOM I would like to be able to see the quantity of hand for each product that comprises the said BOM. Essentially the objective is to display the stock holding for components that make up a given BOM.

It may be that this objective can be achieved by other means, in fact it can be done by creating a custom filter in the product view and simply recreating the same BOM as a series of filters, the problem of course being it is manual and does not update when the BOM is modified.

This question could be thought of as a question about changing the parameter displayed in a List View column if that is the best solution method to achieve the desired result.

Thanks!

Avatar
Discard
1 Answer
2
Avatar
Gabriel
Best Answer

Hi Simon,

Firstly you will need to add a related field in the mrp.bom object pointing toward the field 'qty_available' of the product.product object. Secondly you will need to add this new field in the tree view of mrp.bom.

According to how familiar you are with OpenERP and how you are using it you can do that either by the web interface in Settings/Database Structure and Settings/User Interface or by creating a new module.

Sorry but I am not so familiar with the web interface Database Structure menu. And so I could not find how to implement the related field this way. I am pretty sure it should be possible... Nevertheless you can still create a new python module with: your_module.py :

# -*- encoding: utf-8 -*-
from openerp.osv import fields, osv

class mrp_bom(osv.osv):
    _inherit = "mrp.bom"
    _columns = {
                'qty_available': fields.related('product_id', 'qty_available', type="float", relation="product.product", string="Qty on hand")}

and a your_module_view.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>

        <record id="mrp_bom_component_qty_tree_view" model="ir.ui.view">
            <field name="name">mrp.bom.component.qty.tree</field>
            <field name="model">mrp.bom</field>
            <field name="inherit_id" ref="mrp.mrp_bom_component_tree_view" />
            <field name="sequence" eval="10" />
            <field name="arch" type="xml">
                <xpath expr="//field[@name='product_qty']" position="after">
                        <field name="qty_available" />
                </xpath>
            </field>
        </record>

    </data>
</openerp>
2 Comments
Avatar
Discard
Avatar
Trevor Wilson
-

Hi. This is exactly what I'm also trying to do. The logic of what you say makes perfect sense, but I'm struggling to implement... I'm familiar with databases (MySQL) and interogating with php, but completely new to python and openerp. A few pointers wold be gratefully received! I've managed to customise views in settings / user interface / views for our own applications, but when I try to add my new database field into mrp.bom.form I get an error "Invalid XML code in Arch fields of View!", which makes me assume I've created the field in map.bom incorrectly. Any help gratefully received!!!

Avatar
simon
-

Hi Gabriel, Very kind of you to add this information. Obviously the module update method is fundamentally a better method than through the web interface. For others reference in the field definition line I added 'store=False' explicitly as it seemed to not update the value otherwise. Also the view in question is actually the mrp_bom_form_view rather than the component tree, i.e. this is where the entry for each item making up a bom is shown, rather than the list of bom's