# EPICA: EPIC-RT-007 - Caja (Arqueos y Cortes)

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-RT-007 |
| **Nombre** | Caja (Arqueos y Cortes) |
| **Modulo** | caja |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 28 |
| **Sprint(s)** | Sprint 5-6 |

---

## Descripcion

Módulo 100% nuevo para control de efectivo en tiendas. Gestión de fondos de caja, arqueos, cortes de caja, movimientos de efectivo (retiros, depósitos) y conciliación con ventas. Control de diferencias y auditoría.

---

## Objetivo de Negocio

- Control preciso de efectivo
- Prevenir faltantes y robos
- Conciliación diaria de ventas
- Auditoría de movimientos
- Responsabilidad por cajero

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-RT007-001 | Como supervisor, quiero abrir caja con fondo inicial para comenzar turno | P0 | 3 | Backlog |
| US-RT007-002 | Como cajero, quiero registrar retiro de efectivo (para depósito) | P0 | 3 | Backlog |
| US-RT007-003 | Como cajero, quiero registrar ingreso de efectivo (cambio) | P0 | 2 | Backlog |
| US-RT007-004 | Como cajero, quiero realizar arqueo parcial sin cerrar caja | P0 | 3 | Backlog |
| US-RT007-005 | Como cajero, quiero realizar corte de caja al final del turno | P0 | 5 | Backlog |
| US-RT007-006 | Como cajero, quiero declarar efectivo contado por denominación | P0 | 3 | Backlog |
| US-RT007-007 | Como supervisor, quiero aprobar corte con diferencias | P0 | 3 | Backlog |
| US-RT007-008 | Como gerente, quiero ver reporte de diferencias por cajero | P1 | 3 | Backlog |
| US-RT007-009 | Como admin, quiero configurar tolerancia de diferencias | P2 | 2 | Backlog |
| US-RT007-010 | Como auditor, quiero ver historial completo de movimientos de caja | P1 | 1 | Backlog |

**Total Story Points:** 28 SP

---

## Flujo de Caja

```
┌─────────────┐
│   CERRADA   │  ← Estado inicial
└──────┬──────┘
       │
       ▼ (Apertura con fondo)
┌─────────────┐
│   ABIERTA   │ ◄──────────┐
└──────┬──────┘            │
       │                   │
       ▼                   │
┌─────────────┐            │
│  OPERANDO   │────────────┤
│             │   Ventas   │
│  + Ventas   │   Retiros  │
│  - Retiros  │   Ingresos │
│  + Ingresos │            │
└──────┬──────┘            │
       │                   │
       ▼ (Corte)           │
┌─────────────┐            │
│   CORTE     │            │
│  - Conteo   │            │
│  - Diferenc │            │
└──────┬──────┘            │
       │                   │
       ├──── Si OK ────────┘ (Nueva apertura)
       │
       ▼ (Cierre)
┌─────────────┐
│   CERRADA   │
└─────────────┘
```

---

## Conteo por Denominación

```
┌─────────────────────────────────────────────────────────┐
│              DECLARACIÓN DE EFECTIVO                    │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  BILLETES                        MONEDAS                │
│  ┌────────┬─────┬──────────┐    ┌────────┬─────┬─────┐ │
│  │ Denom. │ Cant│   Total  │    │ Denom. │ Cant│Total│ │
│  ├────────┼─────┼──────────┤    ├────────┼─────┼─────┤ │
│  │ $1000  │  3  │  $3,000  │    │ $20    │  5  │$100 │ │
│  │ $500   │  5  │  $2,500  │    │ $10    │  8  │ $80 │ │
│  │ $200   │  8  │  $1,600  │    │ $5     │ 10  │ $50 │ │
│  │ $100   │ 12  │  $1,200  │    │ $2     │ 15  │ $30 │ │
│  │ $50    │ 10  │    $500  │    │ $1     │ 20  │ $20 │ │
│  │ $20    │ 15  │    $300  │    │ $0.50  │ 10  │  $5 │ │
│  └────────┴─────┴──────────┘    └────────┴─────┴─────┘ │
│                                                         │
│  TOTAL BILLETES: $9,100                                 │
│  TOTAL MONEDAS:    $285                                 │
│  ─────────────────────────                              │
│  TOTAL DECLARADO: $9,385                                │
│                                                         │
│  ESPERADO (sistema): $9,400                             │
│  DIFERENCIA:           -$15                             │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Apertura de caja con fondo
- [ ] Retiros e ingresos de efectivo
- [ ] Arqueos parciales
- [ ] Corte de caja con conteo
- [ ] Declaración por denominación
- [ ] Cálculo de diferencias
- [ ] Aprobación de cortes con diferencias
- [ ] Reportes de diferencias

**No Funcionales:**
- [ ] Operación < 3 clicks
- [ ] Historial de 1 año
- [ ] Auditoría completa

**Tecnicos:**
- [ ] Integración con módulo POS (ventas en efectivo)
- [ ] Bloqueo de caja durante corte
- [ ] Firmas/autorizaciones de supervisores

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-RT-001 Fundamentos | Backlog | Si |
| EPIC-RT-002 POS | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-RT-008 Reportes | Datos de caja para reportes |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `cash_register`
- [ ] Tablas: 6 (cash_sessions, cash_movements, cash_counts, count_denominations, cut_approvals, audit_log)
- [ ] Funciones: 3 (calculate_expected, calculate_difference, validate_cut)
- [ ] Indices: Por caja, cajero, fecha, estado

**Backend:**
- [ ] Modulo: `cash-register`
- [ ] Entities: 5 (CashSession, CashMovement, CashCount, CountDenomination, CutApproval)
- [ ] Endpoints: 12
- [ ] Tests: 25

**Frontend:**
- [ ] Paginas: 4 (CashDashboard, OpenClose, CashCount, Reports)
- [ ] Componentes: 10 (DenominationCounter, MovementForm, DifferenceAlert, etc.)
- [ ] Stores: 1 (cashStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/cash/sessions/open | Abrir caja |
| POST | /api/cash/sessions/:id/close | Cerrar caja |
| GET | /api/cash/sessions/current | Sesión actual |
| POST | /api/cash/movements | Registrar movimiento |
| POST | /api/cash/counts | Registrar arqueo |
| POST | /api/cash/counts/:id/denominations | Agregar denominaciones |
| POST | /api/cash/counts/:id/submit | Enviar para aprobación |
| POST | /api/cash/counts/:id/approve | Aprobar corte |
| GET | /api/cash/reports/differences | Reporte de diferencias |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Faltantes de efectivo | Media | Alto | Arqueos frecuentes |
| Manipulación de cortes | Baja | Alto | Doble aprobación |
| Errores de conteo | Media | Medio | Conteo por denominación |

---

## Nota Técnica

Este módulo es **100% nuevo** y no tiene equivalente en el ERP-Core. Es específico para operaciones de retail con manejo de efectivo.

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Denominaciones locales definidas
- [ ] Tolerancias de diferencia aprobadas

## Definition of Done (DoD)

- [ ] Flujo de apertura/cierre funcionando
- [ ] Conteo por denominación operativo
- [ ] Cálculo de diferencias correcto
- [ ] Reportes de auditoría
- [ ] Tests de integración pasando
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
