parent="base.menu_mrp_root"
sequence="1"/>
- <menuitem name="Master Data"
+ <menuitem name="Products"
id="menu_mrp_bom"
parent="base.menu_mrp_root"
sequence="5"/>
<field name="model">mrp.bom</field>
<field name="arch" type="xml">
<form string="Bill of Material" version="7.0">
- <label for="product_id" string="Product and Quantity" class="oe_edit_only"/>
- <h1>
- <field name="product_id" on_change="onchange_product_id(product_id, name, context)" class="oe_inline"/>
- <field name="product_qty" class="oe_inline"/>
- <field name="product_uom" class="oe_inline" groups="product.group_uom"/>
- </h1>
- <div groups="mrp.group_mrp_routings">
- <label for="routing_id" class="oe_edit_only"/>
- <h2><field name="routing_id" class="oe_inline"/></h2>
- </div>
<group>
<group>
- <field name="name"/>
- <field name="code" string="Reference"/>
+ <field name="product_id" on_change="onchange_product_id(product_id, name, context)" class="oe_inline"/>
+ <label for="product_qty" string="Quantity"/>
+ <div>
+ <field name="product_qty" class="oe_inline"/>
+ <field name="product_uom" class="oe_inline" groups="product.group_uom"/>
+ </div>
+ <label for="product_uos_qty" groups="product.group_uos"/>
+ <div groups="product.group_uos" >
+ <field name="product_uos_qty"
+ class="oe_inline"/>
+ <label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/>
+ <field name="product_uos" class="oe_inline"/>
+ </div>
+ <div groups="mrp.group_mrp_routings">
+ <label for="routing_id" class="oe_edit_only"/>
+ <h2><field name="routing_id" class="oe_inline"/></h2>
+ </div>
</group>
<group>
+ <field name="name" class="oe_inline"/>
+ <field name="code" string="Reference"/>
<field name="type"/>
<p colspan="2" class="oe_grey" attrs="{'invisible': [('type','=','normal')]}">
When processing a sale order for this product, the delivery order
will contain the raw materials, instead of the finished product.
</p>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
- <label for="product_uos_qty" groups="product.group_uos"/>
- <div groups="product.group_uos" >
- <field name="product_uos_qty"
- class="oe_inline"/>
- <label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/>
- <field name="product_uos" class="oe_inline"/>
- </div>
</group>
</group>
<notebook>
</tree>
</field>
</page>
- <page string="Revisions" attrs="{'invisible': [('bom_id','!=',False)]}">
- <field name="revision_ids"/>
- </page>
<page string="Properties" groups="product.group_mrp_properties">
<group>
<group>
<field name="property_ids" widget="many2many_tags"/>
</page>
</notebook>
- <footer>
- <div class="oe_chatter">
- <field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
- <field name="message_follower_ids" widget="mail_followers"/>
- </div>
- </footer>
+ <div class="oe_chatter">
+ <field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
+ <field name="message_follower_ids" widget="mail_followers"/>
+ </div>
</form>
</field>
</record>
<field name="res_model">mrp.bom</field>
<field name="view_type">form</field>
<field name="view_id" ref="mrp_bom_component_tree_view"/>
- <field name="domain">[('bom_id','!=',False)]</field>
+ <field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a component to a bill of material.
</p>
</field>
</record>
-
+
+ <record id="product_supply_method_produce" model="ir.actions.act_window">
+ <field name="name">Products</field>
+ <field name="res_model">product.product</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">kanban,tree,form</field>
+ <field name="context">{'search_default_filter_supply_method_produce' : 1}</field>
+ <field name="search_view_id" ref="product.product_search_form_view"/>
+ </record>
<!-- BOM menus -->
<menuitem
id="menu_mrp_bom_form_action"
parent="menu_mrp_bom"
sequence="10"/>
+ <menuitem name="Products"
+ id="menu_mrp_product_form"
+ action="product_supply_method_produce"
+ parent="menu_mrp_bom"/>
<menuitem
action="mrp_bom_form_action2"
id="menu_mrp_bom_form_action2"
parent="menu_mrp_configuration"
+ groups="base.group_no_one"
sequence="20"/>
<record id="action2" model="ir.actions.act_window">
<field name="name">Bill of Materials Structure</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.bom</field>
- <field name="domain">[('id','in',active_ids)]</field>
- <field name="view_type">tree</field>
- <field name="view_mode">tree</field>
+ <field name="domain">[('bom_id', '=',active_ids)]</field>
<field name="view_id" ref="mrp_bom_tree_view"/>
</record>
<record id="ir_BOM_structure" model="ir.values">
<field name="name">mrp.production.tree</field>
<field name="model">mrp.production</field>
<field name="arch" type="xml">
- <tree fonts="bold:needaction_pending==True" colors="blue:state in ('draft','confirmed');red:date_planned<current_date and state not in ('done','cancel');black:date_planned>=current_date;gray:state in ('done','cancel') " string="Manufacturing Orders">
- <field name="needaction_pending" invisible="1"/>
+ <tree fonts="bold:message_unread==True" colors="blue:state in ('draft','confirmed');red:date_planned<current_date and state not in ('done','cancel');black:date_planned>=current_date;gray:state in ('done','cancel') " string="Manufacturing Orders">
+ <field name="message_unread" invisible="1"/>
<field name="name"/>
<field name="date_planned"/>
<field name="product_id"/>
<field name="state" widget="statusbar" statusbar_visible="draft,ready,in_production,done" statusbar_colors='{"picking_except":"red","confirmed":"blue"}'/>
</header>
<sheet>
- <label for="product_id" class="oe_edit_only"/>
- <h1>
- <field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','<>',False),('bom_ids.bom_id','=',False)]" context="{'default_supply_method':'produce'}" class="oe_inline"/>
- </h1>
- <label for="product_qty" class="oe_edit_only"/>
- <h2>
- <field name="product_qty" class="oe_inline"/>
- <field name="product_uom" groups="product.group_uom" class="oe_inline"/>
- <button type="action"
- icon="terp-accessories-archiver+"
- name="%(mrp.action_change_production_qty)d"
- string="Change Qty" states="ready,confirmed" class="oe_inline"/>
- </h2>
- <div groups="mrp.group_mrp_routings">
- <label for="routing_id" class="oe_edit_only"/>
- <h2><field name="routing_id" class="oe_inline"/></h2>
+ <div class="oe_title">
+ <h1>Manufacturing Order <field name="name" class="oe_inline"/></h1>
</div>
<group>
<group>
- <field name="name"/>
- <field name="date_planned"/>
- <field name="origin"/>
- </group>
- <group>
- <field name="user_id"/>
+ <field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','!=',False),('bom_ids.bom_id','=',False)]" class="oe_inline" context='{"default_supply_method":"produce", "default_type": "product"}'/>
+ <label for="product_qty"/>
+ <div>
+ <field name="product_qty" class="oe_inline"/>
+ <field name="product_uom" groups="product.group_uom" class="oe_inline"/>
+ <button type="action"
+ icon="terp-accessories-archiver+"
+ name="%(mrp.action_change_production_qty)d"
+ string="(Update)" states="confirmed" class="oe_edit_only oe_link"/>
+ </div>
<label for="product_uos_qty" groups="product.group_uos"/>
<div groups="product.group_uos">
<field name="product_uos_qty" class="oe_inline"/>
<label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/>
<field name="product_uos" class="oe_inline"/>
</div>
+ <field name="date_planned"/>
+ </group>
+ <group>
+ <field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)" required="1"/>
+ <field name="routing_id" class="oe_inline" groups="mrp.group_mrp_routings"/>
+ <field name="user_id"/>
+ <field name="origin"/>
+ </group>
+ <group groups="stock.group_locations">
+ <field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
+ <field name="location_dest_id" domain="[('usage','=','internal')]"/>
</group>
</group>
<notebook>
<page string="Consumed Products">
<group>
- <group>
- <field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
- </group>
- <group groups="stock.group_locations">
- <field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
- <field name="location_dest_id" domain="[('usage','=','internal')]"/>
- </group>
- </group>
- <group>
<group string="Products to Consume">
- <field name="move_lines" domain="[('state','<>', ('done', 'cancel'))]" nolabel="1">
+ <field name="move_lines" nolabel="1">
<tree colors="blue:state == 'draft';black:state in ('picking_except','confirmed','ready','in_production');gray:state in ('cancel','done') " string="Products to Consume">
<field name="product_id"/>
<field name="product_qty" string="Quantity"/>
<field name="product_uom" string="Unit of Measure" groups="product.group_uom"/>
- <field name="location_id" string="Source Loc." groups="stock.group_locations"/>
+ <field name="prodlot_id" groups="stock.group_production_lot" context="{'product_id': product_id}"/>
<field name="state" invisible="1"/>
<button name="%(stock.move_consume)d"
string="Consume Products" type="action"
name="%(stock.track_line)d"
string="Split in Serial Numbers"
type="action" icon="gtk-justify-fill"
- states="draft,waiting,confirmed,assigned"/>
+ states="draft,waiting,confirmed,assigned"
+ groups="stock.group_production_lot"/>
<button name="%(stock.move_scrap)d"
string="Scrap Products" type="action"
icon="gtk-convert" context="{'scrap': True}"
</field>
</group>
<group string="Consumed Product">
- <field name="move_lines2" domain="[('state','in', ('done', 'cancel'))]" nolabel="1">
+ <field name="move_lines2" nolabel="1">
<tree colors="red:scrapped==True;blue:state == 'draft';black:state in('picking_except','confirmed','ready','in_production');gray:state == 'cancel' " string="Consumed Products" editable="bottom">
<field name="product_id" readonly="1"/>
<field name="product_qty" readonly="1"/>
<field name="product_uom" readonly="1" string="Unit of Measure" groups="product.group_uom"/>
- <field name="prodlot_id" context="{'product_id': product_id}"/>
+ <field name="prodlot_id" context="{'product_id': product_id}" groups="stock.group_production_lot"/>
<field name="state" invisible="1"/>
<field name="scrapped" invisible="1"/>
<button
<page string="Finished Products">
<group>
<group string="Products to Produce">
- <field name="move_created_ids" domain="[('state','<>', ('done', 'cancel'))]" nolabel="1">
+ <field name="move_created_ids" nolabel="1">
<tree string="Products to Finish">
<field name="product_id"/>
<field name="product_qty"/>
</field>
</group>
<group string="Produced Products">
- <field name="move_created_ids2" domain="[('state','in', ('done', 'cancel'))]" nolabel="1">
+ <field name="move_created_ids2" nolabel="1">
<tree colors="red:scrapped==True;blue:state == 'draft';black:state in('picking_except','confirmed','ready','in_production');gray:state in('cancel','done') " string="Finished Products">
<field name="product_id" readonly="1"/>
<field name="product_qty" readonly="1"/>
<field name="product_uom" readonly="1" string="Unit of Measure" groups="product.group_uom"/>
<field name="location_dest_id" readonly="1" string="Destination Loc." widget="selection" groups="stock.group_locations"/>
- <field name="prodlot_id" context="{'product_id': product_id}"/>
+ <field name="prodlot_id" context="{'product_id': product_id}" groups="stock.group_production_lot"/>
<field name="scrapped" invisible="1"/>
<field name="state" invisible="1"/>
<button name="%(stock.track_line)d"
<data>
<xpath expr="//field[@name='move_id']" position="before">
<field name="bom_id" domain="[('product_id','=',product_id),('bom_id','=',False)]"/>
+ <field name="production_id"/>
</xpath>
<xpath expr="//field[@name='close_move']" position="after">
<group colspan="4" groups="product.group_mrp_properties">
</data>
</field>
</record>
- <record id="product_normal_form_supply_view" model="ir.ui.view">
+ <record id="product.product_normal_form_supply_view" model="ir.ui.view">
<field name="name">product.normal.form.mrp.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
- <xpath expr="//field[@name='procure_method']" position="after">
- <field name="supply_method" groups="base.group_user"/>
- </xpath>
- </field>
- </record>
-
- <record id="product_normal_form_view" model="ir.ui.view">
- <field name="name">product.normal.form.mrp.inherit</field>
- <field name="model">product.product</field>
- <field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
- <field name="arch" type="xml">
- <page string="Procurement & Locations" position="inside">
- <separator string="Bill of Materials"/>
- <field name="bom_ids" widget="one2many_list" mode="tree" context="{'default_product_id': active_id}">
- <tree string="Bill of Materials">
- <field name="name" string="Component Name"/>
- <field name="bom_id"/>
- <field name="product_qty" string="Quantity of Product"/>
- <field name="type"/>
- <field name="date_start"/>
- <field name="date_stop"/>
- </tree>
- <form string="Bill of Material">
- <field name="name" string="Component Name"/>
- <field name="bom_id"/>
- <field name="product_qty" string="Quantity of Product"/>
- <field name="type"/>
- <field name="date_start"/>
- <field name="date_stop"/>
- </form>
- </field>
- </page>
+ <xpath expr="//field[@name='supply_method']" position="attributes">
+ <attribute name="invisible">False</attribute>
+ </xpath>
+ <group name="procurement_help" position="inside">
+ <p attrs="{'invisible': [('type','=','service'),('procure_method','<>','make_to_order'),('supply_method','<>','produce')]}">
+ When you sell this product, OpenERP will trigger <b>a manufacturing
+ order</b> using the bill of materials assigned to this product.
+ The delivery order will be ready once the production is done.
+ </p>
+</group>
</field>
</record>
id="menu_mrp_production_order_action" name="Orders Planning"
parent="menu_mrp_planning" sequence="1"/>
+
+ <record model="ir.actions.act_window" id="product_open_bom">
+ <field name="context">{'default_product_id': active_id, 'search_default_product_id': active_id}</field>
+ <field name="name">Bill of Materials</field>
+ <field name="res_model">mrp.bom</field>
+ </record>
+
+ <record model="ir.ui.view" id="product_form_view_bom_button">
+ <field name="name">product.product.procurement</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view"/>
+ <field name="arch" type="xml">
+ <xpath expr="//div[@name='buttons']" position="inside">
+ <button string="Bill of Materials" name="%(product_open_bom)d" type="action"/>
+ </xpath>
+ </field>
+ </record>
+
+
</data>
</openerp>