Forgot all modifications that were done !

This commit is contained in:
mickael 2025-12-18 13:47:09 +01:00
parent a729b812eb
commit eba4011dd4
4 changed files with 5569 additions and 169 deletions

80
main.py
View file

@ -1615,6 +1615,86 @@ def lire_mouvement_stock(numero: str):
logger.error(f"❌ Erreur lecture mouvement : {e}") logger.error(f"❌ Erreur lecture mouvement : {e}")
raise HTTPException(500, str(e)) raise HTTPException(500, str(e))
@app.get("/sage/modeles/list")
def lister_modeles_disponibles():
"""Liste tous les modèles .bgc disponibles pour chaque type de document"""
try:
modeles = sage.lister_modeles_crystal()
return {
"success": True,
"data": modeles
}
except Exception as e:
logger.error(f"❌ Erreur listage modèles: {e}")
raise HTTPException(500, str(e))
@app.get("/sage/documents/{numero}/pdf", dependencies=[Depends(verify_token)])
def generer_pdf_document(
numero: str,
type_doc: int = Query(..., description="Type document (0=devis, 60=facture, etc.)"),
modele: str = Query(None, description="Nom du modèle .bgc (optionnel)"),
base64_encode: bool = Query(True, description="Retourner en base64")
):
"""
📄 Génère un PDF d'un document Sage avec le modèle spécifié
"""
try:
# ✅ LOG pour debug
logger.info(f"📄 PDF Request: numero={numero}, type={type_doc}, modele={modele}, base64={base64_encode}")
# Générer le PDF
pdf_bytes = sage.generer_pdf_document(
numero=numero,
type_doc=type_doc,
modele=modele
)
if not pdf_bytes:
raise HTTPException(404, f"Impossible de générer le PDF pour {numero}")
# ✅ LOG taille PDF
logger.info(f"✅ PDF généré: {len(pdf_bytes)} octets")
if base64_encode:
# Retour en JSON avec base64
import base64
pdf_base64 = base64.b64encode(pdf_bytes).decode('utf-8')
return {
"success": True,
"data": {
"numero": numero,
"type": type_doc,
"modele": modele or "défaut",
"pdf_base64": pdf_base64,
"size_bytes": len(pdf_bytes),
"size_readable": f"{len(pdf_bytes) / 1024:.1f} KB"
}
}
else:
# Retour direct du fichier PDF
from fastapi.responses import Response
return Response(
content=pdf_bytes,
media_type="application/pdf",
headers={
"Content-Disposition": f'inline; filename="{numero}.pdf"',
"Content-Length": str(len(pdf_bytes)) # ✅ Taille explicite
}
)
except HTTPException:
raise
except ValueError as e:
logger.error(f"❌ Erreur métier: {e}")
raise HTTPException(400, str(e))
except Exception as e:
logger.error(f"❌ Erreur technique: {e}", exc_info=True)
raise HTTPException(500, str(e))
# ===================================================== # =====================================================
# LANCEMENT # LANCEMENT

4514
main.py.bak Normal file

File diff suppressed because it is too large Load diff

View file

@ -5,4 +5,5 @@ pydantic-settings
python-multipart python-multipart
python-dotenv python-dotenv
pywin32 pywin32
pyodbc pyodbc
reportlab

File diff suppressed because it is too large Load diff