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

1""" 

2Modèles pour les clients dans l'API Henrri Connect. 

3 

4Attributs: 

5- Customer: Représente un client dans l'API Henrri Connect. 

6""" 

7 

8from __future__ import annotations 

9 

10from datetime import datetime 

11 

12from .base import CamelModel, Link, CompanyIdentifierType, CustomerType, SortOrder 

13from .address_contacts import Contact, Address 

14 

15 

16class CustomerRequest(CamelModel): 

17 """ 

18 Modèle pour les requêtes de recherches clients dans l'API Henrri Connect. 

19 

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 

38 

39 

40class Customer(CamelModel): 

41 """ 

42 Modèle pour les clients dans l'API Henrri Connect. 

43 

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