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):
|
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")
|
code: str = Field(..., description="Code famille")
|
||||||
intitule: str = Field(..., description="Intitulé")
|
intitule: str = Field(..., description="Intitulé")
|
||||||
type: int = Field(..., description="Type (0=Détail, 1=Total)")
|
type: int = Field(..., description="Type (0=Détail, 1=Total)")
|
||||||
type_libelle: str = Field(..., description="Libellé du type")
|
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_achat: Optional[str] = Field(None, description="Compte général achat")
|
||||||
compte_vente: Optional[str] = Field(None, description="Compte général vente")
|
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")
|
code_fiscal: Optional[str] = Field(None, description="Code fiscal")
|
||||||
coef: Optional[float] = Field(None, description="Coefficient")
|
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:
|
class Config:
|
||||||
json_schema_extra = {
|
json_schema_extra = {
|
||||||
|
|
@ -1783,14 +1847,57 @@ class FamilleResponse(BaseModel):
|
||||||
"type": 0,
|
"type": 0,
|
||||||
"type_libelle": "Détail",
|
"type_libelle": "Détail",
|
||||||
"est_total": False,
|
"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_achat": "607000",
|
||||||
"compte_vente": "707000",
|
"compte_vente": "707000",
|
||||||
"unite_vente": "U",
|
"code_fiscal": "TVA20",
|
||||||
"coef": 2.0,
|
"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):
|
class MouvementStockLigneRequest(BaseModel):
|
||||||
article_ref: str = Field(..., description="Référence de l'article")
|
article_ref: str = Field(..., description="Référence de l'article")
|
||||||
quantite: float = Field(..., gt=0, description="Quantité (>0)")
|
quantite: float = Field(..., gt=0, description="Quantité (>0)")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue