Refactorisation for better error log
This commit is contained in:
parent
02b6780d3f
commit
8ce32fe8df
1 changed files with 42 additions and 15 deletions
57
main.py
57
main.py
|
|
@ -490,13 +490,18 @@ def lire_document(numero: str, type_doc: int):
|
|||
@app.post("/sage/documents/transform", dependencies=[Depends(verify_token)])
|
||||
def transformer_document(
|
||||
numero_source: str = Query(..., description="Numéro du document source"),
|
||||
type_source: int = Query(..., ge=0, le=5, description="Type du document source"),
|
||||
type_cible: int = Query(..., ge=0, le=5, description="Type du document cible"),
|
||||
type_source: int = Query(
|
||||
...,
|
||||
ge=0,
|
||||
le=5,
|
||||
description="Type document source (0=Devis, 3=Commande, 5=Facture)",
|
||||
),
|
||||
type_cible: int = Query(..., ge=0, le=5, description="Type document cible"),
|
||||
):
|
||||
"""
|
||||
🔧 Transformation de document (devis → commande, etc.)
|
||||
🔧 Transformation de document (devis → commande → facture)
|
||||
|
||||
✅ CORRECTION: Utilise Query params au lieu de TransformationRequest
|
||||
✅ CORRECTION FINALE: Query params au lieu de body JSON
|
||||
|
||||
Types de documents:
|
||||
- 0: Devis
|
||||
|
|
@ -505,38 +510,60 @@ def transformer_document(
|
|||
- 3: Commande
|
||||
- 4: Préparation
|
||||
- 5: Facture
|
||||
|
||||
Transformations valides:
|
||||
- Devis (0) → Commande (3)
|
||||
- Devis (0) → Facture (5)
|
||||
- Commande (3) → Bon livraison (1)
|
||||
- Commande (3) → Facture (5)
|
||||
- Bon livraison (1) → Facture (5)
|
||||
"""
|
||||
try:
|
||||
# Validation de la transformation
|
||||
logger.info(
|
||||
f"🔄 Transformation demandée: {numero_source} "
|
||||
f"(type {type_source}) → type {type_cible}"
|
||||
)
|
||||
|
||||
# Validation des transformations autorisées
|
||||
transformations_valides = {
|
||||
(0, 3), # Devis → Commande
|
||||
(0, 5), # Devis → Facture (rare)
|
||||
(0, 5), # Devis → Facture
|
||||
(3, 1), # Commande → Bon de livraison
|
||||
(3, 5), # Commande → Facture
|
||||
(1, 5), # Bon de livraison → Facture
|
||||
}
|
||||
|
||||
if (type_source, type_cible) not in transformations_valides:
|
||||
logger.error(
|
||||
f"❌ Transformation non autorisée: {type_source} → {type_cible}"
|
||||
)
|
||||
raise HTTPException(
|
||||
400, f"Transformation non autorisée: {type_source} → {type_cible}"
|
||||
400,
|
||||
f"Transformation non autorisée: type {type_source} → type {type_cible}. "
|
||||
f"Transformations valides: {transformations_valides}",
|
||||
)
|
||||
|
||||
# Vérifier que le document source existe
|
||||
logger.info(
|
||||
f"🔄 Début transformation: {numero_source} ({type_source}) → type {type_cible}"
|
||||
)
|
||||
|
||||
# Appel au connecteur Sage
|
||||
resultat = sage.transformer_document(numero_source, type_source, type_cible)
|
||||
|
||||
logger.info(f"✅ Transformation réussie: {resultat}")
|
||||
logger.info(
|
||||
f"✅ Transformation réussie: {numero_source} → "
|
||||
f"{resultat.get('document_cible', '?')} "
|
||||
f"({resultat.get('nb_lignes', 0)} lignes)"
|
||||
)
|
||||
|
||||
return {"success": True, "data": resultat}
|
||||
|
||||
except HTTPException:
|
||||
raise
|
||||
except ValueError as e:
|
||||
# Erreurs métier (document introuvable, déjà transformé, etc.)
|
||||
logger.error(f"❌ Erreur métier transformation: {e}")
|
||||
raise HTTPException(400, str(e))
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Erreur transformation: {e}", exc_info=True)
|
||||
raise HTTPException(500, str(e))
|
||||
# Erreurs techniques (COM, Sage, etc.)
|
||||
logger.error(f"❌ Erreur technique transformation: {e}", exc_info=True)
|
||||
raise HTTPException(500, f"Erreur transformation: {str(e)}")
|
||||
|
||||
|
||||
@app.post("/sage/documents/champ-libre", dependencies=[Depends(verify_token)])
|
||||
|
|
|
|||
Loading…
Reference in a new issue