Sage100-vps/schemas/documents/reglements.py
2026-01-15 14:44:04 +03:00

65 lines
2.1 KiB
Python

from pydantic import BaseModel, Field, field_validator
from typing import List, Optional
from datetime import datetime
import logging
logger = logging.getLogger(__name__)
class ReglementFactureCreate(BaseModel):
"""Requête de règlement d'une facture côté VPS"""
montant: float = Field(..., gt=0)
mode_reglement: int = Field(default=2, ge=1, le=7)
date_reglement: Optional[datetime] = None
reference: Optional[str] = Field(default="", max_length=35)
libelle: Optional[str] = Field(default="", max_length=69)
code_journal: str = Field(default="BEU", max_length=6)
@field_validator("montant")
def validate_montant(cls, v):
if v <= 0:
raise ValueError("Le montant doit être positif")
return round(v, 2)
class Config:
json_schema_extra = {
"example": {
"montant": 375.12,
"mode_reglement": 2,
"reference": "CHQ-001",
"code_journal": "BEU",
}
}
class ReglementMultipleCreate(BaseModel):
"""Requête de règlement multiple côté VPS"""
client_id: str
montant_total: float = Field(..., gt=0)
mode_reglement: int = Field(default=2, ge=1, le=7)
date_reglement: Optional[datetime] = None
reference: Optional[str] = Field(default="", max_length=35)
libelle: Optional[str] = Field(default="", max_length=69)
code_journal: str = Field(default="BEU", max_length=6)
numeros_factures: Optional[List[str]] = None
@field_validator("client_id", mode="before")
def strip_client_id(cls, v):
return v.replace("\xa0", "").strip() if v else v
@field_validator("montant_total")
def validate_montant(cls, v):
if v <= 0:
raise ValueError("Le montant doit être positif")
return round(v, 2)
class Config:
json_schema_extra = {
"example": {
"client_id": "CLI000001",
"montant_total": 1000.00,
"mode_reglement": 2,
"numeros_factures": ["FA00081", "FA00082"],
}
}