diff --git a/README.rst b/README.rst
deleted file mode 100644
index 73ac770f75a138225a915a73f73c3e9ecb4286d7..0000000000000000000000000000000000000000
--- a/README.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-Barcode massive scanning in inventory v11
-=================================
-
-This module will used for barcode massive scanning in inventory.
-Depends
-=======
-[stock] addon Odoo
-
-Tech
-====
-* [Python] - Models
-* [XML] - Odoo views
-
-Installation
-============
-- www.odoo.com/documentation/11.0/setup/install.html
-- Install our custom addon
-
-
-Bug Tracker
-===========
-Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
-
-Credits
-=======
-* Eynes - Ingenieria del software <https://www.eynes.com.ar>
-
-Author
-------
-
-Developer: Laureano Kloss, laureano.kloss@eynes.com.ar
-
-Maintainer
-----------
-
-This module is maintained by Eynes - Ingenieria del software.
-
-For support and more information, please visit https://www.eynes.com.ar
diff --git a/i18n/es_AR.mo b/i18n/es_AR.mo
new file mode 100644
index 0000000000000000000000000000000000000000..72d1868fa02d4bc45dadbfbf12c3d5cb8a2a59a0
Binary files /dev/null and b/i18n/es_AR.mo differ
diff --git a/i18n/es_AR.po b/i18n/es_AR.po
new file mode 100644
index 0000000000000000000000000000000000000000..9fe875b997177f172f928d4bab57ddebad45c1d3
--- /dev/null
+++ b/i18n/es_AR.po
@@ -0,0 +1,120 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* scanning_picking_split
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 11.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-10-26 18:19+0000\n"
+"PO-Revision-Date: 2018-10-26 15:29-0300\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"Language: es\n"
+"X-Generator: Poedit 2.0.4\n"
+
+#. module: scanning_picking_split
+#: model:ir.actions.act_window,name:scanning_picking_split.action_scan_picking_split_config
+msgid "Action Scan Picking Config"
+msgstr "Action Scan Picking Config"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_company_id
+msgid "Company"
+msgstr "Compañía"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_name
+msgid "Config Name"
+msgstr "Nombre de configuracion"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_create_date
+msgid "Created on"
+msgstr "Creado en"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_id
+msgid "ID"
+msgstr "ID (identificación)"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config___last_update
+msgid "Last Modified on"
+msgstr "Última modificación en"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_write_uid
+msgid "Last Updated by"
+msgstr "Última actualización de"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_write_date
+msgid "Last Updated on"
+msgstr "Última actualización en"
+
+#. module: scanning_picking_split
+#: model:ir.ui.view,arch_db:scanning_picking_split.view_scan_picking_split_config_tree
+msgid "Picking Config"
+msgstr "Configuracion de Picking"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_picking_group
+msgid "Picking Group"
+msgstr "Grupo por Picking"
+
+#. module: scanning_picking_split
+#: sql_constraint:scan.picking.split.config:0
+msgid "Picking Group must be greater than 0!"
+msgstr "El agrupamiento por picking debe ser mayor que 0!"
+
+#. module: scanning_picking_split
+#: model:ir.ui.menu,name:scanning_picking_split.menu_scan_picking_split_config
+#: model:ir.ui.view,arch_db:scanning_picking_split.view_scan_picking_split_config_form
+msgid "Picking Split Config"
+msgstr "Configuración del Remito"
+
+#. module: scanning_picking_split
+#: selection:scan.picking.split.config,source:0
+msgid "Product"
+msgstr "Producto"
+
+#. module: scanning_picking_split
+#: model:ir.model.fields,field_description:scanning_picking_split.field_scan_picking_split_config_source
+msgid "Source"
+msgstr "Fuente"
+
+#. module: scanning_picking_split
+#: selection:scan.picking.split.config,source:0
+msgid "Template"
+msgstr "Template"
+
+#. module: scanning_picking_split
+#: sql_constraint:scan.picking.split.config:0
+msgid "The configuration must be unique per company!"
+msgstr "La configuración debe ser unica por empresa!"
+
+#. module: scanning_picking_split
+#: model:ir.model,name:scanning_picking_split.model_scan_picking_split_config
+msgid "scan.picking.split.config"
+msgstr "scan.picking.split.config"
+
+#. module: scanning_picking_split
+#: model:ir.model,name:scanning_picking_split.model_stock_picking_barcode_scan
+msgid "stock.picking.barcode.scan"
+msgstr "stock.picking.barcode.scan"
+
diff --git a/models/barcode_scanning.py b/models/barcode_scanning.py
index 69789cd8abd5f61c4a331546866540d1e3a28c4b..51f4ff3ebd11a254a98e589987595d2afdff8bc3 100644
--- a/models/barcode_scanning.py
+++ b/models/barcode_scanning.py
@@ -22,50 +22,81 @@
 
 from odoo import fields, models, api, _
 from odoo.exceptions import Warning
+from odoo.addons.inventory_barcode_massive_scanning.models.stock_picking import StockPickingBarcodeScan as BarcodeScan
+
 
 class StockPickingBarcodeScan(models.Model):
     _inherit = 'stock.picking.barcode.scan'
 
-    @api.multi
-    def confirm_picking(self):
-        picking_obj = self.env['stock.picking']
-        move_obj = self.env['stock.move']
+    @api.model
+    def _get_picking_split_conf(self):
         picking_split_conf_obj = self.env['scan.picking.split.config']
-        barcode_picking_line_obj = self.env['stock.picking.barcode.picking.line']
-
         #Nos fijamos la configuracion
         company = self.env.user.company_id
         picking_split_conf = picking_split_conf_obj.search([
             ('company_id', '=', company.id)], limit=1)
         if not picking_split_conf:
             raise Warning('There is not set picking split config for this company')
+        return picking_split_conf
 
-        picking_group = picking_split_conf.picking_group
+    @api.model
+    def _get_barcode_line_groups(self, lines, picking_group, source):
+        barcode_lines_obj = self.env['stock.picking.barcode.scan.line']
+        if picking_group <= 0 or not lines:
+            return [lines]
 
-        if picking_group <= 0:
-            res = super(StockPickingBarcodeScan, self).confirm_picking()
-            return res
+        group_lst = []
+        if source == 'product':
+            products = lines.mapped('product_id')
+            product_ids = list(set(products.ids))
+            for i, product_id in enumerate(product_ids):
+                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
+        else:
+            products = lines.mapped('product_id')
+            templates = products.mapped('product_tmpl_id')
+            template_ids = list(set(templates.ids))
+            for i, template_id in enumerate(template_ids):
+                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.product_tmpl_id.id == template_id)
+                group_lst[index] += barcode_lines
+        return group_lst
 
+    def create_picking(self):
+        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 = []
+
+        #Solamente para outs
+        if operation_type != 'outgoing':
+            res = super(StockPickingBarcodeScan, self).create_picking()
+            return res
+
+        if not self.barcode_line_ids:
+            return True
+
+        picking_split_conf = self._get_picking_split_conf()
+        picking_group = picking_split_conf.picking_group
         location = self._get_location_src()
         location_dest = self._get_location_dest()
 
         if not location or not location_dest:
             raise Warning('Origin or destination not set for stock picking type')
 
-        #create picking for scan not found
-        barcodes_to_picking = self.barcode_line_ids.filtered(
-                lambda x: x.state in ['draft'])
-
-        #Armamos los grupos
-        barcode_lines_obj = self.env['stock.picking.barcode.scan.line']
-        group_lst = []
-        for i, barcode in enumerate(barcodes_to_picking):
-            if not i % picking_group:
-                group_lst.append(barcode_lines_obj)
-            index = int(i / picking_group)
-            group_lst[index] += barcode
+        conf_source = picking_split_conf.source
+        group_lst = self._get_barcode_line_groups(self.barcode_line_ids,
+                picking_group, conf_source)
 
+        pick_lst = []
         for groups in group_lst:
             picking_vals = self._prepare_picking()
             picking = picking_obj.create(picking_vals)
@@ -75,22 +106,22 @@ class StockPickingBarcodeScan(models.Model):
                 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'
                 barcode_line.write({
                     'picking_id': picking.id,
                     'move_id': new_move.id,
-                    'state': 'done'
+                    'state': barcode_line_state
                 })
             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)
-            for pick_set_id in list(pick_set_ids):
-                line_val = {'picking_id': pick_set_id}
-                barcode_picking_line = barcode_picking_line_obj.new((line_val))
-                self.barcode_picking_line_ids += barcode_picking_line
-        self.write({'state': 'done'})
+            new_picks = [(0, False, {'picking_id': pick_id}) for pick_id in pick_set_ids]
+            pick_lst.extend(new_picks)
+
+        self.write({'barcode_picking_line_ids': pick_lst})
         return True
diff --git a/models/picking_split_config.py b/models/picking_split_config.py
index 2c158652d2cdc803451360dc7ffcff9745be808d..7f8f4be4be201b91ca02e1f7cd6016b32021c685 100644
--- a/models/picking_split_config.py
+++ b/models/picking_split_config.py
@@ -29,9 +29,16 @@ class ScanPickingSplitConfig(models.Model):
     name = fields.Char('Config Name')
     picking_group = fields.Integer('Picking Group')
     company_id = fields.Many2one('res.company', 'Company', required=True)
+    source = fields.Selection([
+        ('template', 'Template'),
+        ('product', 'Product')
+        ], default='template', string='Source', required=True)
 
     _sql_constraints = [
         ('company_uniq',
          'unique (company_id)',
-         'The configuration must be unique per company!')
+         'The configuration must be unique per company!'),
+        ('valid_picking_group',
+         'picking_group > 0',
+         'Picking Group must be greater than 0!')
     ]
diff --git a/views/picking_split_config_view.xml b/views/picking_split_config_view.xml
index fde64a743251611aa4aadf0277de29be325476f5..b8130c5f910e7e80537782c78e8e030a023dbbd7 100644
--- a/views/picking_split_config_view.xml
+++ b/views/picking_split_config_view.xml
@@ -10,6 +10,7 @@
                 <tree string="Picking Config">
                     <field name="picking_group"/>
                     <field name="name"/>
+                    <field name="source"/>
                     <field name="company_id"/>
                 </tree>
             </field>
@@ -28,6 +29,7 @@
                                 <field name="picking_group"/>
                             </group>
                             <group>
+                                <field name="source"/>
                                 <field name="company_id"/>
                             </group>
                         </group>
@@ -46,6 +48,6 @@
         <menuitem id="menu_scan_picking_split_config"
             action="action_scan_picking_split_config"
             name="Picking Split Config"
-            parent="stock.menu_warehouse_report"/>
+            parent="stock.menu_stock_config_settings"/>
     </data>
 </odoo>