méthodes de contact utilitaures

This commit is contained in:
fanilo 2025-12-28 21:34:59 +01:00
parent 800d828f75
commit 09e3589132

View file

@ -7522,36 +7522,64 @@ class SageConnector:
logger.error(f"[ERREUR] {e}", exc_info=True)
raise RuntimeError(f"Erreur technique: {e}")
def _contact_to_dict(self, contact) -> Dict:
"""Convertit un objet COM Contact en dictionnaire"""
"""
Convertit un objet COM Contact (IBOTiersContact3) en dictionnaire
VERSION REFACTORISÉE
"""
try:
civilite_code = getattr(contact, "CT_Civilite", None)
# IBOTiersContact3 utilise Nom/Prenom (sans préfixe CT_)
civilite_code = getattr(contact, "Civilite", None)
civilite_map = {0: "M.", 1: "Mme", 2: "Mlle", 3: "Société"}
civilite = civilite_map.get(civilite_code) if civilite_code is not None else None
# Coordonnées via Telecom
telephone = None
portable = None
telecopie = None
email = None
if hasattr(contact, 'Telecom'):
try:
telecom = contact.Telecom
telephone = self._safe_strip(getattr(telecom, "Telephone", None))
portable = self._safe_strip(getattr(telecom, "Portable", None))
telecopie = self._safe_strip(getattr(telecom, "Telecopie", None))
email = self._safe_strip(getattr(telecom, "EMail", None))
except:
pass
# Récupérer CT_No et N_Contact via SQL si possible
# Car IBOTiersContact3 du DossierContact ne les a pas
contact_numero = None
n_contact = None
numero = None
# Ces infos doivent venir de F_CONTACTT
# On les passe plutôt en paramètre ou on les récupère différemment
return {
"numero": self._safe_strip(getattr(contact, "CT_Num", None)),
"contact_numero": getattr(contact, "CT_No", None),
"n_contact": getattr(contact, "N_Contact", None),
"numero": numero, # À passer en paramètre
"contact_numero": contact_numero, # À passer en paramètre
"n_contact": n_contact, # À passer en paramètre
"civilite": civilite,
"nom": self._safe_strip(getattr(contact, "CT_Nom", None)),
"prenom": self._safe_strip(getattr(contact, "CT_Prenom", None)),
"fonction": self._safe_strip(getattr(contact, "CT_Fonction", None)),
"service_code": getattr(contact, "N_Service", None),
"telephone": self._safe_strip(getattr(contact, "CT_Telephone", None)),
"portable": self._safe_strip(getattr(contact, "CT_TelPortable", None)),
"telecopie": self._safe_strip(getattr(contact, "CT_Telecopie", None)),
"email": self._safe_strip(getattr(contact, "CT_EMail", None)),
"facebook": self._safe_strip(getattr(contact, "CT_Facebook", None)),
"linkedin": self._safe_strip(getattr(contact, "CT_LinkedIn", None)),
"skype": self._safe_strip(getattr(contact, "CT_Skype", None)),
"nom": self._safe_strip(getattr(contact, "Nom", None)),
"prenom": self._safe_strip(getattr(contact, "Prenom", None)),
"fonction": self._safe_strip(getattr(contact, "Fonction", None)),
"service_code": getattr(contact, "ServiceContact", None),
"telephone": telephone,
"portable": portable,
"telecopie": telecopie,
"email": email,
"facebook": self._safe_strip(getattr(contact, "Facebook", None)),
"linkedin": self._safe_strip(getattr(contact, "LinkedIn", None)),
"skype": self._safe_strip(getattr(contact, "Skype", None)),
}
except Exception as e:
logger.warning(f"Erreur conversion contact: {e}")
return {}
def _row_to_contact_dict(self, row) -> Dict:
"""Convertit une ligne SQL en dictionnaire contact"""
civilite_code = row.CT_Civilite