Sage100-ws/utils/tiers/contacts/contacts.py

62 lines
No EOL
1.9 KiB
Python

from typing import Dict, List, Optional, Any
from utils.functions.items_to_dict import _row_to_contact_dict
import logging
from utils.functions.functions import _safe_strip
logger = logging.getLogger(__name__)
def _get_contacts_client(numero: str, conn) -> list:
try:
cursor = conn.cursor()
query = """
SELECT
CT_Num, CT_No, N_Contact,
CT_Civilite, CT_Nom, CT_Prenom, CT_Fonction,
N_Service,
CT_Telephone, CT_TelPortable, CT_Telecopie, CT_EMail,
CT_Facebook, CT_LinkedIn, CT_Skype
FROM F_CONTACTT
WHERE CT_Num = ?
ORDER BY N_Contact, CT_Nom, CT_Prenom
"""
cursor.execute(query, [numero])
rows = cursor.fetchall()
query_client = """
SELECT CT_Contact
FROM F_COMPTET
WHERE CT_Num = ?
"""
cursor.execute(query_client, [numero])
client_row = cursor.fetchone()
nom_contact_defaut = None
if client_row:
nom_contact_defaut = _safe_strip(client_row.CT_Contact)
contacts = []
for row in rows:
contact = _row_to_contact_dict(row)
if nom_contact_defaut:
nom_complet = f"{contact.get('prenom', '')} {contact['nom']}".strip()
contact["est_defaut"] = (
nom_complet == nom_contact_defaut or
contact['nom'] == nom_contact_defaut
)
else:
contact["est_defaut"] = False
contacts.append(contact)
return contacts
except Exception as e:
logger.warning(f" Impossible de récupérer contacts pour {numero}: {e}")
return []
__all__ = [
"_get_contacts_client"
]