[11.0][MIG] multi_level_mrp: make module installable

This commit is contained in:
Lois Rilo
2018-06-07 10:45:21 +02:00
committed by Jordi Ballester Alomar
parent 424e013614
commit b8d4f0d96a
17 changed files with 608 additions and 603 deletions

View File

@@ -1,3 +1,6 @@
# Copyright 2016 Ucamco - Wim Audenaert <wim.audenaert@ucamco.com>
# Copyright 2016-18 Eficent Business and IT Consulting Services S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
'name': 'Multi Level MRP',
'version': '11.0.1.0.0',

View File

@@ -1,19 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<odoo noupdate="1">
<record id="multi_level_mrp_cron" model="ir.cron">
<field name="name">Multi Level MRP</field>
<field name="active" eval="True"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model" eval="'multi.level.mrp'"/>
<field name="function" eval="'run_multi_level_mrp'" />
<field name="args" eval="'(None, )'"/>
</record>
</data>
</openerp>
<record id="multi_level_mrp_cron" model="ir.cron">
<field name="name">Multi Level MRP</field>
<field name="model_id" ref="multi_level_mrp.model_multi_level_mrp"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model" eval="'multi.level.mrp'"/>
<field name="function" eval="'run_multi_level_mrp'" />
<field name="args" eval="'(None, )'"/>
</record>
</odoo>

View File

@@ -117,6 +117,7 @@ class MrpMove(models.Model):
self.mrp_processed = True
self.name = pr.name
# TODO: extension to purchase requisition in other module?
@api.model
def mrp_process_pr(self):
if self.mrp_action != 'pr':
@@ -154,7 +155,8 @@ class MrpMove(models.Model):
self.mrp_process_mo()
self.mrp_process_pr()
return True
# TODO: move to new API
@api.v7
def mrp_process_po(self, cr, uid, ids, context=None):
view_id = self.pool.get('ir.ui.view').search(

View File

@@ -31,7 +31,8 @@ class MrpProduct(models.Model):
mrp_qty_available = fields.Float('MRP Qty Available')
mrp_qty_multiple = fields.Float(string='Qty Multiple',
related='product_id.mrp_qty_multiple')
mrp_transit_delay = fields.Integer(mrp_move_ids)
# TODO: this was: mrp_transit_delay = fields.Integer(mrp_move_ids) ??¿?¿¿?
mrp_transit_delay = fields.Integer(related = 'product_id.mrp_transit_delay')
mrp_verified = fields.Boolean(string='MRP Verified',
related='product_id.mrp_verified')
name = fields.Char('Description')
@@ -40,8 +41,9 @@ class MrpProduct(models.Model):
product_id = fields.Many2one('product.product', 'Product', select=True)
product_tmpl_id = fields.Many2one('product.template', 'Product Template',
related='product_id.product_tmpl_id')
purchase_requisition = fields.Boolean(string='Purchase Requisition',
related='product_id.purchase_requisition')
# TODO: extension to purchase requisition in other module?
# purchase_requisition = fields.Boolean(string='Purchase Requisition',
# related='product_id.purchase_requisition')
supply_method = fields.Selection((('buy', 'Buy'),
('produce', 'Produce')),
'Supply Method')

View File

@@ -10,10 +10,12 @@ class Product(models.Model):
_inherit = 'product.product'
llc = fields.Integer('Low Level Code', default=0)
manufacturing_order_ids = fields.One2many('mrp.production',
'product_id',
'Manufacturing Orders',
domain=[('state', '=', 'draft')])
manufacturing_order_ids = fields.One2many(
comodel_name='mrp.production',
inverse_name='product_id',
string='Manufacturing Orders',
domain=[('state', '=', 'draft')],
)
mrp_applicable = fields.Boolean('MRP Applicable')
mrp_exclude = fields.Boolean('Exclude from MRP')
mrp_inspection_delay = fields.Integer('Inspection Delay', default=0)
@@ -36,6 +38,7 @@ class Product(models.Model):
"MRP.")
purchase_order_line_ids = fields.One2many('purchase.order.line',
'product_id', 'Purchase Orders')
purchase_requisition_ids = fields.One2many('purchase.requisition.line',
'product_id',
'Purchase Requisitions')
# TODO: extension to purchase requisition in other module?
# purchase_requisition_ids = fields.One2many('purchase.requisition.line',
# 'product_id',
# 'Purchase Requisitions')

View File

@@ -9,7 +9,8 @@ from odoo import fields, models
class StockLocation(models.Model):
_inherit = 'stock.location'
mrp_area_id = fields.Many2one('mrp.area', string='MRP Area',
help="Requirements for a particular MRP "
"area are combined for the purposes "
"of procurement by the MRP.")
mrp_area_id = fields.Many2one(
comodel_name='mrp.area', string='MRP Area',
help="Requirements for a particular MRP area are combined for the "
"purposes of procurement by the MRP.",
)

View File

@@ -1,63 +1,60 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="mrp_area_tree">
<field name="name">mrp.area.tree</field>
<field name="model">mrp.area</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Area">
<field name="name"/>
<field name="warehouse_id"/>
<field name="location_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_area_tree">
<field name="name">mrp.area.tree</field>
<field name="model">mrp.area</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Area">
<field name="name"/>
<field name="warehouse_id"/>
<field name="location_id"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_area_form">
<field name="name">mrp.area.form</field>
<field name="model">mrp.area</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Area">
<group colspan="4" col="2">
<group>
<field name="name"/>
<field name="active"/>
</group>
<group>
<field name="warehouse_id"/>
<field name="location_id"/>
</group>
<record model="ir.ui.view" id="mrp_area_form">
<field name="name">mrp.area.form</field>
<field name="model">mrp.area</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Area">
<group colspan="4" col="2">
<group>
<field name="name"/>
<field name="active"/>
</group>
</form>
</field>
</record>
<group>
<field name="warehouse_id"/>
<field name="location_id"/>
</group>
</group>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="mrp_area_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Area</field>
<field name="res_model">mrp.area</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_area_tree"/>
<field name="act_window_id" ref="mrp_area_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_area_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_area_form"/>
<field name="act_window_id" ref="mrp_area_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_area_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_area_tree"/>
<field name="act_window_id" ref="mrp_area_action"/>
</record>
</data>
</openerp>
<record model="ir.actions.act_window" id="mrp_area_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Area</field>
<field name="res_model">mrp.area</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_area_tree"/>
<field name="act_window_id" ref="mrp_area_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_area_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_area_form"/>
<field name="act_window_id" ref="mrp_area_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_area_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_area_tree"/>
<field name="act_window_id" ref="mrp_area_action"/>
</record>
</odoo>

View File

@@ -1,77 +1,74 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="mrp_forecast_tree">
<field name="name">mrp.forecast.tree</field>
<field name="model">mrp.forecast.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Product Forecast">
<field name="mrp_area_id"/>
<field name="product_id"/>
<field name="qty_forecast_total"/>
<field name="qty_forecast_past"/>
<field name="qty_forecast_m0"/>
<field name="qty_forecast_m1"/>
<field name="qty_forecast_m2"/>
<field name="qty_forecast_m3"/>
<field name="qty_forecast_m4"/>
<field name="qty_forecast_m5"/>
<field name="qty_forecast_m6"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_forecast_tree">
<field name="name">mrp.forecast.tree</field>
<field name="model">mrp.forecast.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Product Forecast">
<field name="mrp_area_id"/>
<field name="product_id"/>
<field name="qty_forecast_total"/>
<field name="qty_forecast_past"/>
<field name="qty_forecast_m0"/>
<field name="qty_forecast_m1"/>
<field name="qty_forecast_m2"/>
<field name="qty_forecast_m3"/>
<field name="qty_forecast_m4"/>
<field name="qty_forecast_m5"/>
<field name="qty_forecast_m6"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_forecast_form">
<field name="name">mrp.forecast.form</field>
<field name="model">mrp.forecast.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Product Forecast">
<group colspan="4" col="2">
<group>
<field name="mrp_area_id"/>
<field name="product_id"/>
</group>
<record model="ir.ui.view" id="mrp_forecast_form">
<field name="name">mrp.forecast.form</field>
<field name="model">mrp.forecast.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Product Forecast">
<group colspan="4" col="2">
<group>
<field name="mrp_area_id"/>
<field name="product_id"/>
</group>
<group colspan="2" col="2">
<separator string="Forecasts"/>
<field name="mrp_forecast_ids" nolabel="1" colspan="2" context="{'default_forecast_product_id': active_id}">
<tree string="Forecasts" editable="bottom">
<field name="forecast_product_id" invisible="True"/>
<field name="date"/>
<field name="qty_forecast"/>
</tree>
</field>
</group>
</form>
</field>
</record>
</group>
<group colspan="2" col="2">
<separator string="Forecasts"/>
<field name="mrp_forecast_ids" nolabel="1" colspan="2" context="{'default_forecast_product_id': active_id}">
<tree string="Forecasts" editable="bottom">
<field name="forecast_product_id" invisible="True"/>
<field name="date"/>
<field name="qty_forecast"/>
</tree>
</field>
</group>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="mrp_forecast_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Forecast</field>
<field name="res_model">mrp.forecast.product</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_forecast_tree"/>
<field name="act_window_id" ref="mrp_forecast_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_forecast_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_forecast_form"/>
<field name="act_window_id" ref="mrp_forecast_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_forecast_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_forecast_tree"/>
<field name="act_window_id" ref="mrp_forecast_action"/>
</record>
</data>
</openerp>
<record model="ir.actions.act_window" id="mrp_forecast_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Forecast</field>
<field name="res_model">mrp.forecast.product</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_forecast_tree"/>
<field name="act_window_id" ref="mrp_forecast_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_forecast_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_forecast_form"/>
<field name="act_window_id" ref="mrp_forecast_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_forecast_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_forecast_tree"/>
<field name="act_window_id" ref="mrp_forecast_action"/>
</record>
</odoo>

View File

@@ -1,33 +1,13 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="mrp_inventory_form">
<field name="name">mrp.inventory.form</field>
<field name="model">mrp.inventory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Area">
<group>
<field name="mrp_area_id"/>
<field name="mrp_product_id"/>
<field name="date"/>
<field name="initial_on_hand_qty"/>
<field name="demand_qty"/>
<field name="supply_qty"/>
<field name="final_on_hand_qty"/>
<field name="to_procure"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="mrp_inventory_tree">
<field name="name">mrp.inventory.tree</field>
<field name="model">mrp.inventory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Inventory">
<record model="ir.ui.view" id="mrp_inventory_form">
<field name="name">mrp.inventory.form</field>
<field name="model">mrp.inventory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Area">
<group>
<field name="mrp_area_id"/>
<field name="mrp_product_id"/>
<field name="date"/>
@@ -36,62 +16,79 @@
<field name="supply_qty"/>
<field name="final_on_hand_qty"/>
<field name="to_procure"/>
<button string="Create Procurement"
name="%(multi_level_mrp.action_mrp_inventory_create_procurement)d"
icon="gtk-ok" type="action"
attrs="{'invisible':[('to_procure','==',0.0)]}"/>
</tree>
</field>
</record>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="mrp_inventory_search">
<field name="name">mrp.inventory.search</field>
<field name="model">mrp.inventory</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="MRP Inventory">
<group name="select" expand="0" string="Selection...">
<field name="mrp_product_id" select='1'/>
<field name="mrp_area_id" select='1'/>
</group>
<separator/>
<filter string="To Procure" name="filter_to_procure"
domain="[['to_procure','>',0.0]]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Product"
context="{'group_by':'mrp_product_id'}"/>
<filter string="MRP Area"
context="{'group_by':'mrp_area_id'}"/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="mrp_inventory_tree">
<field name="name">mrp.inventory.tree</field>
<field name="model">mrp.inventory</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Inventory">
<field name="mrp_area_id"/>
<field name="mrp_product_id"/>
<field name="date"/>
<field name="initial_on_hand_qty"/>
<field name="demand_qty"/>
<field name="supply_qty"/>
<field name="final_on_hand_qty"/>
<field name="to_procure"/>
<button string="Create Procurement"
name="%(multi_level_mrp.action_mrp_inventory_create_procurement)d"
icon="gtk-ok" type="action"
attrs="{'invisible':[('to_procure','==',0.0)]}"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="mrp_inventory_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Inventory</field>
<field name="res_model">mrp.inventory</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_inventory_tree"/>
<field name="search_view_id" ref="mrp_inventory_search"/>
<field name="act_window_id" ref="mrp_inventory_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_inventory_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_inventory_form"/>
<field name="act_window_id" ref="mrp_inventory_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_inventory_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_inventory_tree"/>
<field name="act_window_id" ref="mrp_inventory_action"/>
</record>
<record model="ir.ui.view" id="mrp_inventory_search">
<field name="name">mrp.inventory.search</field>
<field name="model">mrp.inventory</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="MRP Inventory">
<group name="select" expand="0" string="Selection...">
<field name="mrp_product_id" select='1'/>
<field name="mrp_area_id" select='1'/>
</group>
<separator/>
<filter string="To Procure" name="filter_to_procure"
domain="[['to_procure','>',0.0]]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Product"
context="{'group_by':'mrp_product_id'}"/>
<filter string="MRP Area"
context="{'group_by':'mrp_area_id'}"/>
</group>
</search>
</field>
</record>
</data>
</openerp>
<record model="ir.actions.act_window" id="mrp_inventory_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Inventory</field>
<field name="res_model">mrp.inventory</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_inventory_tree"/>
<field name="search_view_id" ref="mrp_inventory_search"/>
<field name="act_window_id" ref="mrp_inventory_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_inventory_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_inventory_form"/>
<field name="act_window_id" ref="mrp_inventory_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_inventory_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_inventory_tree"/>
<field name="act_window_id" ref="mrp_inventory_action"/>
</record>
</odoo>

View File

@@ -1,28 +1,48 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<menuitem name="MRP" id="menu_mrp" sequence="85"/>
<menuitem name="MRP" id="menu_mrp_mrp" parent="menu_mrp"
sequence="10"/>
<menuitem name="MRP Areas" id="menu_mrp_areas"
action="mrp_area_action" parent="menu_mrp_mrp"
sequence="10"/>
<menuitem name="MRP Products" id="menu_mrp_products"
action="mrp_product_action" parent="menu_mrp_mrp"
sequence="20"/>
<menuitem name="MRP Inventory" id="menu_mrp_inventory"
action="mrp_inventory_action" parent="menu_mrp_mrp"
sequence="30"/>
<menuitem name="Run Multi Level MRP"
action="action_multi_level_mrp" id="menu_multi_level_mrp"
parent="menu_mrp_mrp" sequence="40"/>
<menuitem name="Forecast" id="menu_mrp_forecast"
parent="menu_mrp" sequence="50"/>
<menuitem name="Forecasted Products" id="menu_mrp_forecast_products"
action="mrp_forecast_action" parent="menu_mrp_forecast"
sequence="60"/>
<menuitem name="MRP"
id="menu_mrp"
sequence="85"/>
</data>
</openerp>
<menuitem name="MRP"
id="menu_mrp_mrp"
parent="menu_mrp"
sequence="10"/>
<menuitem name="MRP Areas"
id="menu_mrp_areas"
action="mrp_area_action"
parent="menu_mrp_mrp"
sequence="10"/>
<menuitem name="MRP Products"
id="menu_mrp_products"
action="mrp_product_action"
parent="menu_mrp_mrp"
sequence="20"/>
<menuitem name="MRP Inventory"
id="menu_mrp_inventory"
action="mrp_inventory_action"
parent="menu_mrp_mrp"
sequence="30"/>
<menuitem name="Run Multi Level MRP"
id="menu_multi_level_mrp"
action="action_multi_level_mrp"
parent="menu_mrp_mrp"
sequence="40"/>
<menuitem name="Forecast"
id="menu_mrp_forecast"
parent="menu_mrp"
sequence="50"/>
<menuitem name="Forecasted Products"
id="menu_mrp_forecast_products"
action="mrp_forecast_action"
parent="menu_mrp_forecast"
sequence="60"/>
</odoo>

View File

@@ -1,181 +1,178 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="mrp_product_tree">
<field name="name">mrp.product.tree</field>
<field name="model">mrp.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Products">
<field name="mrp_area_id"/>
<field name="product_id"/>
<field name="mrp_verified"/>
<field name="mrp_move_ids"/>
<field name="nbr_mrp_actions_4w"/>
<field name="nbr_mrp_actions"/>
<field name="supply_method"/>
<field name="main_supplier_id"/>
<field name="mrp_llc" invisible="True"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_product_tree">
<field name="name">mrp.product.tree</field>
<field name="model">mrp.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<tree string="MRP Products">
<field name="mrp_area_id"/>
<field name="product_id"/>
<field name="mrp_verified"/>
<field name="mrp_move_ids"/>
<field name="nbr_mrp_actions_4w"/>
<field name="nbr_mrp_actions"/>
<field name="supply_method"/>
<field name="main_supplier_id"/>
<field name="mrp_llc" invisible="True"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="mrp_product_form">
<field name="name">mrp.product.form</field>
<field name="model">mrp.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Product">
<group colspan="4" col="2">
<group>
<field name="mrp_area_id" readonly="True"/>
<field name="product_id" readonly="True"/>
<field name="product_tmpl_id" readonly="True"/>
<field name="mrp_verified" readonly="True"/>
<field name="supply_method" readonly="True"/>
<field name="purchase_requisition" readonly="True"/>
<field name="main_supplier_id" readonly="True"/>
<field name="mrp_lead_time" readonly="True"/>
<field name="mrp_nbr_days" readonly="True"/>
<field name="mrp_transit_delay" readonly="True"/>
<field name="mrp_inspection_delay" readonly="True"/>
</group>
<group>
<field name="mrp_llc" readonly="True"/>
<field name="mrp_qty_available" readonly="True"/>
<field name="current_qty_available" readonly="True"/>
<field name="mrp_minimum_stock" readonly="True"/>
<field name="mrp_minimum_order_qty" readonly="True"/>
<field name="mrp_maximum_order_qty" readonly="True"/>
<field name="mrp_qty_multiple" readonly="True"/>
</group>
<record model="ir.ui.view" id="mrp_product_form">
<field name="name">mrp.product.form</field>
<field name="model">mrp.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="MRP Product">
<group colspan="4" col="2">
<group>
<field name="mrp_area_id" readonly="True"/>
<field name="product_id" readonly="True"/>
<field name="product_tmpl_id" readonly="True"/>
<field name="mrp_verified" readonly="True"/>
<field name="supply_method" readonly="True"/>
<!--<field name="purchase_requisition" readonly="True"/>-->
<field name="main_supplier_id" readonly="True"/>
<field name="mrp_lead_time" readonly="True"/>
<field name="mrp_nbr_days" readonly="True"/>
<field name="mrp_transit_delay" readonly="True"/>
<field name="mrp_inspection_delay" readonly="True"/>
</group>
<group colspan="2" col="2">
<separator string="Moves"/>
<field name="mrp_move_ids" nolabel="1" colspan="2" context="{'default_mrp_product_id': active_id}" readonly="True">
<tree string="Moves" colors="red:running_availability > mrp_minimum_stock">
<field name="mrp_area_id" invisible="True"/>
<field name="mrp_product_id" invisible="True"/>
<field name="mrp_action_date" readonly="True"/>
<field name="mrp_date" readonly="True"/>
<field name="current_date" readonly="True"/>
<field name="mrp_origin" readonly="True"/>
<field name="state" readonly="True"/>
<field name="mrp_order_number" readonly="True"/>
<field name="parent_product_id" readonly="True"/>
<field name="name" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="running_availability" readonly="True"/>
<field name="mrp_minimum_stock" invisible="True"/>
<field name="mrp_action" readonly="True"/>
<field name="mrp_type" readonly="True"/>
<field name="mrp_move_up_ids" readonly="True"/>
<field name="mrp_processed" invisible="True"/>
<button name="mrp_process" icon="gtk-go-forward" type="object" attrs="{'invisible': ['|','|',('mrp_action','==', 'none'),('mrp_action','==', 'po'),('mrp_processed','==',True)]}"/>
<button name="mrp_process_po" icon="gtk-go-forward" type="object" attrs="{'invisible': ['|',('mrp_action','!=', 'po'),('mrp_processed','==',True)]}"/>
</tree>
<form string="Moves">
<group colspan="4" col="2">
<group>
<group>
<field name="mrp_llc" readonly="True"/>
<field name="mrp_qty_available" readonly="True"/>
<field name="current_qty_available" readonly="True"/>
<field name="mrp_minimum_stock" readonly="True"/>
<field name="mrp_minimum_order_qty" readonly="True"/>
<field name="mrp_maximum_order_qty" readonly="True"/>
<field name="mrp_qty_multiple" readonly="True"/>
</group>
</group>
<group colspan="2" col="2">
<separator string="Moves"/>
<field name="mrp_move_ids" nolabel="1" colspan="2" context="{'default_mrp_product_id': active_id}" readonly="True">
<tree string="Moves" colors="red:running_availability > mrp_minimum_stock">
<field name="mrp_area_id" invisible="True"/>
<field name="mrp_product_id" invisible="True"/>
<field name="mrp_action_date" readonly="True"/>
<field name="mrp_date" readonly="True"/>
<field name="current_date" readonly="True"/>
<field name="mrp_origin" readonly="True"/>
<field name="state" readonly="True"/>
<field name="mrp_order_number" readonly="True"/>
<field name="parent_product_id" readonly="True"/>
<field name="name" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="running_availability" readonly="True"/>
<field name="mrp_minimum_stock" invisible="True"/>
<field name="mrp_action" readonly="True"/>
<field name="mrp_type" readonly="True"/>
<field name="mrp_move_up_ids" readonly="True"/>
<field name="mrp_processed" invisible="True"/>
<button name="mrp_process" icon="gtk-go-forward" type="object" attrs="{'invisible': ['|','|',('mrp_action','==', 'none'),('mrp_action','==', 'po'),('mrp_processed','==',True)]}"/>
<button name="mrp_process_po" icon="gtk-go-forward" type="object" attrs="{'invisible': ['|',('mrp_action','!=', 'po'),('mrp_processed','==',True)]}"/>
</tree>
<form string="Moves">
<group colspan="4" col="2">
<group>
<field name="mrp_area_id"
invisible="True"/>
<field name="mrp_product_id" invisible="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="mrp_date" readonly="True"/>
<field name="current_date" readonly="True"/>
<field name="mrp_action" readonly="True"/>
<field name="mrp_type" readonly="True"/>
</group>
<group>
<field name="production_id" readonly="True"/>
<field name="sale_order_id" readonly="True"/>
<field name="purchase_order_id" readonly="True"/>
<field name="stock_move_id" readonly="True"/>
<field name="mrp_processed" invisible="True"/>
</group>
</group>
<group colspan="2" col="2">
<field name="mrp_move_up_ids">
<tree string="Moves">
<field name="mrp_area_id"
invisible="True"/>
<field name="mrp_product_id" invisible="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="mrp_product_id" readonly="True"/>
<field name="mrp_date" readonly="True"/>
<field name="current_date" readonly="True"/>
<field name="mrp_origin" readonly="True"/>
<field name="state" readonly="True"/>
<field name="mrp_order_number" readonly="True"/>
<field name="parent_product_id" readonly="True"/>
<field name="name" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="running_availability" readonly="True"/>
<field name="mrp_action" readonly="True"/>
<field name="mrp_type" readonly="True"/>
</group>
<group>
<field name="production_id" readonly="True"/>
<field name="sale_order_id" readonly="True"/>
<field name="purchase_order_id" readonly="True"/>
<field name="stock_move_id" readonly="True"/>
<field name="mrp_processed" invisible="True"/>
</group>
</group>
<group colspan="2" col="2">
<field name="mrp_move_up_ids">
<tree string="Moves">
<field name="mrp_area_id"
invisible="True"/>
<field name="mrp_product_id" readonly="True"/>
<field name="mrp_date" readonly="True"/>
<field name="current_date" readonly="True"/>
<field name="mrp_origin" readonly="True"/>
<field name="state" readonly="True"/>
<field name="mrp_order_number" readonly="True"/>
<field name="parent_product_id" readonly="True"/>
<field name="name" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="current_qty" readonly="True"/>
<field name="running_availability" readonly="True"/>
<field name="mrp_action" readonly="True"/>
<field name="mrp_type" readonly="True"/>
<field name="mrp_move_up_ids" readonly="True"/>
</tree>
</field>
</group>
</form>
</field>
</group>
</form>
</field>
</record>
<field name="mrp_move_up_ids" readonly="True"/>
</tree>
</field>
</group>
</form>
</field>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="mrp_search_form">
<field name="name">mrp.filter.form</field>
<field name="model">mrp.product</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Product">
<group expand="0" string="Selection...">
<field name="product_id" select='1'/>
<field name="mrp_area_id"/>
</group>
<separator/>
<filter string="With Moves" name="moves" domain="[['mrp_move_ids','!=',False]]"/>
<filter string="With Actions in Coming 4 Weeks" name="actions4w" domain="[['nbr_mrp_actions_4w','!=',0]]"/>
<filter string="With Actions" name="actions" domain="[['nbr_mrp_actions','!=',0]]"/>
<filter string="Purchase Actions" domain="[['supply_method','=','buy'],['nbr_mrp_actions','!=',0]]"/>
<filter string="Manufacture Actions" domain="[['supply_method','=','produce'],['nbr_mrp_actions','!=',0]]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Supply Method" context="{'group_by':'supply_method'}"/>
<filter string="Main Supplier" context="{'group_by':'main_supplier_id'}"/>
<filter string="Low Level Code" context="{'group_by':'mrp_llc'}"/>
</group>
</search>
</field>
</record>
<record model="ir.ui.view" id="mrp_search_form">
<field name="name">mrp.filter.form</field>
<field name="model">mrp.product</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Product">
<group expand="0" string="Selection...">
<field name="product_id" select='1'/>
<field name="mrp_area_id"/>
</group>
<separator/>
<filter string="With Moves" name="moves" domain="[['mrp_move_ids','!=',False]]"/>
<filter string="With Actions in Coming 4 Weeks" name="actions4w" domain="[['nbr_mrp_actions_4w','!=',0]]"/>
<filter string="With Actions" name="actions" domain="[['nbr_mrp_actions','!=',0]]"/>
<filter string="Purchase Actions" domain="[['supply_method','=','buy'],['nbr_mrp_actions','!=',0]]"/>
<filter string="Manufacture Actions" domain="[['supply_method','=','produce'],['nbr_mrp_actions','!=',0]]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Supply Method" context="{'group_by':'supply_method'}"/>
<filter string="Main Supplier" context="{'group_by':'main_supplier_id'}"/>
<filter string="Low Level Code" context="{'group_by':'mrp_llc'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="mrp_product_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Products</field>
<field name="res_model">mrp.product</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_product_tree"/>
<field name="search_view_id" ref="mrp_search_form"/>
<field name="act_window_id" ref="mrp_product_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_product_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_product_form"/>
<field name="act_window_id" ref="mrp_product_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_product_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_product_tree"/>
<field name="act_window_id" ref="mrp_product_action"/>
</record>
</data>
</openerp>
<record model="ir.actions.act_window" id="mrp_product_action">
<field name="sequence" eval="20"/>
<field name="name">MRP Products</field>
<field name="res_model">mrp.product</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="mrp_product_tree"/>
<field name="search_view_id" ref="mrp_search_form"/>
<field name="act_window_id" ref="mrp_product_form"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_product_form_action">
<field name="sequence" eval="22"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_product_form"/>
<field name="act_window_id" ref="mrp_product_action"/>
</record>
<record model="ir.actions.act_window.view" id="mrp_product_tree_action">
<field name="sequence" eval="20"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="mrp_product_tree"/>
<field name="act_window_id" ref="mrp_product_action"/>
</record>
</odoo>

View File

@@ -1,36 +1,33 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="view_mrp_product_product_form">
<field name="name">view.mrp.product.product.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="//notebook/page[@string='Procurements']" position="before">
<page string="MRP">
<group colspan="4" col="2">
<group>
<field name="mrp_exclude"/>
<field name="mrp_verified"/>
<field name="mrp_nbr_days"/>
<field name="mrp_lead_time"/>
<field name="mrp_transit_delay"/>
<field name="mrp_inspection_delay"/>
</group>
<group>
<field name="mrp_minimum_stock"/>
<field name="mrp_minimum_order_qty"/>
<field name="mrp_maximum_order_qty"/>
<field name="mrp_qty_multiple"/>
</group>
<record model="ir.ui.view" id="view_mrp_product_product_form">
<field name="name">view.mrp.product.product.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page string="MRP">
<group colspan="4" col="2">
<group>
<field name="mrp_exclude"/>
<field name="mrp_verified"/>
<field name="mrp_nbr_days"/>
<field name="mrp_lead_time"/>
<field name="mrp_transit_delay"/>
<field name="mrp_inspection_delay"/>
</group>
</page>
</xpath>
</field>
</record>
</data>
</openerp>
<group>
<field name="mrp_minimum_stock"/>
<field name="mrp_minimum_order_qty"/>
<field name="mrp_maximum_order_qty"/>
<field name="mrp_qty_multiple"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>

View File

@@ -1,42 +1,38 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record id="view_location_form" model="ir.ui.view">
<field name="name">stock.location.form</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_form"/>
<field name="arch" type="xml">
<field name="company_id" position="before">
<field name="mrp_area_id"/>
</field>
<record id="view_location_form" model="ir.ui.view">
<field name="name">stock.location.form</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_form"/>
<field name="arch" type="xml">
<field name="company_id" position="before">
<field name="mrp_area_id"/>
</field>
</record>
</field>
</record>
<record id="view_location_search" model="ir.ui.view">
<field name="name">stock.location.search</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_search"/>
<field name="arch" type="xml">
<field name="location_id" position="after">
<field name="mrp_area_id"/>
</field>
<record id="view_location_search" model="ir.ui.view">
<field name="name">stock.location.search</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_search"/>
<field name="arch" type="xml">
<field name="location_id" position="after">
<field name="mrp_area_id"/>
</field>
</record>
</field>
</record>
<record id="view_location_tree2" model="ir.ui.view">
<field name="name">stock.location.tree</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_tree2"/>
<field name="arch" type="xml">
<field name="company_id" position="before">
<field name="mrp_area_id"/>
</field>
<record id="view_location_tree2" model="ir.ui.view">
<field name="name">stock.location.tree</field>
<field name="model">stock.location</field>
<field name="inherit_id" ref="stock.view_location_tree2"/>
<field name="arch" type="xml">
<field name="company_id" position="before">
<field name="mrp_area_id"/>
</field>
</record>
</data>
</openerp>
</field>
</record>
</odoo>

View File

@@ -1,42 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_mrp_inventory_create_procurement" model="ir.ui.view">
<field name="name">Create Procurement Order</field>
<field name="model">mrp.inventory.create.procurement</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Procurement Order">
<group colspan="2">
<button name="make_procurement_order"
string="Create Procurement Order"
type="object"
class="oe_highlight"/>
<button special="cancel" string="Cancel" class="oe_link"/>
</group>
</form>
</field>
</record>
<odoo>
<record id="action_mrp_inventory_create_procurement" model="ir.actions.act_window">
<field name="name">Create Procurement Order</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.inventory.create.procurement</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_mrp_inventory_create_procurement"/>
<field name="target">new</field>
</record>
<record id="view_mrp_inventory_create_procurement" model="ir.ui.view">
<field name="name">Create Procurement Order</field>
<field name="model">mrp.inventory.create.procurement</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Procurement Order">
<group colspan="2">
<button name="make_procurement_order"
string="Create Procurement Order"
type="object"
class="oe_highlight"/>
<button special="cancel" string="Cancel" class="oe_link"/>
</group>
</form>
</field>
</record>
<record model="ir.values" id="mrp_inventory_create_procurement">
<field name="model_id" ref="model_mrp_inventory" />
<field name="name">Create RFQ</field>
<field name="key2">client_action_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_mrp_inventory_create_procurement'))" />
<field name="key">action</field>
<field name="model">mrp.inventory</field>
</record>
</data>
</openerp>
<record id="action_mrp_inventory_create_procurement" model="ir.actions.act_window">
<field name="name">Procure</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.inventory.create.procurement</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_mrp_inventory_create_procurement"/>
<field name="target">new</field>
<field name="binding_model_id" ref="multi_level_mrp.model_mrp_inventory"/>
</record>
<!--todo: REMOVE-->
<!--<record model="ir.values" id="mrp_inventory_create_procurement">-->
<!--<field name="model_id" ref="model_mrp_inventory" />-->
<!--<field name="name">Create RFQ</field>-->
<!--<field name="key2">client_action_multi</field>-->
<!--<field name="value" eval="'ir.actions.act_window,' + str(ref('action_mrp_inventory_create_procurement'))" />-->
<!--<field name="key">action</field>-->
<!--<field name="model">mrp.inventory</field>-->
<!--</record>-->
</odoo>

View File

@@ -1,36 +1,33 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record model="ir.ui.view" id="mrp_move_create_po_form">
<field name="name">mrp.move.create.po.form</field>
<field name="model">mrp.move.create.po</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create PO">
<group colspan="4">
<group>
<field name="move_id" invisible="True"/>
<field name="product_id" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="qty_po" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="mrp_date" readonly="True"/>
<field name="date_po" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="main_supplier_id" readonly="True"/>
<field name="other_partner" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="partner_id" attrs="{'invisible':[('other_partner','==',False)]}" domain="[('supplier','=',True),('is_company','=',True)]"/>
<field name="purchase_line_warn" invisible="True"/>
<field name="purchase_line_warn_msg" readonly="True" attrs="{'invisible':[('purchase_line_warn','==','no-message')]}"/>
</group>
<record model="ir.ui.view" id="mrp_move_create_po_form">
<field name="name">mrp.move.create.po.form</field>
<field name="model">mrp.move.create.po</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create PO">
<group colspan="4">
<group>
<field name="move_id" invisible="True"/>
<field name="product_id" readonly="True"/>
<field name="mrp_qty" readonly="True"/>
<field name="qty_po" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="mrp_date" readonly="True"/>
<field name="date_po" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="main_supplier_id" readonly="True"/>
<field name="other_partner" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<field name="partner_id" attrs="{'invisible':[('other_partner','==',False)]}" domain="[('supplier','=',True),('is_company','=',True)]"/>
<field name="purchase_line_warn" invisible="True"/>
<field name="purchase_line_warn_msg" readonly="True" attrs="{'invisible':[('purchase_line_warn','==','no-message')]}"/>
</group>
<group colspan="4" col="4">
<button string="Create PO" name="create_po" icon="gtk-ok" type="object" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
</group>
</form>
</field>
</record>
</data>
</openerp>
</group>
<group colspan="4" col="4">
<button string="Create PO" name="create_po" icon="gtk-ok" type="object" attrs="{'invisible':[('purchase_line_warn','==','block')]}"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
</group>
</form>
</field>
</record>
</odoo>

View File

@@ -235,10 +235,10 @@ class MultiLevelMrp(models.TransientModel):
mrp_product_id)])
for product in products:
if product.supply_method == 'buy':
if product.purchase_requisition:
mrp_action = 'pr'
else:
mrp_action = 'po'
# if product.purchase_requisition:
# mrp_action = 'pr'
# else:
mrp_action = 'po'
else:
mrp_action = 'mo'
@@ -482,6 +482,7 @@ WHERE product_product.id = mrp_forecast_product.product_id;'''
mrp_move_obj.create(move_data)
return True
# TODO: extension to purchase requisition in other module?
@api.model
def _prepare_mrp_move_data_from_purchase_requisition(self, preql,
mrp_product):
@@ -517,6 +518,7 @@ WHERE product_product.id = mrp_forecast_product.product_id;'''
'state': preql.requisition_id.state,
}
# TODO: extension to purchase requisition in other module?
@api.model
def _init_mrp_move_from_purchase_requisition(self, mrp_product):
location_ids = self.env['stock.location'].search(
@@ -648,10 +650,7 @@ WHERE product_product.id = mrp_forecast_product.product_id;'''
'mrp_origin': 'mo',
'mrp_order_number': mo.name,
'parent_product_id': mo.product_id.id,
'name': ('Demand Bom Explosion: ' + mo.name).replace(
'Demand Bom Explosion: ',
'Demand Bom Explosion: ',
'Demand Bom Explosion: '),
'name': ('Demand Bom Explosion: ' + mo.name),
}
@api.model
@@ -697,7 +696,8 @@ WHERE product_product.id = mrp_forecast_product.product_id;'''
def _init_mrp_move(self, mrp_product):
self._init_mrp_move_from_forecast(mrp_product)
self._init_mrp_move_from_stock_move(mrp_product)
self._init_mrp_move_from_purchase_requisition(mrp_product)
# TODO: extension to purchase requisition in other module?
# self._init_mrp_move_from_purchase_requisition(mrp_product)
self._init_mrp_move_from_purchase_order(mrp_product)
self._init_mrp_move_from_mrp_production(mrp_product)

View File

@@ -1,29 +1,27 @@
<?xml version="1.0"?>
<openerp>
<data>
<odoo>
<record id="view_run_multi_level_mrp_wizard" model="ir.ui.view">
<field name="name">Run MRP</field>
<field name="model">multi.level.mrp</field>
<field name="arch" type="xml">
<form string="Run Multi Level MRP" version="7.0">
<footer>
<button name="run_multi_level_mrp" string="Run MRP" type="object" class="oe_highlight" />
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="view_run_multi_level_mrp_wizard" model="ir.ui.view">
<field name="name">Run MRP</field>
<field name="model">multi.level.mrp</field>
<field name="arch" type="xml">
<form string="Run Multi Level MRP" version="7.0">
<footer>
<button name="run_multi_level_mrp" string="Run MRP" type="object" class="oe_highlight" />
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<act_window name="Run MRP"
res_model="multi.level.mrp"
src_model="multi.level.mrp"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_multi_level_mrp"/>
<act_window name="Run MRP"
res_model="multi.level.mrp"
src_model="multi.level.mrp"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_multi_level_mrp"/>
</data>
</openerp>
</odoo>