55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Optional
|
|
from datetime import datetime
|
|
|
|
from schemas.documents.ligne_document import LigneDocument
|
|
|
|
|
|
class DevisRequest(BaseModel):
|
|
client_id: str
|
|
date_devis: Optional[datetime] = None
|
|
date_livraison: Optional[datetime] = None
|
|
reference: Optional[str] = None
|
|
lignes: List[LigneDocument]
|
|
|
|
|
|
class Devis(BaseModel):
|
|
id: str
|
|
client_id: str
|
|
date_devis: str
|
|
montant_total_ht: float
|
|
montant_total_ttc: float
|
|
nb_lignes: int
|
|
|
|
|
|
class DevisUpdate(BaseModel):
|
|
"""Modèle pour modification d'un devis existant"""
|
|
|
|
date_devis: Optional[datetime] = None
|
|
date_livraison: Optional[datetime] = None
|
|
lignes: Optional[List[LigneDocument]] = None
|
|
reference: Optional[str] = None
|
|
statut: Optional[int] = Field(None, ge=0, le=6)
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"date_devis": "2024-01-15T10:00:00",
|
|
"date_livraison": "2024-01-15T10:00:00",
|
|
"reference": "DEV-001",
|
|
"lignes": [
|
|
{
|
|
"article_code": "ART001",
|
|
"quantite": 5.0,
|
|
"prix_unitaire_ht": 100.0,
|
|
"remise_pourcentage": 10.0,
|
|
}
|
|
],
|
|
"statut": 2,
|
|
}
|
|
}
|
|
|
|
|
|
class RelanceDevis(BaseModel):
|
|
doc_id: str
|
|
message_personnalise: Optional[str] = None
|