Dashboard y CRM
Dashboard / Reportería
Centro de control comercial del negocio. VentaPlay es un sistema operativo de ventas — todo lo que una pyme necesita en un solo software — y la Reportería es la capa de visibilidad que lo hace posible. Tiene tres vistas principales accesibles desde las tabs superiores: Ventas — Ingresos totales del período, ticket promedio, proyección de cierre vs. meta, Top 10 servicios por cantidad, ventas por profesional, distribución por método de pago, evolución diaria de ingresos y cómo llegan las citas (IA vs. Landing vs. Manual). Sub-tabs permiten ver el detalle por Productos y Servicios, por Categoría (tags) o el seguimiento de Metas. Agenda — Desempeño del Agente IA: cuántas citas agendó, cuántas se completaron, canceladas, no asistió y tasa de pérdida. También muestra el estado general de todas las citas del período (completadas, canceladas, no asistió). Diagnóstico — Salud de datos del negocio: tasa de cierre, atenciones abiertas hace más de 24h, ingresos sin vincular, citas sin atención. Identifica automáticamente problemas como atenciones finalizadas sin ingreso registrado y sugiere la acción correctiva. Desde aquí el dueño toma decisiones sin tener que perseguir información entre módulos, planillas ni celulares del equipo.
Reporte Profesional — Desempeño individual del equipo
Panel individual de desempeño para cada profesional del equipo: barberos, kinesiólogos, esteticistas, terapeutas, profesores, vendedores, técnicos y cualquier prestador de servicio. El Reporte Profesional permite que cada miembro vea en tiempo real cuánto ingreso genera, cuántas atenciones ha realizado, qué servicios vende más y qué productos ha colocado. Esta vista transforma la operación diaria en información accionable: el profesional puede revisar su día, su semana o su mes sin depender del administrador, mientras el negocio gana transparencia sobre productividad, comisiones, servicios más rentables y oportunidades de mejora. Componentes principales: - Saludo personalizado con nombre, fecha, sucursal y acceso directo al calendario personal - Filtros de período: Hoy / Esta semana / Este mes / Personalizado - Tarjeta INGRESOS GENERADOS: monto total atribuible al profesional según reglas de comisión configuradas, con % vs período anterior y desglose de servicios vs productos - KPIs secundarios: Total cobrado (suma total pagada por clientes) y Atenciones cobradas - Tabla Detalle del período: Fecha, Cliente, Servicio, Cobrado y Comisión por cada atención — con enlace directo a la atención completa - Top servicios: ranking por veces vendido e ingreso generado con barras comparativas - Top productos: ranking de productos colocados en atenciones Nota sobre los montos: 'Ingresos Generados' es el monto atribuible al profesional según la configuración de comisiones; 'Total cobrado' es la suma total pagada por los clientes. La diferencia refleja servicios atendidos por otros profesionales o esquemas de comisión parcial. Si el usuario no tiene profesional asociado (caso del admin), muestra empty state: 'Tu usuario no tiene profesionales asociados. Contacta al administrador para configurar tu perfil'.
Conversaciones
Chat interno organizacional para coordinación entre miembros del equipo de VentaPlay. Es una herramienta de comunicación interna — no tiene relación con las conversaciones de WhatsApp con clientes.
Importante: "Conversaciones" (este módulo) ≠ "WhatsApp Chat". Aquí hablan los colaboradores entre sí. Las conversaciones con clientes están en el módulo WhatsApp Chat (/whatsapp/chat).
Estructura de canales:
- Administración — canal restringido para administradores
- Anuncios — canal de solo lectura para comunicados del equipo directivo
- General — canal abierto para toda la organización
- Grupos — canales temáticos o por área
- Privados — mensajes directos entre usuarios
Interfaz de tres paneles: panel izquierdo con lista de tabs/canales; panel central con feed de mensajes (avatar, nombre de autor, timestamp, contenido); panel derecho con buscador de participantes y lista de miembros (ej. 13 personas).
Comandos en el input: /pregunta [consulta] y /rag [consulta] lanzan búsqueda sobre los documentos de conocimiento del equipo (RAG). Enter envía; Shift+Enter crea nueva línea.
Calendario / Agenda
Centro operativo de agenda y atenciones. La Agenda es el puente entre la venta prometida y la atención real. No es solo un calendario visual — es el punto donde VentaPlay conecta WhatsApp, CRM, servicios, profesionales, horarios, atenciones y cobros en un único flujo. La diferencia conceptual clave: la cita representa lo que el cliente reservó (intención); la atención representa lo que efectivamente ocurrió (registro real con consumos, servicios adicionales, precios ajustados y pagos). Esta distinción permite medir correctamente la operación y la conversión real del negocio. Tres vistas principales: - Actuales — citas del día ordenadas por relevancia, con acciones directas: Cancelar, No asistió, Reagendar - Agenda — grilla de horarios por profesional en columnas. Cada profesional muestra sus citas activas con cliente, servicio, hora y precio. Bloques "No disponible" indican franjas sin horario activo. El botón Horarios por profesional permite ajustar días habilitados, rango horario y pausas recurrentes (colaciones, reuniones) - Lista — panel de visibilidad de profesionales: quién está visible en la agenda ese día, cuántas citas tiene y qué porcentaje de ocupación lleva Crear una cita — flujo multi-paso: 1. Click en "Agendar Hora" → dropdown ofrece "Agendar hora" (normal) o "Sobreagendar" (saltando reglas de disponibilidad) 2. Selección de servicio: el sistema muestra solo los servicios disponibles para ese profesional, con duración, precio y próximo horario disponible 3. Selección de horario: calendar con días codificados por color (Disponible / Sin horarios / Último día / Fuera apertura) + slots de tiempo según duración del servicio 4. Selección de cliente: búsqueda por nombre, teléfono o email contra la base de clientes CRM; opción "Crear Nuevo" si no existe 5. Confirmación: resumen completo (fecha, hora, profesional, cliente, servicio, duración, precio total) Estados de la cita: Agendada → Confirmada → En Atención → Finalizada. También: Cancelada, No Asistió, Reagendada (estadístico). Desde el mini-calendario lateral se navega entre fechas. La leyenda indica: día disponible (verde), día seleccionado (morado), con citas (punto verde), citas pasadas (punto morado).
Clientes y Contactos
Clientes — Memoria comercial del negocio
El módulo de Clientes centraliza la información de cada persona que compra, agenda, consulta o interactúa con el negocio. Reúne nombre, RUT, teléfono, email, fecha de nacimiento, género, ubicación, tags, empresas asociadas, historial de atenciones, oportunidades, notas y vínculos comerciales. Su objetivo es que el negocio deje de operar con contactos sueltos en celulares personales y empiece a construir una base propia, reutilizable y accionable. Desde Clientes se puede buscar, segmentar, completar información, detectar registros incompletos, vincular empresas, activar campañas, hacer seguimiento y preparar acciones de recompra o fidelización. En VentaPlay, el cliente es la entidad comercial completa: puede tener uno o más contactos asociados (canales por donde habla), múltiples atenciones, oportunidades abiertas, pagos, notas y relaciones con empresas. Barra de acciones (encima de la tabla): bloque agrupado con Importar Clientes, Categorizar, Exportar, Bounces, icono de engranaje (catálogo de tags comerciales de la organización) y el botón morado + Nuevo Cliente. Importar y Exportar abren modales propios; Bounces gestiona rebotes de correo; el engranaje abre Gestionar Tags Comerciales (alta/edición/baja de etiquetas del diccionario). Categorizar (segmentación masiva): modal Categorizar clientes con dos pestañas. Por teléfono: subís CSV/Excel (columna A = teléfonos) o pegás números separados por coma, punto y coma o salto de línea; podés marcar que la primera fila es encabezado; Detectar clientes muestra resumen y cantidad a impactar antes de aplicar un tag comercial elegido. Por IA: describís intención o criterio en español sobre conversaciones de WhatsApp recientes, configurás modelo y ventana de horas/cantidad de mensajes; el sistema propone conjunto de clientes y aplicás un tag (previsualización y costos según modelo). Operación distinta del tag fila a fila en el detalle. Resto de capacidades del listado: importación masiva clásica, exportación Excel, verificación masiva de emails donde aplique, filtros por segmentos (p. ej. solo con email), KPIs de completitud y vínculo con Empresas en la segunda pestaña del módulo. Nuevo Cliente: tres caminos — Desde Contacto Existente (recomendado), Cliente Rápido y Cliente Completo. Métricas de salud de la base: el header muestra cuántos clientes tienen email, cuántos no tienen información completa, cuántos están vinculados a contactos reales de WhatsApp, cuántos pertenecen a empresas y cuántos fueron creados durante el mes. Eso convierte una fila de números en diagnóstico estratégico de la base comercial. Contacto primero, cliente después: cuando alguien escribe por WhatsApp, nace como contacto; cuando el negocio completa su información comercial, se transforma o vincula como cliente. Para evitar duplicados, VentaPlay recomienda crear clientes desde contactos existentes cuando la persona ya habló por WhatsApp — así el negocio conserva el historial de conversación y transforma un número que interactuó en un cliente comercial completo. Empresas: la pestaña Empresas permite agrupar clientes bajo una organización, convenio o cuenta corporativa. Es útil cuando el negocio atiende clínicas, academias, clubes, alianzas comerciales o cuentas corporativas donde múltiples personas pertenecen a la misma entidad.
ClienteDetailView): datos personales, ubicación, tags comerciales y bloque Empresas con acción Agregar. En la UI actual no hay pestañas separadas Atenciones / Oportunidades / Notas dentro de este modal — ese historial se gestiona desde Agenda, Oportunidades y módulos vinculados.
Contactos — Registro de canales de comunicación
Contactos reúne los números, emails o canales desde los cuales una persona ha interactuado con el negocio, principalmente por WhatsApp. Cada vez que alguien escribe, VentaPlay puede registrar ese número como contacto, aunque todavía no exista como cliente completo. La diferencia es importante: un contacto representa un canal de comunicación; un cliente representa la entidad comercial completa. Un cliente puede tener varios contactos asociados, y un contacto puede existir sin estar vinculado todavía a ningún cliente. Este módulo sirve para ordenar conversaciones entrantes, evitar duplicados, identificar qué contactos ya tienen cliente asociado y convertir interacciones de WhatsApp en información comercial reutilizable. Los 4 KPIs del header responden: 1. ¿Cuántos canales de comunicación tengo registrados? 2. ¿Cuántos ya están vinculados a clientes? 3. ¿Cuántos vienen de WhatsApp? 4. ¿Qué contactos nuevos entraron hoy? Fuente: indica el origen de cada contacto (WhatsApp Business, CRM, importación manual). Permite saber qué canal trae más interacciones. Estado 'Nuevo': contacto que aún no ha sido gestionado ni vinculado a un cliente. Sirve para priorizar limpieza y conversión. Al crear un contacto manualmente, el usuario puede definir si ese contacto entra o no a un flujo automatizado — permitiendo activar procesos de comunicación desde el primer registro.
Oportunidades y Funnels
Oportunidades — El corazón comercial del CRM
Oportunidades es el módulo donde VentaPlay transforma conversaciones de WhatsApp, formularios, campañas, contactos manuales y acciones comerciales en oportunidades de venta gestionables. Cada oportunidad tiene un cliente o contacto asociado, responsable, etapa del funnel, monto estimado, historial de actividad y próximos pasos. Desde esta vista, el equipo puede ver cuántos leads están entrando, en qué etapa está cada venta, quién la está trabajando, cuánto potencial comercial hay acumulado y dónde están quedando detenidas las oportunidades. Esto evita que las ventas dependan de chats sueltos, planillas o la memoria del dueño. El cliente es la persona comercial. La oportunidad es la venta potencial que se está intentando cerrar con esa persona. Una oportunidad no es solo una tarjeta kanban — es una unidad comercial completa: cliente + fuente + responsable + etapa + monto + actividad + próximo paso. Múltiples funnels: VentaPlay permite operar más de un pipeline en paralelo. Cada funnel representa un proceso comercial distinto, con sus propias etapas, colores, orden y motivos de pérdida. Ejemplos: Venta Principal, Implementación, Renovación, Recuperación de leads perdidos, Convenios corporativos, Admisiones. El usuario cambia de funnel desde el selector superior y ve oportunidades, estados y métricas específicas de cada pipeline. Un negocio puede tener desde un solo funnel genérico hasta pipelines especializados por equipo, producto o etapa del ciclo de vida del cliente. Flujos de entrada: una oportunidad puede nacer desde una conversación de WhatsApp, un formulario de captación, una campaña masiva, una acción manual del equipo, o directamente desde el perfil de un cliente o contacto. Esta multicanalidad permite que ninguna interacción comercial quede fuera del sistema. Cerrar el ciclo: cuando una oportunidad se gana, se puede registrar el cobro, asociar un link de pago, agendar atención o iniciar implementación. Cuando se pierde, se registra el motivo (tipificación de pérdida configurable por funnel), lo que permite analizar patrones y mejorar la conversión. Oportunidades es donde VentaPlay convierte demanda en ventas gestionables. Cada conversación, formulario o campaña puede transformarse en una oportunidad con dueño, etapa, monto y seguimiento — evitando que los leads se pierdan en WhatsApp o dependan de la memoria del dueño.
Campañas
Módulo para crear y ejecutar campañas de mensajes masivos por WhatsApp, dirigidas a segmentos específicos de clientes según tags, estado en el funnel u otras condiciones. Permite reactivar bases dormidas, hacer seguimiento a grupos de leads, enviar promociones y convertir contactos en oportunidades reales dentro del CRM. KPIs del header: Total campañas | Activas + % (ej. 5 activas · 63%) | Con plantilla WhatsApp APPROVED (ej. 4 · 50%) | Programadas + % (ej. 3 · 38%) | Nuevas este mes. Filtros toggle: Mostrar inactivas (N) / Solo programadas / Solo con plantilla WhatsApp. Botones: Historial de Ejecuciones | + Nueva Campaña. Tabla: NOMBRE | DESCRIPCIÓN | PLANTILLA (badge APPROVED de Meta) | OBJETIVO (🎯 funnels, 👥 audiencia) | ESTADO (Activo/Inactivo) | PROGRAMACIÓN (Manual / fecha programada) | EJECUCIONES (contador de ejecuciones exitosas anteriores). Crear campaña — 4 tabs: 1. General — Nombre, Descripción, toggle Campaña activa. Info: "Una campaña te permite dirigir mensajes específicos a grupos de clientes según sus tags y estado en el funnel." 2. Segmentación — define el público (funnel, etapa, tags, filtros de clientes) 3. Mensajería — elige la plantilla WhatsApp APPROVED a enviar 4. Programación — Manual (ejecutar en el momento) o automática con fecha/hora Historial de Ejecuciones: modal con log completo de ejecuciones históricas. Por ejecución: nombre de campaña, estado (Completada / Fallida / En proceso), fecha inicio, fecha fin, duración y alcance (cantidad de mensajes enviados). Filtros por Estado y rango de fechas. Campañas no es solo "envío masivo" — es la herramienta para trabajar la base comercial propia de forma segmentada: reactivar inactivos, dar seguimiento a leads que no convirtieron, enviar descuentos a clientes VIP o lanzar una promoción a todos los que tienen tag específico.
Formularios Typeform
Constructor y administrador de formularios interactivos para capturar información estructurada de clientes, leads o prospectos. Puede usarse para encuestas de satisfacción, diagnósticos, formularios de admisión, calificación de leads o levantamiento de datos antes de una venta o atención. KPIs del header: Total Formularios / Formularios Activos (publicados y activos) / Total Respuestas (históricas acumuladas) / Respuestas Mensuales (mes en curso). Filtros: buscador por nombre | Todos los estados | rango de fechas | Actualizar. Botón "+ Nuevo Formulario". Cards por formulario: Nombre | Descripción | badge de estado (Activo/Inactivo) | tipo (quiz / encuesta / etc.) | cantidad de campos | cantidad de respuestas | fecha de creación | menú ⋯ (editar/eliminar). Formularios en producción: - "Formulario Ventaplay" — 2 campos / 0 respuestas - "Formulario Test 2" — 2 campos / 2 respuestas - "Formulario Test" — 12 campos / 1 respuesta (el más completo, tipo diagnóstico) Editor de formulario: interfaz visual con campos arrastrables. Tipos configurables: texto corto, texto largo, opción múltiple, selección, fecha, número, etc. Cada campo tiene validaciones y opciones de respuesta configurables. Su valor está en transformar respuestas dispersas en información estructurada asociada al cliente en el CRM y utilizable por el equipo comercial o flujos automatizados. Un formulario puede ser el primer paso de un flujo de WhatsApp: el prospecto responde, la IA procesa las respuestas y el sistema crea automáticamente un contacto, una oportunidad o agenda una cita.
Links de Pago
Registro y gestión de links de cobro digitales enviados a clientes. Cada link representa una oportunidad concreta de recaudar dinero sin exigir que el cliente esté presente ni que exista una atención tradicional abierta. El equipo genera el enlace, lo comparte por WhatsApp u otro canal y luego usa este módulo para saber si el cobro sigue pendiente, si ya fue pagado o si debe regularizarse manualmente.
Es un módulo comercial y de caja al mismo tiempo: transforma una intención de compra en una URL cobrable y luego permite seguir la vida completa del cobro desde la emisión hasta la conciliación.
Qué problema resuelve: evita perder pagos dispersos en chats, mensajes o promesas de transferencia. En lugar de depender de seguimiento manual, el equipo trabaja con un listado trazable de links emitidos, montos, referencias y estado de pago.
KPIs del header en la versión actual:
- Total Pagado — histórico total efectivamente cobrado por links
- Total No Pagado — monto acumulado todavía pendiente de cobro
- Pagado Mensual — monto cobrado por links durante el mes actual
Filtros y búsqueda: buscador por contacto, usuario o referencia | filtro Todos los estados con Pagado y No pagado | rango de fechas desde/hasta.
Tabla principal: Contacto | Usuario | Cantidad | Referencia | Link de Pago | Estado | Fecha Creación | Fecha Pago | Descripción | Acciones.
- Referencia identifica operativamente el link emitido
- Link de Pago permite abrir el checkout público real con Ver link
- Estado resume si el link ya generó pago o sigue pendiente
- Acciones incorpora Marcar pagado para conciliación manual
Acción rápida Marcar pagado: se usa cuando el cliente pagó por otro canal pero el negocio quiere cerrar el ciclo comercial del link dentro del sistema. Esto evita dejar montos pendientes falsos y mantiene consistente el tablero de cobros.
Flujo de creación actual: el botón Crear abre primero un modal de Seleccionar Contacto. El proceso parte buscando por nombre o teléfono antes de definir y emitir el link, lo que refuerza que el cobro queda asociado a una persona concreta y no a un monto huérfano.
Ver link: abre una pestaña pública del checkout. En malcriados@ventaplay.com la apertura lleva al flujo alojado en Tuu, donde se puede ver el estado final del pago y el resumen del monto cobrado. Esta es la prueba más clara de que el módulo no solo administra registros internos: también entrega la experiencia real que verá el cliente.
Caso real documentado: en malcriados@ventaplay.com existen 8 links visibles, con $6.570.276 pendientes, múltiples cobros No pagado, montos altos asociados a Alejandro Yujing y acciones operativas activas para abrir el checkout o regularizar el pago.
Los links pueden originarse desde CRM, desde conversaciones o directamente desde esta vista. El valor del módulo está en cerrar la venta con trazabilidad: quién debía pagar, cuánto, por qué concepto, cuándo se emitió y si efectivamente se cobró.
malcriados@ventaplay.com con 8 links visibles, Total No Pagado por $6.570.276, buscador, filtro por estado, rango de fechas y tabla con referencias, montos, descripciones y acciones operativas.
Ver link: se abre una pestaña pública del checkout en Tuu mostrando El pago fue aprobado y el resumen de la compra por $773.500. Esta captura documenta la experiencia que recibe el cliente final.
Seleccionar Contacto. El usuario debe buscar por nombre o número antes de emitir el cobro, asegurando asociación del link a una persona concreta.
Todos los estados, Pagado y No pagado. Permite separar rápidamente links pendientes de links ya conciliados.
Configuración de Funnels
Módulo de diseño y mantención del proceso comercial. Aquí no se vende directamente: aquí se define la estructura que después usa Oportunidades para mover leads y negocios a través de un pipeline ordenado. Es la pantalla donde el negocio decide cuáles son sus etapas reales, en qué orden avanzan y con qué identidad visual quiere leerlas.
Cada funnel representa un proceso comercial distinto. Sirve para separar metodologías de venta sin mezclar etapas, responsables ni formas de seguimiento. En vez de forzar a todos los equipos a usar el mismo recorrido, el sistema permite construir pipelines propios por negocio o caso de uso.
Qué se configura aquí:
- nombre y descripción del funnel
- cantidad y orden de estados
- paleta visual del pipeline
- tipificación de pérdida por funnel
- edición y eliminación de estados existentes
Vista real documentada (malcriados@ventaplay.com): existe un funnel llamado Ventas con 9 estados, representado mediante la paleta Sunset Sales. Los estados visibles son Inbound, Interactuando, Calificado, Agendado, No Calificado, Recurrente, No Responde, Reclamos y Sugerencias.
Pipeline de Estados: la interfaz muestra el embudo como una secuencia horizontal de badges numerados. Cada etapa tiene un color coherente con su posición dentro de la progresión comercial, y entre estados se dibuja la dirección del flujo. Debajo aparece una leyenda de lectura operacional, incluyendo los marcadores visuales de Contacto Inicial y Venta Cerrada.
Crear Estado: el alta de estado se hace desde un panel lateral. El usuario define Nombre y Orden, mientras que el color se asigna automáticamente en función de la secuencia total del pipeline. Esto evita paletas caóticas y mantiene continuidad visual entre inicio, desarrollo y cierre.
Cambiar Paleta: no cambia un solo color aislado, sino una familia completa de colores para todo el funnel. El selector ofrece paletas predefinidas como Sunset Sales, Ocean Depth, Nature Growth, Modern Business, Sunset Orange, Royal Purple y otras. El resultado afecta la lectura completa del pipeline en Oportunidades.
Crear Funnel: la creación parte con información básica (Nombre y Descripción) en un panel lateral. Desde ahí se crea el contenedor del proceso comercial y luego se le agregan estados. Primero se define el recorrido, después se detallan sus pasos.
Tipificación de Pérdida: cada funnel puede tener su propia configuración de motivos de pérdida. Esto permite que el negocio no sólo mueva oportunidades, sino que aprenda por qué se caen, diferenciando mejor entre rechazo por precio, falta de respuesta, competencia, timing u otras razones.
Este módulo es la capa de gobierno del CRM: lo que aquí se configure determina cómo el equipo comercial interpreta el avance, el estancamiento y el cierre de las oportunidades.
malcriados@ventaplay.com: funnel Ventas con 9 estados, pipeline horizontal numerado, paleta activa Sunset Sales, acciones Estado y Cambiar Paleta, y sección de Tipificación de Pérdida.
Nombre y Orden, y muestra que el color se genera automáticamente según la progresión del pipeline.
Nombre y Descripción. Es el primer paso para crear un proceso comercial independiente antes de cargarle estados.
Productos y Stock
Planes
Aquí se define la oferta recurrente B2C: planes que un cliente final puede contratar con cobro periódico (la creación rápida prioriza ciclo mensual y Toku / plataforma configurada en Suscripciones). La ruta es /productos por legado técnico; el menú lateral puede decir Planes (Productos). No es inventario físico — eso es Productos / Stock. Las tarjetas KPI arriba siguen rotuladas "Total Productos" / "Productos Activos" pero cuentan planes.
---
### Vista listado
- Buscar: campo *Buscar planes…* — filtra en cliente por nombre y descripción del plan.
- Ordenar: columnas Nombre y Precio Mensual son ordenables (iconos de orden en el encabezado).
- + Nuevo Plan: abre el modal Crear Plan de Suscripción (formulario dedicado, no el CRUD genérico).
- KPIs: total registrados; activos sin vencer / sin fecha límite; cantidad por vencer en ~30 días; precio promedio en CLP.
- Tabla: icono por fila; Nombre; Precio Mensual (formateado); Destino (organización destino — visible sobre todo en contexto VentaPlay / multi-org; en una sola organización puede ocultarse); Código (ver abajo); Info (fecha creación y última modificación).
- Clic en la fila: abre la vista detalle del plan (no es solo lectura: desde ahí se editan datos y precio).
- Menú ⋯ (tres puntos) al final de la fila: el botón solo se ve al pasar el mouse sobre la fila. En la auditoría real sí se confirmó el menú con Editar y Eliminar visibles al hover. Eliminar es destructivo con confirmación; Editar aparece como camino esperado hacia la edición completa, pero hoy no está dejando abrir el wizard multi-paso desde la automatización ni desde el botón morado del detalle.
- Columna Código: si ya existe código en producto_codigos_suscripcion, se muestra como badge monoespaciado; clic en el badge copia el código al portapapeles (*toast* "Código copiado"). Si no hay código, aparece acción Generar para crear uno manualmente (único, reintentos ante colisión).
---
### Vista detalle (tras clic en fila)
- Volver: regresa al listado.
- Editar (botón superior morado): hoy la UI auditada devuelve al listado en vez de exponer el wizard completo esperado, así que los caminos de edición confiables visibles en esta pantalla son los botones específicos por sección.
- Pestaña Información General
- Tarjeta Información Básica con Editar: nombre y descripción comercial.
- Estado y Vigencia: badge tipo *Sin vencimiento* o fecha de expiración si aplica.
- Metadatos: creado y última modificación.
- Pestaña Información de Pago
- Información de Precio con Editar Precio: modal con precio actual, nuevo precio en CLP, vista previa formateada.
- Aviso importante en el modal de precio: las suscripciones ya activas siguen con el precio anterior hasta que se ajusten manualmente; las nuevas suscripciones usan el precio nuevo.
- Detalles de Facturación: texto operativo — Membresía recurrente vs Pago único, frecuencia de cobro (ej. Mensual), precio base.
---
### Modal Crear Plan de Suscripción
Campos típicos: Plataforma de Pago (obligatoria — debe haber plataforma activa listada; si no hay ninguna, mensaje amarillo indicando configurar Toku en Configuración); Tipo de Suscripción (lista corta, hoy Mensual); opcional Organización Destino solo para usuarios VentaPlay (Global vs org concreta, incl. demos); Nombre del Plan; Descripción; Precio (CLP) con texto de ayuda sobre el cobro; aviso de que se generará un código único de 5 caracteres al crear; Cancelar / Crear Plan.
---
### Cadena de negocio
Planes → código / checkout público → Suscripciones B2C → pantallas /suscripcion/exito y /suscripcion/fallido.
producto_codigos_suscripcion. En vez de mostrar un badge copiable, la columna Código expone la acción Generar para crear el identificador único del checkout.
Productos / Stock
Inventario físico (SKU real, unidades, proveedor): lo contrario de Planes (/productos), que son suscripciones digitales. Toda la sección comparte permiso products.view y vive bajo /productos-stock/* (wildcard).
---
### Rutas de pestañas
| Pestaña | URL |
| --- | --- |
| Productos (lista) | /productos-stock/productos |
| Movimientos de Stock | /productos-stock/movimientos |
| Flujo de Inventario | /productos-stock/flujo |
| Resumen de Ventas (BETA) | /productos-stock/ventas |
Las tres últimas pestañas comparten contexto de rango de fechas en sesión (misma barra de fechas al cambiar de tab).
---
### Tab Productos
- Buscar: *Buscar productos de stock…* sobre nombre, descripción, SKU y código de barras.
- Vista lista vs agrupada: si la organización no usa sucursales múltiples, el selector Lista general | Agrupar por proveedor alterna entre tabla plana y agrupación por proveedor. Con sucursales activas ese selector no aparece y la tabla puede incluir columna Sucursal además del inventario filtrado por sucursal global.
- Proveedor: *Todos los proveedores*, *Sin proveedor asignado* o un proveedor concreto; reinicia a página 1.
- Categorías: abre el gestor CategoriaProductoManager (creación/edición de categorías sin salir del flujo de inventario).
- KPIs (clicables): Total Productos limpia el filtro de estado de stock; Bajo Stock y Sin Stock alternan un filtro de alertas (solo uno activo a la vez); Valor Inventario y Margen Promedio son informativos. Los totales vienen de estadísticas de servidor, no solo de la página actual (paginación 25).
- Tabla: Producto (avatar/nombre), SKU / Barcode, Estado (*En stock*, *Bajo stock*, etc.), Stock con unidad de medida, Precio, Categoría con selector inline (cambia categoría sin abrir detalle), Proveedor, Info (fechas). La fila completa es clickeable → vista detalle.
- Menú ⋯ al final de fila (visible en hover, igual que en otras tablas): Editar se reenvía al detalle (routeRowEditToDetail, sin modal CRUD genérico); Eliminar es destructivo con confirmación.
- Venta Interna: mismo VentaProductosInternaModal que en /ventas-internas — profesional obligatorio, líneas de producto/cantidad, notas; botón Generar hasta completar datos válidos.
- Exportar / Importar Inventario: modales dedicados de archivo (ExportarInventarioModal, ImportarInventarioModal).
- + Nuevo Producto: ProductoStockCreateShell (wizard propio de ecommerce-stock); al crear puede abrirse el detalle del ítem recién creado.
---
### Tab Movimientos de Stock
- Rango de fechas + atajos Hoy, Ayer, 7D, 30D, Mes.
- Filtros tipo de movimiento, razón (habilitada según tipo), usuario.
- Exportar movimientos.
- KPIs: total movimientos en rango; entradas/salidas en la página actual (no confundir con totales globales del rango).
- Tabla: fecha/hora, producto e imagen, tipo Entrada/Salida, cantidad (+/-), columna Stock en formato antes → después, usuario, cliente si aplica; acción Ver atención cuando el movimiento está ligado a una atención.
---
### Tab Flujo de Inventario
- Mismo rango de fechas que Movimientos/Ventas.
- Filtros categoría, proveedor, razón.
- Vista Tarjetas | Cascada: resumen stock inicial del período, totales de movimientos del período desglosados (compras, transferencias, cuadres, ventas, consumo interno, etc. según razones configuradas), y cierre / stock neto.
---
### Tab Resumen de Ventas (BETA)
- Reporte por producto en el rango: Total vendido, unidades, productos distintos.
- Tabla con columnas por canal: venta interna, venta externa, atenciones (unidades y montos donde aplique) y total. Botón exportar puede quedar deshabilitado si no hay datos.
- El rotulo BETA indica que la vista puede evolucionar; conviene no prometer comportamiento definitivo en soporte sin revisar release notes.
---
### Vista detalle del producto (tras clic en fila)
- Volver al listado.
- Editar en cabecera abre el flujo de edición dedicado de ecommerce-stock (no el formulario genérico desactivado en config).
- Cinco pestañas en el detalle del SKU: solo estas existen en código (productosStockDetailTabs): Información General, Precios y Márgenes, Control de Stock, Variantes, Historial de Movimientos. No hay una pestaña llamada literalmente «Ingreso» ni «Ventas» aquí: el ingreso de mercadería se registra en Control de Stock → Ajustar Stock (entrada + razón, con factura o guía); las ventas por canal se ven en la pestaña del módulo Resumen de Ventas (BETA) (/productos-stock/ventas, captura productos-stock-04); la historia / trazabilidad del SKU es Historial de Movimientos en el detalle (captura productos-stock-13). Variantes sirve para SKUs hijos (talla/color/presentación); si no hay variantes, la UI muestra estado vacío con + Nueva Variante.
#### Información General y Precios y Márgenes
- productos-stock-05: ficha comercial y operativa del ítem (nombre, SKU, activo, categoría, proveedor, unidad, fotos si existen) — es lo que el equipo revisa antes de vender o comprar.
- productos-stock-06: política de margen: costo vs precio de venta y mensaje de rentabilidad — base para pricing y descuentos.
#### Control de Stock e ingreso documentado
- productos-stock-08: dashboard de inventario del SKU: estado (ej. En stock), disponible vs mínimo (alertas de reposición), cantidad ideal, botón Ajustar Stock, bloque Última compra o mensaje si aún no hay compras registradas; multi-sucursal puede agregar desglose.
- productos-stock-09: primer paso al pulsar Ajustar Stock: tipo Entrada/Salida, cantidad, razón y validaciones — antes de elegir documento de compra.
- productos-stock-10 / productos-stock-11: misma entrada con Compra a proveedor y documento Factura vs Guía de despacho, número y monto CLP; la UI muestra stock actual → resultado antes de confirmar (solo capturas de ejemplo; no ejecutar en documentación).
- Persistencia y diferencia factura/guía: MovimientosStockService.registrarMovimiento + tests en AjustarStockForm.test.tsx.
#### Variantes e Historial
- productos-stock-12: gestión de variantes del producto base (KPIs resumidos, tabla, alta).
- productos-stock-13: Historial de Movimientos del SKU — KPIs del período, entradas/salidas netas, tabla con fecha, tipo, cantidad, stock antes/después, Razón, Notas y selector para filtrar por razón; complementa el tab global Movimientos de Stock.
#### Tests (Vitest)
- src/components/ecommerce-stock/forms/__tests__/AjustarStockForm.test.tsx: payloads Factura vs Guía de despacho.
---
### Cadena con el resto del grupo Productos y Stock
Categorías de Productos y Proveedores de Stock alimentan los selectores de esta pantalla. Ventas Internas (/ventas-internas) lista el historial dedicado; la creación rápida es la misma que Venta Interna aquí.
Categorías de Productos
Este módulo define la taxonomía comercial del inventario físico: cómo se ordenan, agrupan y encuentran los productos dentro de Productos / Stock. Una categoría responde preguntas como "¿qué familia de producto es este?", "¿en qué grupo lo filtro?" o "¿cómo ordeno mi inventario para vender/comprar más rápido?". No mueve stock, no cambia precios y no registra compras: su trabajo es clasificar.
---
### Qué significa cada nivel
- Categoría padre: familia principal del inventario (ej. *Bebidas*, *Destilados*, *Vinos*).
- Subcategoría: segunda capa opcional debajo de una padre para ordenar mejor el catálogo.
- En la ruta dedicada /categorias-productos, el formulario de Categoría Padre solo ofrece categorías raíz como opciones; operativamente esta pantalla está pensada para una jerarquía simple de padre → subcategoría.
- Estas categorías alimentan la columna Categoría del listado de Productos / Stock, los selectores del alta/edición de productos y algunos filtros operativos del módulo de inventario.
---
### Vista listado
- Buscar: campo *Buscar categorías de productos…*; filtra por nombre y descripción.
- + Nuevo Categoría: abre un modal de creación en la misma pantalla; no navega a otra vista.
- Paginación: 25 filas por página.
- La pantalla carga solo categorías activas de la organización actual; por eso la columna Estado normalmente mostrará Activa mientras no exista una vista administrativa de inactivas.
#### Qué significa cada columna
- Nombre: bullet de color + nombre de la categoría; si existe descripción, aparece una segunda línea resumida.
- Jerarquía: badge Categoría Padre o Subcategoría. Esta columna no muestra el nombre del padre, solo el tipo de nivel.
- Productos: cantidad de productos de stock activos asociados a esa categoría como categoría principal. Sirve para medir uso real de la clasificación.
- Subcategorías: número de hijos de una categoría padre; para una subcategoría muestra -.
- Orden: prioridad numérica de visualización para ordenar el catálogo o ciertos selectores.
- Estado: badge Activa/Inactiva; en esta vista, por cómo consulta el servicio, normalmente verás solo activas.
---
### Cómo se opera hoy
No existe una vista detalle al hacer clic en la fila. El módulo funciona como listado + menú de acciones + modales:
- Ver Productos: abre un modal con los productos vinculados a esa categoría.
- Editar: abre un modal de edición sobre la misma categoría.
- Eliminar: intenta dar de baja la categoría.
Ese diseño importa para soporte: si alguien pregunta "¿dónde entro al detalle de una categoría?", la respuesta correcta hoy es no hay detalle dedicado; todo se gestiona desde el listado y sus modales.
---
### Acción Ver Productos
La acción Ver Productos abre un modal de consulta rápida con:
- encabezado de la categoría y total de productos asociados,
- buscador interno por nombre o SKU,
- lista con SKU, nombre, stock y precio,
- botón Ver en Inventario para saltar a Productos / Stock con un filtro aplicado.
Esto transforma el módulo desde una simple tabla de nombres a una herramienta de revisión comercial: permite responder "¿qué productos reales cuelgan de esta categoría?" sin salir del flujo.
Importante: hoy ese modal cuenta y lista productos ligados por categoria_id (categoría principal). Si un producto estuviera clasificado solo por subcategoría en otro campo, esa asociación no necesariamente aparecerá en este contador/modal.
---
### Modal Nueva Categoría / Editar Categoría
Ambos usan el mismo formulario base. Campos actuales:
- Nombre de la Categoría: obligatorio.
- Descripción: opcional; ayuda a entender qué productos deberían vivir en esa familia.
- Categoría Padre (opcional): si se completa, la categoría pasa a ser subcategoría.
- Color de Identificación: texto tipo HEX (ej. #6366F1) para el bullet visual.
- Orden de Visualización: número para priorizar el orden.
No hay un campo visible para cambiar Activa/Inactiva desde este formulario. La activación/desactivación se resuelve por la lógica de eliminación.
---
### Reglas de negocio relevantes
- Eliminar no borra físicamente: hoy la baja es soft delete (activa = false).
- No se puede eliminar una categoría si todavía tiene productos activos asociados.
- Tampoco se puede eliminar si todavía tiene subcategorías activas colgando.
- En base de datos existe unicidad por organización + nombre + padre; en la práctica, dos categorías con el mismo nombre bajo el mismo padre deberían fallar al guardar.
- Las categorías ordenan y agrupan, pero no cambian existencias ni trazabilidad: si mueves o renombras una categoría, no estás registrando un movimiento de stock, solo reordenando la ficha del producto.
---
### Relación con Productos / Stock
Este módulo es la capa de organización del inventario:
- define lo que aparece en la columna Categoría,
- alimenta selectores y filtros del alta/edición de productos,
- ayuda a navegar catálogos grandes por familia comercial,
- y complementa compras, reposición y ventas, pero sin tocar el stock directamente.
Además existe un acceso rápido llamado CategoriaProductoManager dentro de Productos / Stock. Ese gestor rápido sirve para crear/editar categorías sin salir del flujo de inventario, pero es más liviano que esta pantalla dedicada: muestra solo categorías padre y tiene otra UX. La ruta /categorias-productos sigue siendo la vista principal para entender y administrar la estructura completa.
Proveedores de Stock
Este módulo es el directorio maestro de abastecimiento del inventario físico: aquí se registran las empresas, marcas, distribuidoras o bodegas que abastecen productos de stock. Su propósito no es registrar compras ni facturas, sino responder "¿de quién me abastezco?", "qué SKUs dependen de este proveedor?" y "cómo filtro/comprendo mi inventario por origen comercial?".
Cada producto puede guardar un proveedor_id principal en su ficha. Ese vínculo alimenta columnas, filtros y lecturas operativas dentro de Productos / Stock.
---
### Qué representa un proveedor aquí
En esta pantalla, un proveedor es la referencia principal de suministro del SKU:
- puede ser una marca, un distribuidor, una importadora, una bodega o incluso un proveedor local,
- guarda datos de contacto y ubicación para operación diaria,
- y permite ver rápidamente qué productos activos del inventario cuelgan de esa relación.
Este módulo no registra órdenes de compra, no lleva una libreta de deuda y no representa por sí mismo el historial de compras. Su rol es maestro de datos: mantener ordenada la relación entre inventario y fuente de abastecimiento.
---
### Vista listado
- Buscar: hoy conviene entenderlo como búsqueda principalmente por nombre del proveedor. La intención del módulo es abarcar también datos de contacto, pero el comportamiento más confiable en código es el nombre.
- + Nuevo Proveedor: abre un modal de creación en la misma pantalla.
- Paginación: 25 filas por página.
- La consulta trae solo proveedores activos de la organización; por eso la columna Estado normalmente mostrará solo Activo.
#### Qué significa cada columna
- Proveedor: nombre principal del proveedor; si existe, debajo aparece Razón Social / Empresa.
- Contacto: nombre de la persona contacto; debajo pueden aparecer email y teléfono.
- RUT: identificador tributario o equivalente; si no existe, muestra -.
- Ubicación: combinación de ciudad y país; si existe dirección, aparece como segunda línea.
- Productos: cantidad de productos de stock activos que hoy usan ese proveedor como referencia principal.
- Estado: badge Activo/Inactivo; en esta pantalla, por cómo se consulta el servicio, prácticamente verás solo activos.
---
### Cómo se opera hoy
No existe una vista detalle al hacer clic en la fila. Igual que en otros módulos recientes de inventario, la UX real es tabla + menú ⋯ + modales:
- Ver Productos: abre un modal con los productos asociados a ese proveedor.
- Editar: abre el formulario del proveedor sobre la misma pantalla.
- Eliminar: intenta dar de baja el proveedor.
Eso importa para soporte y capacitación: si alguien pregunta "¿cómo entro al detalle del proveedor?", la respuesta correcta hoy es no hay ficha/detalle dedicada; todo se opera desde el listado y sus acciones.
---
### Acción Ver Productos
La acción Ver Productos abre un modal de consulta rápida con:
- nombre del proveedor y total de productos vinculados,
- buscador por nombre o SKU,
- lista con SKU, nombre, stock y precio,
- botón Ver en Inventario para saltar a Productos / Stock con filtro aplicado por proveedor.
En negocio, esta es probablemente la acción más valiosa del módulo, porque responde en segundos:
- qué productos dependen de este proveedor,
- cuánto stock tengo hoy de esos productos,
- y qué valor comercial tienen en vitrina.
Importante: el conteo y el modal consideran productos activos ligados por proveedor_id principal. No debe interpretarse como una vista completa de relaciones históricas o secundarias con otros proveedores.
---
### Modal Nuevo Proveedor / Editar Proveedor
Ambos usan el mismo formulario base. Campos actuales:
- Nombre del Proveedor: obligatorio.
- Razón Social / Empresa: razón legal o nombre corporativo.
- RUT / NIF / Tax ID: identificador tributario.
- Nombre del Contacto: persona de referencia.
- Email de Contacto.
- Teléfono de Contacto.
- Dirección.
- Ciudad.
- País.
- Código Postal.
No existe un campo visible en el formulario para alternar manualmente Activo/Inactivo.
---
### Reglas de negocio relevantes
- Eliminar no borra físicamente: la baja es soft delete (activo = false).
- No se puede eliminar un proveedor si todavía tiene productos activos asociados.
- Si se logra eliminar, el proveedor desaparece del listado porque esta pantalla solo carga activos.
- En base de datos hay unicidad por organización + nombre; dos proveedores con el mismo nombre dentro de la misma organización deberían fallar al guardar.
- Editar datos del proveedor no cambia stock ni movimientos históricos; solo actualiza la referencia maestra para el trabajo futuro y la lectura del inventario.
---
### Relación con Productos / Stock
Este módulo alimenta varias lecturas operativas del inventario:
- el filtro por proveedor en Productos / Stock,
- la columna Proveedor de los productos,
- el agrupamiento por proveedor cuando la organización no usa multi-sucursal,
- y la lectura comercial de abastecimiento para saber con quién repongo cada familia de SKU.
Dicho simple: Categorías ordena el inventario por familia comercial; Proveedores lo ordena por origen de abastecimiento. Ambos organizan el catálogo, pero ninguno mueve stock por sí mismo.
Ventas Internas
Este módulo registra las salidas internas de inventario que no pasan por una atención de cliente ni por una venta externa tradicional. En negocio se usa justamente para escenarios como:
- precio especial para peluqueros,
- productos entregados a trabajadores,
- ventas o entregas a amigos / cercanos,
- consumo interno, muestras, capacitación o uso de staff.
La idea central es: el stock sale igual que en una venta, pero queda marcado como canal interno para no mezclarlo con atención, ecommerce o caja externa.
---
### Cómo entiende esto la app hoy
El sistema sí soporta precio interno, pero no distingue tipos de persona como “peluquero”, “amigo” o “trabajador” con un campo separado. Lo que existe hoy es una combinación de:
- Profesional obligatorio (quién recibe o queda asociado al movimiento),
- precio sugerido interno por producto si existe precio_venta_interna,
- precio usado editable manualmente por línea,
- y notas para explicar el contexto.
En otras palabras: el módulo sirve perfecto para esos casos, pero la clasificación fina la hace la operación del negocio y el texto en notas, no una tipología formal en la base de datos.
---
### KPIs
- Total Vendido: suma histórica de líneas activas no devueltas.
- Total Devuelto: suma histórica de líneas ya revertidas por devolución.
- Vendido Mensual: total vendido del mes calendario actual.
Estos KPIs hablan de monto registrado, no de pagos electrónicos ni cobros conciliados.
---
### Filtros y pantalla principal
- Buscar: sobre profesional, producto, SKU, usuario que generó y notas relevantes del movimiento.
- Estado: Todos los estados, Generado, Devuelto.
- Fecha desde / hasta: filtros de rango en pantalla.
- Actualizar: vuelve a pedir historial + métricas.
- Exportar: abre configuración de columnas para descargar el historial a Excel.
- Venta Interna: abre el formulario de alta.
Importante: solo el buscador se persiste en la URL; las fechas no quedan en query string para compartir enlaces exactos del filtro.
---
### Qué muestra la tabla
La tabla funciona por línea de venta interna, no por ticket agrupado. Cada fila representa un producto interno entregado o vendido, con estas lecturas:
- Profesional asociado,
- Sucursal (si la org usa sucursales),
- Producto y SKU,
- Cantidad,
- Precio Usado (lo que realmente se registró),
- Precio Sugerido (la referencia interna/base del producto),
- Estado generado o devuelto,
- Devuelto por y fecha de devolución si aplica,
- Generado por y fecha/hora de creación,
- Notas visibles vía modal,
- Acción Devolver cuando la línea aún sigue activa.
Esto permite responder preguntas como:
- cuánto inventario salió por beneficio interno,
- qué persona recibió cada producto,
- cuándo se usó un precio distinto al sugerido,
- y qué devoluciones ya revirtieron stock.
---
### Modal Nueva Venta Interna
Campos y comportamiento actuales:
- Sucursal: obligatoria solo si la organización trabaja con sucursales.
- Profesional: obligatorio.
- Productos: puedes agregar varias líneas.
- Cantidad: mínimo 1 por línea.
- Precio: editable manualmente por línea.
- Notas: opcionales.
#### Lógica de precio
- Al agregar un producto, la app propone como base precio_venta_interna si existe.
- Si el producto no tiene precio interno, usa precio_venta normal.
- Si cambias la cantidad, el sugerido se recalcula automáticamente.
- Si dejas el valor sugerido, el precio usado sigue a la sugerencia.
- Si lo cambias manualmente, la línea queda con un precio usado distinto al sugerido.
Esta es la pieza que hace útil el módulo para casos como peluqueros, trabajadores o amigos: puedes tener una lista interna por producto y, además, ajustar el valor real cuando el caso lo requiera.
---
### Devolución
La acción Devolver no borra la línea. Hace una reversión operativa:
- marca la línea como devuelta,
- guarda quién hizo la devolución y cuándo,
- puede agregar notas de devolución,
- y registra una entrada de stock para devolver las unidades al inventario.
Eso significa que la devolución es una reposición de stock con trazabilidad, no simplemente ocultar el registro.
---
### Exportación
El modal Exportar Ventas Internas permite elegir columnas por grupos (venta, montos, estado, información) antes de descargar un archivo Excel. Sirve para armar informes distintos según la conversación:
- control interno de beneficios a staff,
- revisión de descuentos internos,
- conciliación de devoluciones,
- análisis de qué productos salen más por canal interno.
---
### Relación con Productos / Stock
Este módulo usa el mismo flujo de creación rápida que aparece en Productos / Stock, pero aquí se ve el historial dedicado del canal interno. La relación entre ambos es:
- Productos / Stock permite disparar la venta interna desde el contexto del SKU,
- Ventas Internas concentra la auditoría, filtros, devoluciones y exportación.
Dicho simple: en este módulo no solo “vendes interno”; también construyes la memoria operativa de esos descuentos, consumos y entregas especiales.
Suscripciones B2C
Panel interno de VentaPlay para auditar y operar las suscripciones B2C que nacen desde los planes definidos en Planes (/productos). No es una pantalla pensada para cualquier organización cliente: su uso corresponde al equipo de VentaPlay o perfiles con permiso ventaplay.internal.
Este módulo permite responder preguntas como:
- qué clientes finales están suscritos hoy,
- en qué estado va cada suscripción,
- cómo están sus pagos,
- qué cobros vienen en camino,
- y qué referencias externas (customer/subscription/payment URL) existen para soporte u operación.
En términos de negocio, es el tablero de seguimiento del canal de membresías B2C: clientes finales que contratan un plan recurrente y luego deben ser monitoreados en estado, cobro y continuidad.
---
### Scope y acceso
- Acceso restringido a VentaPlay: esta ruta debe quedar bajo permiso ventaplay.internal.
- Aunque las suscripciones son de clientes finales de una organización, la vista funciona como dashboard interno/operativo y no como módulo general de backoffice para cualquier cuenta.
---
### Qué muestra la pantalla principal
#### KPIs del header
- Suscriptores Activos: cantidad de suscripciones B2C con estado activa.
- Ingresos Mensuales: suma de pagos pagado del mes calendario actual.
- Próximos Cobros: suscripciones activas cuyo fecha_proximo_cobro cae dentro de los próximos 7 días.
Estos KPIs se calculan sobre datos B2C reales (clientes_suscripcion.tipo = 'b2c') y sirven para leer salud de cartera, caja mensual y presión de cobranza inmediata.
---
### Filtros
- Buscar por cliente, email…: busca por nombre, email o teléfono del cliente suscrito.
- Estado: Activa, Pendiente, Cancelada, Fallida, Pausada, Vencida.
- Fecha desde / hasta: filtran por fecha de inicio de la suscripción.
- Limpiar filtros: resetea búsqueda, estado y fechas.
- Actualizar: refresca listado y métricas.
- Exportar: descarga el resultado filtrado completo a Excel con columnas configurables, incluyendo opción de fila total.
---
### Tabla principal
Cuando hay registros, la tabla muestra una fila por suscripción con estas columnas:
- Cliente: avatar por iniciales, nombre y email/teléfono de referencia.
- Plan: producto o plan contratado.
- Plataforma: pasarela/configuración de suscripción usada (ej. Toku u otra).
- Customer ID: identificador externo del cliente en la plataforma; se puede copiar al portapapeles.
- Monto: valor recurrente de la suscripción.
- Estado: estado general de la suscripción (activa, pendiente, cancelada, etc.).
- Estado Pago: lectura operativa del ciclo de pago (al_dia, vencido, moroso, perdido).
- Día Cobro: día del mes configurado para cobrar.
- Próximo Cobro: siguiente fecha estimada de cargo.
- Fecha Inicio: inicio formal de la suscripción.
- Link Pago: acceso al payment_url cuando existe.
---
### Acción principal: clic en fila
El clic en una fila sí abre detalle, a diferencia de otros módulos recientes de inventario. Aquí el detalle es un modal de pagos/facturas:
- carga el historial de pagos de la suscripción,
- puede consultar facturas/invoices Toku asociadas al customer,
- expone referencias como invoice IDs, estados y fechas,
- y habilita acciones internas como refrescar, editar, anular o eliminar facturas, además de edición/eliminación de la suscripción cuando la integración lo permite.
Por eso esta pantalla tiene claro valor de customer success / soporte / operación financiera interna, no solo de reporting.
---
### Exportación
El modal Exportar Suscripciones B2C trabaja por grupos de columnas:
- Cliente,
- Suscripción,
- Pagos,
- Fechas,
- Referencias.
Se puede incluir o no una fila total, y el archivo sale en Excel. Esto sirve para análisis internos, revisión de cartera, conciliación manual y soporte sobre IDs externos.
---
### Empty state
Cuando no hay registros, la pantalla mantiene igual los tres KPIs, los filtros y el mensaje "Las suscripciones de tus planes aparecerán aquí". Ese estado vacío sirve para validar que el canal recurrente aún no tiene clientes activos o que la organización no ha generado suscripciones B2C reales.
---
### Relación con el resto del sistema
- Planes (/productos) define la oferta recurrente.
- Suscripciones B2C muestra la operación posterior: clientes suscritos, pagos, estados y próximas cobranzas.
- La tipología B2C viene de clientes_suscripcion.tipo = 'b2c', separándola de la lógica B2B usada por VentaPlay para organizaciones suscritas.
Dicho simple: Planes vende la promesa; Suscripciones B2C muestra si esa promesa se convirtió en clientes recurrentes y cómo evoluciona su cobranza.
Profesionales y Servicios
Profesionales
Este módulo es el directorio operativo de quienes ejecutan o venden servicios dentro de la organización. Un profesional no es solo una ficha de contacto: es la pieza que conecta agenda, servicios asignados, sucursal, visibilidad web, link personal de agendamiento y, según rol, comisiones.
En negocio, esta pantalla responde preguntas como:
- quiénes atienden hoy,
- qué puede hacer cada uno,
- si su agenda está abierta o cerrada,
- si aparece en la web pública,
- y qué tan cubierta está la oferta de servicios entre el equipo.
---
### Indicadores superiores
La barra-resumen sobre la tabla muestra:
- cantidad total de profesionales,
- cuántos tienen servicios asignados,
- porcentaje de cobertura,
- y, si corresponde, badge con inactivos.
Esto permite detectar rápido si el equipo está realmente listo para operar o si todavía hay perfiles creados sin oferta asociada.
---
### Búsqueda y controles
- Buscar por nombre, email o servicios…
- Importar Profesionales
- Nuevo Profesional
- Toggle Solo activos / Mostrar todos
Importante: aquí no existe vista por tipo de servicio (Individual / Pack / Grupos) ni columna de orden drag. Ese comportamiento pertenece al módulo Servicios, no al de profesionales.
---
### Qué muestra la tabla real
La tabla actual trabaja con estas lecturas operativas:
- Activo: toggle del estado general del profesional.
- Nombre: nombre principal del profesional; puede mostrar una segunda línea contextual.
- Email.
- Servicios disponibles: badges truncados de los servicios asignados, con +N cuando hay más.
- Sucursal / Atiende en: aparece si la organización usa sucursales.
- Agenda: badge calculado desde la configuración de agenda (ej. Auto 28/07 o Cerrada).
- Web: toggle o estado visual de visibilidad pública.
- Link: acción para copiar el enlace personal de agendamiento.
- Teléfono.
- Registro: fecha de creación.
La fila sí es clickeable y abre la ficha completa del profesional.
---
### Acciones del listado
Además de entrar al detalle, el listado permite operar rápido:
- activar/inactivar profesionales,
- cambiar visibilidad web,
- copiar link personal,
- ajustar sucursal en la tabla cuando aplica,
- y usar la acción Habilitar horarios para abrir el flujo rápido de horarios.
Por eso esta pantalla funciona como centro de control del equipo, no solo como un listado administrativo.
---
### Qué representa un profesional en VentaPlay
Un profesional puede ser quien ejecuta un servicio, pero también quien vende, atiende, recibe citas o participa en reglas de comisión. No conviene documentarlo solo como “usuario”, porque esa palabra se queda corta: el profesional afecta la agenda pública, la disponibilidad real del negocio y los flujos de agendamiento con IA.
---
### Relación con el detalle
Cada fila lleva a /profesionales/:slug, donde se configura la parte profunda del rol: información personal, servicios, horarios, reglas de agenda y comisiones. El listado te da la foto general; el detalle define cómo ese profesional opera dentro del sistema.
/profesionales/nuevo — El botón Nuevo Profesional no abre modal: navega a la ficha en modo creación (temp-new). Se ven nombre, email, teléfono, categorías, descripción, foto y sucursal cuando la org tiene sucursales; las demás tabs se habilitan tras guardar la base.
Horarios de …) para presets o ajustes rápidos sin entrar aún a la ficha completa en la tab Horarios. Complementa el flujo cuando hay que destrabar agenda cerrada o plantillas repetibles.
Detalle de Profesional
Esta es la ficha operativa completa del profesional. Aquí se decide cómo trabaja esa persona dentro del sistema: qué datos comerciales tiene, qué servicios puede ejecutar, cuándo está disponible, bajo qué reglas recibe reservas y, si el rol lo permite, cómo se calculan sus comisiones. --- ### Tabs principales La vista trabaja con cinco tabs lógicas: 1. Información 2. Servicios 3. Horarios 4. Confirmación 5. Comisiones (solo para roles con permiso suficiente) En profesionales nuevos, el sistema primero obliga a completar la base mínima de información antes de habilitar el resto de tabs. Ojo: el flujo de guardado del nuevo profesional hoy vuelve al listado tras crear, no se comporta como un wizard persistente completo hasta el final. --- ### Tab Información Contiene la identidad base del profesional: - nombre, - email, - teléfono, - categorías/profesiones, - descripción, - foto, - y sucursal cuando la organización usa varias sedes. Desde aquí se entra a Editar. En la práctica, nombre y email son el mínimo técnico para crear; teléfono y sucursal son claves para operar bien aunque el backend sea más permisivo en el primer guardado. --- ### Tab Servicios Aquí se define qué puede hacer el profesional. Cada servicio asignado muestra, según la UI actual: - nombre, - estado del servicio dentro del profesional, - duración, - precio, - cupos o simultaneidad por slot, - y toggles/acciones de activación. También puede ocurrir algo importante para soporte: un servicio puede estar asignado al profesional pero aparecer como inactivo en el catálogo general. Eso no es contradicción de la documentación; es una combinación posible de estados. Esta tab es la que conecta persona ↔ catálogo. Si aquí falta configuración, el profesional puede existir pero no estar realmente listo para agendar o vender ciertos servicios. --- ### Tab Horarios Es la capa de disponibilidad real. Aquí se configuran: - bloques de atención por día, - horario de inicio y término, - capacidad simultánea, - servicios permitidos en cada bloque, - pausas recurrentes, - y la estructura semanal completa. En negocio, esta tab responde: cuándo trabaja esta persona y en qué condiciones puede ser reservada. --- ### Tab Confirmación Esta tab resume y gobierna las reglas de agenda del profesional. No es solo un resumen visual: es donde se entiende si el profesional está realmente habilitado para aparecer en agendamiento. Incluye conceptos como: - agenda activa o no, - visible en landing pública, - anticipación mínima para reservar, - hasta qué fecha se mantiene la agenda abierta, - citas simultáneas, - configuraciones rápidas o presets, - y acceso a la configuración JSON completa para casos avanzados. Este punto es especialmente importante: Activo en el listado y Agenda habilitada / Visible en web aquí son cosas relacionadas, pero no idénticas. --- ### Tab Comisiones Solo aparece para roles con privilegio suficiente. Tiene peso económico directo, porque define cómo se remunera al profesional por lo que vende o ejecuta. La UI actual trabaja con sub-tabs de: - Servicios - Productos y mezcla: - regla general, - porcentaje o monto fijo, - y excepciones por servicio o por marcas en productos. En otras palabras, aquí no solo se ve “una comisión”, sino la política concreta de pago de esa persona. --- ### Concepto clave del detalle La ficha del profesional es la pieza que une: - la agenda pública, - la capacidad operativa real, - la oferta de servicios, - la visibilidad web, - y la recompensa económica del profesional. Por eso no es una ficha secundaria: es uno de los centros de configuración más sensibles del sistema.
?edit=true) — El botón Editar agrega ?edit=true a la URL y despliega los mismos campos en modo formulario (guardar / cancelar). Es el camino habitual para corregir datos base, foto o sucursal sin pasar por el menú contextual del listado.
Servicios
Este módulo es el catálogo comercial y operativo de la organización: aquí se define qué servicios existen, cuánto valen, cuánto duran, cómo se reservan y qué consumen al ejecutarse. Es la pieza que une venta, agenda, operación y, en algunos casos, inventario.
En negocio, esta pantalla responde preguntas como:
- qué estoy ofreciendo hoy,
- qué se puede reservar online,
- cuánto cuesta y cuánto dura realmente cada servicio,
- si el cliente debe dejar abono,
- qué profesionales lo pueden ejecutar,
- y qué productos del stock se consumen cuando ese servicio ocurre.
---
### Controles y acciones del listado
La barra superior trabaja como centro del catálogo:
- Buscar servicios por nombre o descripción…
- Importación Avanzada
- Exportar Servicios
- Tags
- Nuevo Servicio
Importante: el botón Exportar Servicios está restringido a ciertos usuarios internos/VentaPlay; no asumir que aparece para cualquier organización.
---
### Indicadores y filtros
Sobre la tabla se muestra una barra-resumen con:
- activos,
- inactivos,
- y de N total.
Luego vienen los filtros reales del módulo:
- Todos / Individual / Pack
- filtro por tags/grupos
- Solo activos / Mostrar todos
Auditoría: el filtro Pack solo lista servicios cuyo tipo es realmente pack. Si la organización no tiene ninguno (ni siquiera inactivos), la tabla queda vacía pero el filtro sigue siendo correcto: conviene activar Mostrar todos antes de filtrar por Pack para incluir packs legacy inactivos. Para documentación con filas reales, el catálogo de referencia en producción es el de saloncentraloficial@ventaplay.com (capturable en solo lectura con BASE_URL_PACK_READONLY en el script de capturas, sin mutar datos).
Aquí conviene precisar algo: en la interfaz actual Grupos no es un cuarto tipo de servicio, sino un filtro de tags o agrupaciones comerciales aplicado aparte del tipo.
---
### Qué muestra la tabla real
La tabla actual expresa el catálogo con estas columnas operativas:
- Orden: prioridad de aparición; admite drag, botones y asignación manual de ranking.
- Nombre.
- Tipo: Individual o Pack.
- Precio.
- Duración real.
- Abono.
- Duración visible.
- Grupos / tags.
- Profesionales asignados.
- Privado.
- Activo.
Cada fila es clickeable y abre la ficha del servicio.
---
### Concepto clave — Duración real vs duración visible
Este es uno de los conceptos más importantes del módulo:
- Duración real: lo que el servicio efectivamente tarda en ejecutarse.
- Duración visible: lo que se le muestra al cliente al momento de reservar.
Pueden coincidir, pero no tienen por qué hacerlo. La duración visible sirve para controlar la experiencia de reserva y el tamaño del bloque que el cliente percibe, aunque internamente el servicio pueda tomar más o menos tiempo.
---
### Concepto clave — Abono
Hoy el modelo trabaja con abono en monto fijo CLP. La tabla puede mostrar una lectura porcentual derivada respecto del precio total, pero no debe documentarse como si el servicio tuviera tres modos nativos distintos (“monto / % / sin abono”) al mismo nivel de configuración. En el uso diario, lo relevante es si el servicio:
- no exige abono,
- o exige un monto fijo antes de ejecutarse.
---
### Individual vs Pack
- Individual: servicio único, directo.
- Pack: servicio compuesto por varios pasos o servicios hijos, con orden interno.
Los packs no son solo una agrupación comercial: tienen comportamiento propio, pueden tener configuración especial y requieren mirar disponibilidad/profesionales autorizados con más cuidado. También existe lógica para manejar comisión sobre valor individual de los sub-servicios en ciertos escenarios.
---
### Qué representa este módulo para la operación
Servicios no es solo un catálogo bonito. Desde aquí se define:
- lo que se puede vender,
- lo que se puede agendar,
- lo que ve el cliente en la web,
- cuántos profesionales pueden ejecutar cada cosa,
- y qué insumos o reglas económicas arrastra cada servicio.
Por eso es una de las piezas más sensibles del sistema: si un servicio está mal configurado, falla la agenda, la venta, la comisión o incluso el descuento de stock.
---
### Relación con el detalle
Cada servicio lleva a /servicios/:id, donde se configura en profundidad la información general, la canasta de productos y, según rol, la capa de comisiones.
tipo=pack. La captura usa el catálogo de saloncentraloficial@ventaplay.com (misma referencia que en producción, donde el negocio sí opera packs). No se mutan datos en producción: el script capture-biblia-profesionales-servicios.mjs solo navega y captura; si hace falta prod solo para esta imagen, definí BASE_URL_PACK_READONLY=https://crm.ventaplay.com sin enviar formularios.
/servicios/nuevo (misma ficha que el detalle) — Nuevo Servicio navega a la ficha en creación: tabs Información / Canasta / Comisión (según rol), selector Individual vs Pack y campos comerciales. Tras Guardar, la app vuelve al listado; completar canasta o comisión implica reabrir el servicio.
TagManagerBase desde el botón Tags — El botón Tags del header abre el gestor de etiquetas de servicio (crear, renombrar color, reordenar drag). Los tags alimentan el filtro Grupos del listado y la segmentación comercial en fichas.
Detalle de Servicio
Esta es la ficha profunda del servicio. Aquí ya no solo se ve el catálogo, sino cómo ese servicio vive operativamente: su información comercial, su relación con inventario y, para ciertos roles, cómo se propaga la comisión hacia los profesionales que lo ofrecen.
---
### Tabs principales
La ficha trabaja con tres tabs:
1. Información
2. Canasta
3. Comisión
La tab Comisión no siempre aparece para todos: depende del rol y, en servicios nuevos, normalmente se habilita solo después de que el servicio exista realmente.
---
### Tab Información
Aquí se define la base comercial del servicio:
- nombre,
- precio,
- duración real,
- duración visible al cliente,
- abono,
- descripción,
- grupos/tags,
- imagen,
- visibilidad privada o pública,
- y, si aplica, configuración especial de pack.
Esta tab es el núcleo del “qué estoy vendiendo”.
#### Ejemplo de lectura de negocio
Un servicio como Play Base muestra exactamente eso: cuánto cuesta, cuánto dura, cómo se presenta al cliente y bajo qué grupo comercial se organiza. Para soporte y ventas, esta es la ficha que explica la propuesta básica del servicio.
---
### Tab Canasta
La Canasta de Productos conecta un servicio con el inventario físico.
Aquí se definen productos de stock que se consumirán automáticamente al ejecutar una atención con este servicio. La lógica operativa es:
- eliges producto del inventario,
- defines cantidad requerida,
- ese stock se descuenta al crear/registrar la atención correspondiente,
- y ese consumo no cambia el precio del servicio en la UI de esta tab.
Este es uno de los puntos más potentes del sistema, porque convierte al servicio en una unidad operativa real: no solo vende tiempo, también puede disparar consumo de insumos o productos.
---
### Tab Comisión
Esta tab no define simplemente “la comisión del servicio” como una regla global abstracta. Lo que hace hoy es aplicar comisiones por servicio sobre los profesionales que lo ofrecen, escribiendo excepciones o reglas específicas para ellos.
La operación mezcla:
- porcentaje o monto fijo,
- aplicación a todos o a profesionales seleccionados,
- y sobreescritura de excepciones existentes para ese servicio en esas personas.
En negocio, esto significa que la ficha del servicio también participa en la política de remuneración del equipo.
---
### Packs y complejidad adicional
Cuando el servicio es un Pack, la tab Información toma más peso todavía:
- se define la secuencia de servicios hijos,
- el orden de cada paso,
- la cobertura de profesionales autorizados,
- y ciertas reglas de comisión ligadas al valor individual.
La misma UI de configuración de pack se ve en alta (/servicios/nuevo con tipo Pack) y en edición de un pack existente; la captura de referencia se obtuvo en alta cuando el catálogo auditado no tenía packs persistidos.
Por eso un pack no debe documentarse como “un servicio más”; es una oferta compuesta con lógica propia.
---
### Flujo de creación
El alta de un servicio nuevo usa la misma ficha, pero con una salvedad importante: después de guardar, la app hoy vuelve al listado. Eso implica que canasta y comisión no se sienten como parte de un wizard continuo; muchas veces el usuario deberá volver a abrir el servicio recién creado para completar esas capas.
---
### Concepto clave del detalle
La ficha del servicio une tres planos:
- comercial: qué se vende y cómo se presenta,
- operativo: qué recursos/insumos consume,
- económico: cómo impacta comisiones.
Por eso este detalle no es una ficha secundaria: es la definición viva de cómo el negocio ofrece y ejecuta valor.
?edit=true) — Navegación a /servicios/:id?edit=true activa automáticamente el modo edición: precio, duraciones, abono, descripción, tipo, privado y tags quedan editables en la misma tarjeta. Es el flujo estándar para ajustes comerciales sin usar solo el menú ⋯ del listado.
/servicios/nuevo) con la misma superficie que en edición de un pack guardado.
Sucursales
Este módulo administra las sedes físicas o puntos de operación de la organización. Una sucursal representa un lugar real donde el negocio atiende, agenda, vende o registra operación. No es solo una ficha de dirección: es el punto de anclaje para trabajar en modo multisucursal dentro del CRM.
Tras revisar una cuenta multisucursal real, la lectura correcta del módulo es esta: Sucursales no vive aislado. Funciona junto a un selector global de sucursal visible en el header de la app, desde donde el usuario puede trabajar en:
- Todas las sucursales, o
- una sucursal específica.
En el caso auditado, la organización opera con 3 sedes activas en uso operativo:
- Sucursal Bellas Artes
- Sucursal Ñuñoa
- Sucursal Providencia
Eso confirma que el módulo no es una configuración decorativa: alimenta una experiencia multisede real.
---
### Qué resuelve en negocio
Sucursales responde preguntas como:
- en qué local ocurre la operación,
- qué sede estoy mirando ahora,
- qué profesionales, citas, stock o reportes corresponden a un local específico,
- y cómo pasar de una operación monolocal a una operación separada por sede.
En otras palabras: es la base del contexto multisucursal de la organización.
---
### Qué muestra hoy la pantalla
La vista principal es un administrador directo:
- buscador por nombre, dirección o email,
- contador de sucursales,
- botón Actualizar,
- botón Crear Sucursal,
- y tabla cuando existen registros.
Con datos reales, la tabla deja de verse “vacía de potencial” y pasa a mostrar la operación concreta de las sedes cargadas.
---
### Qué campos maneja una sucursal hoy
La ficha real de creación/edición trabaja con:
- Nombre *(obligatorio)*,
- Dirección *(obligatoria)*,
- Teléfono,
- Email,
- Información adicional,
- Foto,
- y geolocalización mediante mapa / pin cuando la dirección entrega coordenadas.
La evidencia real también mostró algo importante: aunque no existe un bloque estructurado de “horarios de atención”, muchas organizaciones usan Información adicional precisamente para guardar horarios operativos, referencias o notas de cada sede. En la cuenta auditada, esa caja ya se usa con formato tipo:
- lunes a viernes,
- tramo horario,
- sábados,
- tramo horario.
O sea: el campo no es formalmente un “módulo de horarios”, pero en la práctica sí sirve para documentar horarios por sede.
Importante: hoy la pantalla no implementa formalmente un estado activa/inactiva, ni una lista visible de profesionales asignados dentro del propio registro de sucursal.
---
### Qué muestra la tabla real
Cuando ya existen sucursales, la tabla lista:
- Nombre (con foto o logo si existe),
- Dirección,
- Teléfono,
- Email,
- Info adicional,
- Fecha de creación,
- y Acciones.
Las acciones por fila son concretas:
- Editar,
- Eliminar.
La fila como tal no abre detalle al hacer click; la edición se hace desde el botón de lápiz.
---
### Flujo de alta y edición
El alta/edición ocurre en un modal. Para guardar, hoy basta con completar:
- Nombre,
- Dirección.
La dirección usa autocompletado y puede abrir un mapa con marcador movible para ajustar ubicación. La cuenta revisada confirma que esta parte sí está viva en producción: no es solo texto, la sede puede quedar ubicada sobre mapa junto con su imagen y sus datos básicos.
Eso vuelve al módulo más operativo de lo que parece: la sucursal no es solo un nombre administrativo, sino una sede identificable visual y geográficamente.
---
### Qué pasa al eliminar una sucursal
Eliminar una sucursal no elimina a los profesionales ni otras entidades relacionadas; el sistema advierte que los profesionales asignados a esa sede quedarán sin sucursal asignada. O sea, la sucursal actúa como contexto organizador, no como contenedor destructivo de personas o historial.
Este mensaje es clave porque explica bien la responsabilidad del módulo: reorganiza contexto, no borra operación histórica completa.
---
### Impacto real en otros módulos
Aunque esta pantalla en sí sea simple, su impacto es transversal. La sucursal se usa como contexto o filtro en distintas partes de la plataforma, por ejemplo:
- Selector global de sucursal en el header: permite trabajar en una sede específica o en todas.
- Profesionales: cada profesional puede pertenecer a una sucursal.
- Calendario / citas: la operación puede quedar asociada a una sede.
- Productos / Stock: parte de la lógica de inventario y stock por sucursal depende de esta estructura.
- Propinas y otros reportes: usan sucursal como filtro o dimensión de análisis.
Por eso, aunque la pantalla parezca básica, es una pieza estructural para organizaciones que dejan de operar como “una sola sede” y pasan a separar su operación por local.
---
### Lectura correcta del módulo
Sucursales hoy no es un ERP completo de sedes con horarios, dotación y estados avanzados. Es más bien el catálogo maestro de ubicaciones operativas desde donde nace el contexto multisucursal del resto del sistema. La diferencia es que, en una cuenta multisucursal real, ese contexto ya se ve vivo: selector global, varias sedes cargadas, datos operativos por local y advertencias claras sobre el impacto de reasignar o eliminar.
Atenciones y Billing
Atenciones
Este módulo es la verdad operacional de cada visita. Mientras la cita representa lo que se reservó o prometió hacer, la atención registra lo que realmente pasó: quién atendió, qué se ejecutó, qué se agregó, cuánto se cobró, qué quedó pendiente, si hubo productos, descuentos, pagos y facturación.
Por eso suele considerarse una de las piezas más importantes del sistema: aquí se transforma la intención comercial en historia operativa y financiera.
---
### Cita vs Atención
Esta diferencia hay que explicarla siempre bien:
- Cita = la reserva, la intención, lo agendado.
- Atención = lo efectivamente ejecutado y registrado.
Cuando desde el calendario se presiona Atender, la atención nace desde la cita, pero desde ese momento puede divergir de ella:
- se agregan o quitan servicios,
- cambia el precio,
- se agregan productos,
- se registran pagos,
- se factura,
- o queda saldo pendiente.
Atenciones también permite crear casos fuera del calendario, por ejemplo con Agregar atención o Vender Producto.
---
### Qué muestra la pantalla hoy
La vista actual trabaja como split view:
- a la izquierda, el listado de atenciones del período,
- a la derecha, el panel de detalle de la atención seleccionada.
Arriba se muestra un header con KPIs financieros y operativos, y debajo un bloque de filtros de dos filas.
---
### KPIs del header
La cabecera muestra hoy:
- Total,
- En Curso,
- Finalizadas,
- Total Recaudado,
- Propinas *(cuando existen)*,
- Total Venta,
- Total Facturado,
- Sin Facturar.
Ojo con la lectura de negocio: estos KPIs no siempre equivalen exactamente al subconjunto visible de tarjetas filtradas en pantalla. Sirven como termómetro financiero/operativo del período, pero no deben explicarse como si fueran siempre el espejo perfecto de la lista ya refinada por todos los filtros finos.
---
### Filtros reales
La pantalla usa dos filas de filtros:
Fila 1
- período,
- cliente,
- profesional,
- sucursal *(cuando la organización opera multisucursal)*,
- tipo,
- estados.
Fila 2
- estado de pago,
- medio de pago,
- tipo de tarjeta,
- facturación,
- Fichas médicas,
- limpiar.
Aquí hay una corrección importante: Fichas médicas no se comporta como un simple filtro de lista; abre un modal de historial clínico por paciente.
---
### Acciones principales
Las acciones superiores son:
- Agregar atención: crea una atención sin pasar obligatoriamente por el calendario.
- Vender Producto: registra venta directa de productos sin servicio de agenda.
Esto vuelve al módulo útil para casos excepcionales o flujos manuales que no nacen desde la cita.
---
### Cómo se leen las cards
Cada card resume una atención con:
- cliente,
- estado,
- profesional a cargo,
- sucursal *(si aplica)*,
- fecha y hora,
- y barra económica con Total / Pagado / Pendiente.
En atenciones finalizadas con saldo pendiente puede aparecer el botón Pagar.
Importa también entender que el modo Seleccionar no es un “modo masivo genérico” para cualquier cosa: en la práctica está orientado sobre todo al cobro masivo de atenciones elegibles.
---
### Panel derecho — detalle real de la atención
Al seleccionar una card se abre el panel derecho con el detalle vivo de esa visita. Ahí se concentran acciones y bloques como:
- estado de la atención,
- profesional responsable,
- fecha y hora,
- acciones como Cancelar Atención, Finalizar Atención, Derivar Profesional o Ver cita en calendario,
- bloque de Servicios,
- agregado de productos,
- información de pago,
- información de facturación,
- ficha médica,
- notas y observaciones.
En la práctica, este panel es donde la atención deja de ser “una tarjeta” y pasa a ser un expediente operativo completo.
---
### Acciones dentro del detalle
Aquí vive la parte más operativa de la atención. Las acciones que hoy sí están visibles y documentadas son:
- Agregar servicio: suma un nuevo consumo de servicio dentro de la misma visita, asignando profesional, cantidad y descuento desde el mismo modal. En negocio se usa cuando el cliente termina consumiendo algo adicional a lo originalmente agendado.
- Agregar producto: carga retail o insumos vendidos durante la atención sin salir del expediente. Sirve para que la boleta final refleje no solo el trabajo realizado, sino también lo que el cliente se llevó.
- Editar precio: no edita la ficha maestra del servicio en catálogo; edita el precio del consumo ya cargado dentro de esta atención. Es decir, corrige la realidad de esa visita puntual.
- Agregar descuento: abre la edición del consumo para aplicar rebaja porcentual o fija sobre ese ítem. Es la herramienta correcta cuando el negocio quiere mantener trazabilidad del descuento sin borrar ni reemplazar el servicio.
- Eliminar: quita ese consumo puntual de la atención.
Hay una distinción clave que conviene dejar explícita: cuando el usuario dice "editar un servicio" dentro de Atenciones, en la práctica casi siempre se refiere a editar el consumo registrado en esa visita (precio, descuento o eliminación), no a modificar el servicio base del catálogo de Servicios.
Derivar Profesional también existe y es importante, pero conceptualmente no es lo mismo que editar un consumo. Su objetivo es traspasar la titularidad operativa de la atención a otro colega. Según la regla de negocio aclarada para este módulo, una vez derivada la atención deja de ser "tuya" como atención principal, aunque cada profesional puede seguir ajustando lo que corresponde a su propio trabajo. Por esa razón no se ejecutó una derivación real solo para capturar un modal sobre datos productivos.
---
### Qué significa este módulo para negocio
Atenciones es donde el negocio responde preguntas como:
- qué pasó realmente con este cliente,
- qué se cobró y qué falta cobrar,
- qué profesional ejecutó el trabajo,
- si hubo productos, descuentos o cambios respecto a la cita,
- si se emitió boleta o quedó sin facturar.
Por eso esta vista no compite con calendario: lo complementa. Calendario organiza el tiempo; Atenciones organiza la realidad económica y operativa de la visita.
Comisiones
Reporte de comisiones devengadas por profesional sobre atenciones pagadas. Permite auditar cuánto generó cada profesional, en qué atenciones, con qué descuentos aplicados y cómo impactan en las comisiones reales. Filtros: período rápido (Este Mes / Mes Anterior / Personalizado) + Profesional + Cliente + Sucursal. Botones: refrescar y exportar. KPIs del header: - Total Comisiones — monto total generado en el período (ej. $16.170 en 4 atenciones) - Monto Total — valor bruto de los consumos (ej. $133.900 en 9 consumos) - Total Descuentos — descuentos aplicados que reducen la base comisionable (ej. -$53.900) - Atenciones — cantidad de atenciones pagadas incluidas (ej. 4) Tabla: Fecha | Profesional | Cliente | Servicio | Precio | Dcto | Precio Final | % Comisión | Comisión $ | link a la atención. Reglas de comisión importantes: - Los servicios generan comisión según el % configurado (ej. 10%) - Los productos (badge Prod en la columna Servicio) aparecen como "Sin comisión" — solo los servicios son comisionables - Los descuentos se aplican antes de calcular la comisión (el % se aplica sobre Precio Final, no sobre Precio) - El badge Individual en Comisión $ indica que la comisión es individual por profesional (vs pool de equipo) Cada fila tiene un ícono de enlace para abrir directamente la atención correspondiente.
Prod, que aparecen en el reporte pero no necesariamente generan comisión. Sirve para revisar cierres ya ocurridos y comparar la base bruta contra descuentos y comisión final.
Ingresos
💰 Gestión de Ingresos: módulo de control de pagos asociados a atenciones, ventas internas, ventas externas y cualquier transacción registrada. Convierte la operación comercial en caja trazable — permite cuadrar pagos del día, detectar ingresos faltantes y cerrar la caja con control total. Tab Tabla de Ingresos: historial completo de transacciones individuales. Filtros de período: Hoy / Ayer / Esta Semana / Sem. Anterior / Este Mes / Mes Anterior / Personalizado. Buscador por cliente, monto, Nº transacción. Filtro por Medio de Pago. Botones: Exportar / Actualizar / + Crear Ingreso. La tabla muestra cada pago individual con cliente, monto, medio de pago y Nº de transacción. Cuando todavía no hay movimientos, el módulo sigue exponiendo el flujo de carga manual para registrar el primer pago sin depender de otra pantalla. Modal Crear Ingreso / Ingresar pago: flujo para registrar un abono manual indicando la atención a pagar, propinas, medio de pago y total final. No es solo "agregar dinero": obliga a vincular el ingreso con su contexto operativo para que la caja siga trazable. Tab Cierre Diario: el reporte de cierre de caja del negocio. Muestra "Cierre de Caja · [día y fecha o rango]" con los pagos del período consolidados y totalizados por medio de pago. Export a Excel y PDF. Cuando existe movimiento aparecen KPIs como Total Recaudación, Transacciones, Ticket Promedio, Reversos y Tasa de Anulación, además del desglose por medio de pago y otros cortes de análisis. Es el reporte que el dueño o administrador usa al final del día o de la semana para verificar que efectivo, tarjetas y pagos digitales cuadran con lo que el sistema registró. Diferencia clave Tabla vs Cierre: la Tabla de Ingresos muestra cada transacción individual con su detalle; el Cierre Diario consolida todo en un resumen por medio de pago para el cuadre de caja físico.
Ventas Externas
Registro y caja para ventas sin atención asociada. Resuelve la operación de mostrador, restaurante, retail o cobro rápido cuando existe una venta, pero no una cita ni una atención clínica/estética detrás. Es el módulo correcto para vender productos, cargos simples o consumos directos sin pasar por agenda. Diferencia clave con Atenciones: en Atenciones la operación nace desde un servicio con cliente, profesional, agenda y ciclo operativo completo; en Ventas Externas la venta nace desde caja. Aquí lo central es el comprobante comercial: quién vendió, qué se vendió, cuánto se cobró, qué quedó pendiente y cómo impacta en stock e ingresos. KPIs del header: - Total vendido — suma efectivamente cobrada en el período filtrado - Total pendiente — ventas creadas pero todavía no liquidadas por completo - Total cancelado — ventas anuladas, útiles para control de reversas y auditoría Tabla de Ventas Externas: el subtítulo muestra el total de transacciones del período y funciona como libro operativo de caja. - Filtros de período: Hoy / Ayer / Esta Semana / Sem. Anterior / Este Mes / Mes Anterior / Personalizado - Buscador por ID, responsable, notas internas, folio o RUT - Filtro por Estado: Todos / Pendiente / Pagada / Cancelada - Filtro por sucursal - Botones: Actualizar / Exportar / + Nueva Venta Externa Cada fila muestra fecha, estado, sucursal, responsable, profesional asociado, cantidad de productos, total y desglose Pagado / Pendiente. Esto permite revisar rápidamente si una venta ya quedó cuadrada o si todavía falta recaudar parte del monto. Nueva Venta Externa: el modal permite definir responsable, sucursal, profesional opcional, productos y notas internas. Si se asigna un profesional, el movimiento de stock y la trazabilidad comercial pueden quedar vinculados al usuario interno relacionado con ese profesional, lo que ayuda a comisiones y auditoría interna. Los productos admiten cantidades y ajustes comerciales antes de confirmar la venta. Impacto de negocio: - alimenta caja e historial de ingresos - descuenta stock cuando corresponde - conserva trazabilidad del responsable de venta - permite separar ventas de mostrador de las atenciones tradicionales Detalle de venta externa: resume el expediente comercial de cada operación: identificador, estado, fecha, responsable, profesional, sucursal, productos vendidos, subtotal, total, pagado, pendiente y acceso rápido a los ingresos asociados. Es la vista que se usa para verificar qué se vendió exactamente y cómo quedó liquidado.
Propinas
Reporte operativo de propinas asociadas a atenciones. Este módulo separa la recompensa voluntaria del cliente respecto del precio del servicio y de la comisión del profesional, para que la empresa pueda cuadrar correctamente qué parte del dinero corresponde al negocio y qué parte corresponde al equipo.
Qué resuelve de negocio: evita mezclar propinas con ventas, ingresos o comisiones. Permite saber cuánto recibió cada profesional, bajo qué modalidad, en qué sucursal y en qué período, con trazabilidad hacia la atención original.
KPIs del header:
- Total Propinas del Mes — monto total de propinas registradas en el mes actual
- Propinas Registradas — cantidad de registros cargados en el mes
- Promedio Porcentaje — promedio del porcentaje aplicado cuando la propina fue ingresada como %
Filtros: período rápido (Hoy / Ayer / Esta semana / Este mes), rango de fechas mediante campos desde/hasta, sucursal, profesional, buscador por cliente o profesional, tipo y estado. Esto permite revisar propinas por persona, sede o ventana temporal sin exportar primero.
Tabla principal: Fecha | Sucursal | Profesional | Cliente | Consumo Total | Tipo | Valor | Monto Propina | Estado | Atención.
- Tipo distingue entre propina porcentual y monto fijo
- Valor muestra el porcentaje o el monto ingresado originalmente
- Monto Propina muestra el resultado monetario final
- Atención entrega el acceso Ir a atención para auditar el origen de la propina
Tipos de propina:
- Monto fijo — monto absoluto en CLP independiente del total consumido
- Porcentaje — proporción aplicada sobre el consumo total de la atención
Importante: el módulo actualmente no tiene una ficha o detalle propio de propina. La trazabilidad detallada se resuelve yendo a la atención vinculada desde la columna Ir a atención. Esa distinción importa porque la propina vive como parte del flujo operacional de la atención, pero se reporta separada para fines de control y pago.
Ejemplo real documentado: en clubdelabarba@ventaplay.com el módulo muestra 44 propinas registradas en mayo 2026, total mensual $114.411 y promedio porcentual 11,3%, con múltiples registros activos distribuidos entre sucursales y profesionales.
Las propinas quedan separadas de las comisiones: el reporte de Comisiones no las absorbe. Esto permite pagarlas, auditarlas y analizarlas por separado.
clubdelabarba@ventaplay.com: KPIs poblados, 44 propinas registradas en el mes y tabla con sucursal, profesional, cliente, consumo, tipo, valor, monto final y acceso Ir a atención.
Todos los tipos, Porcentaje (%) y Monto fijo ($). Es la forma más rápida de separar propinas variables de gratificaciones absolutas.
Comunicación
WhatsApp Chat
Bandeja oficial de WhatsApp Business Cloud para gestionar conversaciones con clientes y prospectos desde VentaPlay. VentaPlay usa WhatsApp Business Cloud API — no el WhatsApp personal ni la Business App — lo que implica una regla fundamental: el equipo puede responder libremente solo si el cliente escribió primero, y únicamente durante 24 horas (o 72 horas si el contacto llegó desde publicidad de Meta). Pasada esa ventana, solo se puede iniciar o retomar la conversación usando una plantilla aprobada por Meta. Interfaz de tres paneles: - Panel izquierdo: lista de conversaciones ordenadas por recencia. Cada fila muestra nombre del contacto, preview del último mensaje y timestamp. Las conversaciones iniciadas por plantilla muestran el badge PLANTILLA en morado — indicador de que fue apertura proactiva, no respuesta a mensaje entrante. - Panel central: conversación activa con mensajes enviados/recibidos, timestamps, estado de entrega. Al fondo del chat aparece el banner de ventana de comunicación ("Ventana de comunicación activa — tienes X horas para responder sin plantilla") o el aviso de ventana cerrada cuando expiró. - Panel derecho: contexto del contacto — nombre, teléfono, historial de interacciones, cliente asociado, oportunidades activas. Desde el chat se puede agendar citas, crear oportunidades, enviar links de pago y ejecutar acciones CRM sin salir de la conversación. Es el punto de entrada comercial más importante del sistema: cada mensaje entrante puede convertirse en un cliente, una oportunidad, una cita, un pago o una acción automatizada. Es donde la demanda llega y donde el equipo responde en tiempo real.
WhatsApp Plantillas
Catálogo de mensajes pre-aprobados por Meta que permiten al negocio iniciar o retomar conversaciones con clientes fuera de la ventana de 24 horas. Son el único mecanismo para contactar proactivamente a un cliente que no escribió primero, o para retomar una conversación que ya expiró.
Ciclo de vida: el equipo redacta la plantilla en VentaPlay → se solicita aprobación a Meta → Meta la aprueba (estado APPROVED) o rechaza. Solo las plantillas APPROVED son utilizables en automatizaciones, campañas o envíos manuales.
Categorías de Meta: MARKETING (promociones, campañas, recordatorios), UTILITY (confirmaciones de transacción, notificaciones operativas), AUTHENTICATION (códigos de verificación). La categoría afecta el costo por envío y las políticas de uso.
Plantillas en producción (ejemplos reales):
- atencion_personalizada — seguimiento personalizado post-atención
- bienvenida — primer contacto con nuevo lead
- confirmacion_agendamiento — envío automático al agendar cita
- confirmacion_termino_cit — aviso de finalización de atención
- contrato — envío de contrato para firma
- descuento_cliente_vuelto — recuperación de cliente inactivo
Las plantillas se usan en automatizaciones de WhatsApp (envío por evento) y en campañas masivas. La calidad del número registrado en Meta y el límite de envíos diarios son controlados por Meta; el negocio debe mantener baja tasa de bloqueos para preservar el rating del número.
WhatsApp Componentes
Bloques reutilizables que se insertan en plantillas o flujos de WhatsApp: botones de respuesta rápida, listas de opciones, call-to-action con URL o documento, headers con imagen o texto. Permiten construir plantillas interactivas sin duplicar contenido.
KPIs del header: Total componentes / Activos / Botones / Listas.
Tipos disponibles:
- Botones — respuestas rápidas que el cliente toca directamente en el chat (máx. 3 por plantilla)
- Lista — menú desplegable con opciones seleccionables
- Call to Action — botón que abre URL, llama por teléfono o descarga un documento
Componentes en producción:
- Componente Ejemplo (Botones) — botones genéricos de demostración
- Oportunidad (Botones) — "Para decidir qué acción tomar en oportunidades" — se inserta en plantillas de seguimiento comercial
- cta con documento (Call to Action) — envío de documento adjunto con botón
- call to action con texto header — CTA con encabezado de texto
- Boton interactivo con documento — botón de descarga de archivo
- Boton interactivo Texto — CTA textual simple
9 componentes registrados en producción: 5 de tipo Botones, 1 Lista, 3 Call to Action. Cada card muestra tipo, estado, contenido del mensaje, fecha de creación, ID y botón "Vista previa". Filtros: buscador por nombre, tipo, estado. Botón "+ Nuevo Componente".
WhatsApp Automatizaciones
Motor de disparos automáticos de WhatsApp basado en eventos del sistema. Cada automatización define un trigger (evento que la activa), la acción (plantilla a enviar con parámetros dinámicos) y condiciones de ejecución. El negocio da seguimiento sin que nadie tenga que recordar escribirle al cliente.
KPIs en tiempo real:
- 7 automatizaciones configuradas
- 3 activas / 4 pausadas
- 324 mensajes enviados en total
- 14 plantillas disponibles para automatizaciones
Automatizaciones activas en producción:
- POST PAYLOAD — Trigger: Cita Agendada → Acción: Enviar POST a Webhook externo (13 envíos)
- Termino de atencion — Trigger: Atención finalizada → Acción: plantilla de seguimiento (38 envíos)
- post_agendamiento — Trigger: Cita Agendada con Abono → Acción: plantilla confirmacion_agendamiento (147 envíos)
Automatizaciones pausadas (configuradas, no activas):
- Ejecutivo asignado oportunidades
- Agenda Ligada Prueba
- Recordatorio de cita agendada
- Cita agendada sin link pago
Casos de uso clave:
- Confirmación automática al agendar → el cliente recibe su cita sin que el equipo haga nada
- Aviso de fin de atención → apertura natural para reseña o próxima cita
- Recordatorio previo a la cita → reduce no-shows en 15-20%
- Webhook externo → integración con sistemas de terceros (CRMs, ERPs, notificaciones)
Integra directamente con el módulo de Plantillas (solo usa plantillas APPROVED por Meta) y con Flujos para lógica más compleja. Cada automatización registra historial de envíos, errores y estado en tiempo real.
Historial de Llamadas
Registro completo de llamadas de voz realizadas a través del sistema VentaPlay (integración WebRTC + telefonía). Cada llamada queda vinculada a un contacto del CRM, con su ejecutivo anfitrión, duración, fecha y estado. Columnas de la tabla: - Anfitrión — usuario de VentaPlay que realizó la llamada (ej. Felipe Admin, Alejandro Yung) - Contacto — persona contactada, vinculada al CRM - Estado — Completada / Fallida / Sin respuesta / En progreso - Fecha — timestamp completo del inicio de la llamada - Duración — tiempo efectivo (formato mm:ss, ej. 00:35) - Ver eventos — botón que despliega el timeline detallado de la llamada: inicio, conexión, corte, etc. Filtros: buscador por anfitrión o contacto, filtro por estado, rango de fechas. Botones: Actualizar, descargar CSV. Ejemplo real en producción: 28 llamadas registradas, todas con estado "Completada", duración promedio ~35 segundos, ejecutivos Felipe Admin y Alejandro Yung como anfitriones principales. Permite al responsable del equipo auditar actividad de llamadas, medir tiempo efectivo en teléfono por ejecutivo y detectar llamadas que no se conectaron o quedaron cortas.
Emails (Org)
Sistema de envío y monitoreo de emails transaccionales y de marketing de la organización. Permite enviar emails individuales o masivos, ver el estado de entrega de cada uno y auditar la reputación del canal.
Dos tabs principales:
- Emails (default) — historial de todos los emails enviados con métricas de entregabilidad
- Plantillas — plantillas de email disponibles para envíos transaccionales y campañas
Remitente configurado: Ventaplay <notificaciones@dale.ventaplay.com> — mostrado en banner para que el equipo sepa desde qué dirección salen los correos.
Límite diario: 0 / 150 emails enviados hoy (barra de progreso visual). Reset automático a las 20:00 hora Chile.
KPIs del header: Total enviados (30) / Entregados (17) / Fallidos (5) — permite detectar problemas de entregabilidad a simple vista.
Columnas de la tabla: Para (email + nombre del destinatario), Asunto, Estado (Entregado / Fallido / Bounced), Fecha Envío, Fecha Entrega, Email ID.
Filtros: buscador por email/nombre/asunto, filtro por estado, rango de fechas. Acciones: "Enviar Email", Actualizar, descargar CSV.
Estado Bounced: indica que el email rebotó definitivamente — el dominio o dirección no existe. Los bounces afectan la reputación del remitente y el módulo de Clientes tiene una función específica para gestionarlos.
Automatización
Flujos
El corazón del sistema de IA de VentaPlay. Cada persona que escribe al número de WhatsApp entra por los flujos, que determinan cómo el sistema responde, qué acciones ejecuta y a qué proceso comercial se conecta. Es donde la IA deja de ser solo conversación y se convierte en operación: recibe mensajes, interpreta intención y ejecuta procesos reales dentro del CRM. Tab Flujo — Canvas visual: - Panel izquierdo: Variables Creadas — variables del flujo (nombre del contacto, teléfono, valores capturados) accesibles desde cualquier nodo - Canvas central: editor visual de nodos con conexiones arrastrables. Tipos de nodos: TEXTO (envío de mensaje al contacto), CREAR_OPORTUNIDAD, CREAR_CLIENTE, CONDICIÓN (bifurcación según valor), ESPERA, RAG (consulta a la base de conocimiento), WEBHOOK y otros - Botón "Agregar nodo" en la parte inferior del canvas - Minimap en esquina inferior derecha para navegación en flujos grandes - Barra superior: Exportar | Importar | Configurar auto-reset de flujo Tab Ejecuciones — Historial de runs: - "Ejecuciones de Flujos — 30 de 1075 ejecuciones" (paginadas de 30 en 30) - Buscador por nombre de contacto o número de ejecución - Por ejecución: nombre del flujo | contacto | estado | tiempo relativo - Estado completado (verde) — el flujo terminó todos sus pasos - Estado expirado (gris) — la sesión del contacto expiró sin completar el flujo - Panel derecho: al seleccionar una ejecución muestra la traza detallada de nodos ejecutados paso a paso Ejemplo real: 1075 ejecuciones del "Flujo Principal" con contactos Maria, Meche, Jean Castillo, Carmen Garrido Herrera — mezcla de completadas y expiradas en los últimos 5 días. El fundador lo describe textualmente como "el corazón del sistema": cada entrada de WhatsApp pasa por aquí antes de generar cualquier respuesta o acción en el CRM.
Pestañas internas
Tab Flujo
Canvas editable del flujo (visible).
Tab Ejecuciones
Historial de ejecuciones de flujos por contacto.
Base de Conocimiento (RAG)
Base de Conocimiento (RAG): repositorio de documentos que alimentan el asistente de chat y los nodos RAG de los flujos. Permite subir información del negocio (propuestas, políticas, servicios, FAQs, contenidos internos) para que la IA responda con base en información real y específica de la organización — reduciendo respuestas inventadas y aumentando la precisión del asistente conversacional. Carga de documentos: drop zone con soporte para PDF, DOCX, TXT, JPG, PNG (máx. 10MB). Los documentos se procesan automáticamente y quedan disponibles para consultas. Restricción: no se pueden subir 2 documentos con el mismo nombre. La distinción Privado vs Público es crítica: - Documentos Privados — accesibles por el asistente chat interno de la organización. Útil para información sensible: precios internos, guiones de venta, instrucciones del equipo. - Documentos Públicos — accesibles por el asistente chat Y por los nodos RAG en flujos (cuando la opción público está habilitada). Útil para información que el bot puede citar al cliente: descripción de servicios, FAQ, propuestas comerciales. Regla del sistema: "El asistente chat accede a públicos y privados. El nodo RAG en flujos solo accede a los documentos públicos si la opción público está seleccionada — en caso contrario, tiene el mismo acceso que el asistente chat." Documentos en producción: - Documentos Privados: 0 - Documentos Públicos: 5 - Modulo_1_Comunicaciones.pdf (139.2 KB) - Propuesta_Ventaplay.pdf (3502.9 KB) - Maestro_contenido_V2.pdf (25.6 KB) - + 2 documentos adicionales
Ecommerce
Landing (Ecommerce Home)
Editor de la landing pública de cada organización bajo su subdominio. Permite configurar todo el canal de adquisición digital: contenido, captura de leads al CRM, botón de WhatsApp, popup promocional, secciones de la web y paleta de colores/tipografía. Tabs: Configuración (editor) | Vista Previa | Generar con IA. Captura en CRM: define a qué funnel y estado del CRM llegan los contactos que completan el formulario de la landing (ej. Funnel por defecto → Inbound). Botón flotante de WhatsApp: activa el botón de WhatsApp en la esquina inferior de la landing. Configurable: visibilidad + mensaje inicial pre-escrito (ej. "Hola, te hablo desde la página web :)"). Popup promocional: toggle para mostrar un popup con delay, imagen y CTAs al ingresar. Desactivado por defecto — se configura al activar. 🧩 Componentes de tu landing: 6 visibles / 4 ocultos. Drag & drop para reordenar. Secciones configurables: - 🦸 Cabecera Principal — Logo, título y botones de acción - 📄 Sobre Nosotros — Historia y misión del centro - ✨ Beneficios — Ventajas y propuestas de valor - 📦 Venta de Productos — Catálogo del inventario disponible para compra directa - 📝 Formulario de Contacto — Captura de leads (marcado como Recomendado) - 🦶 Footer — Contacto y redes sociales - + 4 secciones ocultas recuperables con botón Agregar Paleta de colores: 5 tokens configurables (Principal, Secundario, Acento, Interactivo, Fondo) con vista previa de contraste y CTAs. Ej. Puclaro Producciones: Principal #1C1C1C, Fondo #0F0F0F. Tipografía: combinaciones predefinidas (Moderna, etc.) con vista previa de títulos y textos en la landing. Quien llega puede pedir información, agendar, comprar o iniciar una conversación trazable — todo conectado al CRM.
Pestañas internas
Tab Configuración
Editor visible con todos los bloques.
Tab Vista Previa
Renderiza la landing tal como la verá el público.
Autopago
Configura un flujo presencial de catálogo + carrito + cobro final con Haulmer POS, publicado bajo el mismo subdominio de la organización (/autopago). El cliente selecciona productos desde un catálogo curado, el sistema valida stock en servidor en tiempo real y dispara el cobro directamente en la máquina POS seleccionada — sin efectivo, sin app adicional. Badges de estado: Autopago Publico POS | Activo/Inactivo | POS listo / Falta POS. Botones: "Abrir autopago" (abre la URL pública) | "Guardar cambios". Sección Acceso público: - Toggle Autopago habilitado — si está off, la URL responde como no disponible - Ruta pública copiable — mismo subdominio de la landing (/autopago) - POS activo — selector del dispositivo Haulmer POS a usar - Sucursal — stock y reserva se validan contra esa sede; "Stock global" si no hay sucursal Sección Contenido y mensajes: todos los textos del flujo público son editables: Título principal, Subtítulo, Badge superior, Texto del CTA, Mensaje auxiliar, Título del carrito, Subtítulo del carrito, Título éxito, Mensaje éxito, Texto estado vacío. Sección Catálogo visible: selección manual de exactamente qué productos exponer — no todo el inventario, solo los elegidos. Muestra SKU, stock disponible y precio por producto. Ejemplo real — Puclaro Producciones (evento gastronómico Valle de Elqui): - TICKET PEQUÉN - Entrada Normal: $79.990 (Stock: 10) - TICKET VIZCACHA - Segunda Preventa: $69.990 (Stock: 10) - TICKET ZORRO - Primera Preventa: $59.990 (Stock: 10) - Pulsera del evento: $30.000 — Michelada: $7.000 — Bebidas: $4.500-$5.900 Elimina la necesidad de efectivo o app adicional para eventos, shows, clínicas o cualquier punto de venta presencial con POS Haulmer.
Widgets Embebibles
Centro de widgets embebibles para instalar en sitios web externos. Copia el snippet HTML de cada widget y pégalo en el HTML de tu sitio — se carga automáticamente sin afectar el rendimiento de la página. El visitante interactúa desde el sitio externo y los datos aterrizan directamente en el CRM, la agenda o WhatsApp de VentaPlay.
4 widgets disponibles:
1. Botón de WhatsApp (Activo) — Botón flotante que abre un chat de WhatsApp desde el sitio externo. El visitante hace clic y se abre WhatsApp con el número configurado y el mensaje inicial pre-escrito.
2. Formulario de Captura (Listo) — Captura leads desde cualquier sitio y los crea como oportunidades en el CRM. Configurable: campos, funnel de destino y estado de entrada.
3. Agendamiento de Citas (Sin configurar) — Reservas online embebibles sin mostrar el nombre del profesional. El visitante elige servicio, fecha y hora directamente desde el sitio externo, sin entrar a la landing de VentaPlay.
4. Tienda de Productos (Activo) — Catálogo de productos con carrito embebible. Medio de pago según la configuración de la organización: Mercado Pago o link TUU.
Estados posibles por widget: Activo (funcionando y publicado) | Listo (configurado, no publicado) | Sin configurar (requiere setup antes de publicar).
Cada widget genera un snippet <script> listo para pegar. Sin cuenta de VentaPlay por parte del visitante.
Configuración
Información de Organización
Panel maestro de configuración de la organización, accesible desde el menú inferior. Agrupa en seis pestañas toda la configuración fundacional que VentaPlay necesita para operar correctamente como plataforma multi-módulo. Información — datos generales: logo, nombre, ID único (UUID copiable), descripción, método de asignación de contactos (Manual o Automático) y subdominio personalizado (Premium — ej. dale.ventaplay.com). El subdominio da acceso a la landing pública, menú de restaurante y páginas de autopago y se registra independientemente del formulario principal. Facturación electrónica — configuración del emisor DTE para el SII chileno. Hasta 2 cuentas: una para servicios y una para productos. Cuando está configurado, VentaPlay emite boletas y facturas directamente desde la plataforma. Datos Formales — RUT, razón social, giro comercial, dirección y datos tributarios oficiales. Configuración Pagos — medios de pago habilitados con toggle individual: Efectivo, Gift Card, Link de Pago, POS (Haulmer/TUU), POS Manual. Solo los medios activos aparecen disponibles al momento de cobrar en atenciones. WhatsApp Business — integración Meta WhatsApp Business API: estado de verificación, URL webhook Supabase, token verificado, credenciales de proveedor, subtabs para descripción del servicio, estados de mensajes y monitoreo del servicio. Uso de Tokens — consumo histórico IA/LLM por modelo y tarea (ej. gpt-4.1-mini para VITA Agent WhatsApp Conversation, gemini-2.5-flash para Landing Helper), con vistas Agrupado/Detallado y filtros por modelo, tarea y período.
Pestañas internas
Información
Datos generales y subdominio.
Facturación electrónica
Configuración SII / facturador.
Datos Formales
RUT, razón social, etc.
Configuración Pagos
Mercado Pago, TUU, Webpay, etc.
WhatsApp Business
Configuración de número y conexión Meta.
Uso de Tokens
Consumo de tokens IA/LLM.
Configuración POS
Gestión de los dispositivos de punto de venta físico (POS) conectados a la organización. Los POS compatibles son de la marca Haulmer/TUU — terminales físicos que permiten cobrar con tarjeta directamente desde el mostrador y emitir el documento tributario correspondiente. Los KPIs del header muestran Total POS registrados, Activos, Inactivos y la Última actividad registrada por algún terminal. La tabla lista cada dispositivo con: Marca/modelo (ej. HAULMER PRO2), Número de serie, Estado (Activo/Inactivo), Tipo de documento configurado (0 - Comprobante afecto, Boleta o Factura), Sucursal por defecto a la que está asignado, Ubicación o notas internas (ej. 'Caja 1', 'Integración') y la acción Editar. El buscador filtra en tiempo real por serie, ubicación, notas o sucursal. El botón '+ Nuevo POS' abre el formulario de registro de un nuevo terminal. La configuración de tipo de documento determina qué se emite por defecto al cobrar con ese terminal — crítico para el cumplimiento tributario según si el negocio emite boletas afectas, exentas o facturas. Esta pantalla vincula los terminales físicos con la cuenta y los asigna a sucursales específicas, de modo que el sistema sepa qué documento emitir y desde qué punto de venta cuando ocurre un cobro con tarjeta.
Grabaciones (Interno)
Biblioteca interna de grabaciones de pantalla del equipo VentaPlay. Repositorio de videos operativos y tutoriales accesibles desde la plataforma — disponibles para que cualquier usuario de la organización los consulte sin necesidad de buscar en drives externos o chats. La vista principal es una grilla de cards con thumbnail del video, badge de visibilidad (Interno o público), duración, título descriptivo, creador y URL de la grabación. Los filtros permiten buscar por título o URL, filtrar por creador, por estado y ordenar por más recientes o por rango de duración (cortos, medianos, largos). El header muestra el conteo total de videos, enlaces públicos activos y vistas acumuladas. Click en un video abre un reproductor modal con controles de reproducción estándar, selector de velocidad (1x, 1.15x, 1.6x) y opción de recortar el video (inicio / fin) para compartir solo un segmento relevante. Los videos se graban desde la plataforma usando el botón 'Grabar video' del header global — el flujo queda integrado: grabar → guardar → disponible en Grabaciones. Desde aquí también se alimenta la Academia: al crear un tema se puede elegir 'Usar de Grabaciones' en lugar de subir un archivo nuevo. Ideal para onboardear usuarios, documentar procesos internos o crear materiales de capacitación sin salir del sistema.
Bloques de Horario (Reglas)
Página de configuración que controla las reglas operativas de la agenda para toda la organización. Título completo: 'Configuraciones de Bloques de Horario'. Actualmente contiene una sección: Validaciones de Bloques, con el toggle 'Bloques no se pueden traslapar' — cuando está activo, el sistema impide crear o mover bloques que se superpongan con horarios ya existentes en la agenda de un profesional. Es la forma de forzar integridad en la grilla horaria y evitar dobles reservas accidentales. Este control es clave para negocios donde la agenda es el recurso central (salones, clínicas, estudios de tattoo, centros de estética) y donde un traslape equivale a atender dos clientes al mismo tiempo con el mismo profesional. Al desactivarlo, se permiten bloques solapados — útil solo en contextos donde la superposición es intencional, como turnos flotantes o disponibilidad aproximada. La página está diseñada para crecer: en el futuro pueden agregarse más validaciones y reglas de negocio en esta misma vista sin dispersarlas por la configuración general.
Usuarios
Administrador de cuentas de usuario de la organización. Desde aquí el dueño o administrador controla quién puede ingresar a VentaPlay, con qué rol y qué información puede ver o gestionar. Los KPIs del header muestran: Total Usuarios registrados, Con Roles asignados y Usuarios nuevos este mes. La tabla lista cada usuario con nombre, email, teléfono, rol asignado (badge de color), toggles para 'Ver todos contactos' (si puede ver clientes de todos los profesionales o solo los propios) y 'Gestionar Bloqueos' (si puede bloquear horarios de otros), y la fecha de creación de la cuenta. El botón '+ Nuevo Usuario' abre el modal con campos nombre completo, email, teléfono y selector de rol inicial. Los roles disponibles definen el nivel de acceso: Administrador de Organización (acceso completo), Gerente (gestión de operaciones y equipos), Profesional (funciones de atención al cliente y agenda propia), Visualizador (acceso de lectura ampliado) y Recepcionista (acceso de recepción vía token web). Un usuario puede tener múltiples roles combinados. El formulario de edición añade también la opción de gestionar permisos granulares por funcionalidad — independientes del rol base. Esta capa de permisos permite delegar sin entregar control total sobre facturación, configuración o datos sensibles de otros profesionales.
Academia
Academia
Plataforma de formación interna embebida en VentaPlay. Permite al equipo acceder a videos formativos y tutoriales organizados por temas sin salir del sistema donde trabajan — el tagline de la página es 'Aprende dentro del mismo flujo de trabajo'. La interfaz de consumo tiene tabs horizontales por tema (Introducción, Módulo de Comunicaciones, etc.), cada uno con un contador de videos. Al seleccionar un tema, el video activo se reproduce en el player central con soporte de subtítulos en español (badge 'CC Español'). El panel derecho lista todos los contenidos del tema con su estado para que el usuario navegue entre videos sin perder contexto. El panel de administración (etiqueta 'VentaPlay' — visible solo para el equipo interno) permite gestionar el contenido: crear temas nuevos con nombre y descripción de aprendizaje, subir videos directamente o reutilizar grabaciones existentes de la biblioteca ('Usar de Grabaciones'), editar y reordenar temas, controlar visibilidad (publicar u ocultar para los clientes) y regenerar subtítulos automáticamente con 'Regenerar subtítulos'. El sistema indica el estado de cada elemento (Listo, CC listo, Desde Grabaciones) para saber qué está publicable. Los videos con subtítulos generados son también la fuente de conocimiento que alimenta el módulo de flujos de automatización y el asistente de chat — vía el proceso de importación de VTTs a la base de conocimiento del módulo Conocimiento.
Restaurantes
Mesas
Vista operativa de mesas para el vertical restaurante de VentaPlay. Muestra todas las mesas configuradas como íconos circulares con indicador de estado: verde = libre, rojo = ocupada. Para cada mesa ocupada se muestra el nombre del cliente y el tiempo transcurrido desde que comenzó la atención. Los contadores del header ('X libres / X ocupada') permiten ver el estado del salón de un vistazo. Flujo de operación: (1) Click en mesa libre abre el modal 'Atender Mesa' donde se define el número de comensales y el cliente — ya sea uno identificado (búsqueda por nombre, teléfono o email) o 'Cliente sin identificar' para atención anónima rápida. (2) Click en mesa ocupada abre un drawer lateral con el resumen de la atención en curso: cliente, platos consumidos con cantidad y precio, total acumulado y botones Agregar y Finalizar. (3) El botón '+ Mesa' en la esquina superior derecha abre el modal de creación de nueva mesa: solo requiere un nombre (ej. Mesa 1, Mesa VIP, Terraza 3) — el sistema genera automáticamente email y teléfono para que la mesa funcione como entidad en el CRM. Este módulo es el punto de entrada al flujo restaurante: mesa → comanda en cocina → consumo → pago → cierre de atención.
Comandas Cocina
Pantalla de trabajo de cocina (subtítulo: 'Cocina'). Diseñada para operar en una pantalla o tablet en el área de preparación, sin necesidad de interacción con la sala. Muestra todas las comandas pendientes agrupadas por mesa, con el tiempo total de espera y el detalle de platos a preparar. Cada tarjeta de comanda incluye: nombre de la mesa, cantidad de items pendientes, cronómetro de espera (tiempo desde que se levantó la comanda), listado de platos con sus tiempos individuales, y un botón 'Todo listo' que marca la comanda como completada. El borde de cada tarjeta varía según urgencia usando el sistema de semáforo visible en la leyenda superior derecha: verde (<10 minutos), naranja (10-25 minutos) y rojo (>25 minutos). El ícono de refresh permite actualizar la vista manualmente. El contador de 'X pendiente(s)' en el header permite a la cocina saber cuántas comandas quedan sin resolver. Cuando no hay pendientes la vista queda vacía — señal clara de que la cocina está al día. Los platos individuales dentro de la comanda también muestran su propio tiempo de espera, permitiendo priorizar sin confusión cuando hay múltiples ítems por mesa. Reemplaza las comandas en papel y los mensajes informales entre sala y cocina.
Atenciones (Restaurante)
Resumen operacional de todas las atenciones de mesa del restaurante, equivalente al módulo de Atenciones del core pero adaptado al flujo de sala. El header muestra tres KPIs en tiempo real: 'X en curso' (atenciones activas ahora), '$X consumo' (suma del consumo activo) y '$X cobrado' (total cobrado en el período visible). La tabla agrupa las atenciones por fecha y muestra para cada una: Mesa, Cliente (identificado o anónimo), Personas (comensales), Hora de inicio, Duración, Platos (cantidad y monto en azul), Total y estado de Pago — 'Sin cobrar' (rojo), 'Pagado' (verde) o 'Cancelada' (gris tachado). El footer muestra el conteo total de atenciones y la suma de todos los importes del período visible. Click en cualquier fila abre un drawer lateral con el detalle completo: estado de la atención, botones para reabrir o modificar fecha, profesional a cargo, fecha y hora exacta de inicio, bloque de Servicios con itemizado (servicio, cantidad, profesional, precio), bloque de Productos con valor total, y bloque de Consumo con resumen de pago. Desde el drawer también se pueden registrar nuevos items o finalizar la cuenta. Permite al administrador revisar el histórico de operación de sala, identificar atenciones sin cobrar pendientes y navegar al detalle de cualquier atención sin salir de la vista principal.
Platos
Administrador central del catálogo de platos del restaurante. Es el inventario gastronómico desde donde se define todo lo que puede aparecer en comandas de cocina, menú digital público, consumo de mesa y control de stock. La vista principal es una tabla con columnas Plato (nombre e imagen en miniatura), Precio, Receta (vinculada o 'Sin receta'), Categoría y Estado (Activo / Inactivo). La barra de herramientas incluye búsqueda por texto, filtro por categoría, orden por nombre A→Z, y los botones de acciones masivas: Importar Ingredientes, Setear Stock, Importar Platos (carga masiva desde planilla) y Categorías. Click en un plato abre su ficha de detalle con tres pestañas: Resumen (datos base: nombre, descripción, categoría, precio base), Receta (lista de ingredientes con cantidades — si se define rendimiento en gramos, el precio del plato se calcula automáticamente desde el costo de ingredientes) y Toppings (opciones adicionales que el cliente puede elegir al ordenar). El modal 'Nuevo Plato' incluye el botón 'Mejorar con IA' junto al campo de descripción: el sistema genera una descripción comercial del plato a partir del nombre. La gestión de Categorías (ej. Entradas, Cervezas, Postres) tiene su propio modal con buscador, creación con color identificador y listado editable — las categorías permiten filtrar en el menú digital y organizar las comandas de cocina.
Detalle de Atención (Restaurante)
Drawer lateral de detalle para una atención de mesa en curso o finalizada. Se abre desde /restaurantes/atenciones al hacer click en cualquier fila del listado. El encabezado incluye el ícono de mesa, el título 'Mesa' y el botón Cerrar. La card principal muestra el nombre de la atención (o 'Sin nombre' si el cliente es anónimo), el badge de estado (En Curso en azul, Finalizada en verde, Cancelada en gris), y los botones de acción: 'Cancelar Atención' y 'Finalizar Atención' cuando está activa, o 'Reabrir atención' y 'Modificar fecha' cuando está finalizada. También muestra el profesional a cargo (con botón 'Derivar Profesional' si no hay uno asignado) y la fecha y hora exacta de inicio de la atención. Los bloques expansibles organizan el contenido por tipo: Servicios (tabla con servicio / cantidad / profesional / precio, botón 'Agregar servicio +' y opción de descuento individual por ítem), Productos (platos del menú consumidos en la mesa con 'Agregar producto +', cantidad y descuento aplicable), Consumo (resumen: cantidad de platos y valor total acumulado) e Información de pago (total de consumo, saldo pagado, saldo pendiente en naranja si queda deuda, historial de transacciones y link 'Ver en Ingresos'). Al final aparecen Ficha Médica y Notas y Observaciones con campo de texto libre. Esta vista es el centro de control de la atención activa: se puede agregar consumo en tiempo real, asignar o cambiar el profesional a cargo, aplicar descuentos por ítem y finalizar el cobro — todo sin salir del drawer.
Mermas
Registro auditado de todos los ítems eliminados de un pedido durante una atención de mesa. Cada vez que un mozo o administrador quita un plato o consumo de una comanda activa, el sistema registra la merma con el motivo declarado, el monto perdido y quién realizó la eliminación. Los motivos posibles son: Error (se equivocó al ingresar), Merma (producto no apto para servir), Reclamo (cliente rechazó el ítem), Cambio (se sustituyó por otro plato) y Otro (cualquier otro caso). Cada motivo tiene su propio color en la interfaz para identificación visual rápida. La vista tiene dos tipos de filtros combinables: un selector multiselect de motivos (pill con dropdown de checkboxes — puede activar uno o varios motivos a la vez) y un filtro de fecha con presets rápidos (Hoy, Ayer, Esta Semana, Sem. Anterior, Este Mes, Mes Anterior) más un calendario personalizado para rangos exactos. Por defecto muestra el mes en curso. La tabla muestra por fila: fecha y hora de la eliminación, nombre de la mesa, nombre del ítem, cantidad eliminada, subtotal en pesos, badge de motivo, notas adicionales (visible en pantallas medianas+) y el nombre de quien eliminó el ítem (visible en pantallas grandes+). El footer totaliza el monto acumulado de todas las mermas del período filtrado. Este módulo permite al administrador detectar patrones de merma (platos que se eliminan frecuentemente, meseros con alto índice de error, horarios con más reclamos) y tomar decisiones operativas sobre el menú o el equipo.
Propinas
Registro histórico de propinas asociadas a atenciones de mesa. Cuando se finaliza una atención y el cliente deja propina, el monto queda registrado vinculado a la mesa, el cliente y el profesional que atendió. Cada propina puede tener estado Vigente (activa, se suma al total) o Anulada (excluida del total, aparece tachada). El total del footer solo acumula propinas vigentes. La vista tiene un filtro de fecha con presets rápidos (Hoy, Ayer, Esta Semana, Sem. Anterior, Este Mes, Mes Anterior) más un calendario personalizado para rangos exactos. Por defecto muestra el mes en curso. La tabla muestra por fila: fecha y hora, nombre de la mesa, nombre del cliente (visible en pantallas medianas+), monto de la propina, nombre del profesional que atendió (visible en pantallas grandes+) y badge de estado. El footer muestra el total acumulado de propinas vigentes en el período. Permite al dueño llevar un control transparente de propinas, útil para liquidaciones de personal o para validar que el monto informado por el equipo coincide con el registrado en el sistema.
Resumen Ventas
Ranking analítico de platos vendidos en el período seleccionado. Agrega todas las líneas de consumo de las atenciones de mesa y las presenta ordenadas de mayor a menor por monto total, permitiendo identificar de un vistazo cuáles son los platos más rentables y más demandados. La vista tiene un filtro de fecha con presets rápidos (Hoy, Ayer, Esta Semana, Sem. Anterior, Este Mes, Mes Anterior) más un calendario personalizado para rangos exactos. Por defecto muestra el mes en curso. La tabla muestra por fila: posición en el ranking (#), nombre del plato, total de unidades vendidas, monto total generado y una barra de progreso visual con el porcentaje que representa ese plato sobre el total de ventas del período. El footer totaliza el número de platos distintos vendidos, las unidades totales y el monto total del período. Este módulo responde la pregunta clave del dueño de un restaurante: '¿Qué está vendiendo y cuánto genera?' — sin necesidad de cruzar planillas ni exportar datos. Es el punto de partida para decisiones de menú: subir el precio de los más populares, retirar los que no rotan o reforzar el stock de los más vendidos.
Super Admin
Organizaciones
Panel multi-tenant interno de VentaPlay. Permite al equipo crear, editar, impersonar, suspender y monitorear todas las organizaciones activas en la plataforma desde una sola vista operativa. Es la herramienta de gobierno raíz: desde aquí se gestiona quién tiene acceso, qué plan usa, cómo está configurada su cuenta y qué ocurre dentro de su operación.
Org Demos
Gestión de organizaciones demo con datos de muestra preparados para ventas, demostraciones y onboarding. Permite crear entornos de prueba realistas sin afectar datos de producción. Acelera el proceso comercial al permitir mostrar el sistema en acción con información representativa del rubro del prospecto.
Clonado de Organizaciones
Herramienta de clonado de organizaciones para acelerar el onboarding. Copia configuración base, servicios, profesionales, flujos y reglas de una organización existente a una nueva. Reduce el tiempo de activación de cuentas nuevas y garantiza que las mejores prácticas de una organización se puedan replicar.
Admin Roles
Matriz raíz de permisos del sistema. Define los roles base que pueden asignarse en cualquier organización: qué acciones están habilitadas, qué secciones son visibles y qué operaciones pueden ejecutarse por tipo de usuario. Es la capa de seguridad estructural que gobierna el comportamiento de permisos en toda la plataforma.
Usuarios (SuperAdmin)
Vista global de todos los usuarios registrados en VentaPlay, con acceso a detalles de cuenta, organización asociada, estado de sesión y rol asignado. Permite al equipo interno gestionar accesos, investigar problemas de autenticación y auditar quién está activo en cada organización.
Gestión de Incidencias
Sistema interno de tickets e incidencias reportadas por clientes o detectadas por el equipo. Permite crear, asignar, priorizar y hacer seguimiento de problemas hasta su resolución. Es la herramienta de soporte técnico y customer success de VentaPlay: centraliza los problemas que afectan la operación de las organizaciones y permite medir tiempos de respuesta.
Uso de Tokens (SuperAdmin)
Reporte de consumo de tokens de IA y LLM por organización. Permite monitorear qué cuentas están usando más recursos de IA, detectar uso anómalo y controlar costos operativos de la plataforma. Es la capa de observabilidad del stack IA: permite saber si el consumo es proporcional al valor entregado y actuar antes de que un cliente exceda su límite.
WhatsApp Messages (SuperAdmin)
Vista cross-org de todos los mensajes de WhatsApp procesados por la plataforma. Permite al equipo VentaPlay auditar conversaciones, detectar errores de flujo, revisar entregas y monitorear el comportamiento del canal en producción. Es una herramienta de observabilidad y soporte: útil cuando una organización reporta que un mensaje no llegó o un flujo no se activó.
Emails (SuperAdmin)
Vista cross-org de todos los emails enviados por la plataforma a través de las organizaciones. Permite monitorear entregas, errores, bounces y el comportamiento del canal email en producción. Útil para soporte cuando un usuario reporta que no recibió una notificación, confirmación o correo automático.
Importador Agenda Pro
Herramienta de migración de datos desde AgendaPro hacia VentaPlay. Permite importar clientes, profesionales, servicios e historial de citas de cuentas que vienen de ese sistema. Acelera el onboarding de organizaciones con historial previo, reduciendo la fricción del cambio de plataforma.
Motor de Agenda (APIs)
Tester e inspector interno del Motor de Agenda de VentaPlay. Permite invocar las APIs de disponibilidad, simular consultas de slots, revisar respuestas y diagnosticar problemas de agendamiento en tiempo real. Es una herramienta técnica interna para el equipo de desarrollo y soporte, no parte del flujo operativo de las organizaciones.
Seguimiento de Clientes (Internal)
Dashboard interno de customer success. Permite al equipo VentaPlay monitorear el estado operativo de las organizaciones activas: actividad reciente, uso de módulos, métricas de adopción y señales de riesgo de churn. Es la herramienta que permite actuar proactivamente antes de que una organización deje de usar la plataforma.
Gestión de Suscripciones (Internal)
Gestión de las suscripciones B2B de VentaPlay: las organizaciones que pagan por el uso de la plataforma. Permite ver planes activos, fechas de renovación, estados de pago, historial de facturación y cambios de plan. Es el módulo de revenue interno: permite saber cuánto está cobrando VentaPlay, quién está al día y quién tiene pagos pendientes.
Públicas
Login
Pantalla de inicio de sesión. Card centrado con logo VentaPlay, título 'Iniciar Sesión', subtítulo 'Accede a tu cuenta para gestionar tu negocio'. Campos Email + Contraseña (con toggle ojo para ver). Botón 'Ingresar'. Fondo con grid sutil.
Registro
Pantalla de registro de cuentas nuevas. Card con título 'Crear Cuenta' y subtítulo 'Regístrate para empezar a gestionar tu negocio'. Campos: Nombre Completo, Email (con validación de duplicado en tiempo real → 'Este email ya está registrado en el sistema'), Contraseña, Confirmar Contraseña. Botón 'Crear Cuenta' deshabilitado hasta validar. Link 'Inicia sesión aquí'. Branding: 'EnrolaPro' (legacy del nombre interno).
Restablecer Password
Flujo de recuperación de contraseña con código OTP de 6 dígitos. Card con icono de llave, título 'Restablecer Contraseña' y subtítulo 'Ingresa el código de 6 dígitos enviado a tu correo y tu nueva contraseña'. Campos: Email, Código de Verificación (6 inputs OTP), Nueva Contraseña (min 8), Confirmar Contraseña. Botón 'Cambiar Contraseña' y link 'Volver al inicio de sesión'.
Test del Sistema (Diagnóstico)
Página interna de verificación del sistema EnrolaPro — útil para QA o smoke-tests post-deploy. Tres fases: Fase 1: Sistema de Autenticación (Contexto auth, Registro, Login, Logout), Fase 2: Políticas RLS y Seguridad (Funciones de Seguridad, Acceso a Datos Protegidos, Aislamiento Organizacional — requiere estar autenticado), Fase 3: Gestión de Datos y CRUD (Crear/Leer/Actualizar/Eliminar, Validación, Aislamiento, Rendimiento, Concurrencia). Cada fase tiene botón 'Ejecutar Todos los Tests' + tests individuales. Inputs de email/contraseña/nombre de prueba editables.
Email Desuscribir
Landing pública para que un usuario se desuscriba de los emails (link incluido en cada email enviado). Lee un token de la URL y lo procesa. Sin token → muestra error 'Enlace inválido. No se encontró el token de desuscripción'.
Llamada (Sala)
Sala de videollamada (WebRTC) entre la organización y un contacto. URL única por roomId + contactoId — el cliente recibe el link por WhatsApp/Email y entra sin login. La organización entra autenticada. Usado típicamente para la primera reunión de descubrimiento.
Encuesta Pública (Typeform)
Renderiza un formulario Typeform configurado en /typeforms para que un contacto lo complete. URL identifica organización, contacto, formulario y uid único. Las respuestas se asocian al contacto y persisten para análisis.
Suscripción Pública (Checkout)
Checkout público para que un cliente final suscriba a un plan B2C. URL incluye organización, tipo de suscripción, productoId del plan y una referencia única. Integra Mercado Pago / TUU según la org. Tras pagar redirige a /suscripcion/exito o /suscripcion/fallido.
Suscripción — Resultado
Pantalla intermedia post-pago que evalúa el resultado. Por defecto (sin params válidos) muestra 'Pago Fallido' con la lista de posibles razones (Fondos insuficientes / Tarjeta rechazada / Datos incorrectos / Límite excedido). Botones 'Intentar Nuevamente' y 'Volver al Inicio'. Si los params indican éxito, redirige a /suscripcion/exito.
Suscripción — Éxito
Pantalla post-pago exitoso. Card centrado verde con check, título '¡Pago Exitoso!', subtítulo 'Tu suscripción ha sido activada correctamente'. CTA 'Ir al Inicio' y nota 'Recibirás un correo de confirmación con los detalles de tu suscripción'.
Suscripción — Fallido
Pantalla post-pago fallido. Card centrado con X roja, título 'Pago No Completado', subtítulo 'No se pudo procesar tu pago. Por favor, intenta nuevamente o contacta a soporte'. CTA 'Volver al Inicio' y link '¿Necesitas ayuda? Contacta a Soporte'.
Página No Encontrada (404)
Fallback para rutas no encontradas. Layout minimalista centrado con título grande '404', subtítulo 'Oops! Page not found' y link 'Return to Home'. Cualquier ruta no matcheada se redirige aquí desde App.tsx.
Subdominios y Embeds
Landing Pública (Subdominio)
Landing pública de cada organización en su subdominio personalizado (configurado en /configuracion/informacion). Renderiza los bloques editados en /ecommerce/home: hero, sobre nosotros, servicios tecnológicos, equipo, ventajas, formulario de captura, footer. Incluye el botón flotante de WhatsApp activado en la configuración.
Cancelar Cita (Pública)
Landing pública para que el cliente cancele su cita auto-gestionando, sin login. El link único con citaId se incluye en el mensaje de confirmación de WhatsApp/Email. Muestra los datos de la cita y un botón de confirmación de cancelación.
Compra TUU — Status
Landing pública post-compra TUU (gateway de pago Haulmer) que muestra el estado del pago al cliente. Hace polling al backend para confirmar estado (pendiente / aprobado / rechazado). Edge function asociada: verify-tuu-payment-background. Crítico mantener verify_jwt = false en config.toml para que funcione sin login.
Autopago Público (cliente.ventaplay.com)
Landing reservada en el subdominio especial cliente.ventaplay.com para que un cliente pague de forma asíncrona usando un token único. Distinto del flujo /autopago bajo subdominio org — éste es global. Detectado en App.tsx vía isGlobalAutopagoHost. Token identifica la transacción.
Embed — Productos
Iframe embebible de catálogo de productos para sitios externos. Configurado vía /ecommerce/widgets → 'Tienda de Productos'. Lee parámetros de query (?orgId=...&widgetId=...) para identificar qué tienda mostrar. Sin params = pantalla vacía / configuración inválida. Edge functions involucradas: crear-preferencia-mp (Mercado Pago) y crear-pago-productos-tuu (TUU) según la org. Crítico: verify_jwt = false en config.toml.
Embed — Formulario
Iframe embebible de formulario de captura de leads. Configurado vía /ecommerce/widgets → 'Formulario de Captura'. Lee config del widget por id (vía edge function widget-config) y renderiza el form. Sin params válidos muestra 'Configuración del widget inválida'.
Embed — Agendamiento
Iframe embebible de reservas online sin mostrar profesional (configurado en /ecommerce/widgets → 'Agendamiento de Citas'). Permite al visitante elegir servicio, día y hora directamente. Sin params válidos muestra 'Configuración del widget inválida'.