Better catch for errors
This commit is contained in:
parent
608ba12c50
commit
b7a8af5ed5
1 changed files with 52 additions and 11 deletions
63
api.py
63
api.py
|
|
@ -1040,26 +1040,67 @@ async def envoyer_devis_email(
|
||||||
|
|
||||||
|
|
||||||
@app.put("/devis/{id}/statut", tags=["US-A1"])
|
@app.put("/devis/{id}/statut", tags=["US-A1"])
|
||||||
async def changer_statut_devis(id: str, nouveau_statut: int = Query(..., ge=0, le=5)):
|
async def changer_statut_devis(
|
||||||
|
id: str,
|
||||||
|
nouveau_statut: int = Query(..., ge=0, le=6, description="0=Brouillon, 2=Accepté, 5=Transformé, 6=Annulé")
|
||||||
|
):
|
||||||
"""
|
"""
|
||||||
📄 Changement de statut d'un devis via gateway Windows
|
📊 Changement de statut d'un devis
|
||||||
|
|
||||||
|
**Statuts possibles:**
|
||||||
|
- 0: Brouillon
|
||||||
|
- 2: Accepté/Validé
|
||||||
|
- 5: Transformé (automatique lors d'une transformation)
|
||||||
|
- 6: Annulé
|
||||||
|
|
||||||
|
**Restrictions:**
|
||||||
|
- Un devis transformé (5) ne peut plus changer de statut
|
||||||
|
- Un devis annulé (6) ne peut plus changer de statut
|
||||||
|
|
||||||
|
Args:
|
||||||
|
id: Numéro du devis
|
||||||
|
nouveau_statut: Nouveau statut (0-6)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Confirmation du changement avec ancien et nouveau statut
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
# ✅ APPEL VIA SAGE_CLIENT (HTTP vers Windows)
|
# Vérifier que le devis existe
|
||||||
|
devis_existant = sage_client.lire_devis(id)
|
||||||
|
if not devis_existant:
|
||||||
|
raise HTTPException(404, f"Devis {id} introuvable")
|
||||||
|
|
||||||
|
statut_actuel = devis_existant.get("statut", 0)
|
||||||
|
|
||||||
|
# Vérifications de cohérence
|
||||||
|
if statut_actuel == 5:
|
||||||
|
raise HTTPException(
|
||||||
|
400,
|
||||||
|
f"Le devis {id} a déjà été transformé et ne peut plus changer de statut"
|
||||||
|
)
|
||||||
|
|
||||||
|
if statut_actuel == 6:
|
||||||
|
raise HTTPException(
|
||||||
|
400,
|
||||||
|
f"Le devis {id} est annulé et ne peut plus changer de statut"
|
||||||
|
)
|
||||||
|
|
||||||
resultat = sage_client.changer_statut_devis(id, nouveau_statut)
|
resultat = sage_client.changer_statut_devis(id, nouveau_statut)
|
||||||
|
|
||||||
logger.info(f"✅ Statut devis {id} changé: {nouveau_statut}")
|
logger.info(f"✅ Statut devis {id} changé: {statut_actuel} → {nouveau_statut}")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
"devis_id": id,
|
"devis_id": id,
|
||||||
"statut_ancien": resultat.get("statut_ancien"),
|
"statut_ancien": resultat.get("statut_ancien", statut_actuel),
|
||||||
"statut_nouveau": resultat.get("statut_nouveau"),
|
"statut_nouveau": resultat.get("statut_nouveau", nouveau_statut),
|
||||||
"message": "Statut mis à jour avec succès",
|
"message": f"Statut mis à jour: {statut_actuel} → {nouveau_statut}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
except HTTPException:
|
||||||
|
raise
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Erreur changement statut: {e}")
|
logger.error(f"Erreur changement statut devis {id}: {e}")
|
||||||
raise HTTPException(500, str(e))
|
raise HTTPException(500, str(e))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue