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
« 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.
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"""
11from __future__ import annotations
13from .base import CamelModel, Link, ItemCategoryContentKind, ItemCategoryKind, SortOrder
16class ItemCategoryRequest(CamelModel):
17 """
18 Représente une requête de catégorie d'article dans l'API Henrri Connect.
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
40class ItemCategoryType(CamelModel):
41 """
42 Représente un type de catégorie d'article dans l'API Henrri Connect.
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
56class ItemCategory(CamelModel):
57 """
58 Représente une catégorie d'article dans l'API Henrri Connect.
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
84class Item(CamelModel):
85 """
86 Représente un article dans l'API Henrri Connect.
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
123class ItemsQuery(CamelModel):
124 """
125 Représente une requête de catégorie d'article dans l'API Henrri Connect.
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