diff --git a/models/customer_purchase_order_importer.py b/models/customer_purchase_order_importer.py
index bbe624a8e697e3c404b9043a077f1071008257e6..b1836b573562367e35c0af2e45daa0c7dc8d90e9 100644
--- a/models/customer_purchase_order_importer.py
+++ b/models/customer_purchase_order_importer.py
@@ -33,6 +33,8 @@ class CustomerPurchaseOrderImporter(models.Model):
         PreSaleOrder = self.env['pre.sale.order']
 
         msg = ''
+        not_imported_msg = ''
+
         imported = []
         not_imported = []
         pre_sale_orders = []
@@ -56,15 +58,15 @@ class CustomerPurchaseOrderImporter(models.Model):
 
             import_path += 'tmp\\'
 
-        files = self._standarize_file_names(import_path, ftp)
-        for _file in files:
-            if not _file:
+        file_names = self._standarize_file_names(import_path, ftp)
+        for file_name in file_names:
+            if not file_name:
                 continue
 
-            po_vals = {}
+            order_vals = {}
 
             file = BytesIO()
-            ftp.retrbinary('RETR ' + _file, file.write)
+            ftp.retrbinary('RETR ' + file_name, file.write)
             msg_list = []
 
             try:
@@ -77,11 +79,11 @@ class CustomerPurchaseOrderImporter(models.Model):
                 file_vals = self.get_full_file_data(lines)
 
                 if isinstance(file_vals, list):
-                    rejected_file = ''
+                    rejected_file = file_name
 
                     partner_name = file_vals.pop(-1).replace(' ', '_')
-                    if partner_name not in _file:
-                        rejected_file = _file.replace('ORD_', 'ORD_%s_' % partner_name)
+                    if partner_name not in rejected_file:
+                        rejected_file = rejected_file.replace('ORD_', 'ORD_%s_' % partner_name)
 
                     msg_list.insert(0, _('FILE: %s\n') % rejected_file)
                     msg_list.extend(file_vals)
@@ -90,7 +92,7 @@ class CustomerPurchaseOrderImporter(models.Model):
                     if rejected_file in ftp.nlst(rejected_path):
                         ftp.delete(rejected_path + rejected_file)
 
-                    ftp.rename(import_path + _file, rejected_path + rejected_file)
+                    ftp.rename(import_path + file_name, rejected_path + rejected_file)
 
                     continue
                 else:
@@ -105,14 +107,14 @@ class CustomerPurchaseOrderImporter(models.Model):
                                     config_type = c.config_type
 
                             try:
-                                po_vals.update(
+                                order_vals.update(
                                     getattr(self, 'get_config_{}_vals'.format(config_type))(file_vals)
                                 )
                             except AttributeError:
                                 _type = CustomerPurchaseOrderConfig._fields['config_type'].selection
                                 config_type_name = dict(_type).get(config_type)
 
-                                msg_list.insert(0, _('FILE: {}\n').format(_file))
+                                msg_list.insert(0, _('FILE: {}\n').format(file_name))
                                 msg_list.append(
                                     _(
                                         '~ No method has been defined for %s. Please contact the developer '
@@ -122,21 +124,27 @@ class CustomerPurchaseOrderImporter(models.Model):
                                 )
                                 not_imported.append(''.join(msg_list))
 
+                                continue
+                            except Exception as e:
+                                msg_list.insert(0, _('FILE: {}\n').format(file_name))
+                                msg_list.append(_('~ Error: %s\n') % str(e))
+                                not_imported.append(''.join(msg_list))
+
                                 continue
 
-                    imported.append(_file)
+                    imported.append(file_name)
 
-                    po_vals.update(self._update_file_vals(file_vals))
-                    pre_sale_orders.append(self._refactor_product_vals_before_import(po_vals))
+                    order_vals.update(self._update_file_vals(file_vals))
+                    pre_sale_orders.append(self._refactor_product_vals_before_import(order_vals))
 
-                    if _file in ftp.nlst(processed_path):
-                        ftp.delete(processed_path + _file)
+                    if file_name in ftp.nlst(processed_path):
+                        ftp.delete(processed_path + file_name)
 
-                    ftp.rename(import_path + _file, processed_path + _file)
+                    ftp.rename(import_path + file_name, processed_path + file_name)
             except Exception as e:
                 _logger.error(e)
 
-                not_imported.append(_('~ Error importing file %s.\n') % _file)
+                not_imported.append(_('~ Error importing file %s.\n') % file_name)
 
                 continue
 
@@ -145,15 +153,14 @@ class CustomerPurchaseOrderImporter(models.Model):
 
         if len(not_imported) > 0:
             not_imported_msg = ''.join(sorted(not_imported))
-
-            self._create_error_file(ftp, import_path, not_imported_msg)
-
             msg += (
                 _('The following files have errors that need to be corrected before importing them:\n\n')
             ) + not_imported_msg
 
         PreSaleOrder.create(pre_sale_orders)
 
+        self._create_error_file(ftp, import_path, not_imported_msg)
+
         _logger.info(_('Purchase order files import finished!'))
 
         if manual_import:
@@ -1054,27 +1061,30 @@ class CustomerPurchaseOrderImporter(models.Model):
         datas = bytes(msg, 'utf-8')
 
         today = str(datetime.today().date())
+        file_name = '_not_imported_%s.txt' % today.replace('-', '')
 
-        name = _('[{}] Rejected Purchase Order Files').format(today)
-        attachment_id = IrAttachment.search([('name', '=', name)])
+        attachment_id = IrAttachment.search([('datas_fname', '=', file_name)], order='id desc', limit=1)
         if attachment_id:
             datas += b64decode(attachment_id.datas)
+            attachment_id.write({'datas': b64encode(datas)})
+
+        if datas:
+            ftp.cwd(path)
+
+            file = BytesIO(datas)
+            ftp.storbinary('STOR ' + file_name, file)
+
+            if not attachment_id:
+                IrAttachment.create(
+                    {
+                        'datas_fname': file_name,
+                        'datas': b64encode(datas),
+                        'name': _('[%s] Rejected Purchase Order Files') % today,
+                        'type': 'binary',
+                    }
+                )
 
-            attachment_id.write({'datas': b64encode(datas), 'name': name})
-
-        file_name = '_not_imported_{}.txt'.format(today.replace('-', ''))
-
-        ftp.cwd(path)
-
-        file = BytesIO(datas)
-        ftp.storbinary('STOR ' + file_name, file)
-
-        if not attachment_id:
-            IrAttachment.create(
-                {'datas_fname': file_name, 'datas': b64encode(datas), 'name': name, 'type': 'binary'}
-            )
-
-        file.close()
+            file.close()
 
     def _create_tmp_files(self, ftp, files, path='/tmp/'):
         if files: