Coverage for src/henrri_connect/models/items.py: 100%

52 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-05 10:54 +0200

1""" 

2Modèles pour les articles et catégories d'articles dans l'API Henrri Connect. 

3 

4Attributs: 

5- ItemCategoryRequest: Représente une requête de catégorie d'article. 

6- ItemCategoryType: Représente un type de catégorie d'article. 

7- ItemCategory: Représente une catégorie d'article. 

8- Item: Représente un article. 

9""" 

10 

11from __future__ import annotations 

12 

13from .base import CamelModel, Link, ItemCategoryContentKind, ItemCategoryKind, SortOrder 

14 

15 

16class ItemCategoryRequest(CamelModel): 

17 """ 

18 Représente une requête de catégorie d'article dans l'API Henrri Connect. 

19 

20 Attributes: 

21 page (int) : Index de la page de la requête (entre 1 et 2 147 483 647, defaut 1). 

22 limit (int) : Nombre d'articles par page (entre 1 et 100, défaut 50). 

23 search (str) : Chaine de recherche. 

24 sort_by (str) : Champ de tri. 

25 sort_order (str) : Ordre de tri (Ascending ou Descending). 

26 min_id (int) : Identifiant minimal de l'article (entre 1 et 2 147 483 647). 

27 from_date (str) : Date de début. 

28 to_date (str) : Date de fin. 

29 """ 

30 page: int = 1 

31 limit: int = 50 

32 search: str 

33 sort_by: str | None = None 

34 sort_order: str | None = None 

35 min_id: int | None = None 

36 from_date: str | None = None 

37 to_date: str | None = None 

38 

39 

40class ItemCategoryType(CamelModel): 

41 """ 

42 Représente un type de catégorie d'article dans l'API Henrri Connect. 

43 

44 Attributs: 

45 - id: Identifiant unique du type de catégorie d'article. 

46 - label: Libellé du type de catégorie d'article. 

47 - item_category_content_kind: Type de contenu de la catégorie d'article. 

48 - item_category_kind: Type de catégorie d'article. 

49 """ 

50 id: int | None = None 

51 label: str | None = None 

52 item_category_content_kind: str = ItemCategoryContentKind.SUPPLY 

53 item_category_kind: str = ItemCategoryKind.SERVICE 

54 

55 

56class ItemCategory(CamelModel): 

57 """ 

58 Représente une catégorie d'article dans l'API Henrri Connect. 

59 

60 Attributs: 

61 - id: Identifiant unique de la catégorie d'article. 

62 - type: Type de la catégorie d'article. 

63 - label: Libellé de la catégorie d'article. 

64 - margin_percent: Pourcentage de marge de la catégorie d'article. 

65 - hourly_rate: Tarif horaire de la catégorie d'article. 

66 - vat: Taux de TVA de la catégorie d'article. 

67 - is_added_to_revenue: Indique si les articles de la cat. sont ajoutés au chiffre d'affaires. 

68 - is_default: Indique si la catégorie d'article est la catégorie par défaut. 

69 - is_deleted: Indique si la catégorie d'article est supprimée. 

70 - item_category_kind: Type de la catégorie d'article (service, produit, ou fourniture). 

71 """ 

72 id: int | None = None 

73 type: ItemCategoryType | None = None 

74 label: str | None = None 

75 margin_percent: float = 0.0 

76 hourly_rate: float = 0.0 

77 vat: float = 0.0 

78 is_added_to_revenue: bool = False 

79 is_default: bool = False 

80 is_deleted: bool = False 

81 item_category_kind: str = ItemCategoryKind.SERVICE 

82 

83 

84class Item(CamelModel): 

85 """ 

86 Représente un article dans l'API Henrri Connect. 

87 

88 Attributs: 

89 - id: Identifiant unique de l'article. 

90 - reference: Référence de l'article. 

91 - description: Description de l'article. 

92 - is_tax_included: Indique si la taxe est incluse dans le prix. 

93 - selling_price_without_tax: Prix de vente hors taxe de l'article. 

94 - selling_price_with_tax: Prix de vente TTC de l'article. 

95 - purchase_price: Prix d'achat de l'article. 

96 - vat_percent: Taux de TVA de l'article. 

97 - is_a_group: Indique si l'article est un groupe d'articles. 

98 - item_category: Catégorie de l'article (si applicable). 

99 - item_category_id: Identifiant de la catégorie de l'article (si applicable). 

100 - unit_id: Identifiant de l'unité de l'article (si applicable). 

101 - parent_item_id: Id d'article parent si l'article est un élément d'un grp 

102 d'articles (si applicable). 

103 - creation_date: Date de création de l'article. 

104 - links: Liste de liens associés à l'article (si applicable). 

105 """ 

106 id: int | None = None 

107 reference: str | None = None 

108 description: str | None = None 

109 is_tax_included: bool = False 

110 selling_price_without_tax: float | None = None 

111 selling_price_with_tax: float | None = None 

112 purchase_price: float = 0.0 

113 vat_percent: float 

114 is_a_group: bool = False 

115 item_category: ItemCategory | None = None 

116 item_category_id: int | None = None 

117 unit_id: int | None = None 

118 parent_item_id: int | None = None 

119 creation_date: str 

120 links: list[Link] | None = None 

121 

122 

123class ItemsQuery(CamelModel): 

124 """ 

125 Représente une requête de catégorie d'article dans l'API Henrri Connect. 

126 

127 Attributs: 

128 - page (int) : Index de la page de la requête (entre 1 et 2 147 483 647, defaut 1). 

129 - limit (int) : Nombre d'articles par page (entre 1 et 100, défaut 50). 

130 - search (str) : Chaine de recherche. 

131 - sort_by (str) : Champ de tri. 

132 - sort_order (SortOrder) : Ordre de tri (Ascending ou Descending). 

133 - min_id (int) : Identifiant minimal de l'article (entre 1 et 2 147 483 647). 

134 - from_date (str) : Date de début. 

135 - to_date (str) : Date de fin. 

136 """ 

137 page: int = 1 

138 limit: int = 50 

139 search: str | None = None 

140 sort_by: str | None = None 

141 sort_order: SortOrder | None = None 

142 min_id: int 

143 from_date: str 

144 to_date: str