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)])
|
@app.post("/sage/documents/transform", dependencies=[Depends(verify_token)])
|
||||||
def transformer_document(
|
def transformer_document(
|
||||||
numero_source: str = Query(..., description="Numéro du document source"),
|
numero_source: str = Query(..., description="Numéro du document source"),
|
||||||
type_source: int = Query(..., ge=0, le=5, description="Type du document source"),
|
type_source: int = Query(
|
||||||
type_cible: int = Query(..., ge=0, le=5, description="Type du document cible"),
|
...,
|
||||||
|
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:
|
Types de documents:
|
||||||
- 0: Devis
|
- 0: Devis
|
||||||
|
|
@ -505,38 +510,60 @@ def transformer_document(
|
||||||
- 3: Commande
|
- 3: Commande
|
||||||
- 4: Préparation
|
- 4: Préparation
|
||||||
- 5: Facture
|
- 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:
|
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 = {
|
transformations_valides = {
|
||||||
(0, 3), # Devis → Commande
|
(0, 3), # Devis → Commande
|
||||||
(0, 5), # Devis → Facture (rare)
|
(0, 5), # Devis → Facture
|
||||||
(3, 1), # Commande → Bon de livraison
|
(3, 1), # Commande → Bon de livraison
|
||||||
(3, 5), # Commande → Facture
|
(3, 5), # Commande → Facture
|
||||||
(1, 5), # Bon de livraison → Facture
|
(1, 5), # Bon de livraison → Facture
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type_source, type_cible) not in transformations_valides:
|
if (type_source, type_cible) not in transformations_valides:
|
||||||
|
logger.error(
|
||||||
|
f"❌ Transformation non autorisée: {type_source} → {type_cible}"
|
||||||
|
)
|
||||||
raise HTTPException(
|
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
|
# Appel au connecteur Sage
|
||||||
logger.info(
|
|
||||||
f"🔄 Début transformation: {numero_source} ({type_source}) → type {type_cible}"
|
|
||||||
)
|
|
||||||
|
|
||||||
resultat = sage.transformer_document(numero_source, type_source, type_cible)
|
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}
|
return {"success": True, "data": resultat}
|
||||||
|
|
||||||
except HTTPException:
|
except HTTPException:
|
||||||
raise
|
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:
|
except Exception as e:
|
||||||
logger.error(f"❌ Erreur transformation: {e}", exc_info=True)
|
# Erreurs techniques (COM, Sage, etc.)
|
||||||
raise HTTPException(500, str(e))
|
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)])
|
@app.post("/sage/documents/champ-libre", dependencies=[Depends(verify_token)])
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue