Coverage for src/henrri_connect/models/document_line.py: 87%
82 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 document pour l'API Henrri Connect.
4Attributs:
5- DocumentType: Représente un type de document dans l'API Henrri Connect.
6- DocumentLabelElement: Représente un élément d'étiquette de document dans l'API Henrri Connect.
7- DocumentLabel: Représente une étiquette de document dans l'API Henrri Connect.
8- DocumentLineType: Représente un type de ligne de document dans l'API Henrri Connect.
9- DocumentLine: Représente une ligne de document dans l'API Henrri Connect.
10- DocumentLineMoveQueryParameters: Représente les paramètres de requête pour déplacer une ligne
11de document dans l'API Henrri Connect.
12"""
14from __future__ import annotations
16from .base import CamelModel, DocumentLineKind, Link, SortOrder
17from .items import Item
20class DocumentLineType(CamelModel):
21 """
22 Représente un type de ligne de document dans l'API Henrri Connect.
24 Attributs:
25 - id: Identifiant unique du type de ligne de document.
26 - label: Libellé du type de ligne de document.
27 - type: Type de ligne de document.
28 """
29 id: int | None = None
30 label: str | None = None
31 type: str = DocumentLineKind.NONE
34class DocumentLine(CamelModel):
35 """
36 Représente une ligne de document dans l'API Henrri Connect.
38 ``type_id`` peut être récupéré par un GET sur ``/documentlinetypes`` ou avec
39 ``henrry_connect.<client>.document_line_types.list_document_line_types``
41 Attributs:
42 - id: Identifiant unique de la ligne de document.
43 - document_id: Identifiant du document auquel appartient la ligne.
44 - reference: Référence de la ligne de document.
45 - description: Description de la ligne de document.
46 - selling_price_without_tax: Prix de vente sans taxe de la ligne de document.
47 - purchasing_price_without_tax: Prix d'achat sans taxe de la ligne de document.
48 - vat_percent: Pourcentage de TVA appliqué à la ligne de document.
49 - quantity: Quantité de l'article dans la ligne de document.
50 - is_tax_included: Indique si les prix incluent la taxe.
51 - total_without_tax: Total sans taxe pour la ligne de document.
52 - total_with_tax: Total avec taxe pour la ligne de document.
53 - are_elements_of_group_shown: Indique si les éléments du groupe sont affichés.
54 - line_number: Numéro de la ligne dans le document.
55 - is_a_group: Indique si la ligne est un groupe d'articles.
56 - does_group_own_different_vat: Indique si le groupe a une TVA différente pour ses éléments.
57 - is_member_of_a_group: Indique si la ligne est membre d'un groupe d'articles.
58 - is_adjustment_of_group: Indique si la ligne est un ajustement d'un groupe d'articles.
59 - type_id: Identifiant du type de ligne de document.
60 - type: Type de ligne de document (si applicable).
61 - group_id: Identifiant du groupe d'articles auquel appartient la ligne (si applicable).
62 - item_id: Identifiant de l'article associé à la ligne (si applicable).
63 - item: Article associé à la ligne (si applicable).
64 - links: Liste de liens associés à la ligne de document (si applicable).
65 """
66 id: int | None = None
67 document_id: int | None = None
68 reference: str | None = None
69 description: str | None = None
70 selling_price_without_tax: float | None = None
71 purchasing_price_without_tax: float = 0.0
72 vat_percent: float | None = None
73 quantity: float = 0.0
74 is_tax_included: bool = False
75 total_without_tax: float | None = None
76 total_with_tax: float | None = None
77 are_elements_of_group_shown: bool = False
78 line_number: int | None = None
79 is_a_group: bool = False
80 does_group_own_different_vat: bool = False
81 is_member_of_a_group: bool = False
82 is_adjustment_of_group: bool = False
83 type_id: int
84 type: DocumentLineType | None = None
85 group_id: int | None = None
86 item_id: int | None = None
87 item: Item | None = None
88 links: list[Link] | None = None
90class DecorativeDocumentLine(DocumentLine):
91 """
92 Représente une ligne de document decoratif dans l'API Henrri Connect.
94 Attributs:
95 - type_id: Identifiant du type de ligne de document.
96 """
97 type_id: int = 0
98 document_id: int| None = None
99 reference: str | None = None
100 description: str | None = None
101 selling_price_without_tax: float | None = None
102 purchasing_price_without_tax: float = 0.0
103 vat_percent: float | None = None
104 quantity: float = 1.0
105 is_tax_included: bool = False
106 total_without_tax: float | None = None
107 total_with_tax: float | None = None
108 are_elements_of_group_shown: bool = False
109 line_number: int | None = None
110 is_a_group: bool = False
111 does_group_own_different_vat: bool = False
112 is_member_of_a_group: bool = False
113 is_adjustment_of_group: bool = False
114 type_id: int
115 type: DocumentLineType | None = None
116 group_id: int | None = None
117 item_id: int | None = None
118 item: Item | None = None
119 links: list[Link] | None = None
121 def horizontal_line(self) -> "DocumentLine":
122 """
123 Créer une ligne horizontale dans le document.
125 Returns:
126 DocumentLine: La ligne horizontale crée.
127 """
128 self.type_id = 13
129 return self
131 def empty_line(self) -> "DocumentLine":
132 """
133 Créer une ligne vide dans le document.
135 Returns:
136 DocumentLine: La ligne vide crée.
137 """
138 self.type_id = 11
139 return self
141 def subtotal_line(self) -> "DocumentLine":
142 """
143 Créer une ligne de sous-total dans le document.
145 Returns:
146 DocumentLine: La ligne de sous-total crée.
147 """
148 self.type_id = 5
149 return self
151 def total_line(self) -> "DocumentLine":
152 """
153 Créer une ligne de total dans le document.
155 Returns:
156 DocumentLine: La ligne de total crée.
157 """
158 self.type_id = 4
159 return self
161 def textual_line(self, text: str) -> "DocumentLine":
162 """
163 Créer une ligne de texte dans le document.
165 Returns:
166 DocumentLine: La ligne de texte crée.
167 """
168 self.type_id = 12
169 self.description = text
170 return self
172class DocumentLineMoveQueryParameters(CamelModel):
173 """
174 Représente les paramètres de requête pour déplacer une ligne de document dans
175 l'API Henrri Connect.
177 Attributs:
178 - to: Identifiant de la ligne de document vers laquelle déplacer la ligne.
179 """
180 to: int
183class DocumentLineListQueryParameters(CamelModel):
184 """
185 Représente les paramètres de requête pour obtenir une liste de lignes de document
186 dans l'API Henrri Connect.
188 Attributs:
189 - document_id: Identifiant du document auquel appartient la ligne.
190 """
191 page: int = 1
192 limit: int = 50
193 search: str | None = None
194 sort_by: str | None = None
195 sort_order: SortOrder | None = None
196 minId: int
197 from_date: str
198 to_date: str