This commit is contained in:
2026-01-20 15:30:40 +01:00
parent c5053638df
commit fcf61605d6

View File

@@ -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: