From 73899fd2dd972322997f4a7f2d403b73dd9199b4 Mon Sep 17 00:00:00 2001 From: Josse Colpaert Date: Mon, 9 Feb 2015 16:38:50 +0100 Subject: [PATCH] [FIX] Store for moving package with inner packages. Further Fixes #5125 [IMP] Search quant instead of underlying packages --- addons/stock/stock.py | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index d5b4a6cf849..2392136f9cc 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -3683,10 +3683,29 @@ class stock_package(osv.osv): """Returns packages from quants for store""" res = set() for quant in self.browse(cr, uid, ids, context=context): - if quant.package_id: - res.add(quant.package_id.id) + pack = quant.package_id + while pack: + res.add(pack.id) + pack = pack.parent_id return list(res) + def _get_package_info(self, cr, uid, ids, name, args, context=None): + quant_obj = self.pool.get("stock.quant") + default_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id + res = dict((res_id, {'location_id': False, 'company_id': default_company_id, 'owner_id': False}) for res_id in ids) + for pack in self.browse(cr, uid, ids, context=context): + quants = quant_obj.search(cr, uid, [('package_id', 'child_of', pack.id)], context=context) + if quants: + quant = quant_obj.browse(cr, uid, quants[0], context=context) + res[pack.id]['location_id'] = quant.location_id.id + res[pack.id]['owner_id'] = quant.owner_id.id + res[pack.id]['company_id'] = quant.company_id.id + else: + res[pack.id]['location_id'] = False + res[pack.id]['owner_id'] = False + res[pack.id]['company_id'] = False + return res + def _get_packages_to_relocate(self, cr, uid, ids, context=None): res = set() for pack in self.browse(cr, uid, ids, context=context): @@ -3695,20 +3714,6 @@ class stock_package(osv.osv): res.add(pack.parent_id.id) return list(res) - def _get_package_info(self, cr, uid, ids, name, args, context=None): - default_company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id - res = dict((res_id, {'location_id': False, 'company_id': default_company_id, 'owner_id': False}) for res_id in ids) - for pack in self.browse(cr, uid, ids, context=context): - if pack.quant_ids: - res[pack.id]['location_id'] = pack.quant_ids[0].location_id.id - res[pack.id]['owner_id'] = pack.quant_ids[0].owner_id and pack.quant_ids[0].owner_id.id or False - res[pack.id]['company_id'] = pack.quant_ids[0].company_id.id - elif pack.children_ids: - res[pack.id]['location_id'] = pack.children_ids[0].location_id and pack.children_ids[0].location_id.id or False - res[pack.id]['owner_id'] = pack.children_ids[0].owner_id and pack.children_ids[0].owner_id.id or False - res[pack.id]['company_id'] = pack.children_ids[0].company_id and pack.children_ids[0].company_id.id or False - return res - _columns = { 'name': fields.char('Package Reference', select=True, copy=False), 'complete_name': fields.function(_complete_name, type='char', string="Package Name",),