From 4f29cd24c3c445e7c0bfe9b789cf5c6434f8e724 Mon Sep 17 00:00:00 2001 From: aaron Date: Fri, 4 May 2018 09:26:54 +0200 Subject: [PATCH] [FIX]reverting changes applied to v11 --- rma/models/rma_order_line.py | 60 ++++++++++++---------- rma/views/rma_order_line_view.xml | 32 ++++++------ rma/wizards/rma_make_picking.py | 34 +++++++----- rma_account/models/invoice.py | 19 +++++++ rma_account/views/rma_order_line_view.xml | 2 + rma_purchase/models/purchase_order_line.py | 15 ++++++ rma_purchase/views/rma_order_line_view.xml | 1 + rma_sale/models/sale_order_line.py | 15 ++++++ rma_sale/views/rma_order_line_view.xml | 1 + 9 files changed, 122 insertions(+), 57 deletions(-) diff --git a/rma/models/rma_order_line.py b/rma/models/rma_order_line.py index cf6c8b7a..ce3994a3 100644 --- a/rma/models/rma_order_line.py +++ b/rma/models/rma_order_line.py @@ -47,16 +47,18 @@ class RmaOrderLine(models.Model): @api.multi def _compute_in_shipment_count(self): for line in self: - line.in_shipment_count = len(self.env['stock.picking'].search( - [('origin', '=', line.name), - ('picking_type_code', '=', 'incoming')]).ids) + moves = line.procurement_ids.mapped('move_ids').filtered( + lambda m: m.location_dest_id.usage == 'internal') + pickings = moves.mapped('picking_id') + line.in_shipment_count = len(pickings) @api.multi def _compute_out_shipment_count(self): for line in self: - line.out_shipment_count = len(self.env['stock.picking'].search( - [('origin', '=', line.name), - ('picking_type_code', '=', 'outgoing')]).ids) + moves = line.procurement_ids.mapped('move_ids').filtered( + lambda m: m.location_dest_id.usage != 'internal') + pickings = moves.mapped('picking_id') + line.out_shipment_count = len(pickings) @api.multi def _get_rma_move_qty(self, states, direction='in'): @@ -67,7 +69,7 @@ class RmaOrderLine(models.Model): op = ops['='] else: op = ops['!='] - for move in rec.move_ids.filtered( + for move in rec.procurement_ids.mapped('move_ids').filtered( lambda m: m.state in states and op(m.location_id.usage, rec.type)): qty += product_obj._compute_quantity( @@ -82,8 +84,8 @@ class RmaOrderLine(models.Model): rec.qty_to_receive = 0.0 if rec.receipt_policy == 'ordered': rec.qty_to_receive = rec.product_qty - rec.qty_received - elif rec.receipt_policy == 'delivered': - rec.qty_to_receive = rec.qty_delivered - rec.qty_received + elif self.receipt_policy == 'delivered': + self.qty_to_receive = rec.qty_delivered - rec.qty_received @api.multi @api.depends('move_ids', 'move_ids.state', @@ -525,36 +527,42 @@ class RmaOrderLine(models.Model): def action_view_in_shipments(self): action = self.env.ref('stock.action_picking_tree_all') result = action.read()[0] - moves = self.env['stock.move'].search([ - ('rma_line_id', 'in', self.ids)]) - picking_ids = moves.mapped('picking_id').filtered( - lambda p: p.picking_type_code == 'incoming').ids + picking_ids = [] + for line in self: + for move in line.move_ids: + if move.location_dest_id.usage == 'internal': + picking_ids.append(move.picking_id.id) + shipments = list(set(picking_ids)) # choose the view_mode accordingly - if len(picking_ids) > 1: - result['domain'] = [('id', 'in', picking_ids)] - else: + if len(shipments) != 1: + result['domain'] = "[('id', 'in', " + \ + str(shipments) + ")]" + elif len(shipments) == 1: res = self.env.ref('stock.view_picking_form', False) result['views'] = [(res and res.id or False, 'form')] - result['res_id'] = picking_ids and picking_ids[0] + result['res_id'] = shipments[0] return result @api.multi def action_view_out_shipments(self): action = self.env.ref('stock.action_picking_tree_all') result = action.read()[0] - moves = self.env['stock.move'].search([ - ('rma_line_id', 'in', self.ids)]) - picking_ids = moves.mapped('picking_id').filtered( - lambda p: p.picking_type_code == 'outgoing').ids + picking_ids = [] + for line in self: + for move in line.move_ids: + if move.location_dest_id.usage in ('supplier', 'customer'): + picking_ids.append(move.picking_id.id) + shipments = list(set(picking_ids)) # choose the view_mode accordingly - if len(picking_ids) > 1: - result['domain'] = [('id', 'in', picking_ids)] - else: + if len(shipments) != 1: + result['domain'] = "[('id', 'in', " + \ + str(shipments) + ")]" + elif len(shipments) == 1: res = self.env.ref('stock.view_picking_form', False) result['views'] = [(res and res.id or False, 'form')] - result['res_id'] = picking_ids and picking_ids[0] + result['res_id'] = shipments[0] return result - + @api.multi def action_view_procurements(self): action = self.env.ref( diff --git a/rma/views/rma_order_line_view.xml b/rma/views/rma_order_line_view.xml index 5e6ab05b..4fdc9328 100644 --- a/rma/views/rma_order_line_view.xml +++ b/rma/views/rma_order_line_view.xml @@ -138,23 +138,21 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/rma/wizards/rma_make_picking.py b/rma/wizards/rma_make_picking.py index c74e9790..93ae9b91 100644 --- a/rma/wizards/rma_make_picking.py +++ b/rma/wizards/rma_make_picking.py @@ -112,8 +112,12 @@ class RmaMakePicking(models.TransientModel): warehouse = line.in_warehouse_id route = line.in_route_id else: - location = self._get_address_location( - delivery_address_id, line.type) + if line.supplier_to_customer: + location = self._get_address_location( + delivery_address_id, 'customer') + else: + location = self._get_address_location( + delivery_address_id, line.type) warehouse = line.out_warehouse_id route = line.out_route_id if not route: @@ -157,6 +161,7 @@ class RmaMakePicking(models.TransientModel): def _create_picking(self): """Method called when the user clicks on create picking""" picking_type = self.env.context.get('picking_type') + procurement_list = [] for item in self.item_ids: line = item.line_id if line.state != 'approved': @@ -172,7 +177,9 @@ class RmaMakePicking(models.TransientModel): raise ValidationError( _('No deliveries needed for this operation')) procurement = self._create_procurement(item, picking_type) - return procurement + procurement_list.append(procurement) + procurements = self.env['procurement.order'].browse(procurement_list) + return procurements @api.model def _get_action(self, pickings, procurements): @@ -195,20 +202,19 @@ class RmaMakePicking(models.TransientModel): @api.multi def action_create_picking(self): - procurement = self._create_picking() - action = self.env.ref('stock.do_view_pickings') - action = action.read()[0] - if procurement: + procurements = self._create_picking() + groups = [] + for proc in procurements: + if proc.group_id: + groups.append(proc.group_id.id) + if len(groups): pickings = self.env['stock.picking'].search( - [('origin', '=', procurement)]).ids - if len(pickings) > 1: - action['domain'] = [('id', 'in', pickings)] - else: - form = self.env.ref('stock.view_picking_form', False) - action['views'] = [(form and form.id or False, 'form')] - action['res_id'] = pickings and pickings[0] + [('group_id', 'in', groups)]) + + action = self._get_action(pickings, procurements) return action + @api.multi def action_cancel(self): return {'type': 'ir.actions.act_window_close'} diff --git a/rma_account/models/invoice.py b/rma_account/models/invoice.py index e122e6f4..ec0a109c 100644 --- a/rma_account/models/invoice.py +++ b/rma_account/models/invoice.py @@ -72,6 +72,25 @@ class AccountInvoiceLine(models.Model): ) return res + @api.multi + def name_get(self): + res = [] + if self.env.context.get('rma'): + for inv in self: + if inv.invoice_id.reference: + res.append((inv.id, "%s %s %s qty:%s" % ( + inv.invoice_id.number, inv.invoice_id.reference, + inv.product_id.name, inv.quantity))) + elif inv.invoice_id.number: + res.append((inv.id, "%s %s qty:%s" % ( + inv.invoice_id.number or '', + inv.product_id.name, inv.quantity))) + else: + res.append(super(AccountInvoiceLine, inv).name_get()[0]) + return res + else: + return super(AccountInvoiceLine, self).name_get() + @api.multi def _compute_rma_count(self): for invl in self: diff --git a/rma_account/views/rma_order_line_view.xml b/rma_account/views/rma_order_line_view.xml index 50b1b344..e6906401 100644 --- a/rma_account/views/rma_order_line_view.xml +++ b/rma_account/views/rma_order_line_view.xml @@ -17,6 +17,7 @@