# Plan de Trabajo — Plataforma SaaS Multiempresa (ISP) con Facturación Electrónica SRI

## 1. Objetivo

Desarrollar una plataforma **SaaS multiempresa (multi-tenant)** donde un **super administrador** gestiona planes y suscripciones (por número de clientes y empresas), y cada empresa cuenta con su propio ecosistema de gestión: clientes, finanzas, red, soporte técnico, almacén, staff y ajustes, con **facturación electrónica conforme al SRI (Ecuador)**.

**Base de datos:** MySQL.

---

## 2. Arquitectura general

### 2.1 Multi-tenancy
- Estrategia: **una base de datos compartida, con columna `empresa_id`** en todas las tablas de negocio.
- Middleware/scope global que filtra automáticamente por `empresa_id` del usuario autenticado.
- Índices compuestos `(empresa_id, ...)` en tablas de alto volumen (clientes, facturas, pagos, tickets).
- Almacenamiento de archivos (XML, PDF, certificados `.p12`) en carpetas separadas por empresa; certificados cifrados.

### 2.2 Capas
- **Backend:** API REST (JWT/sesiones), servicios, validaciones, colas para tareas pesadas (emisión SRI, notificaciones, cortes/reconexiones).
- **Frontend:** panel web responsive (dashboard, tablas con filtros/paginación, formularios, gráficos).
- **Jobs programados:** facturación recurrente mensual, recordatorios de pago, control de suscripciones, reintentos SRI.

### 2.3 Seguridad
- Autenticación, recuperación de contraseña, 2FA opcional.
- RBAC: roles y permisos por módulo/acción.
- Auditoría de acciones (quién, qué, cuándo).
- Aislamiento estricto de datos entre empresas.

---

## 3. Panel del Super Administrador

| Módulo | Funcionalidad |
|---|---|
| Empresas | Alta, edición, suspensión/activación, datos fiscales, administrador inicial |
| Planes | CRUD de planes SaaS con límites: **máx. clientes**, máx. usuarios/empresas, precio, periodicidad |
| Suscripciones | Asignación de plan a empresa, fechas de inicio/vencimiento, renovación, historial, estado (activa, vencida, suspendida) |
| Control de cupos | Bloqueo o aviso al superar el número de clientes permitido |
| Facturación SaaS | Cobro de suscripciones a empresas (factura electrónica propia) |
| Dashboard global | Empresas activas, ingresos por suscripción, clientes totales, vencimientos próximos |
| Usuarios globales | Gestión de administradores de empresas y soporte |

---

## 4. Panel de cada Empresa

### 4.1 Dashboard
- Gráfico de **clientes por día**, **por mes** y **total**.
- Gráfico de **tickets**: hoy, pendientes, del mes.
- Indicadores: pagos pendientes, ingresos del mes, clientes activos/suspendidos/cortados.

### 4.2 CLIENTES
- Lista de clientes (búsqueda, filtros por zona/plan/estado, exportación).
- Ficha del cliente: datos personales/fiscales, plan, router, IP, zona, historial de pagos y tickets.
- **Instalaciones:** registro, técnico asignado, estado, fecha, equipos instalados, observaciones.

### 4.3 FINANZAS
- **Dashboard:** pagos pendientes, recaudación, morosidad.
- **Pagos pendientes:** por cliente y período.
- **Facturas:** emisión manual y recurrente, estados SRI, descarga XML/RIDE (PDF), reenvío por correo.
- **Reporte de pagos:** por fecha, método, usuario, zona.
- **Promesas de pago:** registro de compromiso, fecha prometida, seguimiento y estado (cumplida/incumplida).

### 4.4 SISTEMA (red)
- **Routers:** alta, credenciales/API, estado, integración (p. ej. MikroTik) para activar/cortar servicio.
- **Planes de internet:** velocidad, precio, impuestos, perfil en router.
- **Zonas:** agrupación geográfica/técnica de clientes.

### 4.5 SOPORTE TÉCNICO
- **Lista de tickets** con estados: nuevos, en progreso, cerrados y resueltos.
- Asignación a técnicos, prioridad, categoría, comentarios e historial.
- **Estadísticas:** tickets por estado, por técnico, tiempo promedio de resolución.

### 4.6 ALMACÉN
- **Dashboard** de inventario.
- **Stock de dispositivos de red** (ONUs, routers, antenas, cable, etc.).
- **Lista de dispositivos de red** (serie, MAC, estado: disponible/instalado/dañado, cliente asignado).
- **Proveedores.**
- Movimientos de entrada/salida y asignación a instalaciones.

### 4.7 STAFF
- **Lista de usuarios** y alta/edición.
- **Roles** (administrador, técnico, cobrador, soporte, etc.).
- **Permisos** granulares por módulo y acción.

### 4.8 AJUSTES
- **Facturación:** secuencias, establecimientos, puntos de emisión, impuestos, métodos de pago, día de corte/vencimiento.
- **Facturación electrónica SRI:** RUC, razón social, ambiente (pruebas/producción), certificado de firma `.p12`, obligado a contabilidad, etc.

### 4.9 MI EMPRESA
- **Mis facturas:** facturas que el SaaS emite a la empresa por su suscripción.
- **Empresa:** datos generales, logo, información fiscal, plan contratado y consumo de cupo de clientes.

---

## 5. Facturación electrónica SRI (Ecuador)

1. Generación del **XML** según esquema vigente del SRI (factura, y luego nota de crédito/débito, retención si aplica).
2. **Clave de acceso** de 49 dígitos (módulo 11) y numeración secuencial por establecimiento/punto de emisión.
3. **Firma electrónica XAdES-BES** con certificado `.p12` de cada empresa.
4. Envío a **Recepción** y consulta a **Autorización** (web services SOAP del SRI), ambientes pruebas y producción.
5. Manejo de estados: pendiente, recibida, autorizada, rechazada, devuelta; **reintentos automáticos** vía cola.
6. Generación del **RIDE (PDF)** y envío por correo al cliente.
7. Almacenamiento de XML autorizado y trazabilidad de respuestas del SRI.

---

## 6. Modelo de datos (resumen MySQL)

**Núcleo SaaS:** `empresas`, `planes`, `suscripciones`, `usuarios`, `roles`, `permisos`, `rol_permiso`, `auditoria`.

**Clientes y red:** `clientes`, `instalaciones`, `zonas`, `routers`, `planes_internet`, `servicios_cliente`.

**Finanzas:** `facturas`, `factura_detalles`, `pagos`, `metodos_pago`, `promesas_pago`, `sri_documentos`, `establecimientos`, `puntos_emision`, `secuencias`, `impuestos`.

**Soporte:** `tickets`, `ticket_comentarios`, `ticket_categorias`.

**Almacén:** `dispositivos`, `tipos_dispositivo`, `movimientos_stock`, `proveedores`.

> Todas las tablas de negocio incluyen `empresa_id`, `created_at`, `updated_at` y, cuando aplica, borrado lógico (`deleted_at`).

---

## 7. Fases de desarrollo

| Fase | Contenido | Entregable |
|---|---|---|
| 1. Fundamentos | Arquitectura, multi-tenancy, autenticación, roles y permisos, migraciones MySQL | Base del sistema + login + RBAC |
| 2. Super admin | Empresas, planes, suscripciones, control de cupo de clientes | Panel super administrador |
| 3. Núcleo empresa | Clientes, zonas, planes de internet, routers, instalaciones | Gestión de clientes y servicio |
| 4. Finanzas | Facturas, pagos, pendientes, reportes, promesas de pago | Módulo financiero sin SRI |
| 5. SRI | XML, firma, recepción/autorización, RIDE, correo, reintentos | Facturación electrónica operativa |
| 6. Soporte | Tickets, asignación, estados, estadísticas | Módulo de soporte técnico |
| 7. Almacén | Dispositivos, stock, proveedores, movimientos | Módulo de almacén |
| 8. Dashboards | Gráficos de clientes y tickets, indicadores | Dashboard por empresa y global |
| 9. Staff y ajustes | Usuarios, roles, permisos, configuración de facturación/SRI | Administración de empresa |
| 10. Facturación SaaS | Cobro de suscripciones a empresas (Mi Empresa → Mis facturas) | Ciclo de ingresos del SaaS |
| 11. QA y despliegue | Pruebas, certificación SRI, seguridad, backups, producción | Versión estable |

---

## 8. Criterios de aceptación clave

- Una empresa nunca puede ver datos de otra.
- Al superar el cupo de clientes del plan, el sistema bloquea o advierte según configuración del super admin.
- Las facturas se autorizan correctamente en el ambiente de pruebas del SRI antes de pasar a producción.
- Los dashboards reflejan datos en tiempo cercano al real y respetan permisos por rol.
- Todas las acciones críticas quedan auditadas.
