--- id: EPIC-MCH-008 type: Epic title: "MCH-008: Sistema de Fiados" code: MCH-008 status: Completado phase: 2 priority: P1 created_at: 2026-01-10 updated_at: 2026-01-10 simco_version: "3.8.0" dependencies: blocks: ["MCH-017"] depends_on: ["MCH-002", "MCH-004", "MCH-014"] --- # MCH-008: Sistema de Fiados ## Metadata - **Codigo:** MCH-008 - **Fase:** 2 - Inteligencia - **Prioridad:** P1 - **Estado:** Completado - **Fecha completado:** 2026-01-10 ## Descripcion Sistema de credito informal ("fiados") tradicional en Mexico: permite a clientes frecuentes comprar a credito con limites personalizados, recordatorios automaticos de pago, y registro de abonos. ## Objetivos 1. Cuentas de credito por cliente 2. Limites de credito configurables 3. Registro de compras a credito 4. Registro de abonos/pagos 5. Recordatorios automaticos via WhatsApp 6. Reporte de cartera ## Alcance ### Incluido - Habilitar credito por cliente - Limite de credito configurable - Ventas a credito desde POS - Abonos parciales o totales - Historial de movimientos - Recordatorios via WhatsApp - Bloqueo automatico por limite ### Excluido - Intereses por mora - Scoring crediticio - Reportes a buro de credito - Contratos formales ## Modelo de Datos ### Tablas (schema: customers) **credit_accounts** - id, customer_id, credit_limit - current_balance, status (active/blocked/closed) - created_at, last_payment_at **credit_transactions** - id, credit_account_id, type (charge/payment) - amount, sale_id (si es cargo), notes - created_at, created_by ## Endpoints API | Metodo | Endpoint | Descripcion | |--------|----------|-------------| | GET | /customers/:id/credit | Estado de cuenta | | POST | /customers/:id/credit/enable | Habilitar credito | | PUT | /customers/:id/credit/limit | Ajustar limite | | POST | /customers/:id/credit/payment | Registrar abono | | GET | /customers/:id/credit/history | Historial | | GET | /credit/portfolio | Cartera total | | GET | /credit/overdue | Clientes con adeudo | ## Flujos de Usuario ### Habilitar Credito ``` 1. Dueno abre ficha del cliente 2. Activa "Habilitar fiado" 3. Define limite (ej: $500) 4. Cliente puede comprar a credito ``` ### Venta a Credito ``` 1. Empleado crea venta en POS 2. Selecciona cliente con credito 3. Elige "Fiado" como pago 4. Sistema verifica: - Credito habilitado - Saldo + venta <= limite 5. Si OK: registra venta 6. Actualiza saldo del cliente ``` ### Registrar Abono ``` 1. Cliente llega a pagar 2. Dueno abre cuenta del cliente 3. Registra abono (monto) 4. Sistema actualiza saldo 5. Genera recibo de pago ``` ### Recordatorio Automatico ``` 1. Cron diario revisa cuentas 2. Identifica clientes con saldo > X dias 3. Envia WhatsApp: "Hola [nombre], tienes un saldo de $X en [negocio]. Pasa a ponerte al corriente!" 4. Registra envio de recordatorio ``` ## UI Components ### CreditHistory - Lista de movimientos (cargos/abonos) - Saldo actual - Grafica de historial - Filtros por fecha ### CreditDashboard - Total cartera - Clientes con adeudo - Promedio de dias de pago - Alertas de limite ## Entregables | Entregable | Estado | Archivo | |------------|--------|---------| | DDL credit | Completado | `08-customers.sql` | | fiados.module | En progreso | `modules/fiados/` | | CreditHistory.tsx | En progreso | `components/customers/` | | WhatsApp reminder | Pendiente | `whatsapp-service/` | ## Dependencias ### Depende de - MCH-002 (Auth) - MCH-004 (POS) - MCH-014 (Clientes) ### Bloquea a - MCH-017 (Notificaciones) ## Criterios de Aceptacion - [x] Credito se habilita/deshabilita por cliente - [x] Limite de credito funciona - [x] Ventas a credito descuentan del disponible - [x] Abonos se registran correctamente - [x] Recordatorios se envian via WhatsApp - [x] Reporte de cartera funciona ## Configuracion por Tenant ```typescript { fiados: { enabled: true, default_limit: 500, max_limit: 5000, reminder_days: [7, 14, 30], auto_block_days: 60 } } ``` --- **Ultima actualizacion:** 2026-01-10