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.

Indice

  1. Correcciones criticas respecto a PDFs anteriores
  2. Stack Tecnologico REAL
  3. Arquitectura de portales
  4. Roles y Permisos REALES
  5. Menu REAL del distribuidor (sidebar)
  6. Menu REAL del admin (sidebar)
  7. Funcionalidades YA existentes que NO hay que crear
  8. Lo que SI falta implementar (Fase 0 revisada)
  9. Tablas de BD principales
  10. Seguridad

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

  1. El usuario interactua con la pagina PHP (ej: pipeline.php)
  2. jQuery hace AJAX POST/GET al archivo backend correspondiente (ej: pipeline_bd.php)
  3. El archivo *_bd.php procesa la accion, ejecuta queries con PDO, y retorna JSON
  4. 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

Contactos

Administracion

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).