erp-suite/apps/products/pos-micro/docs/ANALISIS-GAPS.md

6.8 KiB

POS Micro - Analisis de Gaps vs ERP Core y Odoo POS

Resumen Ejecutivo

Este documento analiza las diferencias entre POS Micro (producto MVP), ERP Core (arquitectura base) y Odoo POS (referencia de mercado) para identificar gaps y oportunidades de mejora.

1. Comparativa de Arquitectura

ERP Core (Express + TypeScript)

  • Framework: Express.js con TypeScript
  • ORM: Raw PostgreSQL queries con Pool
  • Autenticacion: JWT + Bcrypt + RBAC completo
  • Validacion: Zod schemas
  • Multi-tenancy: Schema isolation con RLS
  • Modulos: 13 modulos completos (auth, users, companies, partners, inventory, products, warehouses, pickings, lots, financial, purchases, sales, crm, hr, projects, system)

POS Micro (NestJS + TypeORM)

  • Framework: NestJS con TypeScript
  • ORM: TypeORM
  • Autenticacion: JWT + Bcrypt + PIN simplificado
  • Validacion: class-validator decorators
  • Multi-tenancy: tenant_id column (simplificado)
  • Modulos: 5 modulos minimos (auth, products, categories, sales, payments)

Odoo POS (Python + ORM)

  • Framework: Odoo 18 (Python)
  • ORM: Odoo ORM
  • Modulos POS: 40+ tablas/modelos interconectados
  • Funcionalidades avanzadas: Restaurant, Loyalty, IoT, Multiple payment terminals

2. Gaps Identificados

2.1 Seguridad

Feature ERP Core POS Micro Odoo POS Gap
RBAC completo POS Micro solo tiene owner/cashier
Rate limiting Ninguno implementa
Audit logs POS Micro no tiene
Session management POS Micro no maneja sesiones de caja

2.2 Funcionalidad POS

Feature ERP Core POS Micro Odoo POS Gap
Sesiones de caja N/A Critico para control de caja
Cierre de caja N/A Critico para contabilidad
Arqueo de caja N/A Control de efectivo
Devoluciones N/A Parcial Solo cancelacion same-day
Descuentos globales N/A Solo descuento por linea
Impuestos configurables N/A Hardcoded 16% No flexible
Multi-tarifa N/A Un precio por producto
Combos/Kits N/A No soportado
Variantes producto N/A No soportado

2.3 Integraciones

Feature ERP Core POS Micro Odoo POS Gap
Inventario Completo Basico Completo Sin lotes/series
Contabilidad No genera asientos
Facturacion No hay CFDI
WhatsApp Tabla vacia Preparado pero no implementado
Impresoras No hay soporte
Terminal pago No integrado

2.4 Reportes

Feature ERP Core POS Micro Odoo POS Gap
Ventas del dia Basico Completo Solo totales
Por vendedor No soportado
Por producto No soportado
Por hora No soportado
Margen No soportado
Exportable No hay exports

3. Correcciones Aplicadas

3.1 Frontend - Login

  • Problema: Frontend enviaba businessName donde backend esperaba phone
  • Solucion: Actualizado LoginPage para usar phone y agregar ownerName para registro

3.2 Frontend - Endpoints

  • Problema: Endpoints no coincidian con backend
  • Correcciones:
    • /products/favorites/products?isFavorite=true
    • /products/{id}/favorite/products/{id}/toggle-favorite
    • /sales?date=/sales/recent?limit=50
    • PATCH /sales/{id}/cancelPOST /sales/{id}/cancel
    • /sales/summary/{date}/sales/today

3.3 Frontend - Tipos TypeScript

  • Problema: Tipos no alineados con entidades backend
  • Correcciones:
    • currentStockstockQuantity
    • minStocklowStockAlert
    • discountdiscountAmount/discountPercent
    • taxtaxAmount
    • changechangeAmount
    • Agregado SubscriptionStatus type

3.4 Frontend - Cart Store

  • Problema: Calculo de descuentos no funcionaba
  • Solucion: Actualizado para aplicar discountPercent correctamente al subtotal

4. Gaps Pendientes (Roadmap)

Fase 2 - Funcionalidad Core

  1. Sesiones de caja: Apertura, cierre, arqueo
  2. Devoluciones completas: No solo same-day
  3. Descuentos globales: Por orden, no solo por linea
  4. Impuestos configurables: Permitir diferentes tasas

Fase 3 - Integraciones

  1. WhatsApp Business: Tickets por WhatsApp
  2. Facturacion CFDI: Integracion con PAC
  3. Impresoras termicas: Soporte ESC/POS
  4. Terminales de pago: Integracion basica

Fase 4 - Reportes

  1. Reporte por producto: Top ventas, margenes
  2. Reporte por periodo: Semanal, mensual
  3. Exportacion: CSV, PDF

5. Patrones de ERP Core a Adoptar

5.1 Base Service Pattern

// ERP Core tiene un servicio base reutilizable
abstract class BaseService<T, CreateDto, UpdateDto> {
  // findAll con paginacion, busqueda y filtros
  // findById, findByIdOrFail
  // exists, softDelete, hardDelete
  // withTransaction
}

Recomendacion: Implementar en POS Micro para consistencia

5.2 Error Handling

// ERP Core usa clases de error personalizadas
class ValidationError extends AppError { }
class NotFoundError extends AppError { }
class ConflictError extends AppError { }

Recomendacion: Adoptar mismo patron en NestJS

5.3 Audit Fields

// ERP Core tiene campos de auditoria consistentes
created_at, created_by
updated_at, updated_by
deleted_at, deleted_by

Recomendacion: Agregar created_by, updated_by a todas las tablas

6. Funcionalidades de Odoo a Considerar

6.1 Session Management (Critico)

  • Apertura de sesion con saldo inicial
  • Estado: opening_control → opened → closing_control → closed
  • Validacion de diferencias de caja
  • Asientos contables automaticos

6.2 Loyalty Programs (Futuro)

  • Puntos por compra
  • Recompensas configurables
  • Tarjetas de cliente
  • Cupones/Promociones

6.3 Restaurant Mode (Futuro)

  • Mesas/pisos
  • Ordenes abiertas
  • Impresion a cocina
  • Division de cuentas

7. Conclusion

POS Micro esta correctamente posicionado como un MVP minimo para el mercado mexicano informal (vendedores ambulantes, tienditas, fondas). Las correcciones aplicadas resuelven los problemas criticos de comunicacion frontend-backend.

Los gaps identificados son caracteristicas para fases futuras, no bloquean el lanzamiento del MVP que cumple con:

  • Registro/Login simple con PIN
  • Catalogo de productos (max 500)
  • Ventas rapidas (max 1000/mes)
  • Multiples formas de pago
  • Reportes basicos del dia
  • Offline-first PWA

Documento generado: 2025-12-08 Version: 1.0