From 448227c80f6af51b607791dcfb289e4a3bf6e412 Mon Sep 17 00:00:00 2001 From: Fanilo-Nantenaina Date: Sat, 3 Jan 2026 16:56:25 +0300 Subject: [PATCH] feat(articles): extend article schemas with additional fields --- schemas/articles/articles.py | 80 ++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/schemas/articles/articles.py b/schemas/articles/articles.py index 2cbcf78..79b2d62 100644 --- a/schemas/articles/articles.py +++ b/schemas/articles/articles.py @@ -438,33 +438,81 @@ class ArticleList(BaseModel): class ArticleCreate(BaseModel): - """Schéma pour création d'article""" - reference: str = Field(..., max_length=18, description="Référence article") designation: str = Field(..., max_length=69, description="Désignation") + famille: Optional[str] = Field(None, max_length=18, description="Code famille") + prix_vente: Optional[float] = Field(None, ge=0, description="Prix vente HT") prix_achat: Optional[float] = Field(None, ge=0, description="Prix achat HT") + coef: Optional[float] = Field(None, ge=0, description="Coefficient") + stock_reel: Optional[float] = Field(None, ge=0, description="Stock initial") stock_mini: Optional[float] = Field(None, ge=0, description="Stock minimum") - code_ean: Optional[str] = Field(None, max_length=13, description="Code-barres") - unite_vente: Optional[str] = Field("UN", max_length=4, description="Unité") - tva_code: Optional[str] = Field(None, max_length=5, description="Code TVA") - description: Optional[str] = Field(None, description="Description") + stock_maxi: Optional[float] = Field(None, ge=0, description="Stock maximum") + + code_ean: Optional[str] = Field(None, max_length=13, description="Code-barres EAN") + unite_vente: Optional[str] = Field("UN", max_length=10, description="Unité vente") + tva_code: Optional[str] = Field(None, max_length=10, description="Code TVA") + code_fiscal: Optional[str] = Field(None, max_length=10, description="Code fiscal") + + description: Optional[str] = Field( + None, max_length=255, description="Description/Commentaire" + ) + + pays: Optional[str] = Field(None, max_length=3, description="Pays d'origine") + garantie: Optional[int] = Field(None, ge=0, description="Garantie en mois") + delai: Optional[int] = Field(None, ge=0, description="Délai livraison jours") + + poids_net: Optional[float] = Field(None, ge=0, description="Poids net kg") + poids_brut: Optional[float] = Field(None, ge=0, description="Poids brut kg") + + stat_01: Optional[str] = Field(None, max_length=20, description="Statistique 1") + stat_02: Optional[str] = Field(None, max_length=20, description="Statistique 2") + stat_03: Optional[str] = Field(None, max_length=20, description="Statistique 3") + stat_04: Optional[str] = Field(None, max_length=20, description="Statistique 4") + stat_05: Optional[str] = Field(None, max_length=20, description="Statistique 5") + + soumis_escompte: Optional[bool] = Field(None, description="Soumis à escompte") + publie: Optional[bool] = Field(None, description="Publié web/catalogue") + en_sommeil: Optional[bool] = Field(None, description="Article en sommeil") class ArticleUpdate(BaseModel): - """Schéma pour modification d'article""" + designation: Optional[str] = Field(None, max_length=69, description="Désignation") - designation: Optional[str] = Field(None, max_length=69) - prix_vente: Optional[float] = Field(None, ge=0) - prix_achat: Optional[float] = Field(None, ge=0) - stock_reel: Optional[float] = Field( - None, ge=0, description="Critique pour erreur 2881" - ) - stock_mini: Optional[float] = Field(None, ge=0) - code_ean: Optional[str] = Field(None, max_length=13) - description: Optional[str] = Field(None) + famille: Optional[str] = Field(None, max_length=18, description="Code famille") + + prix_vente: Optional[float] = Field(None, ge=0, description="Prix vente HT") + prix_achat: Optional[float] = Field(None, ge=0, description="Prix achat HT") + coef: Optional[float] = Field(None, ge=0, description="Coefficient") + + stock_reel: Optional[float] = Field(None, ge=0, description="Stock réel") + stock_mini: Optional[float] = Field(None, ge=0, description="Stock minimum") + stock_maxi: Optional[float] = Field(None, ge=0, description="Stock maximum") + + code_ean: Optional[str] = Field(None, max_length=13, description="Code-barres EAN") + unite_vente: Optional[str] = Field(None, max_length=10, description="Unité vente") + code_fiscal: Optional[str] = Field(None, max_length=10, description="Code fiscal") + + description: Optional[str] = Field(None, max_length=255, description="Description") + + pays: Optional[str] = Field(None, max_length=3, description="Pays d'origine") + garantie: Optional[int] = Field(None, ge=0, description="Garantie en mois") + delai: Optional[int] = Field(None, ge=0, description="Délai livraison jours") + + poids_net: Optional[float] = Field(None, ge=0, description="Poids net kg") + poids_brut: Optional[float] = Field(None, ge=0, description="Poids brut kg") + + stat_01: Optional[str] = Field(None, max_length=20, description="Statistique 1") + stat_02: Optional[str] = Field(None, max_length=20, description="Statistique 2") + stat_03: Optional[str] = Field(None, max_length=20, description="Statistique 3") + stat_04: Optional[str] = Field(None, max_length=20, description="Statistique 4") + stat_05: Optional[str] = Field(None, max_length=20, description="Statistique 5") + + soumis_escompte: Optional[bool] = Field(None, description="Soumis à escompte") + publie: Optional[bool] = Field(None, description="Publié web/catalogue") + en_sommeil: Optional[bool] = Field(None, description="Article en sommeil") class MouvementStockLigne(BaseModel):