[FIX]stock: fix picking kanban view to show correct view when clicking button and have correct percentage of late/backorders picking

bzr revid: csn@openerp.com-20130916143849-lw3as1rayo74v30s
This commit is contained in:
Cedric Snauwaert
2013-09-16 16:38:49 +02:00
parent 1d6a27df2c
commit acd22690a5
2 changed files with 64 additions and 11 deletions
+12 -6
View File
@@ -2474,7 +2474,7 @@ class stock_picking_type(osv.osv):
for id in ids:
created_domain = [
('picking_type_id', '=', id),
('state', 'not in', ['draft', 'cancel']),
('state', 'not in', ['done', 'cancel']),
('date', '>=', groupby_begin),
('date', '<', groupby_end),
]
@@ -2484,15 +2484,17 @@ class stock_picking_type(osv.osv):
def _get_picking_count(self, cr, uid, ids, field_names, arg, context=None):
obj = self.pool.get('stock.picking')
domains = {
'count_picking_draft': [('state', '=', 'draft')],
'count_picking_waiting': [('state','=','confirmed')],
'count_picking': [('state','=','assigned')],
'count_picking_late': [('min_date','<', time.strftime('%Y-%m-%d %H:%M:%S'))],
'count_picking_backorders': [('backorder_id','<>', False)],
'count_picking_ready': [('state','=','assigned')],
'count_picking': [('state','in',('assigned','waiting','confirmed'))],
'count_picking_late': [('min_date','<', time.strftime('%Y-%m-%d %H:%M:%S')), ('state','in',('assigned','waiting','confirmed'))],
'count_picking_backorders': [('backorder_id','<>', False), ('state','!=','done')],
}
result = {}
for field in domains:
data = obj.read_group(cr, uid, domains[field] +
[('state', 'not in',('done','cancel','draft')), ('picking_type_id', 'in', ids)],
[('state', 'not in',('done','cancel')), ('picking_type_id', 'in', ids)],
['picking_type_id'], ['picking_type_id'], context=context)
count = dict(map(lambda x: (x['picking_type_id'] and x['picking_type_id'][0], x['picking_type_id_count']), data))
for tid in ids:
@@ -2500,7 +2502,7 @@ class stock_picking_type(osv.osv):
for tid in ids:
if result[tid]['count_picking']:
result[tid]['rate_picking_late'] = result[tid]['count_picking_late'] *100 / result[tid]['count_picking']
result[tid]['rate_picking_backorders'] = result[tid]['count_picking_backorders'] *100 / result[tid]['count_picking']
result[tid]['rate_picking_backorders'] = result[tid]['count_picking_backorders'] *100 / (result[tid]['count_picking'] + result[tid]['count_picking_draft'])
else:
result[tid]['rate_picking_late'] = 0
result[tid]['rate_picking_backorders'] = 0
@@ -2586,6 +2588,10 @@ class stock_picking_type(osv.osv):
type='string',
string='Scheduled pickings per week'),
'count_picking_draft': fields.function(_get_picking_count,
type='integer', multi='_get_picking_count'),
'count_picking_ready': fields.function(_get_picking_count,
type='integer', multi='_get_picking_count'),
'count_picking': fields.function(_get_picking_count,
type='integer', multi='_get_picking_count'),
'count_picking_waiting': fields.function(_get_picking_count,
+52 -5
View File
@@ -645,6 +645,7 @@
<field name="arch" type="xml">
<search string="Internal Picking List">
<field name="name" string="Internal Picking List" filter_domain="['|',('name','ilike', self),('origin','ilike',self)]"/>
<filter icon="terp-check" name="draft" string="Draft" domain="[('state','=','draft')]" help="Draft Internal Moves"/>
<filter icon="terp-check" name="available" string="Ready" domain="[('state','=','assigned')]" help="Assigned Internal Moves"/>
<filter icon="terp-camera_test" name="confirmed" string="Waiting" domain="[('state','=','confirmed')]" help="Confirmed Internal Moves"/>
<filter icon="terp-dialog-close" name="done" string="Done" domain="[('state','=','done')]" help="Pickings already processed"/>
@@ -666,6 +667,41 @@
</field>
</record>
<record id="action_picking_tree_draft" model="ir.actions.act_window">
<field name="name">Draft 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',
'search_default_draft': 1,
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
</record>
<record id="action_picking_tree_ready" model="ir.actions.act_window">
<field name="name">Ready 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',
'search_default_available': 1,
}
</field>
<field name="search_view_id" ref="view_picking_internal_search"/>
</record>
<record id="action_picking_tree_waiting" model="ir.actions.act_window">
<field name="name">Waiting Transfers</field>
<field name="res_model">stock.picking</field>
@@ -1231,7 +1267,8 @@
<kanban version="7.0" class="oe_background_grey">
<field name="complete_name"/>
<field name="color"/>
<field name="count_picking"/>
<field name="count_picking_ready"/>
<field name="count_picking_draft"/>
<field name="count_picking_waiting"/>
<field name="count_picking_late"/>
<field name="count_picking_backorders"/>
@@ -1260,11 +1297,21 @@
</div>
<div class="oe_items_list oe_kanban_ellipsis">
<div>
<a name="%(action_picking_tree)d" type="action">
<field name="count_picking"/> Ready
<a name="%(action_picking_tree_draft)d" type="action">
<field name="count_picking_draft"/> Draft
</a>
<t t-if="record.count_picking.raw_value &gt; 0">
<a name="%(action_picking_tree)d" type="action">
<t t-if="record.count_picking_draft.raw_value &gt; 0">
<a name="%(action_picking_tree_draft)d" type="action">
<field name="weekly_picking" widget="stock_sparkline">Weekly Moves</field>
</a>
</t>
</div>
<div>
<a name="%(action_picking_tree_ready)d" type="action">
<field name="count_picking_ready"/> Ready
</a>
<t t-if="record.count_picking_ready.raw_value &gt; 0">
<a name="%(action_picking_tree_ready)d" type="action">
<field name="weekly_picking" widget="stock_sparkline">Weekly Moves</field>
</a>
</t>