feat(articles): extend article schemas with additional fields

This commit is contained in:
Fanilo-Nantenaina 2026-01-03 16:56:25 +03:00
parent 17b17379ac
commit 448227c80f

View file

@ -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):