diff --git a/api.py b/api.py index a7e2c9c..e5de23d 100644 --- a/api.py +++ b/api.py @@ -33,6 +33,7 @@ from email_queue import email_queue from sage_client import sage_client, SageGatewayClient from schemas import ( + SocieteInfo, TiersDetails, BaremeRemiseResponse, Users, @@ -176,7 +177,7 @@ app.include_router(universign_router) @app.get("/clients", response_model=List[ClientDetails], tags=["Clients"]) async def obtenir_clients( query: Optional[str] = Query(None), - #sage: SageGatewayClient = Depends(get_sage_client_for_user), + # sage: SageGatewayClient = Depends(get_sage_client_for_user), ): try: clients = sage_client.lister_clients(filtre=query or "") @@ -2854,6 +2855,23 @@ async def modifier_collaborateur(numero: int, collaborateur: CollaborateurUpdate raise HTTPException(500, str(e)) +@app.get("/societe/info", response_model=SocieteInfo, tags=["Société"]) +async def obtenir_informations_societe(): + try: + societe = sage_client.lire_informations_societe() + + if not societe: + raise HTTPException(404, "Informations société introuvables") + + return {"success": True, "data": societe} + + except HTTPException: + raise + except Exception as e: + logger.error(f"Erreur lecture info société: {e}") + raise HTTPException(500, str(e)) + + @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 8caef65..f938ab5 100644 --- a/sage_client.py +++ b/sage_client.py @@ -408,7 +408,7 @@ class SageGatewayClient: return self._post( "/sage/collaborateurs/list", { - "filtre": filtre or "", # Convertir None en "" + "filtre": filtre or "", "actifs_seulement": actifs_seulement, }, ).get("data", []) @@ -427,6 +427,10 @@ class SageGatewayClient: "/sage/collaborateurs/update", {"numero": numero, **data} ).get("data") + def lire_informations_societe(self) -> Optional[Dict]: + """Lit les informations de la société depuis P_DOSSIER""" + return self._get("/sage/societe/info").get("data") + def refresh_cache(self) -> Dict: return self._post("/sage/cache/refresh") diff --git a/schemas/__init__.py b/schemas/__init__.py index aa73aaa..7b49dd7 100644 --- a/schemas/__init__.py +++ b/schemas/__init__.py @@ -59,6 +59,8 @@ from schemas.sage.sage_gateway import ( CurrentGatewayInfo, ) +from schemas.society.societe import SocieteInfo + __all__ = [ "TiersDetails", "TypeTiers", @@ -114,4 +116,5 @@ __all__ = [ "SyncStatsResponse", "CreateSignatureRequest", "TransactionResponse", + "SocieteInfo" ] diff --git a/schemas/society/societe.py b/schemas/society/societe.py new file mode 100644 index 0000000..4bb9031 --- /dev/null +++ b/schemas/society/societe.py @@ -0,0 +1,50 @@ +from pydantic import BaseModel, Field +from typing import Optional, List + + +class ExerciceComptable(BaseModel): + numero: int + debut: Optional[str] = None + fin: Optional[str] = None + + +class SocieteInfo(BaseModel): + # Identification + raison_sociale: str = Field(..., description="Raison sociale") + numero_dossier: str = Field(..., description="Code du dossier") + siret: Optional[str] = Field(None, description="Numéro SIRET") + code_ape: Optional[str] = Field(None, description="Code APE/NAF") + numero_tva: Optional[str] = Field(None, description="Numéro TVA intracommunautaire") + + # Adresse + adresse: Optional[str] = None + complement_adresse: Optional[str] = None + code_postal: Optional[str] = None + ville: Optional[str] = None + code_region: Optional[str] = None + pays: Optional[str] = None + + # Contacts + telephone: Optional[str] = None + telecopie: Optional[str] = None + email: Optional[str] = None + email_societe: Optional[str] = None + site_web: Optional[str] = None + + # Informations juridiques + capital: float = 0.0 + forme_juridique: Optional[str] = None + + # Exercices comptables + exercices: List[ExerciceComptable] = [] + + # Configuration + devise_compte: int = 0 + devise_equivalent: int = 0 + longueur_compte_general: int = 0 + longueur_compte_analytique: int = 0 + regime_fec: int = 0 + + # Autres + base_modele: Optional[str] = None + marqueur: int = 0