C
Presupuestador Conexia
Analisis Actualizado y Corregido
Basado en revision del codigo fuente real (presupuestador_new)
Conexia Telecomunicaciones | Abril 2026
pedidos.conexiatec.com
AVISO: Este documento CORRIGE los analisis previos que asumian Laravel/Livewire.
Toda la informacion ha sido verificada contra el codigo fuente real.
1 Correcciones criticas respecto a PDFs anteriores
Los documentos de analisis previos fueron generados sin acceso al codigo fuente real y asumieron incorrectamente un stack Laravel/Livewire. A continuacion se detallan todas las discrepancias encontradas.
| PDFs decian (INCORRECTO) |
Realidad (CODIGO VERIFICADO) |
Tipo |
| Laravel + Livewire 3 + Alpine.js + Tailwind + Vite |
PHP puro + jQuery + Bootstrap + CSS custom (app.css v2.0) |
Stack |
| 31 componentes Livewire |
0 componentes Livewire - archivos PHP individuales + clases OOP |
Arch |
| Sidebar lateral solo en admin, distribuidor era horizontal |
Sidebar UNIFICADO lateral (admin/inc/_sidebar.php) para ambos portales |
UI |
| URL: app.conexiatec.com |
URL: pedidos.conexiatec.com |
Infra |
| 22 modulos Livewire |
Paginas PHP con AJAX a archivos _bd.php |
Arch |
| Sin API REST |
YA EXISTE api/index.php con X-API-Key |
Existe |
| Sin sistema webhooks funcional |
YA EXISTE config_webhook + HMAC-SHA256 + reintentos + logs |
Existe |
| Sin RBAC |
YA EXISTE config_roles + permisos_helper.php con 4 roles |
Existe |
| Sin Pipeline |
YA EXISTE pipeline_bd.php con Kanban, etapas, umbrales, potenciales vs activos |
Existe |
| Sin scoring |
YA EXISTE scoring_bd.php con puntos, badges, leaderboard |
Existe |
| Sin actividades CRM |
YA EXISTE actividades_bd.php con tipos, resultados, seguimiento |
Existe |
| Sin estadisticas |
YA EXISTE estadisticas_bd.php con 9 endpoints |
Existe |
| Sin Dashboard Director |
YA EXISTE dashboard_director_bd.php con KPIs, funnel, forecast |
Existe |
Impacto: La Fase 0 del CRM se reduce drasticamente. No es necesario construir API, webhooks, RBAC, pipeline, scoring ni estadisticas desde cero. Solo hay que ampliar y conectar lo que ya existe.
2 Stack Tecnologico REAL
| Capa |
Tecnologia |
Detalles |
| Backend |
PHP puro (sin framework) |
Archivos .php individuales, sin routing framework |
| OOP |
BaseModel + subclases |
AgenteModel, BudgetModel, ContactModel, ProductModel, etc. |
| Frontend JS |
jQuery 3.7.1 |
AJAX calls a archivos *_bd.php |
| CSS Framework |
Bootstrap 4/5 |
Grid, componentes, modales |
| Charts |
Chart.js + ApexCharts |
Graficos en dashboard y estadisticas |
| Selects |
Select2 |
Busqueda en dropdowns de productos y contactos |
| CSS Custom |
app.css v2.0 |
DM Sans, variables CSS, design system moderno |
| Auth |
Session-based |
Login admin + login agente/distribuidor |
| API |
REST con X-API-Key |
api/index.php, 7 endpoints actuales |
| Base de datos |
MySQL |
conexiatec_adminpresupuestador |
| Seguridad |
Prepared statements + CSRF + HMAC |
PDO, tokens, HMAC-SHA256 en webhooks |
Nota: No hay bundler (Vite/Webpack), no hay Composer autoloader, no hay .env files. La configuracion de BD esta en archivos PHP de conexion directos.
3 Arquitectura de portales
El presupuestador se divide en dos portales que comparten la misma base de datos MySQL:
| Portal |
Ruta |
Funcion |
Usuarios |
| Admin |
/admin/ |
Configuracion, productos, familias, webhooks, alertas, email templates |
Super Admin, Admin/Director |
| Distribuidor |
/distribuidor/ |
Operaciones diarias: presupuestos, pipeline, actividades, estadisticas |
Todos los roles |
Sidebar unificado
El sidebar es un componente UNICO (admin/inc/_sidebar.php) que adapta su contenido segun el contexto (admin vs distribuidor) y los permisos del usuario logueado. NO son dos menus diferentes como indicaban los PDFs anteriores.
Patron de comunicacion Frontend-Backend
- El usuario interactua con la pagina PHP (ej:
pipeline.php)
- jQuery hace AJAX POST/GET al archivo backend correspondiente (ej:
pipeline_bd.php)
- El archivo
*_bd.php procesa la accion, ejecuta queries con PDO, y retorna JSON
- jQuery actualiza el DOM con la respuesta
4 Roles y Permisos REALES
| Rol |
Quien |
Acceso |
| Super Admin |
alejandra.mendoza@conexiatec.com ivan@conexiatec.com |
TODO + switch de nivel + 2FA para escalado |
| Admin/Director |
Empleados Conexia alto cargo |
Admin + Distribuidor + configuracion |
| Agente |
Empleados Conexia comerciales |
Distribuidor: presupuestos, pipeline, actividades |
| Distribuidor |
Clientes externos (1,456 empresas) |
Distribuidor limitado: solo sus presupuestos |
Sistema de permisos
Los permisos se gestionan mediante la tabla config_roles con un array JSON de permisos por rol. El helper permisos_helper.php verifica los accesos en cada pagina.
Permisos disponibles:
| Permiso |
Descripcion |
Roles con acceso |
pipeline.leer |
Ver pipeline Kanban |
Super Admin, Admin, Agente |
pipeline.editar |
Mover cards, cambiar etapas |
Super Admin, Admin, Agente |
actividad.leer |
Ver actividades CRM |
Super Admin, Admin, Agente |
actividad.crear |
Crear nuevas actividades |
Super Admin, Admin, Agente |
stats.leer |
Ver estadisticas |
Super Admin, Admin |
dashboard.director |
Dashboard con KPIs y forecast |
Super Admin, Admin |
admin.config |
Configuracion del sistema |
Super Admin, Admin |
distribuidor.leer |
Ver presupuestos propios |
Todos |
distribuidor.crear |
Crear presupuestos |
Todos |
distribuidor.editar |
Editar presupuestos |
Super Admin, Admin, Agente |
distribuidor.activar |
Activar/desactivar distribuidores |
Super Admin, Admin |
5 Menu REAL del distribuidor (sidebar)
Principal
| Opcion |
Permiso requerido |
Descripcion |
| Presupuestos |
distribuidor.leer |
Listado de presupuestos del usuario |
| Pipeline Ptos |
pipeline.leer |
Vista Kanban de presupuestos en curso |
| Nuevo Presupuesto |
distribuidor.crear |
Crear presupuesto nuevo |
| Documentos |
distribuidor.leer |
Documentacion asociada |
| Cobertura |
distribuidor.leer |
Consulta de cobertura |
Comercial Requiere permisos
| Opcion |
Permiso requerido |
Descripcion |
| Mi Actividad |
actividad.leer |
Actividades CRM propias |
| Pipeline |
pipeline.leer |
Pipeline comercial completo |
| Actividad Equipo |
actividad.leer |
Actividades del equipo comercial |
Direccion Solo directivos
| Opcion |
Permiso requerido |
Descripcion |
| Dashboard Director |
dashboard.director |
KPIs, funnel, forecast, comparativas |
| Estadisticas |
stats.leer |
9 endpoints de datos estadisticos |
Administracion Solo admins
| Opcion |
Permiso requerido |
Descripcion |
| Roles y Permisos |
admin.config |
Gestion de roles RBAC |
| Config Pipeline |
admin.config |
Etapas, umbrales, automatizaciones |
| Panel Admin |
admin.config |
Acceso al portal admin |
6 Menu REAL del admin (sidebar)
Principal
- Dashboard Admin - Vista general del sistema
- Presupuestos (Admin) - Todos los presupuestos del sistema
Contactos
- Usuarios Configurador - Usuarios del sistema de presupuestos
- Potenciales - Leads y prospectos
- Clientes - Clientes activos
- Documentos Admin - Gestion documental centralizada
Administracion
- Panel Comercial - Vista del equipo comercial
- Configuraciones - Ajustes del sistema
- Comerciales - Gestion de agentes comerciales
- Webhooks - Configuracion de webhooks salientes
- Alertas - Sistema de alertas configurables
- Email Templates - Plantillas de correo con variables
- Config General - Parametros generales del sistema
7 Funcionalidades YA existentes que NO hay que crear
Descubrimiento clave: El sistema ya tiene implementadas multiples funcionalidades CRM que los analisis previos daban por inexistentes. Esto reduce significativamente el alcance de la Fase 0.
| Funcionalidad |
Estado |
Detalles |
| API REST |
Existe |
7 endpoints en api/index.php, autenticacion por X-API-Key. Ampliar a 17. |
| Webhooks |
Existe |
4 eventos configurados, HMAC-SHA256, sistema de reintentos automaticos, tabla de logs. |
| RBAC |
Existe |
4 roles con permisos JSON en config_roles. Ampliar a 7+ roles. |
| Pipeline Kanban |
Existe |
Potenciales vs activos, etapas automaticas, umbrales configurables. |
| Scoring / Gamificacion |
Existe |
Sistema de puntos, badges, leaderboard, racha (streak) por agente. |
| Actividades CRM |
Existe |
Tipos: llamada, visita, email, reunion, nota. Resultados y seguimiento integrado. |
| Dashboard Director |
Existe |
KPIs en tiempo real, funnel de conversion, forecast, comparativa anual. |
| Estadisticas |
Existe |
9 endpoints diferentes para metricas de negocio. |
| Email Templates |
Existe |
Plantillas con variables sustituibles, gestion desde admin. |
| Alertas configurables |
Existe |
Sistema de alertas con condiciones y destinatarios configurables. |
8 Lo que SI falta implementar (Fase 0 revisada)
Fase 0 revisada: Con las funcionalidades ya existentes descubiertas, la Fase 0 se centra en ampliar, conectar y asegurar lo existente, no en construir desde cero.
| # |
Tarea |
Detalles |
Tipo |
| 1 |
Ampliar API REST |
+10 endpoints: presupuesto/ver, pedido/listar, contacto/buscar, pipeline/mover, actividad/crear, stats/resumen, webhook/test, etc. |
Ampliar |
| 2 |
dowisp_cliente_id en contactos |
ALTER TABLE contacts ADD dowisp_cliente_id INT NULL - para vincular contactos con DoWISP. |
BD |
| 3 |
Configurar webhooks destino CRM |
Agregar URLs destino del CRM centralizado + eventos faltantes (contacto.actualizado, pipeline.movido, actividad.creada, etc.). |
Ampliar |
| 4 |
Margenes master/distribuidor |
ALTER TABLE en familias para soportar margen_master y margen_distribuidor diferenciados. |
BD |
| 5 |
Motor IGIC/IPSI |
Ampliar el calculo de IVA existente para soportar IGIC (Canarias) e IPSI (Ceuta/Melilla). |
Ampliar |
| 6 |
Cifrar token DoWISP |
Usar functions/crypt.php existente para cifrar el token de acceso a DoWISP en la BD. |
Seguridad |
| 7 |
Regla de Oro: precio >= coste |
Validacion server-side en index_bd.php para impedir que el precio de venta sea inferior al coste. |
Validacion |
| 8 |
Switch de nivel + 2FA |
Permitir a Super Admins cambiar temporalmente su nivel de acceso + TOTP (2FA) para confirmar escalado de permisos. |
Seguridad |
9 Tablas de BD principales
Core (datos de negocio)
| Tabla |
Funcion |
presupuesto |
Presupuestos creados por distribuidores/agentes |
agentes |
Agentes comerciales y distribuidores |
config_edistribuidor |
Configuracion por empresa distribuidora |
contacts |
Contactos (potenciales y clientes) |
product |
Catalogo de productos |
Configuracion
| Tabla |
Funcion |
config_webhook |
Webhooks salientes (URL, eventos, HMAC secret) |
config_roles |
Roles y permisos JSON |
config_pipeline_etapas |
Etapas del pipeline Kanban |
config_pipeline_umbrales |
Umbrales de conversion por etapa |
config_scoring |
Reglas de puntuacion por accion |
config_badges |
Insignias de gamificacion |
config_alertas |
Alertas configurables |
config_objetivos |
Objetivos comerciales por periodo |
config_email_templates |
Plantillas de email con variables |
config_smtp |
Configuracion SMTP por empresa |
config_apikeys |
API keys para acceso REST |
config_estadopedidos |
Estados posibles de pedidos |
Logs y trazabilidad
| Tabla |
Funcion |
pipeline_log |
Historial de movimientos en pipeline |
webhook_log |
Log de envios de webhooks (exito/fallo/reintentos) |
scoring_log |
Historial de puntos otorgados |
agente_badges |
Badges obtenidos por agente |
api_log |
Log de llamadas a la API REST |
10 Seguridad
| Medida |
Implementacion |
Estado |
| Prepared statements |
PDO con parametros enlazados - NO concatenacion de strings |
Activo |
| CSRF tokens |
Token en formularios, verificacion en cada POST |
Activo |
| HMAC-SHA256 |
Firma en webhooks salientes para verificacion del receptor |
Activo |
| Session fingerprint |
Validacion de IP + UserAgent en cada request de sesion |
Activo |
| X-API-Key |
Header de autenticacion para endpoints REST |
Activo |
| 2FA (TOTP) |
Autenticacion de dos factores para escalado de permisos Super Admin |
Activo |
| Soft deletes |
Borrado logico en toda la BD (campo deleted_at o activo=0) |
Activo |
| Company-level isolation |
Aislamiento de datos por empresa distribuidora |
Activo |
| Rate limiting |
Limitacion de intentos en login y llamadas API |
Activo |
| Cifrado de datos sensibles |
Tokens y datos sensibles cifrados con functions/crypt.php |
Activo |
| Datos sensibles en URLs |
NIF, IBAN, email y tokens NUNCA se pasan por URL - siempre POST body |
Politica |
Resumen de seguridad: El sistema tiene una postura de seguridad solida para una aplicacion PHP custom. Las 11 medidas listadas cubren las principales categorias OWASP (inyeccion, autenticacion, autorizacion, datos sensibles, logging).