diff --git a/main.py b/main.py index 1c46ec7..84b70a5 100644 --- a/main.py +++ b/main.py @@ -488,15 +488,54 @@ def lire_document(numero: str, type_doc: int): @app.post("/sage/documents/transform", dependencies=[Depends(verify_token)]) -def transformer_document(req: TransformationRequest): - """Transformation de document (devis → commande, etc.)""" +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"), +): + """ + 🔧 Transformation de document (devis → commande, etc.) + + ✅ CORRECTION: Utilise Query params au lieu de TransformationRequest + + Types de documents: + - 0: Devis + - 1: Bon de livraison + - 2: Bon de retour + - 3: Commande + - 4: Préparation + - 5: Facture + """ try: - resultat = sage.transformer_document( - req.numero_source, req.type_source, req.type_cible + # Validation de la transformation + transformations_valides = { + (0, 3), # Devis → Commande + (0, 5), # Devis → Facture (rare) + (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: + raise HTTPException( + 400, f"Transformation non autorisée: {type_source} → {type_cible}" + ) + + # Vérifier que le document source existe + logger.info( + f"🔄 Début transformation: {numero_source} ({type_source}) → type {type_cible}" ) + + resultat = sage.transformer_document(numero_source, type_source, type_cible) + + logger.info(f"✅ Transformation réussie: {resultat}") + return {"success": True, "data": resultat} + + except HTTPException: + raise except Exception as e: - logger.error(f"Erreur transformation: {e}") + logger.error(f"❌ Erreur transformation: {e}", exc_info=True) raise HTTPException(500, str(e))