246 lines
8.8 KiB
Markdown
246 lines
8.8 KiB
Markdown
# 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
|