# EPICA: EPIC-RT-010 - Facturación CFDI

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-RT-010 |
| **Nombre** | Facturación CFDI |
| **Modulo** | facturacion |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 35 |
| **Sprint(s)** | Sprint 6-7 |

---

## Descripcion

Generación de comprobantes fiscales digitales (CFDI 4.0) para ventas en tienda y online. Incluye facturación a público en general, facturación a cliente con RFC, notas de crédito, cancelaciones y portal de autofactura para clientes.

---

## Objetivo de Negocio

- Cumplimiento fiscal obligatorio
- Facturación inmediata en POS
- Autofactura para clientes
- Control de notas de crédito
- Reportes fiscales

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-RT010-001 | Como cajero, quiero generar factura inmediata al cerrar venta si el cliente la solicita | P0 | 5 | Backlog |
| US-RT010-002 | Como cajero, quiero generar factura a público en general para ventas sin RFC | P0 | 3 | Backlog |
| US-RT010-003 | Como cliente, quiero autofacturar desde portal web usando mi ticket | P0 | 8 | Backlog |
| US-RT010-004 | Como contador, quiero generar nota de crédito por devolución | P0 | 5 | Backlog |
| US-RT010-005 | Como contador, quiero cancelar CFDI con motivo de cancelación | P0 | 3 | Backlog |
| US-RT010-006 | Como cliente, quiero recibir mi factura PDF y XML por email | P0 | 3 | Backlog |
| US-RT010-007 | Como contador, quiero ver reporte de CFDIs emitidos por período | P0 | 3 | Backlog |
| US-RT010-008 | Como admin, quiero configurar datos fiscales de la empresa | P0 | 2 | Backlog |
| US-RT010-009 | Como contador, quiero regenerar PDF de factura existente | P1 | 2 | Backlog |
| US-RT010-010 | Como admin, quiero validar RFC del cliente contra SAT (opcional) | P2 | 1 | Backlog |

**Total Story Points:** 35 SP

---

## CFDI 4.0 - Elementos Clave

```
┌─────────────────────────────────────────────────────────┐
│              ESTRUCTURA CFDI 4.0                        │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  EMISOR                                                 │
│  ├── RFC de la empresa                                  │
│  ├── Nombre o razón social                              │
│  ├── Régimen fiscal                                     │
│  └── Código postal del domicilio fiscal                 │
│                                                         │
│  RECEPTOR                                               │
│  ├── RFC del cliente (o XAXX010101000 para público)     │
│  ├── Nombre o razón social                              │
│  ├── Régimen fiscal                                     │
│  ├── Código postal del domicilio fiscal                 │
│  └── Uso del CFDI (G03 - Gastos en general)             │
│                                                         │
│  CONCEPTOS                                              │
│  ├── Clave de producto/servicio SAT                     │
│  ├── Descripción                                        │
│  ├── Cantidad y unidad                                  │
│  ├── Valor unitario                                     │
│  ├── Importe                                            │
│  └── Impuestos (IVA, IEPS si aplica)                    │
│                                                         │
│  COMPLEMENTOS                                           │
│  └── Pago (si es PPD - Pago en Parcialidades)           │
│                                                         │
│  TIMBRE FISCAL DIGITAL (TFD)                            │
│  ├── UUID (folio fiscal)                                │
│  ├── Fecha de timbrado                                  │
│  ├── Sello del SAT                                      │
│  └── Sello del emisor                                   │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Flujo de Facturación

```
FACTURACIÓN INMEDIATA (POS)

┌─────────────┐
│   VENTA     │  ← Cajero cierra venta
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ ¿FACTURA?   │ ─── No ──► Ticket simple
└──────┬──────┘
       │ Si
       ▼
┌─────────────┐
│ DATOS RFC   │  ← Captura RFC y datos fiscales
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  TIMBRADO   │  ← PAC genera UUID
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ PDF + XML   │  ← Envío por email
└─────────────┘


AUTOFACTURA (Portal)

┌─────────────┐
│   PORTAL    │  ← Cliente ingresa
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   TICKET    │  ← Ingresa folio del ticket
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ DATOS RFC   │  ← Ingresa sus datos fiscales
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  TIMBRADO   │  ← PAC genera UUID
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  DESCARGA   │  ← PDF + XML disponibles
└─────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Facturación inmediata en POS
- [ ] Factura a público en general
- [ ] Portal de autofactura
- [ ] Notas de crédito por devolución
- [ ] Cancelación de CFDIs
- [ ] Envío por email
- [ ] Reportes de CFDIs
- [ ] Configuración de datos fiscales

**No Funcionales:**
- [ ] Timbrado < 5 segundos
- [ ] Alta disponibilidad del PAC
- [ ] Almacenamiento de XMLs por 5 años

**Tecnicos:**
- [ ] Integración con PAC (Finkok, Facturama, etc.)
- [ ] Generación de XML CFDI 4.0
- [ ] Generación de PDF personalizado
- [ ] Validación de RFC vs lista negra SAT

---

## 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 |
|--------------|-------|
| Reportes fiscales | Requiere CFDIs emitidos |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `invoicing`
- [ ] Tablas: 6 (invoices, invoice_items, cancellations, fiscal_data, xml_storage, pac_logs)
- [ ] Funciones: 2 (generate_xml, validate_rfc)
- [ ] Indices: Por UUID, fecha, RFC

**Backend:**
- [ ] Modulo: `invoicing`
- [ ] Entities: 4 (Invoice, InvoiceItem, Cancellation, FiscalData)
- [ ] Services: PACService, XMLGenerator, PDFGenerator
- [ ] Endpoints: 12
- [ ] Tests: 28

**Frontend:**
- [ ] Paginas: 4 (InvoiceList, InvoiceDetail, SelfService, Config)
- [ ] Componentes: 10 (InvoiceForm, RFCInput, PDFViewer, etc.)
- [ ] Portal público de autofactura
- [ ] Stores: 1 (invoicingStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/invoices | Crear y timbrar factura |
| GET | /api/invoices/:id | Detalle de factura |
| GET | /api/invoices/:id/pdf | Descargar PDF |
| GET | /api/invoices/:id/xml | Descargar XML |
| POST | /api/invoices/:id/send | Enviar por email |
| POST | /api/invoices/:id/cancel | Cancelar factura |
| POST | /api/invoices/credit-note | Crear nota de crédito |
| GET | /api/invoices/report | Reporte de CFDIs |
| POST | /api/invoices/self-service | Autofactura (público) |
| POST | /api/invoices/validate-rfc | Validar RFC |

---

## PAC (Proveedor Autorizado de Certificación)

| PAC | Notas |
|-----|-------|
| Finkok | Popular, buena documentación |
| Facturama | API REST moderna |
| SW Sapien | Económico para alto volumen |
| Facturify | Fácil integración |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Caída del PAC | Baja | Alto | PAC de respaldo |
| Cambios normativos | Media | Alto | Monitoreo de actualizaciones |
| XMLs corruptos | Baja | Alto | Validación antes de timbrar |

---

## Nota Técnica

La facturación electrónica en México (CFDI) es obligatoria y debe cumplir con los lineamientos del SAT. El sistema debe estar preparado para actualizaciones normativas frecuentes.

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] PAC seleccionado y contratado
- [ ] Certificados de sello digital (CSD) disponibles
- [ ] Catálogo de productos con claves SAT

## Definition of Done (DoD)

- [ ] Facturación inmediata funcionando
- [ ] Portal de autofactura operativo
- [ ] Notas de crédito y cancelaciones
- [ ] Integración con PAC estable
- [ ] 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
