# Tareas Pendientes — Smart POS

> Lista detallada de tareas pendientes, mejoras y módulos por completar. Para editores AI.

---

## Índice

1. [POS Retail — Mejoras pendientes](#1-pos-retail--mejoras-pendientes)
2. [POS Admin — Mejoras pendientes](#2-pos-admin--mejoras-pendientes)
3. [Sistema Offline — Pendientes](#3-sistema-offline--pendientes)
4. [Vendedores, Cobradores y Comisiones](#4-vendedores-cobradores-y-comisiones)
5. [Listas de Precios](#5-listas-de-precios)
6. [Planes de Cuotas](#6-planes-de-cuotas)
7. [Ofertas y Promociones](#7-ofertas-y-promociones)
8. [Sistema de Suscripciones SaaS](#8-sistema-de-suscripciones-saas)
9. [Mejoras generales del sistema](#9-mejoras-generales-del-sistema)
10. [Módulos futuros planificados](#10-módulos-futuros-planificados)

---

## 1. POS Retail — Mejoras pendientes

### 1.1 Configuración POS desde el frontend

- **Estado**: La UI de configuración POS existe pero requiere revisión de completitud.
- **Pendiente**: Verificar que todos los campos de `pos_config` (DB) se expongan en la UI de configuración y se guarden correctamente via `PATCH /pos-config/:sucursal_id`.
- **Campos a revisar**: `retail_tile_size`, `retail_grid_columns`, `barcode_auto_add`, `enable_tables`, `enable_delivery`.
- **Archivos**: `src/components/templates/POSRetailTemplate.jsx` (frontend), `src/pos-config/` (backend).

### 1.2 Impresión de tickets

- **Estado**: La lógica de generación PDF existe (`pdfmake`), pero la impresión directa a impresora térmica puede necesitar ajustes.
- **Pendiente**: Validar flujo completo de impresión de ticket tras una venta en POS Retail. Verificar integración con `useImpresorasStore`.
- **Archivos**: `src/reports/` (frontend), `src/store/ImpresorasStore.jsx`.

### 1.3 Cierre de caja en POS Retail

- **Estado**: El botón "Cerrar Caja" existe en el menú hamburguesa del POS Retail.
- **Pendiente**: Verificar que el flujo completo funcione (cuadre, resumen, impresión de cierre). El `CierreCajaStore` tiene la lógica pero puede necesitar ajustes de UI.
- **Archivos**: `src/store/CierreCajaStore.jsx`, `src/components/templates/POSRetailTemplate.jsx`.

### 1.4 Modo mesas y delivery

- **Estado**: Los campos `enable_tables` y `enable_delivery` existen en la config pero la UI no está implementada.
- **Pendiente**: Diseñar e implementar modo mesas (para restaurantes) y modo delivery si se requiere.
- **Prioridad**: Baja (no requerido para MVP).

### 1.5 Descuentos y ofertas en POS Retail

- **Estado**: El motor de ofertas existe en backend (`src/ofertas/`). El hook `useOfertasCarrito` existe en frontend.
- **Pendiente**: Integración completa del motor de ofertas con el carrito del POS Retail. Aplicación automática de ofertas según condiciones, visualización de descuentos.
- **Archivos**: `src/hooks/useOfertasCarrito.js`, `src/api/ofertas.service.js`, backend `src/ofertas/`.

---

## 2. POS Admin — Mejoras pendientes

### 2.1 Integración completa con listas de precios

- **Pendiente**: Cuando se selecciona un cliente que tiene lista de precios asignada, los precios del detalle de factura deben actualizarse automáticamente.
- **Archivos**: `src/components/templates/POSAdminTemplate.jsx`, `src/api/listas-precios.service.js`.

### 2.2 Integración con planes de cuotas

- **Estado**: Backend implementado (`src/planes-cuotas/`). Documentación en `docs/plan-cuotas-flujo-pos-admin.md`.
- **Pendiente**: Completar integración en el POS Admin: selector de plan de cuotas, cálculo automático de cuotas con interés, generación de cuotas al crear factura.
- **Archivos**: `src/components/templates/POSAdminTemplate.jsx`, backend `src/planes-cuotas/`.

### 2.3 Notas de crédito desde POS

- **Pendiente**: Flujo para anular/devolver parcialmente desde la interfaz del POS.
- **Archivos**: `src/nota-creditos/` (backend).

---

## 3. Sistema Offline — Pendientes

### 3.1 Manejo de conflictos

- **Estado**: Las ventas offline se procesan con `facturasService.create()`, que valida stock y numeración.
- **Pendiente**: UI para mostrar ventas offline que fallaron al sincronizar (status `"failed"` en IndexedDB). Actualmente el error se loguea pero no hay UI de resolución.
- **Archivos**: `src/store/SyncStore.jsx` (`_pushPendingVentas`), `src/offline/db.js`.

### 3.2 Sync selectivo por categoría

- **Pendiente**: Opción para sincronizar solo ciertas categorías de productos (empresas con catálogos muy grandes).
- **Prioridad**: Baja.

### 3.3 Numeración offline

- **Estado**: Actualmente las ventas offline se crean sin número de factura. El backend asigna el número al sincronizar.
- **Posible mejora**: Pre-asignar bloques de numeración para uso offline.
- **Prioridad**: Media (funciona correctamente pero el ticket offline no muestra número final).

---

## 4. Vendedores, Cobradores y Comisiones

### Estado general

- **Backend**: Módulo `src/vendedores-cobradores/` creado con 15 archivos. CRUD básico implementado.
- **Frontend**: Componentes de UI por crear/completar.
- **Especificación**: `docs/MODULOS_FUTUROS.md` sección 1.

### Pendiente

- [ ] Asignación de vendedor/cobrador a facturas (al crear factura)
- [ ] Planificación de rutas de cobranza (CRUD rutas, asignar facturas a ruta)
- [ ] Dashboard de cobranza (facturas pendientes por cobrador, mapa de ruta)
- [ ] Liquidación de comisiones (cálculo, aprobación, pago)
- [ ] Reportes de rendimiento por vendedor/cobrador
- [ ] Migraciones pendientes (tablas: `asignacion_facturas`, `rutas_cobranza`, `ruta_facturas`, `comisiones`, `zonas_cobranza`)
- [ ] UI frontend completa

---

## 5. Listas de Precios

### Estado general

- **Backend**: `src/lista-precios/` — CRUD completo de listas y asignación de precios por producto.
- **Frontend**: `src/components/templates/listas-precios/` — UI de gestión funcional (Wizard crear, asignaciones a clientes, precios por producto).
- **Documentación**: `docs/configuracion-y-listas-de-precios.md`, `docs/explicacion-funcionalidad-lista-precios.md`.

### Pendiente

- [ ] Integración con POS Admin: auto-cargar precios de lista al seleccionar cliente
- [ ] Integración con POS Retail: aplicar lista de precios del cliente al mostrar productos
- [ ] Validaciones de negocio: precio mínimo, descuento máximo permitido
- [ ] Copiar lista existente como base para nueva lista
- [ ] Importación masiva de precios (CSV/Excel)

---

## 6. Planes de Cuotas

### Estado general

- **Backend**: `src/planes-cuotas/` — CRUD de planes, precios por producto con cuotas.
- **Frontend**: Por completar.
- **Documentación**: `docs/sistema-precios-cuotas.md`, `docs/plan-cuotas-flujo-pos-admin.md`.

### Pendiente

- [ ] Integración en POS Admin: selector de plan, cálculo de cuotas
- [ ] Generación de cuotas al crear factura con condición crédito
- [ ] Vista de cuotas pendientes por cliente
- [ ] Reportes de cuotas (vencidas, por vencer, pagadas)
- [ ] UI frontend de gestión de planes de cuotas

---

## 7. Ofertas y Promociones

### Estado general

- **Backend**: `src/ofertas/` — Motor de ofertas con tipos (descuento %, monto, NxM, combo, precio especial). CRUD completo.
- **Frontend**: Hook `useOfertasCarrito.js` creado. UI de gestión básica.
- **Documentación**: `docs/ofertas-promociones.md`, `docs/MODULOS_FUTUROS.md` sección 3.

### Pendiente

- [ ] Integración completa en POS Retail: aplicación automática de ofertas al agregar al carrito
- [ ] Integración en POS Admin: indicador visual de oferta aplicada
- [ ] UI de creación/edición de ofertas con preview
- [ ] Validación de ofertas excluyentes (no acumular descuentos incompatibles)
- [ ] Dashboard de rendimiento de ofertas (uso, impacto en ventas)
- [ ] Programación temporal de ofertas (fecha inicio/fin, días/horarios específicos)

---

## 8. Sistema de Suscripciones SaaS

### Estado general

- **Backend**: Suscripciones, planes, jerarquía empresarial, comisiones de resellers implementados.
- **Frontend**: Tabs dinámicas por user type. `MiSuscripcion.jsx` y `RedEmpresarial.jsx` funcionales. Resellers dashboard funcional.
- **Documentación**: `docs/multi-level-subscription-architecture.md`, `docs/modelo-hibrido-comisiones.md`, `docs/flujo-pago-comisiones-a-resellers.md`, `docs/plan-suscripciones-escalable.md`.

### Pendiente

- [ ] Completar componentes placeholder: `MetricasContent`, `MisSubsidiariosContent`, `MetricasResellerContent`
- [ ] Flujo de upgrade/downgrade de plan desde el frontend
- [ ] Pago online de suscripciones (integración con pasarela de pagos)
- [ ] Facturación automática de suscripciones (ya existe `facturas/automatico` en backend)
- [ ] Multi-tenant avanzado: resellers creando sus propios planes (pospuesto, ver `docs/plan-reseller-puede-crear-planes.md`)
- [ ] Migraciones pendientes 007-011 (extensiones planes, config empresa, políticas cambio, suscripciones ext, historial cambios)

---

## 9. Mejoras generales del sistema

### 9.1 Testing

- **Estado**: Jest configurado pero cobertura mínima.
- **Pendiente**: Tests unitarios para servicios críticos (facturas, sync, auth). Tests e2e para flujos principales.

### 9.2 Manejo de errores global

- **Pendiente**: ExceptionFilter global en NestJS para estandarizar respuestas de error. Algunos controllers manejan errores con try/catch inline.

### 9.3 Logging

- **Estado**: NestJS Logger básico + console.log en algunos lugares.
- **Pendiente**: Implementar logging estructurado (Winston/Pino) con niveles y rotación.

### 9.4 Rate limiting

- **Pendiente**: Implementar rate limiting en endpoints públicos (login, register) para prevenir ataques.

### 9.5 Paginación consistente

- **Estado**: La mayoría de endpoints usan paginación `page` + `limit`.
- **Pendiente**: Estandarizar patrón de paginación en TODOS los endpoints de listado.

### 9.6 PWA — Auto-update UX

- **Estado**: `registerType: "autoUpdate"` configurado.
- **Pendiente**: Agregar UI para notificar al usuario cuando hay una actualización disponible (prompt de reload).

### 9.7 Documentación Swagger

- **Estado**: Swagger configurado en `/docs`. La mayoría de endpoints tienen decoradores básicos.
- **Pendiente**: Completar descripciones de DTOs, ejemplos de request/response, y documentación de errores en Swagger.

---

## 10. Módulos futuros planificados

> Detallados en `docs/MODULOS_FUTUROS.md`

### 10.1 Sistema de Agendamiento de Citas (Sección 4 de MODULOS_FUTUROS.md)

Para negocios de servicios (peluquerías, consultorios, etc.):

- Agenda por profesional
- Reservas online
- Recordatorios SMS
- Integración con facturación

**Prioridad**: Baja (no relacionado al POS retail directo).

### 10.2 Reportes avanzados

- Dashboard de ventas con gráficos (parcialmente implementado con Recharts)
- Reportes de inventario (stock bajo, movimientos)
- Reportes fiscales (libros IVA, resumen SIFEN)
- Exportación a Excel/PDF

### 10.3 Compras y proveedores

- Módulo de compras (órdenes de compra, recepción)
- Gestión de proveedores (precios, condiciones)
- Actualización automática de stock al recibir compra

---

## Priorización sugerida

| Prioridad | Tarea                                | Impacto                    |
| --------- | ------------------------------------ | -------------------------- |
| **Alta**  | Impresión de tickets POS Retail      | UX crítica para uso diario |
| **Alta**  | UI de ventas offline fallidas        | Prevenir pérdida de datos  |
| **Alta**  | Integración listas de precios en POS | Feature comercial clave    |
| **Media** | Cierre de caja completo              | Operación diaria           |
| **Media** | Ofertas en POS Retail                | Valor comercial            |
| **Media** | Planes de cuotas en POS Admin        | Financiamiento             |
| **Media** | Completar UI suscripciones           | SaaS billing               |
| **Baja**  | Vendedores y rutas de cobranza       | Feature avanzada           |
| **Baja**  | Modo mesas/delivery                  | Nicho restaurantes         |
| **Baja**  | Agendamiento de citas                | Nicho servicios            |
| **Baja**  | Testing y logging                    | Calidad técnica            |

---

## Documentación existente relacionada

| Archivo                                      | Contenido                              |
| -------------------------------------------- | -------------------------------------- |
| `CONTEXT_GENERAL.md`                         | Resumen ejecutivo del proyecto         |
| `FRONTEND_ARCHITECTURE.md`                   | Arquitectura completa del frontend     |
| `BACKEND_ARCHITECTURE.md`                    | Arquitectura completa del backend      |
| `OFFLINE_SYNC.md`                            | Sistema offline-first detallado        |
| `MODULOS_FUTUROS.md`                         | Especificaciones de módulos futuros    |
| `configuracion-y-listas-de-precios.md`       | Configuración de listas de precios     |
| `explicacion-funcionalidad-lista-precios.md` | Funcionalidad de listas de precios     |
| `sistema-precios-cuotas.md`                  | Sistema de precios y cuotas            |
| `plan-cuotas-flujo-pos-admin.md`             | Flujo de cuotas en POS Admin           |
| `ofertas-promociones.md`                     | Motor de ofertas y promociones         |
| `multi-level-subscription-architecture.md`   | Arquitectura multi-nivel suscripciones |
| `modelo-hibrido-comisiones.md`               | Modelo de comisiones holding/reseller  |
| `flujo-pago-comisiones-a-resellers.md`       | Flujo de pago de comisiones            |
| `plan-suscripciones-escalable.md`            | Plan escalable de suscripciones        |
| `plan-reseller-puede-crear-planes.md`        | Resellers creando planes (pospuesto)   |
| `plan-precios-inventario.md`                 | Plan de precios e inventario           |
| `suscripcion-funcionalidad_comision1.md`     | Funcionalidad de comisiones v1         |

---

_Documento generado: Febrero 2026_
