diff --git a/models/riga_odoo_import.py b/models/riga_odoo_import.py index 498af4320ba1887c7958808c626f2265d0052a26..a56ceed846bd5e9dbe5d9d1d016d0caa74bf80d0 100644 --- a/models/riga_odoo_import.py +++ b/models/riga_odoo_import.py @@ -80,72 +80,77 @@ class CgscopRigaOdooImport(models.Model): :param parent_id (string): header du fichier CSV pour lequel on va rechercher l'ID RIGA de l'organisme """ - # try: - file.seek(0) - # Création du lecteur CSV. - reader = csv.DictReader( - io.TextIOWrapper(file, encoding="utf-8-sig", newline=None), - delimiter=';') - model_obj = self.env[model.model] - crea_nb = 0 - maj_nb = 0 - log = "" - # Lecture de chaque ligne - for row in reader: - # Création de l'objet - vals = {} - for field in table: - print - vals.update({ - field[0]: self._cast_type( - model=model, - field=field[0], - value=row[field[1]], - relation=field[2]) - }) - # Vérification de la ligne dans la base - line = model_obj.search([ - ['id_riga', '=', row[primary_key]]]) - # Si il y a un enregistrement, on met à jour - if line: - line.write(vals) - maj_nb += 1 - else: - # Check d'un organisme dans la base - partner = self.env['res.partner'].search([ - ['id_riga', '=', row[header_key]], - ['is_cooperative', '=', True]]) - # Si l'organisme existe, on crée un enregistrement - if partner: + try: + file.seek(0) + # Création du lecteur CSV. + reader = csv.DictReader( + io.TextIOWrapper(file, encoding="utf-8-sig", newline=None), + delimiter=';') + model_obj = self.env[model.model] + crea_nb = 0 + maj_nb = 0 + log = "" + # Lecture de chaque ligne + for row in reader: + # Création de l'objet + vals = {} + for field in table: + print vals.update({ - 'partner_id': partner.id + field[0]: self._cast_type( + model=model, + field=field[0], + value=row[field[1]], + relation=field[2]) }) - model_obj.create(vals) - crea_nb += 1 + # Vérification de la ligne dans la base + line = model_obj.search([ + ['id_riga', '=', row[primary_key]]]) + # Si il y a un enregistrement, on met à jour + if line: + line.write(vals) + maj_nb += 1 else: - log += ("Pas d'enredistrement trouvé pour l'id " + - row[primary_key] + " avec l'id riga " + - row[header_key] + "\n") - - # Création du log - self.create({ - 'model_id': model.id, - 'is_sync': True, - 'log': ("Import du fichier réussi : \n" + - " - Création de " + str(crea_nb) + " lignes\n" + - " - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log), - 'is_warning': True if log else False, - }) - - # except Exception as e: - # _logger.error(e.__str__()) - # # Création du log - # self.create({ - # 'model_id': model.id, - # 'is_sync': False, - # 'is_error': True, - # 'log': str(e) - # }) + # Check d'un organisme dans la base + partner = self.env['res.partner'].search([ + ['id_riga', '=', row[header_key]], + ['is_cooperative', '=', True]]) + # Si l'organisme existe, on crée un enregistrement + if partner: + vals.update({ + 'partner_id': partner.id + }) + model_obj.create(vals) + crea_nb += 1 + else: + log += ("Pas d'enredistrement trouvé pour l'id " + + row[primary_key] + " avec l'id riga " + + row[header_key] + "\n") + + data = self.env['riga.files.matching'].sudo().search([ + ['model_id', '=', model.id]]) + date_value = fields.Datetime.now() + datetime.timedelta(days=data.day) + # Création du log + self.create({ + 'model_id': model.id, + 'is_sync': True, + 'log': ("Import du fichier " + data.riga_filename + + date_value.strftime(data.suffix) + '.' + + data.riga_extension + " : \n" + + " - Création de " + str(crea_nb) + " lignes\n" + + " - Mise à jour de " + str(maj_nb) + " lignes\n\n" + log), + 'is_warning': True if log else False, + }) + + except Exception as e: + _logger.error(e.__str__()) + # Création du log + self.create({ + 'model_id': model.id, + 'is_sync': False, + 'is_error': True, + 'log': str(e) + }) def _cast_type(self, model, field, value, relation=None): """ Détermine en fonction du champ la valeur typée à renvoyer