feat(api): enhance FamilleResponse model with additional fields
This commit is contained in:
parent
0f06075779
commit
459ce26766
1 changed files with 113 additions and 6 deletions
119
api.py
119
api.py
|
|
@ -1763,17 +1763,81 @@ class FamilleCreateRequest(BaseModel):
|
|||
|
||||
|
||||
class FamilleResponse(BaseModel):
|
||||
"""Modèle de réponse pour une famille d'articles"""
|
||||
"""Modèle de réponse pour une famille d'articles - aligné sur lister_toutes_familles"""
|
||||
|
||||
# === Identification ===
|
||||
code: str = Field(..., description="Code famille")
|
||||
intitule: str = Field(..., description="Intitulé")
|
||||
type: int = Field(..., description="Type (0=Détail, 1=Total)")
|
||||
type_libelle: str = Field(..., description="Libellé du type")
|
||||
est_total: Optional[bool] = Field(None, description="True si type Total")
|
||||
est_total: bool = Field(..., description="True si type Total")
|
||||
est_detail: Optional[bool] = Field(None, description="True si type Détail")
|
||||
|
||||
# === Vente et unités ===
|
||||
unite_vente: Optional[str] = Field(None, description="Unité de vente")
|
||||
unite_poids: Optional[str] = Field(None, description="Unité de poids")
|
||||
coef: Optional[float] = Field(None, description="Coefficient")
|
||||
|
||||
# === Stock et logistique ===
|
||||
suivi_stock: Optional[bool] = Field(None, description="Suivi du stock activé")
|
||||
garantie: Optional[int] = Field(None, description="Durée de garantie (mois)")
|
||||
delai: Optional[int] = Field(None, description="Délai de livraison (jours)")
|
||||
nb_colis: Optional[int] = Field(None, description="Nombre de colis")
|
||||
|
||||
# === Comptabilité ===
|
||||
compte_achat: Optional[str] = Field(None, description="Compte général achat")
|
||||
compte_vente: Optional[str] = Field(None, description="Compte général vente")
|
||||
unite_vente: Optional[str] = Field(None, description="Unité de vente par défaut")
|
||||
coef: Optional[float] = Field(None, description="Coefficient")
|
||||
code_fiscal: Optional[str] = Field(None, description="Code fiscal")
|
||||
escompte: Optional[bool] = Field(None, description="Escompte autorisé")
|
||||
|
||||
# === Organisation ===
|
||||
est_centrale: Optional[bool] = Field(None, description="Famille centrale")
|
||||
nature: Optional[int] = Field(None, description="Nature de la famille")
|
||||
pays: Optional[str] = Field(None, description="Pays d'origine")
|
||||
|
||||
# === Classifications ===
|
||||
categorie_1: Optional[int] = Field(None, description="Catégorie 1")
|
||||
categorie_2: Optional[int] = Field(None, description="Catégorie 2")
|
||||
categorie_3: Optional[int] = Field(None, description="Catégorie 3")
|
||||
categorie_4: Optional[int] = Field(None, description="Catégorie 4")
|
||||
|
||||
# === Statistiques ===
|
||||
stat_01: Optional[str] = Field(None, description="Statistique 1")
|
||||
stat_02: Optional[str] = Field(None, description="Statistique 2")
|
||||
stat_03: Optional[str] = Field(None, description="Statistique 3")
|
||||
stat_04: Optional[str] = Field(None, description="Statistique 4")
|
||||
stat_05: Optional[str] = Field(None, description="Statistique 5")
|
||||
hors_statistique: Optional[bool] = Field(None, description="Exclue des statistiques")
|
||||
est_statistique: Optional[bool] = Field(None, description="Incluse dans les statistiques (legacy)")
|
||||
|
||||
# === Paramètres commerciaux ===
|
||||
vente_debit: Optional[bool] = Field(None, description="Vente au débit")
|
||||
non_imprimable: Optional[bool] = Field(None, description="Non imprimable")
|
||||
contremarque: Optional[bool] = Field(None, description="Contremarque")
|
||||
fact_poids: Optional[bool] = Field(None, description="Facturation au poids")
|
||||
fact_forfait: Optional[bool] = Field(None, description="Facturation forfaitaire")
|
||||
publie: Optional[bool] = Field(None, description="Publié")
|
||||
|
||||
# === Références ===
|
||||
racine_reference: Optional[str] = Field(None, description="Racine référence article")
|
||||
racine_code_barre: Optional[str] = Field(None, description="Racine code-barres")
|
||||
raccourci: Optional[str] = Field(None, description="Raccourci clavier")
|
||||
|
||||
# === Gestion ===
|
||||
sous_traitance: Optional[bool] = Field(None, description="Sous-traitance")
|
||||
fictif: Optional[bool] = Field(None, description="Famille fictive")
|
||||
criticite: Optional[int] = Field(None, description="Niveau de criticité")
|
||||
|
||||
# === Métadonnées (spécifiques à lire_famille) ===
|
||||
avertissement: Optional[str] = Field(None, description="Avertissement si famille Total")
|
||||
index_com: Optional[int] = Field(None, description="Index COM (lire_famille uniquement)")
|
||||
date_creation: Optional[str] = Field(None, description="Date de création")
|
||||
date_modification: Optional[str] = Field(None, description="Date de modification")
|
||||
nb_articles: Optional[int] = Field(None, description="Nombre d'articles dans la famille")
|
||||
|
||||
# === Champs bruts SQL (optionnels) ===
|
||||
# Permet de conserver tous les champs SQL si besoin
|
||||
champs_sql: Optional[Dict[str, Any]] = Field(None, description="Champs SQL bruts (si demandés)")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
|
|
@ -1783,14 +1847,57 @@ class FamilleResponse(BaseModel):
|
|||
"type": 0,
|
||||
"type_libelle": "Détail",
|
||||
"est_total": False,
|
||||
"est_detail": True,
|
||||
"unite_vente": "U",
|
||||
"unite_poids": "KG",
|
||||
"coef": 2.0,
|
||||
"suivi_stock": True,
|
||||
"garantie": 12,
|
||||
"delai": 7,
|
||||
"nb_colis": 1,
|
||||
"compte_achat": "607000",
|
||||
"compte_vente": "707000",
|
||||
"unite_vente": "U",
|
||||
"coef": 2.0,
|
||||
"code_fiscal": "TVA20",
|
||||
"escompte": True,
|
||||
"est_centrale": False,
|
||||
"nature": 0,
|
||||
"pays": "FR",
|
||||
"categorie_1": 1,
|
||||
"categorie_2": 0,
|
||||
"categorie_3": 0,
|
||||
"categorie_4": 0,
|
||||
"nb_articles": 45
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class FamilleListResponse(BaseModel):
|
||||
"""Modèle de réponse pour une liste de familles"""
|
||||
|
||||
familles: list[FamilleResponse] = Field(..., description="Liste des familles")
|
||||
total: int = Field(..., description="Nombre total de familles")
|
||||
filtre_applique: Optional[str] = Field(None, description="Filtre appliqué")
|
||||
inclut_totaux: bool = Field(..., description="Inclut les familles de type Total")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"familles": [
|
||||
{
|
||||
"code": "ZDIVERS",
|
||||
"intitule": "Frais et accessoires",
|
||||
"type": 0,
|
||||
"type_libelle": "Détail",
|
||||
"est_total": False,
|
||||
"nb_articles": 45
|
||||
}
|
||||
],
|
||||
"total": 1,
|
||||
"filtre_applique": "frais",
|
||||
"inclut_totaux": False
|
||||
}
|
||||
}
|
||||
|
||||
class MouvementStockLigneRequest(BaseModel):
|
||||
article_ref: str = Field(..., description="Référence de l'article")
|
||||
quantite: float = Field(..., gt=0, description="Quantité (>0)")
|
||||
|
|
|
|||
Loading…
Reference in a new issue