Catálogo de Productos

Vista visual del catálogo para mostrar al cliente + link público compartible

CL-011 Clientes → Catálogo de Productos consulta AY-100
Menú Ayuda

Enviarle este manual a un usuario

El enlace abre solo este manual, sin el menú del sistema. El usuario no necesita clave ni entrar a FactuPOS: se ve en cualquier navegador y en el celular.

El WhatsApp sale del número de Soporte Real y el correo de info@soportereal.com. Con Compartir desde este teléfono sale de su propio WhatsApp y elige el contacto de su lista, sin escribir el número.

Catálogo de Productos CL-011Permiso 053

Vista visual del catálogo de productos para que el agente se lo muestre al cliente. Tarjetas con imagen, nombre, detalle interno, stock y precio opcional. Se puede compartir por WhatsApp o Email mediante un enlace público con token.

Para qué sirve

  • Agente visita al cliente y le muestra el catálogo con imágenes en tablet/celular
  • Enviar link al cliente para que revise la oferta antes de una visita
  • Catálogo digital actualizado (no se imprime, siempre refleja stock y precios actuales)

Filtros en la cabecera

  • Buscar — por nombre, código o código de barras (debounce 350ms; al buscar se deselecciona automáticamente la categoría para ver todas)
  • Lista de Precios — P1 a P10
  • Ordenar por — Nombre A→Z, Código, Precio ↑, Precio ↓
  • ☑ Solo con stock — oculta productos sin existencias
  • ☑ Mostrar precio — toggle para ocultar/mostrar precios en las tarjetas

Sidebar de categorías

  • Muestra todas las categorías activas con conteo de productos
  • Al hacer click en una categoría con subcategorías, se despliega como acordeón
  • Las subcategorías vienen recogidas por default — solo se abren al tocar la categoría padre
  • En móvil/tablet el sidebar se convierte en un botón "Filtrar por categoría" colapsable

Tarjeta de producto

  • Imagen cuadrada con fallback a placeholder si no hay foto
  • Chip de stock verde/rojo (solo en admin; oculto en el catálogo público)
  • Código en mono, Nombre, y Precio con IVA incluido + % entre paréntesis. Ej: ₡1,234.56 (13% IVA)

Modal detalle de producto

Al hacer click en una tarjeta se abre un modal con:

  • Carrusel de imágenes — hasta varias imágenes por artículo (de la tabla ArticuloImagenes). Navegación con flechas ← → o thumbnails
  • Nombre grande (h2)
  • Detalle Interno — campo DetalleInterno en cuadro destacado
  • Código, Categoría/Subcategoría, Stock chip
  • Precio grande con IVA incluido y porcentaje

Compartir catálogo — Link público

Botón verde "Compartir" en la cabecera abre un modal con 2 pasos:

  1. Configuración del token:
    • Título (opcional, lo verá el cliente)
    • Duración (7 / 30 / 90 / 365 días o sin expiración)
    • Lista de Precios a congelar
    • ☑ Mostrar precio al cliente (si se desmarca, el cliente no puede activarlo)
    • ☑ Solo productos con stock
    • Mensaje opcional para acompañar el envío
  2. Enlace generado:
    • Input con URL única (formato ?t=serverdb.token)
    • Botón WhatsApp — abre wa.me con texto precompilado
    • Botón Email — abre el cliente de correo (mailto)
    • Invitar por Email directo — escribir email del cliente y el sistema envía correo HTML con botón "Ver Catálogo"
    • Botón Copiar el enlace al portapapeles

Banner de enlace activo

Tras generar un enlace, aparece un banner verde en la parte superior con la URL + botones rápidos (Copiar / WhatsApp / Email / Descartar). Se guarda en el navegador y queda visible al recargar la página hasta que se descarta.

Vista del cliente (pública)

URL: /modules/clientes/catalogo_productos/catalogo_publico.php?t=<serverdb>.<token>

  • Sin login — acceso solo por token
  • Los ajustes del token quedan congelados: el cliente no puede activar precios si el agente los ocultó
  • Sin indicadores de stock — el cliente no ve si hay o no existencias (evita desmotivar la compra)
  • Responsive: desktop con sidebar, tablet/móvil con sidebar colapsable y grid de 2+ columnas
  • Cada carga incrementa el contador Vistas y actualiza UltimaVista
  • Meta noindex, nofollow — no aparece en buscadores
Seguridad del token Token de 32 caracteres hex aleatorios (random_bytes). Si el cliente ve una URL con ?t=empresa.xxxxx y la expiración ha pasado, el sistema muestra "El enlace ha expirado o ya no está disponible". El agente puede generar otro nuevo en cualquier momento.
Tip Si el cliente es mayorista y debe ver Precio 2, el agente selecciona Lista P2 al generar el token. El cliente verá los precios del nivel 2 sin saber que existen otras listas.

Base de datos

Tabla CatalogoProductosToken en cada empresa (migración #20260420234033): guarda Token, ServerDB implícito, FechaExpira, MostrarPrecio, ListaPrecio, SoloStock, Categoría, Titulo, Mensaje, Vistas, UltimaVista, Activo.