feat(society): add company info schema and endpoint
This commit is contained in:
parent
358b2e3639
commit
9ae447e2c7
4 changed files with 77 additions and 2 deletions
20
api.py
20
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),
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
]
|
||||
|
|
|
|||
50
schemas/society/societe.py
Normal file
50
schemas/society/societe.py
Normal file
|
|
@ -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
|
||||
Loading…
Reference in a new issue