diff --git a/api.py b/api.py index bbac204..e2dc23d 100644 --- a/api.py +++ b/api.py @@ -4,7 +4,7 @@ from fastapi.responses import StreamingResponse, HTMLResponse, Response from fastapi.encoders import jsonable_encoder from pydantic import BaseModel, Field, EmailStr from typing import List, Optional -from datetime import datetime +from datetime import datetime, date import uvicorn import asyncio from contextlib import asynccontextmanager @@ -2999,7 +2999,7 @@ async def regler_factures_multiple( try: resultat = sage.regler_factures_client( client_code=reglement.client_id, - montant_total=reglement.montant_total, + montant_total=float(reglement.montant_total), mode_reglement=reglement.mode_reglement, date_reglement=reglement.date_reglement.isoformat() if reglement.date_reglement @@ -3173,6 +3173,39 @@ async def get_parametres_encaissement( raise HTTPException(500, str(e)) +@app.get("/reglements", tags=["Règlements"]) +async def get_tous_reglements( + date_debut: Optional[date] = Query(None), + date_fin: Optional[date] = Query(None), + client_code: Optional[str] = Query(None), + type_reglement: Optional[str] = Query(None), +): + """Liste tous les règlements avec filtres optionnels""" + params = {} + if date_debut: + params["date_debut"] = date_debut.isoformat() + if date_fin: + params["date_fin"] = date_fin.isoformat() + if client_code: + params["client_code"] = client_code + if type_reglement: + params["type_reglement"] = type_reglement + + return sage_client.get_tous_reglements(params) + + +@app.get("/reglements/facture/{facture_no}", tags=["Règlements"]) +async def get_reglement_facture_detail(facture_no): + """Détail complet d'un règlement""" + return sage_client.get_reglement_facture_detail(facture_no) + + +@app.get("/reglements/{rg_no}", tags=["Règlements"]) +async def get_reglement_detail(rg_no): + """Détail complet d'un règlement""" + return sage_client.get_reglement_detail(rg_no) + + @app.get("/health", tags=["System"]) async def health_check( sage: SageGatewayClient = Depends(get_sage_client_for_user), diff --git a/sage_client.py b/sage_client.py index 6e61085..0137512 100644 --- a/sage_client.py +++ b/sage_client.py @@ -557,13 +557,6 @@ class SageGatewayClient: def get_comptes_generaux( self, prefixe: str = None, type_compte: str = None ) -> List[dict]: - """ - Récupère les comptes généraux - - Args: - prefixe: Filtre par préfixe (ex: "41", "51") - type_compte: "client", "fournisseur", "banque", "caisse", "tva" - """ params = {} if prefixe: params["prefixe"] = prefixe @@ -597,5 +590,14 @@ class SageGatewayClient: except Exception: return {"status": "down"} + def get_tous_reglements(self, params=None): + return self._get("/sage/reglements", params=params) + + def get_reglement_facture_detail(self, facture_no): + return self._get(f"/sage/reglements/facture/{facture_no}") + + def get_reglement_detail(self, rg_no): + return self._get(f"/sage/reglements/{rg_no}") + sage_client = SageGatewayClient() diff --git a/schemas/documents/reglements.py b/schemas/documents/reglements.py index 3a6248e..bf6d178 100644 --- a/schemas/documents/reglements.py +++ b/schemas/documents/reglements.py @@ -72,7 +72,6 @@ class ReglementMultipleCreate(BaseModel): client_id: str = Field(..., description="Code client") montant_total: Decimal = Field(..., gt=0) - # Même structure que ReglementFactureCreate devise_code: Optional[int] = Field(0) cours_devise: Optional[Decimal] = Field(1.0) mode_reglement: int = Field(...)