# 🛒 Sistema de Preparador de Pedidos - Desarrollo Futuro

## 📋 **Concepto General**

### 🎯 **Objetivo Principal**
Crear un sistema integrado donde los clientes puedan:
1. **Seleccionar productos** desde el inventario público
2. **Armar su pedido** con cantidades específicas
3. **Realizar el pago** online o reservar
4. **Retirar el pedido** ya preparado por el negocio

### 💡 **Valor Agregado**
- **Para el Cliente**: Ahorro de tiempo, pedido garantizado, experiencia moderna
- **Para el Negocio**: Ventas aseguradas, mejor organización, reducción de esperas
- **Para SGB**: Funcionalidad premium diferenciadora

---

## 🔄 **Flujo del Sistema**

### **Para el Cliente:**
1. **Acceso**: Escanea QR o entra por link del inventario público
2. **Navegación**: Ve productos disponibles con stock en tiempo real
3. **Selección**: Agrega productos al carrito
4. **Datos**: Ingresa nombre, teléfono y email (sin registro)
5. **Pedido**: Completa horario de retiro y notas especiales
6. **Confirmación**: Recibe código de pedido único
7. **Seguimiento**: Puede consultar estado con su código
8. **Retiro**: Va al negocio, paga y retira

**🎯 Sin Registro de Usuario:**
- No hay cuentas de usuario
- No hay contraseñas
- No hay perfiles permanentes
- Solo datos temporales por pedido

### **Paso 1: Selección de Productos**
```
Cliente → Inventario Público → Agregar al Carrito → Especificar Cantidades
```

### **Paso 2: Confirmación del Pedido**
```
Revisión → Datos del Cliente → Método de Pago → Horario de Retiro
```

### **Paso 3: Procesamiento**
```
Notificación al Negocio → Preparación → Confirmación de Listo
```

### **Paso 4: Retiro**
```
Cliente llega → Verificación → Entrega → Finalización
```

---

## 🏗️ **Arquitectura Técnica**

### **📁 Estructura de Archivos Simplificada**
```
/negocio/pedidos/
├── index.php                 # Dashboard de pedidos del negocio
├── ajax/
│   ├── cambiar_estado.php   # Cambiar estado del pedido
│   └── marcar_listo.php     # Marcar pedido como listo
├── css/
│   └── pedidos.css          # Estilos del dashboard
└── js/
    └── pedidos.js           # Funcionalidad del dashboard

/public/pedidos/
├── carrito.php              # Carrito de compras público
├── confirmar.php            # Confirmar y crear pedido
├── seguimiento.php          # Consultar estado por código
├── css/
│   └── pedidos_publico.css  # Estilos vista pública
└── js/
    ├── carrito.js           # Funcionalidad del carrito
    └── seguimiento.js       # Auto-refresh del seguimiento
```

**Flujo de archivos:**
1. **Cliente**: `carrito.php` → `confirmar.php` → `seguimiento.php`
2. **Negocio**: `index.php` (dashboard con notificaciones internas)

### **🗄️ Nuevas Tablas de Base de Datos**

#### **🎯 Enfoque: Sin Base de Clientes Permanente**
**Decisión:** Solo guardar datos temporales para el retiro del pedido

**Razones:**
- ✅ **Simplicidad**: No hay que gestionar RGPD/privacidad
- ✅ **Menos complejidad**: Sin registro de usuarios
- ✅ **Enfoque directo**: Solo lo necesario para el pedido
- ✅ **Sin mantenimiento**: No hay datos antiguos que limpiar

#### **Tabla: `pedidos`**
```sql
CREATE TABLE pedidos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    negocio_id INT NOT NULL,
    cliente_nombre VARCHAR(100) NOT NULL,
    cliente_telefono VARCHAR(20) NOT NULL,
    cliente_email VARCHAR(100),
    total_productos DECIMAL(10,2) NOT NULL,
    total_final DECIMAL(10,2) NOT NULL,
    estado ENUM('pendiente', 'confirmado', 'preparando', 'listo', 'entregado', 'cancelado') DEFAULT 'pendiente',
    metodo_pago ENUM('efectivo', 'transferencia', 'tarjeta', 'online') NOT NULL,
    fecha_pedido TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    fecha_retiro DATETIME,
    fecha_entrega DATETIME,
    notas TEXT,
    codigo_pedido VARCHAR(10) UNIQUE NOT NULL,
    -- Sin tabla de clientes separada
    -- Datos del cliente solo para este pedido
    FOREIGN KEY (negocio_id) REFERENCES negocios(id)
);
```

#### **Tabla: `pedidos_detalle`**
```sql
CREATE TABLE pedidos_detalle (
    id INT PRIMARY KEY AUTO_INCREMENT,
    pedido_id INT NOT NULL,
    producto_id INT NOT NULL,
    cantidad INT NOT NULL,
    precio_unitario DECIMAL(10,2) NOT NULL,
    subtotal DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (pedido_id) REFERENCES pedidos(id),
    FOREIGN KEY (producto_id) REFERENCES productos(id)
);
```

#### **Tabla: `carrito_temporal`**
```sql
CREATE TABLE carrito_temporal (
    id INT PRIMARY KEY AUTO_INCREMENT,
    session_id VARCHAR(100) NOT NULL,
    negocio_id INT NOT NULL,
    producto_id INT NOT NULL,
    cantidad INT NOT NULL,
    fecha_agregado TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (negocio_id) REFERENCES negocios(id),
    FOREIGN KEY (producto_id) REFERENCES productos(id)
);
```

---

## 🎨 **Interfaz de Usuario**

### **👤 Vista del Cliente (Pública)**

#### **Carrito de Compras**
- **Productos seleccionados** con imagen, nombre, precio
- **Controles de cantidad** (+/-)
- **Subtotales** automáticos
- **Total general** dinámico
- **Botón "Proceder al Pedido"**

#### **Formulario de Pedido**
- **Datos del cliente**: Nombre, teléfono, email (opcional)
- **Horario de retiro**: Selector de fecha/hora disponible
- **Notas especiales**: Campo de texto libre
- **Sin selección de pago**: Todos los pagos son al retirar
- **Sin registro**: No se requiere crear cuenta de usuario

#### **🎯 Gestión de Datos del Cliente**

**Enfoque Elegido: Datos Temporales Solo**

✅ **Ventajas:**
- **Sin registro obligatorio**: El cliente no necesita crear cuenta
- **Proceso más rápido**: Menos pasos para hacer el pedido
- **Sin gestión de privacidad**: No hay datos personales permanentes
- **Menos responsabilidad**: No hay que proteger base de clientes
- **Simplicidad técnica**: Una tabla menos que mantener

❌ **Desventajas (que aceptamos):**
- No hay historial de pedidos del cliente
- No hay datos para marketing directo
- El cliente debe ingresar datos en cada pedido

**Conclusión:** Para negocios de barrio, la simplicidad es más valiosa que el historial de clientes.

#### **Confirmación y Seguimiento**
- **Código de pedido**: Número único (ej: #SGB-12345)
- **Resumen completo**: Productos, total, horario estimado
- **Enlace de seguimiento**: URL para consultar estado
- **Instrucciones**: "Guarda este código para consultar el estado"

#### **Página de Seguimiento del Cliente**
- **Consulta por código**: Cliente ingresa #SGB-12345
- **Estado actual**: Pendiente/Confirmado/Preparando/Listo
- **Tiempo estimado**: "Listo en aproximadamente 30 minutos"
- **Actualización automática**: Página se refresca sola
- **Información del negocio**: Dirección, teléfono, horarios

### **🏪 Vista del Negocio (Dashboard)**

#### **Panel Principal con Alertas**
- **Badge de notificación**: Número rojo con pedidos pendientes
- **Sonido de alerta**: Opcional al recibir nuevo pedido
- **Filtros rápidos**: Pendientes, En preparación, Listos
- **Resumen del día**: Total de pedidos y ventas

#### **Lista de Pedidos**
- **Estados visuales**: Colores por estado (Rojo=Pendiente, Amarillo=Preparando, Verde=Listo)
- **Información clave**: Cliente, total, horario de retiro
- **Tiempo transcurrido**: "Hace 15 min" para pedidos pendientes
- **Acciones rápidas**: Confirmar, cambiar estado, ver detalle
- **Ordenamiento**: Pedidos más antiguos primero

#### **Detalle del Pedido**
- **Lista de productos**: Con cantidades exactas y ubicación en tienda
- **Datos del cliente**: Teléfono, email para contacto
- **Historial de estados**: Timeline completo del pedido
- **Botones de acción**: Confirmar → Preparar → Marcar Listo → Entregar
- **Notas internas**: Campo para comentarios del negocio

---

## 🔐 **Seguridad y Control**

### **Validaciones**
- **Stock disponible**: Verificación en tiempo real
- **Límites de cantidad**: Máximos por producto
- **Horarios de retiro**: Solo en horarios de atención
- **Datos obligatorios**: Validación de formularios

### **Sistema de Notificaciones Internas SGB**

#### **🔔 Notificaciones al Negocio (Dentro del Sistema)**
- **Badge en dashboard**: Número rojo con pedidos pendientes
- **Sonido opcional**: Alerta audible al recibir nuevo pedido
- **Lista actualizada**: Pedidos ordenados por antigüedad
- **Estados visuales**: Colores que cambian automáticamente
- **Sin emails**: Todo dentro del sistema SGB

#### **👤 Seguimiento para el Cliente**
- **Página de seguimiento**: Con código de pedido
- **Estados visibles**: Pendiente → Confirmado → Preparando → Listo
- **Actualización automática**: Refresh cada 30 segundos
- **Sin notificaciones externas**: Cliente consulta cuando quiere

#### **🔄 Flujo Simplificado**
```
Cliente hace pedido → Aparece en dashboard del negocio
↓
Negocio ve notificación → Prepara pedido → Marca "Listo"
↓
Cliente consulta estado → Ve "Listo para retirar" → Va a retirar
```

**Ventajas de este sistema:**
- ✅ **Sin costos**: No emails, SMS ni APIs externas
- ✅ **Simple**: Todo dentro del sistema SGB
- ✅ **Tiempo real**: Actualizaciones inmediatas
- ✅ **Autoservicio**: Cliente consulta cuando necesita

---

## 📊 **Estados del Pedido**

| Estado | Descripción | Acción del Negocio | Notificación |
|--------|-------------|-------------------|-------------|
| **Pendiente** | Recién creado | Revisar y confirmar | Email al negocio |
| **Confirmado** | Aceptado por negocio | Comenzar preparación | SMS al cliente |
| **Preparando** | En proceso | Continuar preparación | - |
| **Listo** | Preparado para retiro | Esperar al cliente | SMS al cliente |
| **Entregado** | Pedido completado | Finalizar | - |
| **Cancelado** | Pedido cancelado | Liberar stock | SMS al cliente |

---

## 💳 **Integración de Pagos - VERSIÓN INICIAL**

### **Opciones de Pago Disponibles (V1.0)**
1. ✅ **Efectivo**: Pago al retirar en el negocio
2. ✅ **Tarjeta**: Pago con POS del negocio al retirar
3. ✅ **Transferencia**: Pago al retirar (con comprobante)
4. ✅ **Cualquier método**: Que tenga disponible el negocio
5. ❌ **Pagos online**: **NO INCLUIDOS** en V1.0

### **Flujo de Pago Simplificado (V1.0)**
```
Pedido → Confirmación → Preparación → Retiro + Pago en el Negocio
```

**Aclaración importante:**
- ✅ **Todos los pagos son presenciales** en el local del negocio
- ✅ **El negocio decide** qué métodos acepta (efectivo, tarjeta, etc.)
- ✅ **Sin procesamiento online** de pagos en el sistema
- ✅ **Sin comisiones** ni APIs de pago externas

### **Razones para Postponer Pagos Online**
- **Costo elevado**: APIs de pago requieren comisiones y costos fijos
- **Complejidad**: Cada negocio necesitaría configuración individual
- **Regulaciones**: Cumplimiento PCI DSS y normativas bancarias
- **ROI incierto**: Validar demanda antes de invertir

### **Pagos Online - Implementación Futura (V2.0)**
- **Cuando**: Después de validar adopción del sistema
- **APIs consideradas**: Flow, Khipu, MercadoPago
- **Modelo**: Comisión por transacción para SGB
- **Requisitos**: Certificaciones de seguridad adicionales

---

## 📱 **Funcionalidades Móviles**

### **Responsive Design**
- **Carrito optimizado**: Para pantallas pequeñas
- **Formularios simples**: Fácil completar en móvil
- **Botones grandes**: Accesibilidad táctil

### **PWA (Futuro)**
- **Instalable**: Como app nativa
- **Offline**: Cache de productos
- **Push notifications**: Estados del pedido

---

## 🚀 **Plan de Implementación - PRIORIDAD #2**

> **🎯 DESARROLLO SECUENCIAL**: Este sistema será el **PASO #2** en el roadmap, después de completar el Inventario Público.

### **📅 Fase 1: MVP Sin Pagos Online (3-4 días) - VERSIÓN INICIAL**
- ✅ Carrito de compras funcional
- ✅ Formulario de pedido simple
- ✅ Dashboard básico para negocio
- ✅ Estados: pendiente, confirmado, listo, entregado
- ✅ **Métodos de pago**: Solo efectivo y transferencia
- ❌ **SIN pagos online** (requiere APIs costosas)

### **📅 Fase 2: Mejoras Core (2-3 días)**
- ✅ Notificaciones por email
- ✅ Validaciones de stock en tiempo real
- ✅ Códigos de pedido únicos
- ✅ Historial de pedidos
- ✅ Integración completa con Inventario Público

### **📅 Fase 3: Optimizaciones (2-3 días)**
- ✅ SMS notifications básicas
- ✅ Reportes básicos
- ✅ Mejoras de UX
- ✅ WhatsApp links (sin API)
- ❌ **SIN integración de pagos online**

### **📅 Fase 4: Funcionalidades Futuras (POSTPONED)**
- 🔄 **Pagos online**: Cuando se justifique el costo de APIs
- 🔄 WhatsApp Business API
- 🔄 Analytics avanzados
- 🔄 PWA capabilities

---

## 💰 **Modelo de Negocio**

### **Para SGB**
- **Funcionalidad Premium**: Planes superiores
- **Comisión por transacción**: 1-2% en pagos online
- **Valor agregado**: Diferenciación competitiva

### **Para Negocios**
- **Ventas garantizadas**: Pedidos confirmados
- **Mejor organización**: Preparación anticipada
- **Reducción de costos**: Menos tiempo de atención

### **Para Clientes**
- **Conveniencia**: Sin esperas
- **Garantía**: Productos apartados
- **Flexibilidad**: Horarios de retiro

---

## 🔮 **Funcionalidades Futuras**

### **V2.0 - Mejoras Avanzadas**
- **Delivery**: Entrega a domicilio
- **Suscripciones**: Pedidos recurrentes
- **Programa de puntos**: Fidelización
- **Recomendaciones**: IA para sugerencias

### **V3.0 - Ecosistema Completo**
- **Marketplace**: Múltiples negocios
- **Comparador de precios**: Entre negocios
- **Reviews**: Sistema de calificaciones
- **Social features**: Compartir pedidos

---

## 📈 **Métricas y Analytics**

### **KPIs del Negocio**
- **Tasa de conversión**: Carrito → Pedido
- **Ticket promedio**: Valor por pedido
- **Tiempo de preparación**: Eficiencia
- **Satisfacción**: Pedidos completados

### **KPIs del Sistema**
- **Abandono de carrito**: Optimización UX
- **Productos más pedidos**: Insights de demanda
- **Horarios pico**: Planificación de recursos
- **Métodos de pago**: Preferencias

---

## 🛠️ **Consideraciones Técnicas**

### **Performance**
- **Cache de productos**: Redis/Memcached
- **Optimización de consultas**: Índices DB
- **CDN**: Para imágenes de productos
- **Lazy loading**: Carga progresiva

### **Escalabilidad**
- **Microservicios**: Separación de funcionalidades
- **Queue system**: Para notificaciones
- **Load balancing**: Para alto tráfico
- **Database sharding**: Para múltiples negocios

### **Backup y Recuperación**
- **Backup automático**: Pedidos críticos
- **Logs detallados**: Auditoría completa
- **Rollback**: Recuperación de errores
- **Monitoring**: Alertas en tiempo real

---

## 🎯 **Casos de Uso Reales**

### **Ferretería**
- Cliente necesita 20 tornillos específicos
- Hace pedido desde casa
- Retira en 2 horas, todo listo

### **Farmacia**
- Lista de medicamentos recurrentes
- Pedido mensual automatizado
- Retiro sin esperas

### **Minimarket**
- Compra semanal familiar
- Pago online con tarjeta
- Retiro en horario conveniente

### **Repuestos Auto**
- Mecánico necesita repuesto urgente
- Verifica disponibilidad online
- Aparta con seña, retira al día siguiente

---

## 📋 **ESTRATEGIA DE DESARROLLO - RESUMEN EJECUTIVO**

### **🎯 Roadmap de Implementación**

#### **PASO #1: Inventario Público (7-10 días)**
- ✅ **Prioridad máxima**: Base fundamental del ecosistema
- ✅ **Funcionalidad core**: Mostrar productos, stock, precios
- ✅ **ROI inmediato**: Atracción de clientes, transparencia
- ✅ **Preparación**: Base para el preparador de pedidos

#### **PASO #2: Preparador de Pedidos V1.0 (7-9 días)**
- ✅ **Sin pagos online**: Reducir complejidad y costos
- ✅ **Métodos simples**: Efectivo y transferencia
- ✅ **Funcionalidad completa**: Carrito, pedidos, gestión
- ✅ **Integración**: Con inventario público existente

### **💰 Justificación Económica**

#### **Costos Evitados en V1.0**
- **APIs de pago**: $50-200 USD/mes por negocio
- **Comisiones**: 2.9% + $0.30 por transacción
- **Certificaciones**: PCI DSS compliance
- **Soporte técnico**: 24/7 para pagos críticos

#### **Beneficios Inmediatos**
- **Validación de mercado**: Sin inversión en pagos
- **Adopción rápida**: Sistema simple y confiable
- **Diferenciación**: Funcionalidad única en el mercado
- **Escalabilidad**: Base sólida para V2.0

### **🔮 Evolución Futura**

#### **V2.0 - Pagos Online (Cuando se justifique)**
- **Trigger**: 50+ negocios usando preparador activamente
- **Modelo**: Comisión por transacción para SGB
- **APIs**: Flow, Khipu, MercadoPago
- **Tiempo**: 3-4 días adicionales

#### **V3.0 - Ecosistema Completo**
- **Marketplace**: Múltiples negocios
- **Analytics avanzados**: IA y machine learning
- **Integraciones**: WhatsApp Business, redes sociales
- **Tiempo**: 10-15 días adicionales

---

**📝 Nota**: Este sistema complementa perfectamente el inventario público, creando un ecosistema completo de e-commerce para negocios locales.

**🎯 Objetivo**: Transformar SGB en la plataforma más completa para digitalización de negocios tradicionales.

**⏰ Tiempo estimado V1.0**: 14-19 días de desarrollo completo (ambos sistemas).

**💰 Potencial de monetización**: Funcionalidad premium inmediata + comisiones futuras.

**🚀 Impacto**: Revolución gradual y sostenible en la experiencia de compra local.