Visión General

🛍️ Ir al Catálogo Diciembre 2025

📘 Manual del Sistema EMS

Sistema completo de gestión para supermercados. Control de inventario, ventas, facturación y más.

14

Módulos

12

Tablas

1

Asistente IA

¿Qué es EMS?

Sistema de gestión empresarial

EMS es un sistema completo de gestión diseñado para supermercados en República Dominicana. Incluye todas las herramientas necesarias para administrar tu negocio.

Control de inventario
Punto de venta (Venta Rápida)
Registro de inversiones
Facturación electrónica
Gestión de pedidos
Control financiero
Asistente de voz (Super Elba)
Manejo de devoluciones

Flujo Principal del Negocio

Cómo funciona el ciclo de operación

Comprar Mercancía
Registrar Inversión
Crear Productos
Vender
Facturar

Estructura de Archivos

Organización del proyecto

/ ├── api/ │ └── api.php # API principal (enrutador) ├── plugins/ │ ├── plugin_finanzas.php # Ingresos, gastos, totales │ ├── plugin_devoluciones.php │ ├── plugin_damaged.php │ └── investment.php # Registro de inversiones ├── js/ │ ├── venta-rapida.js # Punto de venta (HUB central) │ ├── inventario.js # Gestión de productos │ ├── finanzas.js # Panel financiero │ ├── voice-assistant.js # Super Elba │ └── ... ├── pages/ │ ├── dashboard.php # Panel principal │ ├── panel.php # Administración │ └── venta-rapida.php # Página de ventas └── uploads/ └── products/ # Imágenes de productos

Tecnologías Utilizadas

Stack tecnológico del sistema

Componente Tecnología Versión
Backend PHP 7.2+
Base de datos EMSDB / MySQL 11.8+
Frontend JavaScript Vanilla ES6+
Voz Web Speech API Nativo

Módulo de Productos

Gestión del inventario

Tipos de Productos

Producto Simple

Un producto individual sin relación padre-hijo. Se vende directamente como unidad.

Ejemplo: "Galletas María" - se vende solo por unidad, no viene en caja.

Producto Tipo Caja (Padre-Hijo)

Cuando compras por caja pero vendes por unidad. El sistema crea automáticamente dos productos relacionados:

PADRE (Caja): ├── Nombre: "Brugal Extra Viejo 1L (Caja)" ├── es_caja: 1 ├── unidades_por_caja: 12 ├── precio: 6,866.88 (precio de la caja) └── cantidad: 0 (calculada automáticamente) HIJO (Unidad): ├── Nombre: "Brugal Extra Viejo 1L (Unidad)" ├── es_caja: 0 ├── producto_padre_id: [ID del padre] ├── precio: 640.00 (precio por unidad) └── cantidad: 12 (unidades disponibles)

Campos de Productos

Estructura de la tabla ems_products

Campo Tipo Descripción
id varchar(32) Identificador único (ej: p_abc123)
nombre varchar(255) Nombre del producto
precio decimal(10,2) Precio de venta
precio_compra decimal(10,2) Costo de adquisición
ganancia_unitaria decimal(10,2) precio - precio_compra
cantidad decimal(10,2) Stock disponible
cantidad_inicial decimal(10,2) Stock cuando se registró
es_caja tinyint(1) 1 = es caja/padre, 0 = es unidad
unidades_por_caja decimal(10,2) Cuántas unidades trae la caja
producto_padre_id varchar(32) ID del producto padre (si es hijo)

Sistema de Ofertas

Promociones y descuentos por cantidad

Cada producto puede tener una oferta activa con los siguientes campos:

Campo Ejemplo Descripción
offer_active 1 Oferta activa
offer_qty 3 Cantidad para la oferta
offer_price 1,830.00 Precio de la oferta
offer_label 3X1830 Etiqueta visible
Ejemplo: "3 Brugal Extra Viejo por RD$ 1,830" en vez de RD$ 1,920 (640×3). ¡El cliente ahorra RD$ 90!

Módulo de Inversiones

Registro de compras de mercancía

¿Qué es una Inversión?

Una inversión es el registro de una compra de mercancía. Cuando compras productos al proveedor, lo registras como inversión para que el sistema cree los productos y actualice el inventario.

Registrar Inversión
Crear/Actualizar Productos
Actualizar Inventario
Registrar Origen $

Origen del Dinero

De dónde salió el dinero para la compra

Origen Descripción Ejemplo
Capital del negocio Dinero de las ganancias del supermercado Usaste RD$ 5,000 de la caja
Dinero externo Dinero que pusiste de tu bolsillo Aportaste RD$ 10,000 personales
Mixto Parte del negocio, parte externo RD$ 3,000 caja + RD$ 7,000 personal
Importante: El capital del negocio usado para comprar mercancía NO se resta del total porque ese dinero se convirtió en inventario (mercancía).

Ejemplo de Inversión

Caso práctico paso a paso

Compraste: 1 caja de Brugal Extra Viejo 1L Precio pagado: RD$ 6,866.88 Precio de venta (caja): RD$ 7,260.00 Precio de venta (unidad): RD$ 640.00 Unidades por caja: 12 Origen: Capital del negocio El sistema automáticamente: 1. Crea producto padre "Brugal Extra Viejo 1L (Caja)" 2. Crea producto hijo "Brugal Extra Viejo 1L (Unidad)" 3. Agrega 12 unidades al inventario 4. Calcula precio_compra por unidad: 6866.88/12 = 572.24 5. Calcula ganancia: 640 - 572.24 = 67.76 por unidad

Módulo de Ventas

Punto de venta - Venta Rápida

Venta Rápida - El HUB Central

Venta Rápida es el corazón del sistema. Todas las operaciones de venta pasan por aquí:

Facturas

→ Venta Rápida

Pedidos

→ Venta Rápida

Ofertas

→ Venta Rápida

Catálogo

→ Venta Rápida

Proceso de Venta

Pasos para completar una venta

1 Agregar productos al carrito

  • Buscar producto por nombre
  • Seleccionar cantidad
  • Agregar al carrito

2 Información del cliente (opcional)

  • Nombre del cliente
  • Teléfono
  • Método de entrega (Pickup/Delivery)

3 Procesar venta

  • Seleccionar método de pago
  • Confirmar la venta

4 El sistema automáticamente

  • ✓ Resta cantidad del inventario
  • ✓ Registra la venta en ems_sales
  • ✓ Crea factura en ems_invoices
  • ✓ Crea items en ems_invoice_items
  • ✓ Actualiza cantidad de cajas (si aplica)

Sistema de Peso (Libras/Onzas)

Formato dominicano para productos por peso

Para productos que se venden por peso, el sistema usa el formato dominicano:

Formato: LIBRAS.ONZAS Ejemplos: - 2.8 = 2 libras y 8 onzas - 0.12 = 12 onzas - 1.0 = 1 libra exacta Conversión interna: total_libras = libras + (onzas / 16)
Nota: En el sistema dominicano, se pueden poner onzas decimales (0.1, 0.15) sin problema. Nadie pone 16+ onzas en la práctica.

Módulo de Facturación

Generación de facturas electrónicas

Estructura de Facturas

Cada venta genera una factura con sus items relacionados:

FACTURA (ems_invoices) ├── numero_factura: "F-20251223-abc123" ├── cliente_nombre: "Juan Pérez" ├── cliente_telefono: "809-555-1234" ├── subtotal: 5000.00 ├── descuento: 0.00 ├── total: 5000.00 ├── metodo_pago: "Efectivo" ├── estado: "completada" └── vendedor: "admin" │ └── ITEMS (ems_invoice_items) ├── Item 1: Brugal × 3 = 1920.00 ├── Item 2: Presidente × 5 = 800.00 └── Item 3: Whisky × 2 = 2280.00

Estados de Factura

Ciclo de vida de las facturas

Estado Badge Descripción
completada Completada Venta finalizada y pagada
pendiente Pendiente En proceso de pago
cancelada Cancelada Factura anulada
Formato de número: F-YYYYMMDD-XXXXXX
Ejemplo: F-20251223-abc123

Módulo de Pedidos

Gestión de solicitudes de compra

Un pedido es una solicitud de compra que aún no se ha procesado. Puede venir del catálogo público o crearse manualmente.

Cliente crea pedido
Pedido pendiente
Empleado revisa
Enviar a Venta Rápida
Completado

Métodos de Entrega

Opciones disponibles para el cliente

Pickup

Recoger en tienda

Delivery

Envío a domicilio

Módulo Financiero

Control de ingresos, gastos y totales

Ingresos

Dinero que entra (no ventas)

Gastos

Dinero que sale (no compras)

Inventario

Valor de la mercancía

Total

Valor del negocio

Cálculo del Total del Negocio

Fórmula para calcular el valor real

TOTAL = Valor_Inventario + Ventas + Ingresos - Gastos // Ejemplo real: Total = 56,547.49 + 52,386.68 + 40.00 - 0 Total = RD$ 108,974.17
Importante: Las compras de mercancía (inversiones) NO se restan porque ese dinero se convirtió en inventario. Restarlo sería contar la pérdida dos veces.

Módulo de Devoluciones

Gestión de productos devueltos

Cuando un cliente devuelve un producto, el sistema:

Devuelve el dinero al cliente
Regresa el producto al inventario
Registra la devolución
Reversa el valor de la venta

Módulo de Productos Dañados

Control de mercancía perdida o dañada

Cuando un producto se daña, vence o se pierde, hay que registrarlo para mantener el inventario correcto.

Sistema Progresivo de Pérdidas

Las pérdidas se deducen en este orden:

1. De las GANANCIAS
2. Del CAPITAL
Primero se descuenta de las ganancias. Solo si no hay suficientes ganancias, se descuenta del capital.

Super Elba - Asistente de Voz

Control por voz con tono dominicano

Super Elba es un asistente de voz integrado que permite interactuar con el sistema de forma natural y cariñosa.

Activación

  1. Hacer clic en el botón del micrófono 🎤
  2. Decir "Super Elba" (wake word)
  3. Dar el comando

Comandos Disponibles

Frases que Super Elba entiende

Agregar Productos

"Super Elba, agregar 3 Brugal" "Dame 2 Presidente" "Ponme 5 libras de arroz" "Quiero 1 Whisky"

Consultar Precios

"¿Cuánto cuesta el Brugal?" "Precio del Whisky"

Control del Carrito

"Vaciar carrito" "Cancelar"

Información del Cliente

"Me llamo Juan Pérez" "Mi teléfono es 809-555-1234" "Es para delivery" "Voy a recoger en la tienda"

Características Especiales

Lo que hace única a Super Elba

Tono Dominicano

"Claro mi amor" 💕

Saludo por Hora

Buenos días/tardes/noches

Búsqueda Inteligente

"bruga" → "brugal"

Opciones Numeradas

"Dime 1, 2 o 3"

Frases cariñosas:
"Claro mi amor" • "Con mucho gusto, corazón" • "Enseguida, mi vida" • "¿Algo más, cariño?"

Sistema de Usuarios

Roles y permisos

Rol Permisos Acciones
admin Acceso completo Todo el sistema
empleado Limitado Solo ventas y consultas

Acciones Restringidas (Solo Admin)

Funciones que requieren permisos de administrador

Crear productos nuevos
Eliminar productos
Registrar inversiones
Ver/modificar finanzas
Gestionar usuarios
Reset de totales

Tablas de la Base de Datos

Estructura completa del sistema

Tabla Descripción Registros típicos
ems_products Productos del inventario ~50-500
ems_sales Registro de ventas Miles
ems_investment Compras de mercancía ~50-200
ems_invoices Facturas generadas Miles
ems_invoice_items Items de cada factura Miles
ems_orders Pedidos Cientos
ems_income Ingresos extra Pocos
ems_expenses Gastos Decenas
ems_returns Devoluciones Pocos
ems_damaged Productos dañados Pocos
ems_totals Total del negocio 1
ems_users Usuarios del sistema ~3-10

Diagrama de Relaciones

Cómo se conectan las tablas

ems_investment ─────┐ │ ems_products ◄──────┴──── (producto_padre_id) │ ├──── ems_sales │ ├──── ems_invoice_items ────► ems_invoices │ ├──── ems_returns │ └──── ems_damaged ems_income ─────┐ ├──────► ems_totals (cálculo) ems_expenses ───┘ ems_orders (independiente) ems_users (independiente) ems_audit_log (registro de todo)

Fórmulas y Cálculos

Todas las fórmulas matemáticas del sistema

Productos

ganancia_unitaria = precio - precio_compra precio_compra_unidad = precio_compra_caja / unidades_por_caja cajas_completas = floor(cantidad_unidades / unidades_por_caja)

Ventas

total_venta = precio × cantidad total_factura = subtotal - descuento

Ofertas

precio_normal = precio_unitario × offer_qty ahorro = precio_normal - offer_price

Peso (Libras/Onzas)

// Entrada: 2.8 (2 libras, 8 onzas) libras = floor(2.8) // = 2 onzas = (2.8 - 2) × 100 // = 8 total_libras = 2 + (8/16) // = 2.5 libras

Total del Negocio

valor_inventario = Σ(cantidad × precio_compra) para cada producto total_ventas = Σ(total) de ems_sales total_negocio = valor_inventario + total_ventas + ingresos - gastos
Nota: Las compras de mercancía NO se restan porque ya están contadas en el valor del inventario.

Buenas Prácticas

Recomendaciones para usar el sistema

Siempre registrar inversiones antes de vender productos nuevos
Revisar el inventario periódicamente
Hacer reset de totales si los números no cuadran
Respaldar la base de datos regularmente

Resolución de Problemas

Soluciones a problemas comunes

Problema Solución
Producto no aparece Verificar que se registró la inversión
Total incorrecto Ejecutar reset_totals
Cantidad negativa Revisar devoluciones y productos dañados
Super Elba no responde Verificar permisos del micrófono
Error 500 en API Revisar logs de PHP y sintaxis