204 lines
7.7 KiB
Python
204 lines
7.7 KiB
Python
from typing import List, Optional
|
|
from pydantic import BaseModel, Field
|
|
from schemas.tiers.contact import Contact
|
|
from enum import IntEnum
|
|
|
|
from schemas.tiers.tiers_collab import Collaborateur
|
|
|
|
|
|
class TypeTiersInt(IntEnum):
|
|
CLIENT = 0
|
|
FOURNISSEUR = 1
|
|
SALARIE = 2
|
|
AUTRE = 3
|
|
|
|
|
|
class TiersDetails(BaseModel):
|
|
numero: Optional[str] = Field(None, description="Code tiers (CT_Num)")
|
|
intitule: Optional[str] = Field(
|
|
None, description="Raison sociale ou Nom complet (CT_Intitule)"
|
|
)
|
|
type_tiers: Optional[int] = Field(
|
|
None, description="Type : 0=Client, 1=Fournisseur (CT_Type)"
|
|
)
|
|
qualite: Optional[str] = Field(
|
|
None, description="Qualité Sage : CLI, FOU, PRO (CT_Qualite)"
|
|
)
|
|
classement: Optional[str] = Field(
|
|
None, description="Code de classement (CT_Classement)"
|
|
)
|
|
raccourci: Optional[str] = Field(
|
|
None, description="Code raccourci 7 car. (CT_Raccourci)"
|
|
)
|
|
siret: Optional[str] = Field(None, description="N° SIRET 14 chiffres (CT_Siret)")
|
|
tva_intra: Optional[str] = Field(
|
|
None, description="N° TVA intracommunautaire (CT_Identifiant)"
|
|
)
|
|
code_naf: Optional[str] = Field(None, description="Code NAF/APE (CT_Ape)")
|
|
|
|
contact: Optional[str] = Field(
|
|
None, description="Nom du contact principal (CT_Contact)"
|
|
)
|
|
adresse: Optional[str] = Field(None, description="Adresse ligne 1 (CT_Adresse)")
|
|
complement: Optional[str] = Field(
|
|
None, description="Complément d'adresse (CT_Complement)"
|
|
)
|
|
code_postal: Optional[str] = Field(None, description="Code postal (CT_CodePostal)")
|
|
ville: Optional[str] = Field(None, description="Ville (CT_Ville)")
|
|
region: Optional[str] = Field(None, description="Région/État (CT_CodeRegion)")
|
|
pays: Optional[str] = Field(None, description="Pays (CT_Pays)")
|
|
|
|
telephone: Optional[str] = Field(None, description="Téléphone fixe (CT_Telephone)")
|
|
telecopie: Optional[str] = Field(None, description="Fax (CT_Telecopie)")
|
|
email: Optional[str] = Field(None, description="Email principal (CT_EMail)")
|
|
site_web: Optional[str] = Field(None, description="Site web (CT_Site)")
|
|
facebook: Optional[str] = Field(None, description="Profil Facebook (CT_Facebook)")
|
|
linkedin: Optional[str] = Field(None, description="Profil LinkedIn (CT_LinkedIn)")
|
|
|
|
taux01: Optional[float] = Field(None, description="Taux personnalisé 1 (CT_Taux01)")
|
|
taux02: Optional[float] = Field(None, description="Taux personnalisé 2 (CT_Taux02)")
|
|
taux03: Optional[float] = Field(None, description="Taux personnalisé 3 (CT_Taux03)")
|
|
taux04: Optional[float] = Field(None, description="Taux personnalisé 4 (CT_Taux04)")
|
|
|
|
statistique01: Optional[str] = Field(
|
|
None, description="Statistique 1 (CT_Statistique01)"
|
|
)
|
|
statistique02: Optional[str] = Field(
|
|
None, description="Statistique 2 (CT_Statistique02)"
|
|
)
|
|
statistique03: Optional[str] = Field(
|
|
None, description="Statistique 3 (CT_Statistique03)"
|
|
)
|
|
statistique04: Optional[str] = Field(
|
|
None, description="Statistique 4 (CT_Statistique04)"
|
|
)
|
|
statistique05: Optional[str] = Field(
|
|
None, description="Statistique 5 (CT_Statistique05)"
|
|
)
|
|
statistique06: Optional[str] = Field(
|
|
None, description="Statistique 6 (CT_Statistique06)"
|
|
)
|
|
statistique07: Optional[str] = Field(
|
|
None, description="Statistique 7 (CT_Statistique07)"
|
|
)
|
|
statistique08: Optional[str] = Field(
|
|
None, description="Statistique 8 (CT_Statistique08)"
|
|
)
|
|
statistique09: Optional[str] = Field(
|
|
None, description="Statistique 9 (CT_Statistique09)"
|
|
)
|
|
statistique10: Optional[str] = Field(
|
|
None, description="Statistique 10 (CT_Statistique10)"
|
|
)
|
|
|
|
encours_autorise: Optional[float] = Field(
|
|
None, description="Encours maximum autorisé (CT_Encours)"
|
|
)
|
|
assurance_credit: Optional[float] = Field(
|
|
None, description="Montant assurance crédit (CT_Assurance)"
|
|
)
|
|
langue: Optional[int] = Field(
|
|
None, description="Code langue 0=FR, 1=EN (CT_Langue)"
|
|
)
|
|
commercial_code: Optional[int] = Field(
|
|
None, description="Code du commercial (CO_No)"
|
|
)
|
|
commercial: Optional[Collaborateur] = Field(
|
|
None, description="Détails du commercial/collaborateur"
|
|
)
|
|
|
|
lettrage_auto: Optional[bool] = Field(
|
|
None, description="Lettrage automatique (CT_Lettrage)"
|
|
)
|
|
est_actif: Optional[bool] = Field(None, description="True si actif (CT_Sommeil=0)")
|
|
type_facture: Optional[int] = Field(
|
|
None, description="Type facture 0=Facture, 1=BL (CT_Facture)"
|
|
)
|
|
est_prospect: Optional[bool] = Field(
|
|
None, description="True si prospect (CT_Prospect=1)"
|
|
)
|
|
bl_en_facture: Optional[int] = Field(
|
|
None, description="Imprimer BL en facture (CT_BLFact)"
|
|
)
|
|
saut_page: Optional[int] = Field(
|
|
None, description="Saut de page sur documents (CT_Saut)"
|
|
)
|
|
validation_echeance: Optional[int] = Field(
|
|
None, description="Valider les échéances (CT_ValidEch)"
|
|
)
|
|
controle_encours: Optional[int] = Field(
|
|
None, description="Contrôler l'encours (CT_ControlEnc)"
|
|
)
|
|
exclure_relance: Optional[bool] = Field(
|
|
None, description="Exclure des relances (CT_NotRappel)"
|
|
)
|
|
exclure_penalites: Optional[bool] = Field(
|
|
None, description="Exclure des pénalités (CT_NotPenal)"
|
|
)
|
|
bon_a_payer: Optional[int] = Field(
|
|
None, description="Bon à payer obligatoire (CT_BonAPayer)"
|
|
)
|
|
|
|
priorite_livraison: Optional[int] = Field(
|
|
None, description="Priorité livraison (CT_PrioriteLivr)"
|
|
)
|
|
livraison_partielle: Optional[int] = Field(
|
|
None, description="Livraison partielle (CT_LivrPartielle)"
|
|
)
|
|
delai_transport: Optional[int] = Field(
|
|
None, description="Délai transport jours (CT_DelaiTransport)"
|
|
)
|
|
delai_appro: Optional[int] = Field(
|
|
None, description="Délai appro jours (CT_DelaiAppro)"
|
|
)
|
|
|
|
commentaire: Optional[str] = Field(
|
|
None, description="Commentaire libre (CT_Commentaire)"
|
|
)
|
|
|
|
section_analytique: Optional[str] = Field(
|
|
None, description="Section analytique (CA_Num)"
|
|
)
|
|
|
|
mode_reglement_code: Optional[int] = Field(
|
|
None, description="Code mode règlement (MR_No)"
|
|
)
|
|
surveillance_active: Optional[bool] = Field(
|
|
None, description="Surveillance financière (CT_Surveillance)"
|
|
)
|
|
coface: Optional[str] = Field(None, description="Code Coface 25 car. (CT_Coface)")
|
|
forme_juridique: Optional[str] = Field(
|
|
None, description="Forme juridique SA, SARL (CT_SvFormeJuri)"
|
|
)
|
|
effectif: Optional[str] = Field(
|
|
None, description="Nombre d'employés (CT_SvEffectif)"
|
|
)
|
|
sv_regularite: Optional[str] = Field(
|
|
None, description="Régularité paiements (CT_SvRegul)"
|
|
)
|
|
sv_cotation: Optional[str] = Field(
|
|
None, description="Cotation crédit (CT_SvCotation)"
|
|
)
|
|
sv_objet_maj: Optional[str] = Field(
|
|
None, description="Objet dernière MAJ (CT_SvObjetMaj)"
|
|
)
|
|
sv_chiffre_affaires: Optional[float] = Field(
|
|
None, description="Chiffre d'affaires (CT_SvCA)"
|
|
)
|
|
sv_resultat: Optional[float] = Field(
|
|
None, description="Résultat financier (CT_SvResultat)"
|
|
)
|
|
|
|
compte_general: Optional[str] = Field(
|
|
None, description="Compte général principal (CG_NumPrinc)"
|
|
)
|
|
categorie_tarif: Optional[int] = Field(
|
|
None, description="Catégorie tarifaire (N_CatTarif)"
|
|
)
|
|
categorie_compta: Optional[int] = Field(
|
|
None, description="Catégorie comptable (N_CatCompta)"
|
|
)
|
|
|
|
contacts: Optional[List[Contact]] = Field(
|
|
default_factory=list, description="Liste des contacts du tiers"
|
|
)
|