refactor: simplify invoice validation methods and error handling

This commit is contained in:
Fanilo-Nantenaina 2026-01-15 11:08:52 +03:00
parent a824592398
commit f505dad8a7
2 changed files with 12 additions and 37 deletions

31
api.py
View file

@ -2968,82 +2968,63 @@ async def preview_societe():
@app.post("/factures/{numero_facture}/valider", status_code=200, tags=["Factures"]) @app.post("/factures/{numero_facture}/valider", status_code=200, tags=["Factures"])
async def valider_facture( async def valider_facture(
numero_facture: str, numero_facture: str,
session: AsyncSession = Depends(get_session), _: AsyncSession = Depends(get_session),
): ):
"""
Valide une facture (pose le cadenas)
"""
try: try:
resultat = sage_client.valider_facture(numero_facture) resultat = sage_client.valider_facture(numero_facture)
logger.info( logger.info(
f"Facture {numero_facture} validée: {resultat.get('action_effectuee')}" f"Facture {numero_facture} validée: {resultat.get('action_effectuee')}"
) )
return { return {
"success": True, "success": True,
"message": resultat.get("message", "Facture validée"), "message": resultat.get("message", "Facture validée"),
"data": resultat, "data": resultat,
} }
except HTTPException: except HTTPException:
raise raise
except Exception as e: except Exception as e:
logger.error(f"Erreur validation facture {numero_facture}: {e}") logger.error(f"Erreur validation facture {numero_facture}: {e}")
raise HTTPException(500, str(e)) raise HTTPException(status_code=500, detail=str(e))
@app.post("/factures/{numero_facture}/devalider", status_code=200, tags=["Factures"]) @app.post("/factures/{numero_facture}/devalider", status_code=200, tags=["Factures"])
async def devalider_facture( async def devalider_facture(
numero_facture: str, numero_facture: str,
session: AsyncSession = Depends(get_session), _: AsyncSession = Depends(get_session),
): ):
"""
Dévalide une facture (retire le cadenas)
Impossible si la facture a des règlements.
"""
try: try:
resultat = sage_client.devalider_facture(numero_facture) resultat = sage_client.devalider_facture(numero_facture)
logger.info( logger.info(
f"Facture {numero_facture} dévalidée: {resultat.get('action_effectuee')}" f"Facture {numero_facture} dévalidée: {resultat.get('action_effectuee')}"
) )
return { return {
"success": True, "success": True,
"message": resultat.get("message", "Facture dévalidée"), "message": resultat.get("message", "Facture dévalidée"),
"data": resultat, "data": resultat,
} }
except HTTPException: except HTTPException:
raise raise
except Exception as e: except Exception as e:
logger.error(f"Erreur dévalidation facture {numero_facture}: {e}") logger.error(f"Erreur dévalidation facture {numero_facture}: {e}")
raise HTTPException(500, str(e)) raise HTTPException(status_code=500, detail=str(e))
@app.get("/factures/{numero_facture}/statut-validation", tags=["Factures"]) @app.get("/factures/{numero_facture}/statut-validation", tags=["Factures"])
async def get_statut_validation_facture( async def get_statut_validation_facture(
numero_facture: str, numero_facture: str,
session: AsyncSession = Depends(get_session), _: AsyncSession = Depends(get_session),
): ):
"""
Retourne le statut de validation d'une facture
"""
try: try:
resultat = sage_client.get_statut_validation(numero_facture) resultat = sage_client.get_statut_validation(numero_facture)
return { return {
"success": True, "success": True,
"data": resultat, "data": resultat,
} }
except HTTPException: except HTTPException:
raise raise
except Exception as e: except Exception as e:
logger.error(f"Erreur lecture statut {numero_facture}: {e}") logger.error(f"Erreur lecture statut {numero_facture}: {e}")
raise HTTPException(500, str(e)) raise HTTPException(status_code=500, detail=str(e))
@app.get("/health", tags=["System"]) @app.get("/health", tags=["System"])

View file

@ -432,22 +432,16 @@ class SageGatewayClient:
return self._get("/sage/societe/info").get("data") return self._get("/sage/societe/info").get("data")
def valider_facture(self, numero_facture: str) -> dict: def valider_facture(self, numero_facture: str) -> dict:
"""Valide une facture""" response = self._post(f"/sage/factures/{numero_facture}/valider", {})
return self._post(f"/sage/factures/{numero_facture}/valider", {}).get( return response.get("data", {})
"data", {}
)
def devalider_facture(self, numero_facture: str) -> dict: def devalider_facture(self, numero_facture: str) -> dict:
"""Dévalide une facture""" response = self._post(f"/sage/factures/{numero_facture}/devalider", {})
return self._post(f"/sage/factures/{numero_facture}/devalider", {}).get( return response.get("data", {})
"data", {}
)
def get_statut_validation(self, numero_facture: str) -> dict: def get_statut_validation(self, numero_facture: str) -> dict:
"""Récupère le statut de validation""" response = self._get(f"/sage/factures/{numero_facture}/statut-validation")
return self._get(f"/sage/factures/{numero_facture}/statut-validation").get( return response.get("data", {})
"data", {}
)
def refresh_cache(self) -> Dict: def refresh_cache(self) -> Dict:
return self._post("/sage/cache/refresh") return self._post("/sage/cache/refresh")