main #7
@@ -68,12 +68,12 @@ class AutomationCron(ModelSQL, ModelView):
|
|||||||
t.FintradeBookingKey,
|
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 = []
|
parties_to_save = []
|
||||||
vessels_to_save = []
|
vessels_to_save = []
|
||||||
locations_to_save = []
|
locations_to_save = []
|
||||||
|
shipments_data = [] # <-- nouvelle liste
|
||||||
|
|
||||||
# Dictionnaires pour éviter de recréer plusieurs fois le même objet
|
|
||||||
parties_cache = {}
|
parties_cache = {}
|
||||||
vessels_cache = {}
|
vessels_cache = {}
|
||||||
locations_cache = {}
|
locations_cache = {}
|
||||||
@@ -92,7 +92,7 @@ class AutomationCron(ModelSQL, ModelView):
|
|||||||
|
|
||||||
logger.info("ROW_FROM_CRON: %s", row)
|
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):
|
def get_or_create_party(name):
|
||||||
name_upper = name.upper()
|
name_upper = name.upper()
|
||||||
if name_upper in parties_cache:
|
if name_upper in parties_cache:
|
||||||
@@ -144,8 +144,8 @@ class AutomationCron(ModelSQL, ModelView):
|
|||||||
loc_from = get_or_create_location(loading_name, 'supplier')
|
loc_from = get_or_create_location(loading_name, 'supplier')
|
||||||
loc_to = get_or_create_location(destination_name, 'customer')
|
loc_to = get_or_create_location(destination_name, 'customer')
|
||||||
|
|
||||||
# Stocke toutes les infos du shipment pour la deuxième étape
|
# Stocker les données pour la deuxième étape
|
||||||
row_dict = {
|
shipments_data.append({
|
||||||
'si_number': si_number,
|
'si_number': si_number,
|
||||||
'bl_number': bl_number,
|
'bl_number': bl_number,
|
||||||
'bl_date': bl_date,
|
'bl_date': bl_date,
|
||||||
@@ -154,9 +154,8 @@ class AutomationCron(ModelSQL, ModelView):
|
|||||||
'agent': agent,
|
'agent': agent,
|
||||||
'vessel': vessel,
|
'vessel': vessel,
|
||||||
'from_location': loc_from,
|
'from_location': loc_from,
|
||||||
'to_location': loc_to
|
'to_location': loc_to,
|
||||||
}
|
})
|
||||||
row._shipment_data = row_dict # on attache les infos au row temporairement
|
|
||||||
|
|
||||||
# ----- Étape 1 : sauvegarde des objets de référence -----
|
# ----- Étape 1 : sauvegarde des objets de référence -----
|
||||||
if parties_to_save:
|
if parties_to_save:
|
||||||
@@ -170,8 +169,7 @@ class AutomationCron(ModelSQL, ModelView):
|
|||||||
Transaction().commit()
|
Transaction().commit()
|
||||||
|
|
||||||
# ----- Étape 2 : création des shipments -----
|
# ----- Étape 2 : création des shipments -----
|
||||||
for row in rows:
|
for data in shipments_data:
|
||||||
data = row._shipment_data
|
|
||||||
si_number = data['si_number']
|
si_number = data['si_number']
|
||||||
shipment = ShipmentIn.search([('reference', '=', si_number)], limit=1)
|
shipment = ShipmentIn.search([('reference', '=', si_number)], limit=1)
|
||||||
if shipment:
|
if shipment:
|
||||||
|
|||||||
Reference in New Issue
Block a user