From 44ac5670016a28908f21579f8e571a0700c42bf4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gast=C3=B3n=20Bertolani?= <gaston.bertolani@gmail.com>
Date: Tue, 20 Nov 2018 16:54:28 -0300
Subject: [PATCH 1/2] [FIX]Repeat picking list

---
 models/barcode_scanning.py | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/models/barcode_scanning.py b/models/barcode_scanning.py
index 51f4ff3..d2694ad 100644
--- a/models/barcode_scanning.py
+++ b/models/barcode_scanning.py
@@ -74,7 +74,6 @@ class StockPickingBarcodeScan(models.Model):
         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 = []
 
         #Solamente para outs
         if operation_type != 'outgoing':
@@ -117,10 +116,8 @@ class StockPickingBarcodeScan(models.Model):
             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})
-- 
GitLab


From fd43c15ee89ba6a5a0dc8e3d5b344b122ab3e386 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gast=C3=B3n=20Bertolani?= <gaston.bertolani@gmail.com>
Date: Thu, 22 Nov 2018 15:41:02 -0300
Subject: [PATCH 2/2] [ADD]Split group by line

---
 models/barcode_scanning.py | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/models/barcode_scanning.py b/models/barcode_scanning.py
index d2694ad..27fa4d7 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,7 +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
+        operation_type = self.picking_type_code
 
         #Solamente para outs
         if operation_type != 'outgoing':
@@ -89,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,
@@ -100,18 +96,15 @@ 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:
-- 
GitLab