diff --git a/modules/automation/cron.py b/modules/automation/cron.py index fbe68bd..ba45125 100644 --- a/modules/automation/cron.py +++ b/modules/automation/cron.py @@ -68,12 +68,12 @@ class AutomationCron(ModelSQL, ModelView): t.FintradeBookingKey, )) - # On prépare deux listes pour la sauvegarde en batch + # Préparer les listes pour la sauvegarde et les données du shipment parties_to_save = [] vessels_to_save = [] locations_to_save = [] + shipments_data = [] # <-- nouvelle liste - # Dictionnaires pour éviter de recréer plusieurs fois le même objet parties_cache = {} vessels_cache = {} locations_cache = {} @@ -92,7 +92,7 @@ class AutomationCron(ModelSQL, ModelView): logger.info("ROW_FROM_CRON: %s", row) - # ----- Fonctions pour créer ou récupérer les objets en mémoire ----- + # ----- Fonctions pour créer ou récupérer les objets ----- def get_or_create_party(name): name_upper = name.upper() if name_upper in parties_cache: @@ -144,8 +144,8 @@ class AutomationCron(ModelSQL, ModelView): loc_from = get_or_create_location(loading_name, 'supplier') loc_to = get_or_create_location(destination_name, 'customer') - # Stocke toutes les infos du shipment pour la deuxième étape - row_dict = { + # Stocker les données pour la deuxième étape + shipments_data.append({ 'si_number': si_number, 'bl_number': bl_number, 'bl_date': bl_date, @@ -154,9 +154,8 @@ class AutomationCron(ModelSQL, ModelView): 'agent': agent, 'vessel': vessel, 'from_location': loc_from, - 'to_location': loc_to - } - row._shipment_data = row_dict # on attache les infos au row temporairement + 'to_location': loc_to, + }) # ----- Étape 1 : sauvegarde des objets de référence ----- if parties_to_save: @@ -170,8 +169,7 @@ class AutomationCron(ModelSQL, ModelView): Transaction().commit() # ----- Étape 2 : création des shipments ----- - for row in rows: - data = row._shipment_data + for data in shipments_data: si_number = data['si_number'] shipment = ShipmentIn.search([('reference', '=', si_number)], limit=1) if shipment: