61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
"""Schémas Phase 6 — Littérature : inventaire, vente, ajustement."""
|
|
from pydantic import BaseModel
|
|
from datetime import date, datetime
|
|
from uuid import UUID
|
|
from typing import Optional
|
|
|
|
|
|
# ── Littérature (inventaire) ──
|
|
class LitteratureCreate(BaseModel):
|
|
titre: str
|
|
categorie: str # livre, brochure, depliant, pamphlet
|
|
prix_coutant: Optional[float] = None
|
|
quantite_stock: int = 0
|
|
seuil_commande: int = 2
|
|
code_bsg: Optional[str] = None
|
|
|
|
|
|
class LitteratureOut(BaseModel):
|
|
id: UUID
|
|
titre: str
|
|
categorie: str
|
|
prix_coutant: Optional[float] = None
|
|
quantite_stock: int
|
|
seuil_commande: int
|
|
code_bsg: Optional[str] = None
|
|
stock_bas: bool = False
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class LitteratureUpdate(BaseModel):
|
|
titre: Optional[str] = None
|
|
categorie: Optional[str] = None
|
|
prix_coutant: Optional[float] = None
|
|
seuil_commande: Optional[int] = None
|
|
code_bsg: Optional[str] = None
|
|
|
|
|
|
# ── M5 Ajuster inventaire ──
|
|
class AjustementStock(BaseModel):
|
|
quantite: int # positif = ajout, négatif = retrait
|
|
|
|
|
|
# ── S3 Vente littérature ──
|
|
class VenteCreate(BaseModel):
|
|
litterature_id: UUID
|
|
quantite: int
|
|
montant: float
|
|
date_vente: date
|
|
|
|
|
|
class VenteOut(BaseModel):
|
|
id: UUID
|
|
litterature_titre: str
|
|
quantite: int
|
|
montant: float
|
|
date_vente: date
|
|
vendu_par_prenom: Optional[str] = None
|
|
cree_le: datetime
|
|
|
|
model_config = {"from_attributes": True}
|