Manual del Distribuidor - RJ CRM
Version 3.0.33-s271 - Actualizado 09/07/2026
Que es un distribuidor
Un distribuidor es un partner autorizado por RJ Soluciones para vender, instalar y dar soporte del CRM a sus propios clientes. Cada distribuidor tiene:
- Acceso al Portal Canal en
https://licencias.rjsoluciones.es. - Capacidad de emitir licencias para sus clientes.
- Comision del 25% sobre el PVD/mes de cada cliente activo.
- Vision exclusiva de sus propios clientes (no ve los de otros distribuidores).
Acceso al portal
- Entra en
https://licencias.rjsoluciones.es. - Usa las credenciales proporcionadas por RJ Soluciones (email + password).
- El sistema detecta automaticamente tu rol de distribuidor.
El portal utiliza autenticacion JWT con tokens Bearer. Las sesiones persisten en el navegador y se refrescan automaticamente.
Panel del distribuidor
KPIs (Mi cartera)
- Total clientes: numero total de licencias emitidas (activas + inactivas + revocadas).
- Activos: licencias no revocadas y no expiradas.
- Expiran 30d: licencias que expiran en los proximos 30 dias (alerta de renovacion).
- Revocadas: licencias que fueron revocadas (ej. por impago).
Cartera (ingresos)
- PVD/mes: ingresos mensuales brutos en PVD (lo que RJ te paga) — solo licencias activas. Sin IVA.
- PVP/mes: lo que facturas al cliente final (PVP bruto) — solo licencias activas. Sin IVA.
- PVP c/IVA: PVP + 21% IVA (el precio final que ve el cliente).
- Margen: porcentaje (PVP - PVD) / PVP × 100%. Personalizable por distribuidor; por defecto 25%.
Tabla de clientes
Muestra todos tus clientes con:
- Nombre, slug, dominio
- Plan asignado
- Estado (activa / expirada / revocada)
- PVD/mes (precio que RJ te paga)
- Fecha de expiracion
- Version instalada: reportada por cada CRM del cliente cada 6 horas via telemetria.
- Menu de acciones: Editar, Renovar, Revocar, Enviar a firma, etc.
Emitir una licencia
- Haz clic en + Nueva licencia.
- Selecciona el plan como radio-card (s137).
- Rellena: slug (identificador unico), nombre empresa, dominio CRM (ej.
acme-crm.rjsoluciones.es), max usuarios, dias (defecto 365), addon ERP V3 si aplica, modulos adicionales. - El precio se calcula automaticamente (pricing modular base + addons).
- Haz clic en Emitir licencia.
- Se muestra el one-liner de instalacion y el token. Copialos y envialos al cliente.
One-liner de instalacion
El comando que el cliente (o tu) ejecuta en su servidor Ubuntu/Debian:
LICENSE_KEY="..." SLUG="acme" DOMINIO="acme-crm.rjsoluciones.es" bash <(curl -fsSL https://get.rjsoluciones.es/crm)
El script se encarga de todo: dependencias, PostgreSQL, Node.js, Cloudflare Tunnel, certificados.
Gestionar licencias
Editar modulos existentes (s135-s136)
Funcionalidad nueva: ya no es necesario revocar y volver a emitir. Desde el portal:
- Pulsa Editar en la fila de la licencia.
- Modifica los modulos activos (check/uncheck) + max_usuarios.
- Guardar.
Hot-reload (s136): el CRM del cliente aplica el cambio automaticamente en menos de 6h (telemetria) o inmediatamente cuando hace cualquier verificacion.
Renovar
Clic en Renovar, indicar dias (defecto 365). Se genera nuevo token y se extiende la licencia.
Revocar
Clic en Revocar e indicar motivo (ej. "Impago"). El CRM del cliente deja de funcionar.
Restaurar
Si fue revocada por error, clic en Restaurar para reactivar.
Regenerar PINs portal del cliente (s135-s136)
Desde el panel del cliente puedes:
- Generar PIN automatico individual.
- Regenerar todos los PINs (masivo) con un solo clic.
- El email del nuevo PIN se envia automaticamente al cliente final.
Tickets de soporte
El distribuidor puede crear tickets de soporte para contactar con RJ Soluciones (por ejemplo, incidencias de instalacion, problemas tecnicos, escalados de clientes).
Crear un ticket
- Accede a la seccion Tickets en la navegacion principal.
- Haz clic en + Nuevo ticket.
- Rellena:
- Cliente (slug de la licencia, opcional): si es sobre un cliente concreto, especifica su slug.
- Asunto: titulo breve del incidente.
- Descripcion: detalles del problema.
- Prioridad: urgente, alta, normal o baja.
- Haz clic en Crear ticket.
- RJ Soluciones recibira una notificacion por email automaticamente.
Gestionar tickets
- Ver detalles: haz clic en un ticket para ver el hilo completo de conversacion.
- Responder: anade nuevos mensajes al ticket (nota: tanto el distribuidor como RJ pueden responder).
- Cambiar estado: marca como:
- Abierto: nuevo o pendiente de atencion.
- En curso: siendo tratado.
- Resuelto: problema solucionado pero ticket abierto aun.
- Cerrado: cerrado definitivamente.
- Escalado: requiere atencion urgente de RJ Soluciones (envia notificacion automatica).
- Filtrar: utiliza los filtros de estado para ver solo tickets en cierta situacion (solo distribuidor; admin ve todos).
Firmas digitales de contratos (DocuSeal)
Tanto el distribuidor como el cliente final pueden firmar digitalmente sus contratos de distribucion/licencia usando DocuSeal Plus integrado.
Enviar contrato a firma
- En el panel de Mis clientes (o en el panel de distribuidores si eres admin), encuentra la licencia.
- Haz clic en el boton Enviar a firma (ojo de llave).
- Se abrira un dialogo pidiendo el email del firmante (opcional; usa el del registro por defecto).
- DocuSeal envia un email con el enlace de firma.
- El firmante completa la firma en el navegador.
Estados de firma
- Pendiente: contrato en espera de firma.
- Enviado: email de firma despachado; puedes reenviar o cancelar desde el badge.
- Firmado: contrato completamente firmado. Se muestra la fecha.
- Cancelado / Rechazado: firma cancelada o rechazada por el destinatario; aparece de nuevo el boton "Enviar a firma".
Reenviar y cancelar
- Reenviar: reenvia el email de firma (puedes cambiar el destinatario si lo necesitas).
- Cancelar: cancela la firma en curso; el destinatario ya no podra firmar este contrato.
11 modulos canonicos (normalizacion automatica)
El sistema soporta estos 11 módulos canonicos desde la migración 069. Los alias legacy se normalizan automáticamente:
crm→nucleo(ID canonico moderno)portal→portal_cliente(ID canonico moderno)jornada→rrhh(ambos se refieren a RRHH)
Si ves licencias con alias legacy en BD, el sistema las interpreta correctamente. Al regenerar el JWT (editar licencia), se usan automáticamente los IDs canonicos.
Tabla de módulos:
| Modulo canonico | Alias legacy | Descripcion |
|---|---|---|
nucleo | crm | Core CRM (clientes, tareas, agenda, dashboard) - siempre activo |
soporte | — | Tickets, SLA, partes SAT, motor automatizaciones |
facturacion | — | Facturas, presupuestos, productos, recurrente |
contratos | — | Contratos + rentabilidad |
presupuestos | — | Plantillas presupuesto |
firmas | — | DocuSeal Plus integrado (firmas digitales) |
ia | — | IA adapter (Ollama/OpenAI/Anthropic/Gemini) + RAG + Bandeja |
whatsapp | — | WhatsApp Business + Email entrante (Inbox multicanal) |
rrhh | jornada | Fichaje GPS + vacaciones + Portal Empleado |
portal_cliente | portal | Portal soporte clientes (PIN bcrypt) |
erp_v3 | — | Integracion ERP V3 (addon +15 EUR) |
Planes y precios
Nota importante: Los planes y precios se pueden personalizar por distribuidor y tenant. Cada plan tiene: nombre, precio PVD, período (mensual/anual), IVA (defecto 21%), max. usuarios, descripción y módulos incluidos. Los siguientes son los valores canonicos por defecto — verifica en tu instancia que sean los mismos.
| Plan | Precio/mes (PVD) | Modulos incluidos |
|---|---|---|
| Starter | 29 EUR | nucleo |
| Profesional | 49 EUR | + soporte, facturacion, contratos, presupuestos, portal_cliente |
| Business | 79 EUR | + ia, whatsapp, rrhh, firmas |
| Enterprise | 129 EUR | Todo + SLA prioritario |
| Addon ERP V3 | +15 EUR | erp_v3 (sobre cualquier plan) |
Precios sin IVA, sin permanencia. PVD = Precio de Venta a Distribuidor.
Precios individuales de modulos (s261)
Si prefieres comuponer licencias modulo a modulo sin usar planes predefinidos:
nucleo: 0 EUR (obligatorio, siempre incluido)soporte: 0 EUR (obligatorio, siempre incluido)facturacion: +10 EURcontratos: +10 EURpresupuestos: +5 EURfirmas: +5 EUR (DocuSeal Plus)ia: +10 EUR (IA + RAG)whatsapp: +10 EUR (WhatsApp Business)rrhh: +5 EUR (Recursos Humanos + Jornada + Portal Empleado)portal_cliente: +5 EUR (Portal Clientes)erp_v3: +15 EUR (Integracion ERP V3)
Dashboard admin
Si eres administrador del portal, el panel te muestra:
Resumen ejecutivo
- Total clientes: todas las licencias en el sistema.
- Clientes activos: licencias en vigor (no revocadas, no expiradas).
- Expiran 30d: licencias criticas para renovacion.
- Distribuidores: numero de partners registrados.
Revenue global (solo admin)
- MRR PVD: ingresos mensuales de RJ (acumulado de todos los distribuidores) — solo activas. Sin IVA.
- MRR PVP: facturado a clientes finales (acumulado) — solo activas. Sin IVA.
- ARR PVD / ARR PVP: anualizado (MRR × 12).
Margen y comisiones
El distribuidor obtiene una ganancia sobre cada cliente igual al margen configurado (por defecto 25%).
- PVD (Precio Venta Distribuidor): lo que RJ paga al distribuidor por cada cliente.
- PVP (Precio Venta Publico): lo que el distribuidor cobra al cliente final (sin IVA).
- Margen del distribuidor: (PVP - PVD) / PVP * 100%. Por defecto 25%.
- Ejemplo: Plan Profesional con PVD 49 EUR/mes. Con margen 25%:
- PVP sin IVA = 49 / (1 - 0.25) = 65,33 EUR
- Ganancia del distribuidor = 65,33 - 49 = 16,33 EUR/mes
- Cliente final paga = 65,33 EUR + IVA = ~79,26 EUR (con IVA 21%)
- Visible en el dashboard: secion "Cartera" muestra PVD/mes (acumulado), PVP/mes, y porcentaje de margen.
- Solo licencias activas (no revocadas, no expiradas) generan ingresos.
Nota: El margen del distribuidor puede personalizarse por tenant. Verifica tu margen actual en el dashboard.
Despliegue y actualizaciones
Instalacion inicial
- El servidor del cliente necesita Ubuntu 22+ o Debian 12+ con acceso root.
- Emite la licencia desde el portal.
- Ejecuta el one-liner (tu o el cliente).
- Tras la instalacion, el cliente accede a su CRM y completa el Wizard de Setup (
/setup) con datos empresa, conectores, etc.
Actualizaciones (update.sh v6, s135)
Para actualizar un cliente a la ultima version:
crm-actualizar <slug>
O para todos los clientes:
crm-actualizar --all
El update.sh v6 (s135) hace:
- Git pull
- Aplica migraciones DDL pendientes
- npm install + build
- Restart systemd
- Healthcheck en
/healthz(con 5 checks) - Sync fichero
VERSION - TZ
Europe/Madriden timestamps - Reporta la version al portal de licencias -> visible en tu panel inmediatamente.
Otros comandos VPS utiles
| Comando | Descripcion |
|---|---|
crm-estado | Ver estado de todas las instancias |
crm-instalar | Instalar nueva instancia |
crm-actualizar <slug> | Actualizar cliente |
crm-actualizar --all | Actualizar todos |
crm-desinstalar <slug> | Eliminar instancia |
Mi perfil (distribuidor)
Como distribuidor, puedes cambiar ajustes personales desde el boton Mi perfil en la barra superior.
Cambiar contraseña
- Haz clic en Mi perfil.
- Ve a Ajustes > Password.
- Introduce tu contraseña actual y la nueva (min. 8 caracteres).
- Guardar.
Configuracion SMTP personalizado (opcional)
De forma opcional, puedes usar tu propia configuracion SMTP (servidor de correo) en lugar de la del portal central RJ. Esto es útil si quieres que los correos de notificacion de tickets provengan de tu dominio.
- Haz clic en Mi perfil.
- Ve a Ajustes > SMTP.
- Rellena los datos del servidor SMTP (host, puerto, usuario, password, from).
- Guarda. Los proximos correos de notificacion de tickets usaran tu SMTP.
Si no configuras SMTP personalizado, los correos se envian desde la configuracion SMTP central del portal.
Actualizar datos fiscales
Desde Mi perfil tambien puedes actualizar o añadir tus datos fiscales (razón social, CIF, dirección, teléfono, web). Estos se usan para referencia administrativa.
Administracion (solo admin)
Gestionar distribuidores
- Ve a Distribuidores (admin).
- Puedes crear, editar o desactivar distribuidores.
- Cada distribuidor tiene:
- Nombre, email, contraseña (opcional al editar).
- Margen personalizable (% ganancia sobre PVP).
- Datos fiscales (CIF, razón social, dirección, web, teléfono, registro mercantil).
- Opción de crear su licencia propia (instancia interna).
- Cuando desactivas un distribuidor, sigue visible pero marcado como inactivo. Sus licencias no se afectan.
Gestionar planes
- Ve a Planes (admin).
- Crea nuevos planes o edita los existentes:
- Nombre, descripción, precio PVD.
- Período: mensual (defecto) o anual.
- IVA (defecto 21%).
- Max. usuarios permitidos.
- Módulos incluidos (checklist).
- Puedes desactivar planes sin eliminarlos. Los clientes existentes no se ven afectados, pero no podras asignar licencias con ese plan.
Actualizar el portal (admin)
- Ve a Ajustes > Avanzado.
- Haz clic en Actualizar portal.
- El sistema iniciara una actualizacion en background. El portal puede reiniciarse brevemente.
- Se abrira un monitor en vivo con el log de la actualizacion.
Cambiar password y SMTP (admin)
- Password: Ve a Ajustes y cambia tu contraseña (puedes dejarla vacia si no quieres cambiar).
- SMTP personalizado: Configure el servidor de correo del portal en Ajustes > SMTP. Por defecto usa el SMTP central de RJ.
Datos fiscales del admin
Ve a Ajustes y rellena tus datos fiscales (nombre legal, CIF, dirección, teléfono, web, registro mercantil). Se guardan para referencia administrativo.
Wizard de configuracion inicial (distribuidor)
Cuando un distribuidor accede por primera vez al portal, se muestra un wizard automático de 4 pasos para configurar:
- Cambiar contraseña (min. 8 caracteres): actualiza tu password provisional.
- SMTP personalizado (opcional): configura tu servidor de correo (host, puerto, usuario, password, "from"). Si lo omites, se usa el SMTP central de RJ.
- Datos fiscales (opcional): razón social, CIF/NIF, dirección, teléfono, web.
- Finalizar: se guarda todo y el wizard se cierra.
Puedes saltar cualquier paso y completarlo después desde Mi perfil (botón en la barra superior). El wizard solo aparece en el primer acceso.
Configuracion post-instalacion para tu cliente (CRM)
Despues de instalar el CRM en el servidor del cliente, guiale para completar el setup:
- Wizard /setup: completar resumen con todos los datos.
- Datos de empresa: Configuracion > Empresa (nombre, CIF, logo cabecera, datos bancarios SEPA).
- Conectores de email: Configuracion > Conectores > Google o SMTP/IMAP.
- Email entrante a tickets: si el cliente quiere que los emails generen tickets/conversaciones automaticamente, configurar Gmail API (Label ID) o IMAP (host/usuario/password) en Conectores. Aparecen en el Inbox multicanal.
- WhatsApp: si el cliente tiene WhatsApp Business API, configurar OAuth (1 clic) o token manual.
- IA: si el plan incluye IA, configurar proveedor en Admin > IA (Ollama local para coste cero, o OpenAI/Anthropic/Gemini).
- Portal de clientes: el cliente puede generar PINs individuales o masivos para sus clientes finales. PIN bcrypt, email automatico.
- 2FA TOTP (recomendado para admins): Admin > Seguridad > Activar 2FA.
- DocuSeal (si plan incluye firmas): configurar plantillas en DocuSeal Plus y vincularlas a Contratos/Presupuestos/SEPA.
- Tema visual: elegir tema en la barra superior (default, brutal-dark, brutal-light, linear-dark, stripe, revolut-dark, kraken).
Que puede hacer tu cliente final con cada plan
A continuacion, las capacidades de cada plan que tu cliente final (quien instala el CRM en su servidor) podra usar:
Starter (29 EUR)
Gestion basica de clientes, tareas, notas, agenda, dashboard personalizable @dnd-kit, buscador global Cmd+K, scoring inteligente.
Profesional (49 EUR)
Todo lo anterior mas:
- Tickets soporte con SLA, partes SAT con foto/firma/GPS.
- Facturacion con PDF (WeasyPrint), presupuestos.
- Facturacion recurrente.
- Contratos con rentabilidad.
- Portal de clientes con PIN bcrypt + autosoporte RAG.
- Equipos con QR UUID + etiquetas DYMO + cobertura por contrato.
Business (79 EUR)
Todo lo anterior mas:
- IA: clasificacion automatica tickets, Bandeja IA hibrida, RAG, sugerencias, generacion emails.
- WhatsApp Business (mensajes entrantes como conversaciones).
- Inbox multicanal unificado (email + WhatsApp + chat widget embebible).
- Email entrante automatico (Gmail API o IMAP).
- RRHH + Portal Empleado (5 tabs: Resumen, Jornada, Vacaciones, Documentos, Mi perfil).
- DocuSeal Plus firmas digitales (SEPA + Contratos + Presupuestos).
- Portal Tecnico movil-first con QR + parte SAT + GPS + cola offline + PWA.
Enterprise (129 EUR)
Todo lo anterior con SLA prioritario de RJ Soluciones.
Addon ERP V3 (+10 EUR)
Conexion con la base de datos del ERP V3 (PostgreSQL):
- Dashboard con datos reales de facturacion.
- Clientes y facturas del ERP.
- Contratos sincronizados.
- SATs ERP.
v3Gateway3 modos: local / readonly / readwrite.- Sidebar muestra tagline "ERP V3" cuando el modulo esta activo.
Telemetria y monitoring (s135-s136)
Cada CRM instalado reporta telemetría al portal de licencias:
- Version instalada: version del CRM del cliente (se actualiza cada 6h o cuando hace cualquier verificacion).
- Indicador visual junto a la version:
- ● OK (verde): último update fue exitoso.
- ● Error (rojo): último update falló (revisa logs en el cliente).
- Estado healthz (OK / Degradado / Down).
- Modulos activos y numero de usuarios conectados.
Visible en tu panel de clientes en tiempo cuasi-real.
Hot-reload (sin reinicio)
Cuando editas los modulos de una licencia desde el portal, el CRM del cliente lo aplica automaticamente en menos de 6h (en la siguiente telemetría) o inmediatamente cuando hace una verificacion manual. No requiere reinicio del servidor.
Caracteristicas tecnicas avanzadas (pendiente de confirmar)
OAuth bounce central (spec-046/047)
El portal actúa como punto central de rebote para autenticaciones OAuth (Google, WhatsApp). Cuando un CRM cliente inicia OAuth:
- Redirige a
licencias.rjsoluciones.es/cb/google(o/cb/whatsapp). - El portal valida la firma HMAC del state, verifica el tenant origin.
- Redirige al CRM del cliente con code + state sin modificar (RFC 6234 compliance).
- Anti open-redirect: valida estrictamente que tenant_origin sea un hostname dentro del sufijo permitido.
Esto simplifica la gestión de credenciales OAuth en distribuidores: una sola pareja client_id/client_secret centralizada en el portal, sin duplicarla en cada tenant.
Webhook proxy DocuSeal
El portal recibe webhooks de DocuSeal (POST /api/webhook-firmas) y los reenvía automáticamente al CRM destino según el slug en la metadata del documento. Esto desacopla DocuSeal (centralizado) de los CRMs clientes.
Telemetria publica (GET /api/check)
Cada CRM instalado puede reportar telemetría sin autenticación a licencias.rjsoluciones.es/api/check?sub=SLUG&version=X&uptime=Y. El portal actualiza version_instalada y estado en tiempo cuasi-real (cada 6h por defecto). No requiere token.
Soporte
Para incidencias con el portal o instalaciones:
- Email: admin@rjsoluciones.es
- Portal:
https://licencias.rjsoluciones.es