Sage100-vps/schemas/tiers/contact.py
2025-12-29 11:20:55 +03:00

41 lines
No EOL
1.9 KiB
Python

from typing import Optional, ClassVar
from pydantic import BaseModel, Field, validator
class Contact(BaseModel):
"""Contact associé à un tiers"""
numero: Optional[str] = Field(None, description="Code du tiers parent (CT_Num)")
contact_numero: Optional[int] = Field(None, description="Numéro unique du contact (CT_No)")
n_contact: Optional[int] = Field(None, description="Numéro de référence contact (N_Contact)")
civilite: Optional[str] = Field(None, description="Civilité : M., Mme, Mlle (CT_Civilite)")
nom: Optional[str] = Field(None, description="Nom de famille (CT_Nom)")
prenom: Optional[str] = Field(None, description="Prénom (CT_Prenom)")
fonction: Optional[str] = Field(None, description="Fonction/Titre (CT_Fonction)")
service_code: Optional[int] = Field(None, description="Code du service (N_Service)")
telephone: Optional[str] = Field(None, description="Téléphone fixe (CT_Telephone)")
portable: Optional[str] = Field(None, description="Téléphone mobile (CT_TelPortable)")
telecopie: Optional[str] = Field(None, description="Fax (CT_Telecopie)")
email: Optional[str] = Field(None, description="Adresse email (CT_EMail)")
facebook: Optional[str] = Field(None, description="Profil Facebook (CT_Facebook)")
linkedin: Optional[str] = Field(None, description="Profil LinkedIn (CT_LinkedIn)")
skype: Optional[str] = Field(None, description="Identifiant Skype (CT_Skype)")
est_defaut: Optional[bool] = Field(False, description="Contact par défaut")
civilite_map: ClassVar[dict] = {
0: "M.",
1: "Mme",
2: "Mlle",
3: "Société",
}
@validator("civilite", pre=True, always=True)
def convert_civilite(cls, v):
if v is None:
return v
if isinstance(v, int):
return cls.civilite_map.get(v, str(v))
return v