[IMP] stock : Usability improvements

- Rename some labels
- Add menu tips for picking type views
- Set Operations menuitem in group_no_one
- The options under configuration should not be in technical features
- Reorganized the configuration menuitems
- Hide the internal transfers in the picking type views if the option Use multi location and warehouse is disabled

Conflicts:
	addons/stock/product_view.xml
This commit is contained in:
Yannick Tivisse
2015-07-10 10:20:37 +02:00
parent 74aac7676d
commit e58b16a589
9 changed files with 199 additions and 47 deletions
+1 -1
View File
@@ -74,7 +74,7 @@ Manage your own internal and external locations, customers, suppliers or
manufacturing inventories with the Odoo multi-warehouse management system based
on a hierarchical location structure.
Odoo's Warehouse Management is designed to scale from a few thousands
Odoo's Inventory Management is designed to scale from a few thousands
operations to several millions of transactions.
Reporting and Dashboards
+3 -3
View File
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Warehouse Management',
'name': 'inventory Management',
'version': '1.1',
'author': 'OpenERP SA',
'summary': 'Inventory, Logistic, Storage',
@@ -23,7 +23,7 @@ Key Features
* Rapid detection of mistakes through double entry system
* Traceability (Serial Numbers, Packages, ...)
Dashboard / Reports for Warehouse Management will include:
Dashboard / Reports for Inventory Management will include:
----------------------------------------------------------
* Incoming Products (Graph)
* Outgoing Products (Graph)
@@ -34,7 +34,7 @@ Dashboard / Reports for Warehouse Management will include:
""",
'website': 'https://www.odoo.com/page/warehouse',
'depends': ['product', 'procurement', 'board', 'barcodes'],
'category': 'Warehouse Management',
'category': 'Inventory Management',
'sequence': 16,
'demo': [
'stock_demo_pre.yml',
+2 -2
View File
@@ -230,7 +230,7 @@
<button class="oe_stat_button" string="Moves" name= "%(act_product_stock_move_open)d" type="action" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user" icon="fa-arrows-v"/>
<button class="oe_stat_button" name="%(product_open_orderpoint)d" type="action"
attrs="{'invisible':[('type', '=', 'service')]}" icon="fa-refresh" string="Reordering Rules"/>
<button class="oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" />
<button class="oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_adv_location" />
</div>
</field>
</record>
@@ -250,7 +250,7 @@
<button class="oe_stat_button" string="Moves" name= "action_view_stock_moves" type="object" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_stock_user" icon="fa-arrows-v"/>
<button class="oe_stat_button" name="action_view_orderpoints" type="object"
attrs="{'invisible':[('type', 'in', ('service','consu'))]}" icon="fa-refresh" string="Reordering Rules"/>
<button class="oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" />
<button class="oe_stat_button" name="action_view_routes" string="Routes" type="object" icon="fa-cogs" attrs="{'invisible':[('type', '=', 'service')]}" groups="stock.group_adv_location"/>
</div>
</field>
</record>
+32 -2
View File
@@ -43,6 +43,33 @@ class stock_config_settings(osv.osv_memory):
_name = 'stock.config.settings'
_inherit = 'res.config.settings'
def set_group_locations(self, cr, uid, ids, context=None):
""" This method is automatically called by res_config as it begins
with set. It is used to implement the 'one group or another'
behavior. We have to perform some group manipulation by hand
because in res_config.execute(), set_* methods are called
after group_*; therefore writing on an hidden res_config file
could not work.
If group_stock_multiple_locations is checked: remove group_stock_single_location
from group_user, remove the users. Otherwise, just add
group_stock_single_location in group_user.
The inverse logic about group_stock_multiple_locations is managed by the
normal behavior of 'group_stock_multiple_locations' field.
"""
def ref(xml_id):
mod, xml = xml_id.split('.', 1)
return self.pool['ir.model.data'].get_object(cr, uid, mod, xml, context)
for obj in self.browse(cr, uid, ids, context=context):
config_group = ref('stock.group_single_location')
base_group = ref('base.group_user')
if obj.group_stock_multiple_locations:
base_group.write({'implied_ids': [(3, config_group.id)]})
config_group.write({'users': [(3, u.id) for u in base_group.users]})
else:
base_group.write({'implied_ids': [(4, config_group.id)]})
return True
_columns = {
'company_id': fields.many2one('res.company', 'Company', required=True),
'module_procurement_jit': fields.boolean("Generate procurement in real time",
@@ -80,10 +107,13 @@ This installs the module product_expiry."""),
'group_stock_tracking_owner': fields.boolean("Manage owner on stock",
implied_group='stock.group_tracking_owner',
help="""This way you can receive products attributed to a certain owner. """),
'group_stock_multiple_locations': fields.boolean("Manage multiple locations and warehouses",
'group_stock_multiple_locations': fields.boolean("Manage multiple locations",
implied_group='stock.group_locations',
help="""This will show you the locations and allows you to define multiple picking types and warehouses."""),
'group_stock_adv_location': fields.boolean("Manage advanced routes for your warehouse",
'group_stock_single_location': fields.boolean("Manage only one location per warehouse",
implied_group='stock.group_single_location',
help="""This implies that you manage one location per warehouse, i.e. no internal transfer is possible."""),
'group_stock_adv_location': fields.boolean("Manage routes for your warehouse",
implied_group='stock.group_adv_location',
help="""This option supplements the warehouse application by effectively implementing Push and Pull inventory flows through Routes."""),
'decimal_precision': fields.integer('Decimal precision on weight', help="As an example, a decimal precision of 2 will allow weights like: 9.99 kg, whereas a decimal precision of 4 will allow weights like: 0.0231 kg."),
+7 -1
View File
@@ -6,11 +6,17 @@
<field name="name">Manage Multiple Locations and Warehouses</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="group_single_location" model="res.groups">
<field name="name">Manage One Single Location per Warehouse</field>
</record>
<record id="base.group_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('stock.group_single_location'))]"/>
</record>
<record id="group_stock_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="base.module_category_warehouse_management"/>
<field name="implied_ids" eval="[(4, ref('base.group_user')),(4, ref('stock.group_locations'))]"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="group_stock_manager" model="res.groups">
<field name="name">Manager</field>
+2 -2
View File
@@ -1,7 +1,7 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h2 class="oe_slogan">Warehouse Management</h2>
<h2 class="oe_slogan">Inventory Management</h2>
<h3 class="oe_slogan">A revolutionary double entry inventory system</h3>
</div>
<div class="oe_span6">
@@ -174,7 +174,7 @@ Manage your own internal and external locations, customers, suppliers or
manufacturing inventories with the Odoo multi-warehouse management system
based on a hierarchical location structure.
</p><p>
Odoo's Warehouse Management is designed to scale from a few thousands
Odoo's Inventory Management is designed to scale from a few thousands
operations to several millions of transactions.
</p>
</div>
+3 -6
View File
@@ -77,18 +77,15 @@
<div class="o_kanban_card_manage_title">
<span>View</span>
</div>
<div>
<a name="%(stock_picking_action_picking_type)d" type="action">All</a>
</div>
<div>
<a name="%(action_picking_tree_ready)d" type="action">Ready</a>
</div>
<div>
<a name="%(action_picking_tree_waiting)d" type="action">Waiting</a>
</div>
<div>
<a name="%(action_picking_tree_late)d" type="action">Late</a>
</div>
<div>
<a name="%(action_picking_tree_backorder)d" type="action">Back Orders</a>
</div>
</div>
<div class="col-xs-6 o_kanban_card_manage_section o_kanban_manage_new">
<div class="o_kanban_card_manage_title">
+1 -1
View File
@@ -85,7 +85,7 @@
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">notification</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">Warehouse Management application installed!</field>
<field name="subject">Inventory Management application installed!</field>
<field name="body"><![CDATA[<p>Manage your product inventoy and stock locations: you can control stock moves history and planning,
watch your stock valuation, and track production lots (based on serial numbers).</p>]]></field>
</record>
+148 -29
View File
@@ -3,46 +3,50 @@
<data>
<!-- Top menu item -->
<menuitem name="Warehouse"
<menuitem name="Inventory"
id="menu_stock_root"
groups="group_stock_manager,group_stock_user"
icon="fa-archive"
web_icon="stock,static/description/icon.png"
sequence="30"/>
<menuitem id="menu_stock_warehouse_mgmt" name="Operations" parent="menu_stock_root" sequence="1"/>
<menuitem id="menu_stock_warehouse_mgmt" name="Operations" parent="menu_stock_root" sequence="2" groups="base.group_no_one"/>
<menuitem id="menu_stock_config_settings" name="Configuration" parent="menu_stock_root"
sequence="100" groups="group_stock_manager,base.group_configuration"/>
<menuitem id="menu_warehouse_config" name="Warehouse Management" parent="menu_stock_config_settings" sequence="1" groups="base.group_no_one"/>
<menuitem id="menu_reordering_rules_config" name="Schedulers Management" parent="menu_stock_config_settings" sequence="3" groups="base.group_no_one"/>
<menuitem id="menu_routes_config" name="Routes" parent="menu_stock_config_settings" sequence="2" groups="base.group_no_one"/>
<menuitem id="menu_stock_inventory_control" name="Inventory Control" parent="menu_stock_root" sequence="4"/>
<menuitem id="menu_warehouse_config" name="Warehouse Management" parent="menu_stock_config_settings" sequence="1"/>
<menuitem id="menu_routes_config" name="Routes" parent="menu_stock_config_settings" sequence="2" groups="stock.group_adv_location"/>
<menuitem
id="menu_product_in_config_stock" name="Products"
parent="stock.menu_stock_config_settings" sequence="4" groups="base.group_no_one"/>
parent="stock.menu_stock_config_settings" sequence="4"/>
<menuitem
id="menu_packs_config" name="Packs"
parent="stock.menu_stock_config_settings" sequence="5" groups="base.group_no_one"/>
<menuitem
action="product.product_category_action_form" id="menu_product_category_config_stock"
parent="stock.menu_product_in_config_stock" sequence="2"/>
action="product.product_uom_form_action" id="menu_stock_uom_form_action"
parent="menu_stock_config_settings" sequence="35" groups="product.group_uom"/>
<menuitem id="menu_stock_inventory_control" name="Inventory Control" parent="menu_stock_root" sequence="4"/>
<menuitem
action="product.product_normal_action" id="menu_product_variant_config_stock" name="Products"
parent="stock.menu_stock_inventory_control" sequence="1"/>
<menuitem
action="product.product_template_action" id="menu_product_template_config_stock"
parent="stock.menu_product_in_config_stock" sequence="1"/>
<menuitem
id="menu_stock_unit_measure_stock" name="Units of Measure"
parent="stock.menu_product_in_config_stock" sequence="35" groups="product.group_uom"/>
action="product.product_category_action_form" id="menu_product_category_config_stock"
parent="stock.menu_product_in_config_stock" sequence="2"/>
<menuitem
action="product.product_uom_categ_form_action" id="menu_stock_uom_categ_form_action"
parent="menu_product_in_config_stock" sequence="5" groups="product.group_uom"/>
<menuitem
action="product.product_uom_form_action" id="menu_stock_uom_form_action"
parent="menu_stock_config_settings" sequence="35" groups="product.group_uom"/>
id="menu_stock_unit_measure_stock" name="Units of Measure"
parent="stock.menu_product_in_config_stock" sequence="35" groups="product.group_uom"/>
<menuitem
action="product.product_ul_form_action" groups="product.group_stock_packaging"
id="menu_product_packaging_stock_action" parent="stock.menu_packs_config" sequence="99"/>
<record id="stock_inventory_line_tree" model="ir.ui.view">
<field name="name">stock.inventory.line.tree</field>
@@ -875,10 +879,40 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<menuitem id="all_picking" name="All Transfers" parent="menu_stock_warehouse_mgmt" sequence="2" action="action_picking_tree_all" groups="stock.group_stock_manager,stock.group_stock_user"/>
<record id="stock_picking_action_picking_type" model="ir.actions.act_window">
<field name="name">All Transfers</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar</field>
<field name="domain"></field>
<field name="context">{
'search_default_picking_type_id': [active_id],
'default_picking_type_id': active_id,
'contact_display': 'partner_address',
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_done" model="ir.actions.act_window">
<field name="name">Done Transfers</field>
<field name="res_model">stock.picking</field>
@@ -894,10 +928,17 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_ready" model="ir.actions.act_window">
<field name="name">Ready Transfers</field>
<field name="name">To Do</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
@@ -911,7 +952,14 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
</record>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_done_grouped" model="ir.actions.act_window">
<field name="name">Done Transfers by Date</field>
@@ -929,6 +977,13 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_waiting" model="ir.actions.act_window">
@@ -946,6 +1001,13 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_late" model="ir.actions.act_window">
@@ -964,6 +1026,13 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree_backorder" model="ir.actions.act_window">
@@ -982,6 +1051,13 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="action_picking_tree" model="ir.actions.act_window">
@@ -1024,6 +1100,13 @@
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click here to create a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing. Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<record id="view_move_pivot" model="ir.ui.view">
@@ -1411,7 +1494,7 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem action="action_incoterms_tree" id="menu_action_incoterm_open" parent="menu_warehouse_config" sequence="5"/>
<menuitem action="action_incoterms_tree" id="menu_action_incoterm_open" parent="menu_warehouse_config" sequence="5" groups="base.group_no_one"/>
<record id="view_pickingtype_filter" model="ir.ui.view">
<field name="name">stock.picking.type.filter</field>
@@ -1470,8 +1553,27 @@
</field>
</record>
<record id="action_picking_type_form" model="ir.actions.act_window">
<field name="name">Overview</field>
<record id="stock_picking_type_action_single_location" model="ir.actions.act_window">
<field name="name">Inventory</field>
<field name="res_model">stock.picking.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('code', '!=', 'internal')]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new picking type.
</p><p>
The picking type system allows you to assign each stock
operation a specific type which will alter its views accordingly.
On the picking type you could e.g. specify if packing is needed by default,
if it should show the customer.
</p>
</field>
</record>
<record id="stock_picking_type_action_multi_locations" model="ir.actions.act_window">
<field name="name">Inventory</field>
<field name="res_model">stock.picking.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
@@ -1509,16 +1611,33 @@
<field name="res_model">stock.picking.type</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">list,form</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new transfer.
</p><p>
You can either do it immediatly or mark it as Todo for future processing.
</p><p>
Use your scanner to validate the transferred quantity quicker.
</p>
</field>
</record>
<menuitem id="stock_picking_type_config" action="action_picking_type_list" name="Picking Types" parent="stock.menu_routes_config" sequence="2" groups="base.group_no_one"/>
<menuitem
action="action_picking_type_form"
id="menu_action_picking_type_form"
action="stock_picking_type_action_single_location"
id="stock_picking_type_menu_single_location"
parent="menu_stock_root" sequence="0"
name="Dashboard"/>
name="Dashboard"
groups="stock.group_single_location"/>
<menuitem
action="stock_picking_type_action_multi_locations"
id="stock_picking_type_menu_multi_locations"
parent="menu_stock_root" sequence="1"
name="Dashboard"
groups="stock.group_locations"/>
<menuitem
id="menu_pickingtype"
@@ -1833,17 +1952,17 @@
</record>
<!-- Procurements are located in Warehouse menu hierarchy, MRP users should come to Stock application to use it. -->
<menuitem id="menu_stock_sched" name="Schedulers" parent="stock.menu_stock_root" sequence="50" groups="stock.group_stock_manager"/>
<menuitem id="menu_stock_sched" name="Schedulers" parent="stock.menu_stock_root" sequence="50" groups="base.group_no_one"/>
<menuitem action="action_procurement_compute" id="menu_procurement_compute" parent="menu_stock_sched" groups="base.group_no_one" sequence="2"/>
<menuitem action="procurement.action_compute_schedulers" id="menu_stock_proc_schedulers" parent="menu_stock_sched" sequence="1" groups="stock.group_stock_manager"/>
<menuitem action="procurement.procurement_exceptions" id="menu_stock_procurement_action" parent="menu_stock_sched" sequence="50" groups="stock.group_stock_manager"/>
<menuitem action="procurement.procurement_exceptions" id="menu_stock_procurement_action" parent="menu_stock_inventory_control" sequence="50" groups="stock.group_stock_manager"/>
<menuitem id="menu_stock_procurement" name="Automatic Procurements" parent="stock.menu_stock_config_settings" sequence="5"/>
<menuitem action="action_orderpoint_form" id="menu_stock_order_points" parent="stock.menu_reordering_rules_config" sequence="1"/>
<menuitem id="menu_reordering_rules_config" action="action_orderpoint_form" name="Reordering Rules" parent="menu_stock_config_settings" sequence="3"/>
<menuitem id="stock.menu_warehouse_report" name="Reports" sequence="99" parent="stock.menu_stock_root" groups="group_stock_manager"/>
<menuitem id="menu_quants" name="Quantitative Valuation" parent="menu_stock_inventory_control" sequence="120" action="quantsact" groups="base.group_no_one"/>
<menuitem id="menu_procurement_rules" name="Global Procurement Rules" parent="stock.menu_routes_config" action="procrules" groups="base.group_no_one" sequence="3"/>
<menuitem id="menu_stock_location_path" name="Global Push Rules" parent="stock.menu_routes_config" action="stolocpath" groups="base.group_no_one" sequence="4"/>
<menuitem id="menu_pickingtype" name="Operations Types" parent="stock.menu_warehouse_config" action="action_picking_type_list" sequence="4"/>
<menuitem id="menu_pickingtype" name="Operations Types" parent="stock.menu_warehouse_config" action="action_picking_type_list" sequence="4" groups="stock.group_locations"/>
<menuitem action="action_quantsinv" id="menu_action_quants_inv" parent="stock.menu_stock_inventory_control" sequence="20"/>
<record model="ir.actions.act_window" id="product_open_orderpoint">
@@ -2056,7 +2175,7 @@
<!-- Barcode Nomenclatures -->
<menuitem parent="menu_stock_config_settings" action="barcodes.action_barcode_nomenclature_form" id="menu_wms_barcode_nomenclature_all"
sequence="50"/>
sequence="50" groups="base.group_no_one"/>
</data>
</openerp>