Coverage for src/henrri_connect/models/customer.py: 100%
41 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-09 19:37 +0200
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-09 19:37 +0200
1"""
2Modèles pour les clients dans l'API Henrri Connect.
4Attributs:
5- Customer: Représente un client dans l'API Henrri Connect.
6"""
8from __future__ import annotations
10from datetime import datetime
12from .base import CamelModel, Link, CompanyIdentifierType, CustomerType, SortOrder
13from .address_contacts import Contact, Address
16class CustomerRequest(CamelModel):
17 """
18 Modèle pour les requêtes de recherches clients dans l'API Henrri Connect.
20 Attributs:
21 - page: Numéro de page (par défaut 1).
22 - limit: Nombre de clients par page (par défaut 50).
23 - search: Chaîne de recherche (obligatoire).
24 - sort_by: Champ de tri.
25 - sort_order: Ordre de tri (Ascending ou Descending).
26 - min_id: Identifiant minimal de client (entre 1 et 2 147 483 647).
27 - from_date: Date de début.
28 - to_date: Date de fin.
29 """
30 page: int = 1
31 limit: int = 50
32 search: str
33 sort_by: str | None = None
34 sort_order: SortOrder | None = None
35 min_id: int | None = None
36 from_date: str
37 to_date: str
40class Customer(CamelModel):
41 """
42 Modèle pour les clients dans l'API Henrri Connect.
44 Attributs:
45 - id: Identifiant unique du client.
46 - name: Nom du client.
47 - type: Type de client (individuel ou entreprise).
48 - accounting_number: Numéro comptable du client.
49 - company_identifier_type: Type d'identifiant de l'entreprise (SIRET, BCE, ou inconnu).
50 - siret: Numéro SIRET de l'entreprise (si applicable).
51 - trade_name: Nom commercial de l'entreprise (si applicable).
52 - trade_name_extension: Extension du nom commercial de l'entreprise (si applicable).
53 - ict: Identifiant de contact de l'entreprise (si applicable).
54 - vat_number: Numéro de TVA du client (si applicable).
55 - address: Adresse du client (si applicable).
56 - contacts: Liste de contacts associés au client (si applicable).
57 - days_number_before_payment_reminder_level1: Nb jours avant le premier rappel de paiement.
58 - days_number_before_payment_reminder_level2: Nb jours avant le deuxième rappel de paiement.
59 - days_number_before_payment_reminder_level3: Nb jours avant le troisième rappel de paiement.
60 - days_number_before_payment_reminder_level4: Nb jours avant le quatrième rappel de paiement.
61 - service_discount_percentage: Pourcentage de remise pour les services.
62 - product_discount_percentage: Pourcentage de remise pour les produits.
63 - customer_type_alert_enabled: Indique si les alertes de type de client sont activées.
64 - is_deleted: Indique si le client est supprimé.
65 - is_supplier: Indique si le client est également un fournisseur.
66 - is_advisor: Indique si le client est également un conseiller.
67 - import_date: Date d'importation du client.
68 - comment: Commentaire sur le client.
69 - website: Site web du client (si applicable).
70 - creation_date: Date de création du client.
71 - links: Liste de liens associés au client (si applicable).
72 """
73 id: int | None = None
74 name: str
75 type: CustomerType = CustomerType.INDIVIDUAL
76 accounting_number: str | None = None
77 company_identifier_type: CompanyIdentifierType | None = None
78 siret: str | None = None
79 trade_name: str | None = None
80 trade_name_extension: str | None = None
81 ict: str | None = None
82 vat_number: str | None = None
83 address: Address | None = None
84 contacts: list[Contact] | None = None
85 days_number_before_payment_reminder_level1: int | None = None
86 days_number_before_payment_reminder_level2: int | None = None
87 days_number_before_payment_reminder_level3: int | None = None
88 days_number_before_payment_reminder_level4: int | None = None
89 service_discount_percentage: float = 0.0
90 product_discount_percentage: float = 0.0
91 customer_type_alert_enabled: bool = False
92 is_deleted: bool = False
93 is_supplier: bool = False
94 is_advisor: bool | None = None
95 import_date: datetime | None = None
96 comment: str | None = None
97 website: str | None = None
98 creation_date: str | None = None
99 links: list[Link] | None = None