Solucionar descargas de presupuestos que fallan o nunca llegan
Determina por qué una exportación de presupuesto en CSV, PDF o XLSX no se descarga, muestra éxito sin archivo o nunca llega tras ponerse en cola.
Los CSV y PDF de presupuestos se generan dentro del sistema de archivos del navegador de la app y se entregan al navegador como una descarga normal, seguida de un aviso 'Successfully downloaded files'. Si el archivo generado existe pero está vacío, la app lo rechaza con el aviso de error 'Cannot download empty content'; las causas habituales son una tabla de presupuesto vacía (nada con precio en el ámbito/filtros actuales) o una generación que se interrumpió a mitad; vuelve a generar el presupuesto y reinténtalo. Dos advertencias derivadas: (1) tras una descarga correcta, el archivo temporal se elimina del sistema de archivos de la app y la URL del blob se revoca de inmediato, así que usar el 'retry download' propio del navegador sobre esa entrada fallará; la exportación debe volver a activarse desde dentro de la app; (2) las descargas se lanzan mediante un clic simulado en un enlace, por lo que una configuración agresiva de bloqueo de descargas del navegador puede descartar el archivo mientras la app sigue mostrando éxito; pide al cliente que revise los permisos de descarga del navegador para el sitio. En las exportaciones XLSX, el nombre del archivo es pricing_quotation.xlsx, o un output-<timestamp>-<random>.xlsx generado automáticamente cuando el motor no proporciona ningún nombre.
Cuando falla una descarga de presupuesto en XLSX, las exportaciones de presupuesto en CSV y PDF son acciones independientes dentro del navegador y aún pueden descargarse.
La salida CSV omite las imágenes, por lo que no sustituye a otros formatos cuando se necesitan imágenes.
✓ Comprobado en el producto el 19 de octubre de 2026Toda exportación de presupuesto/producción ejecuta primero las comprobaciones previas a la salida y una pasada de infracciones (el cargador muestra 'Checking for violations...'). Las salidas de subconjuntos de paneles son una excepción: omiten la pasada de infracciones y se envían para procesarse en el backend, por lo que no aparece ningún aviso de infracciones para ellas. Las preferencias de administrador pueden bloquear la descarga, cada una con su propio aviso de error que los clientes suelen pasar por alto: (1) Enforce active sales channel: si está habilitada y el diseño no tiene seleccionado ningún canal de ventas activo: 'Downloading output for design without active sales channel preference is not permitted'; (2) No outputs for unapproved designs: bloquea las salidas de tipo order-booking/ERP/purchase-order en diseños no aprobados; (3) No outputs for unlocked designs: lo mismo para diseños desbloqueados; (4) No Outputs For Designs With Violations And Issues: si existen infracciones de restricciones de catálogo, un aviso fijo pide resolver todas las infracciones o desactivar la preferencia. Las exportaciones de presupuesto (la descarga de presupuesto y las exportaciones de presupuesto en CSV/XLSX) están exentas de las preferencias de aprobación y bloqueo: solo las preferencias de canal de ventas activo e infracciones pueden bloquearlas. Un diseño puede eximirse individualmente del bloqueo por infracciones (aviso informativo: 'Design Exempted from blocking output due to violations'). Los usuarios de marketplace/vendedor omiten todas estas restricciones, y las restricciones de aprobación/bloqueo no se aplican a los usuarios de MES. Guion de triaje: pregunta qué aviso apareció; si no se vio ninguno, reproduce el problema con el cliente y observa la parte superior de la pantalla, luego revisa las preferencias de administrador y el panel de infracciones de ese diseño.
Las salidas generadas por el servidor (PDF de hojas de presentación, salidas de CAM/sierra, salidas de diseño generadas por el motor) se ponen en cola en el backend. La app envía el trabajo, muestra un aviso persistente 'Generating your output' cuyo detalle dice 'Added to the download queue' (y, mientras espera, una posición en la cola o 'Processing…'), y luego consulta el estado del trabajo cada 5 segundos desde esa pestaña del navegador. Al completarse, muestra 'Your output is ready' y activa automáticamente la descarga del archivo; si falla, aparece un 'Your output could not be generated. Please try again later.' fijo. Reglas silenciosas que explican la mayoría de los tickets: (1) el sondeo existe solo en esa pestaña; si el usuario actualiza, navega a otra página o cierra la pestaña, el trabajo se completa igualmente en el servidor, pero nunca se descargará nada; debe volver a activar la exportación; (2) no hay tiempo de espera en el sondeo, por lo que un trabajo atascado en la cola deja el aviso 'Generating your output' (detalle 'Added to the download queue' o una posición en la cola) visible indefinidamente; que ese aviso permanezca muchos minutos significa que la cola está saturada o que el trabajo murió silenciosamente, y conviene revisar la cola de salidas en el backend; (3) si la propia comprobación de estado da error, el sondeo se detiene con 'Something went wrong with output generation. Please try again later'. La descarga automática suprime brevemente la advertencia del navegador sobre abandonar el sitio; eso es intencional.