Skip to content
Snippets Groups Projects
Commit 0ab9dacd authored by Benjamin's avatar Benjamin
Browse files

modif algo pour check riga sur coopérative

parent 2a34e6a7
Branches
No related tags found
No related merge requests found
......@@ -83,69 +83,70 @@ 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:
vals.update({
field[0]: self._cast_type(
model=model,
field=field[0],
value=row[field[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:
# Check d'un organisme dans la base
partner = self.env['res.partner'].search([
['id_riga', '=', row[header_key]]])
# 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:
vals.update({
'partner_id': partner.id
field[0]: self._cast_type(
model=model,
field=field[0],
value=row[field[1]])
})
model_obj.create(vals)
crea_nb += 1
# Vérification de la ligne dans la base
line = model_obj.search([
['id_riga', '=', row[primary_key]],
['is_cooperative', '=', True]])
# 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]]])
# 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")
# 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)
})
def _cast_type(self, model, field, value):
""" Détermine en fonction du champ la valeur typée à renvoyer
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment