debug: catch generar_factura_venta exceptions in preview, expose in response

Instead of crashing with 500, catches the error and exposes it in
ventas_gen_errors field so it can be diagnosed from the browser.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-28 15:31:23 -05:00
co-authored by Claude Sonnet 4.6
parent 29ab01e729
commit c463c6ecc3
+10 -2
View File
@@ -475,11 +475,18 @@ async def preview_automation(
grupos_vta[k] = v
ventas_preview = []
ventas_gen_errors = []
for num_fac_key, grupo_rows in grupos_vta.items():
num_fac = str(grupo_rows[0].get("NUM_FACTURA") or "").strip()
prefijo = str(grupo_rows[0].get("PREFIJO") or "").strip()
venta_json = generar_factura_venta(grupo_rows, default_vendedor="00",
default_prefijo=prefijo_def, numero_override=num_fac)
try:
venta_json = generar_factura_venta(grupo_rows, default_vendedor="00",
default_prefijo=prefijo_def, numero_override=num_fac)
except Exception as exc:
import traceback as _tb
ventas_gen_errors.append({"factura": num_fac, "error": str(exc),
"traceback": _tb.format_exc()})
continue
ventas_preview.append({
"factura": f"{prefijo}-{num_fac}",
"paciente": str(grupo_rows[0].get("COD_PACIENTE", "")),
@@ -501,6 +508,7 @@ async def preview_automation(
"ventas_raw": len(rows_vta or []),
"ventas_grupos_total": len(grupos_vta_all),
"ventas_filtradas": ventas_debug,
"ventas_gen_errors": ventas_gen_errors,
"pacientes_preview": pacientes_preview,
"preservicios_preview": preservicios_preview,
"ventas_preview": ventas_preview,