fix: Improve client association logic by using SetClient with fallback to SetDefaultClient and enhanced verification.

This commit is contained in:
Fanilo-Nantenaina 2025-11-28 11:56:14 +03:00
parent b06720eace
commit a4dd2c40ba

View file

@ -1266,18 +1266,35 @@ class SageConnector:
if not client_obj_cible:
raise ValueError(f"Impossible de charger client {client_code}")
# ✅ CORRECTION : Utiliser SetDefault puis définir manuellement CT_Num
doc_cible.SetDefaultClient(client_obj_cible)
# CRITIQUE : S'assurer que CT_Num est bien défini
doc_cible.CT_Num = client_code
# ✅ SOLUTION : Utiliser SetClient au lieu de SetDefaultClient
# SetClient définit UNIQUEMENT le client sans réinitialiser les autres champs
try:
doc_cible.SetClient(client_obj_cible)
logger.info(
f"[TRANSFORM] SetClient() appelé pour {client_code}"
)
except Exception as e:
logger.warning(
f"[TRANSFORM] SetClient() échoué: {e}, tentative SetDefaultClient()"
)
doc_cible.SetDefaultClient(client_obj_cible)
doc_cible.Write()
# Vérifier immédiatement que le client est bien attaché
# Vérifier que le client est bien attaché
doc_cible.Read()
client_verifie = getattr(doc_cible, "CT_Num", None)
if not client_verifie:
# Dernière tentative : récupérer via la propriété Client
try:
client_test = getattr(doc_cible, "Client", None)
if client_test:
client_test.Read()
client_verifie = getattr(client_test, "CT_Num", None)
except:
pass
if not client_verifie:
raise ValueError(
f"Échec association client {client_code} - CT_Num reste vide après Write()"