diff --git a/models/barcode_scanning.py b/models/barcode_scanning.py index 51f4ff3ebd11a254a98e589987595d2afdff8bc3..27fa4d717d70da690345028ba873485cd72eed1f 100644 --- a/models/barcode_scanning.py +++ b/models/barcode_scanning.py @@ -47,15 +47,11 @@ class StockPickingBarcodeScan(models.Model): group_lst = [] if source == 'product': - products = lines.mapped('product_id') - product_ids = list(set(products.ids)) - for i, product_id in enumerate(product_ids): + for i, line in enumerate(lines): if not i % picking_group: group_lst.append(barcode_lines_obj) index = int(i / picking_group) - barcode_lines = lines.filtered(lambda x: \ - x.product_id.id == product_id) - group_lst[index] += barcode_lines + group_lst[index] += line else: products = lines.mapped('product_id') templates = products.mapped('product_tmpl_id') @@ -73,8 +69,7 @@ class StockPickingBarcodeScan(models.Model): picking_obj = self.env['stock.picking'] move_obj = self.env['stock.move'] picking_split_conf_obj = self.env['scan.picking.split.config'] - operation_type = self.picking_type_id.code - pick_to_filter = [] + operation_type = self.picking_type_code #Solamente para outs if operation_type != 'outgoing': @@ -90,7 +85,7 @@ class StockPickingBarcodeScan(models.Model): location_dest = self._get_location_dest() if not location or not location_dest: - raise Warning('Origin or destination not set for stock picking type') + raise Warning(_('Origin or destination not set for stock picking type')) conf_source = picking_split_conf.source group_lst = self._get_barcode_line_groups(self.barcode_line_ids, @@ -101,26 +96,21 @@ class StockPickingBarcodeScan(models.Model): picking_vals = self._prepare_picking() picking = picking_obj.create(picking_vals) for barcode_line in groups: - po_line = barcode_line.purchase_line_id - so_line = barcode_line.sale_line_id - move_vals = self._prepare_stock_move(barcode_line, picking, - po_line=po_line, so_line=so_line) - new_move = move_obj.create(move_vals) - barcode_line_state = 'done' - if operation_type == 'internal' and not self.operation_scan_id: - barcode_line_state = 'to_receive' + move_ids = [] + move_lst = self._prepare_stock_move(barcode_line, picking) + for move_vals in move_lst: + new_move = move_obj.create(move_vals) + move_ids.append(new_move.id) barcode_line.write({ 'picking_id': picking.id, - 'move_id': new_move.id, - 'state': barcode_line_state + 'move_ids': [(6, False, move_ids)], + 'state': 'done' }) picking.action_assign() for move in picking.move_lines: move.write({'quantity_done': move.product_uom_qty}) - pick_to_filter.append(picking.id) picking.action_done() - pick_set_ids = set(pick_to_filter) - new_picks = [(0, False, {'picking_id': pick_id}) for pick_id in pick_set_ids] + new_picks = [(0, False, {'picking_id': picking.id})] pick_lst.extend(new_picks) self.write({'barcode_picking_line_ids': pick_lst})