[IMP] misc fixes in sale_stock

bzr revid: fp@openerp.com-20130803074236-379hhg5s3o26i003
This commit is contained in:
Fabien Pinckaers 2013-08-03 09:42:36 +02:00
parent 6485a68609
commit 0f80a45eb8
1 changed files with 10 additions and 33 deletions

View File

@ -59,12 +59,10 @@ class sale_order(osv.osv):
def _get_shipped(self, cr, uid, ids, name, args, context=None):
res = {}
for sale in self.browse(cr, uid, ids, context=context):
res[sale.id] = True
#TODO: not better to use picking
pickingstates = []
for pick in sale.picking_ids:
pickingstates += [x.state not in ['cancel', 'done'] for x in pick.move_lines]
if any(pickingstates):
group = sale.procurement_group_id
if group:
res[sale.id] = all([proc.state in ['cancel', 'done'] for proc in group.procurement_ids])
else:
res[sale.id] = False
return res
@ -79,37 +77,16 @@ class sale_order(osv.osv):
def _get_picking_ids(self, cr, uid, ids, name, args, context=None):
res = {}
if not ids: return res
for id in ids:
res.setdefault(id, [])
'''SQL request that does exactly the same as the code below'''
cr.execute('''SELECT sol.order_id, sm.picking_id from sale_order_line as sol \
LEFT JOIN procurement_order as po on (po.id = sol.procurement_id) \
LEFT JOIN stock_move as sm on (sm.id = po.move_id) \
LEFT JOIN stock_picking as sp on (sp.id = sm.picking_id) \
WHERE sol.order_id in %s \
GROUP BY sol.order_id, sm.picking_id ORDER BY sol.order_id''',(tuple(ids),))
result = cr.fetchall() #and sp.type = 'out'\
for r in result:
res[r[0]].append(r[1])
for element in self.browse(cr, uid, ids, context=context):
for procurement in element.procurement_group_id.procurement_ids:
if procurement.move_id and procurement.move_id.picking_id:
picking_ids.append(procurement.move_id.picking_id.id)
res[element.id] = list(set(picking_ids))
return res
#for element in self.browse(cr, uid, ids, context=context):
# procu_ids = []
# for line in element.order_line:
# if line.procurement_id:
# procu_ids.append(line.procurement_id.id)
# picking_ids = []
# for procurement in self.pool.get('procurement.order').browse(cr, uid, list(set(procu_ids)), context=context):
# if procurement.move_id and procurement.move_id.picking_id and procurement.move_id.picking_id.type == 'out':
# picking_ids.append(procurement.move_id.picking_id.id)
# res[element.id] = list(set(picking_ids))
#return res
def _prepare_order_line_procurement(self, cr, uid, order, line, group_id = False, context=None):
mod_obj = self.pool.get('ir.model.data')
vals = super(sale_order, self)._prepare_order_line_procurement(cr, uid, order, line, group_id=group_id, context=context)
location_model, location_id = mod_obj.get_object_reference(cr, uid, 'stock', 'stock_location_customers')
location_id = order.partner_shipping_id.property_stock_customer.id
vals['location_id'] = location_id
return vals