# TEST PLAN - MGN-004: Financiero Básico

**Módulo:** MGN-004 - Financiero Básico
**Sprint:** Sprint 7-11 (Semanas 13-22)
**Story Points:** 81 SP
**User Stories:** 18 US
**Fecha:** 2025-11-24
**QA Owner:** TBD
**Estado:** Draft

---

## 1. RESUMEN DEL MÓDULO

### 1.1 Descripción

El módulo MGN-004 Financiero Básico es el núcleo contable del ERP. Gestiona plan de cuentas, journals contables, asientos contables, impuestos, facturas de clientes y proveedores, pagos, conciliación bancaria y reportes financieros (Balance y P&L).

Este es un módulo crítico (P0) y complejo, con 81 SP y 18 User Stories.

### 1.2 Funcionalidades Principales

1. **Plan de Cuentas:** Árbol de cuentas contables (activo, pasivo, patrimonio, ingresos, egresos)
2. **Journals Contables:** Diarios de ventas, compras, banco, caja, misceláneos
3. **Asientos Contables:** Registro de movimientos contables con balance débito-crédito
4. **Impuestos:** Configuración de impuestos (IVA, retenciones, percepciones)
5. **Facturas de Cliente:** Creación, validación, cancelación de facturas AR
6. **Facturas de Proveedor:** Registro de facturas AP
7. **Pagos:** Gestión de pagos y cobranzas, conciliación bancaria
8. **Reportes Financieros:** Balance General, Estado de Resultados (P&L)

### 1.3 Dependencias

**Módulos requeridos:**
- MGN-001: Fundamentos
- MGN-002: Empresas
- MGN-003: Catálogos (partners, monedas)

---

## 2. ALCANCE DEL TESTING

### 2.1 En Alcance

- ✅ CRUD de plan de cuentas (chart of accounts)
- ✅ Validación de balance débito-crédito en asientos
- ✅ Journals contables (ventas, compras, banco, etc.)
- ✅ Configuración de impuestos con múltiples tasas
- ✅ Ciclo completo de factura de cliente (draft -> posted -> paid -> reconciled)
- ✅ Ciclo completo de factura de proveedor
- ✅ Registro de pagos y cobranzas
- ✅ Conciliación bancaria
- ✅ Reportes: Balance General, P&L
- ✅ Multi-moneda (facturas en USD, EUR, etc.)
- ✅ Cálculo automático de impuestos
- ✅ Anulación y cancelación de facturas

### 2.2 Fuera de Alcance

- ❌ Contabilidad analítica (MGN-008)
- ❌ Presupuestos (Fase 2)
- ❌ Cash flow forecasting (Fase 2)
- ❌ Activos fijos (Fase 2)

---

## 3. ESTRATEGIA DE TESTING

### 3.1 Tipos de Tests

#### Unit Tests: 108 tests

**Backend (72 tests):**
- AccountService: 15 tests (CRUD plan de cuentas, árbol)
- JournalService: 10 tests (CRUD journals)
- JournalEntryService: 20 tests (asientos, balance débito-crédito, validaciones)
- TaxService: 12 tests (cálculo de impuestos, múltiples tasas)
- InvoiceService: 15 tests (ciclo de vida de facturas)

**Frontend (36 tests):**
- AccountTree component: 8 tests
- JournalEntryForm component: 10 tests
- InvoiceForm component: 10 tests
- BalanceReport component: 8 tests

#### Integration Tests: 54 tests

1. **Accounts API:** 10 tests
2. **Journals API:** 8 tests
3. **Journal Entries API:** 15 tests (crítico: balance validation)
4. **Taxes API:** 6 tests
5. **Customer Invoices API:** 10 tests
6. **Vendor Bills API:** 5 tests

#### E2E Tests: 18 tests

1. Crear plan de cuentas argentino (activo, pasivo, etc.)
2. Crear journal de ventas con secuencia
3. Crear asiento contable, validar balance
4. Configurar impuesto IVA 21%
5. Crear factura de cliente con IVA, validar total
6. Validar que factura genera asiento contable automático
7. Registrar pago de factura, conciliar
8. Registrar factura de proveedor
9. Generar reporte Balance General
10. Generar reporte P&L

---

## 4. TEST CASES (CRÍTICOS)

### 4.1 Casos de Prueba Funcionales

#### TC-MGN-004-001: Balance Débito-Crédito en Asientos
**Prioridad:** P0
**Tipo:** Functional
**Nivel:** Integration

**Precondiciones:**
- Cuentas contables creadas

**Pasos:**
1. POST /api/v1/journal-entries con líneas:
   - Cuenta Caja (debe): 1000
   - Cuenta Ventas (haber): 900
   - Cuenta IVA (haber): 100

**Resultado Esperado:**
- Asiento se crea (débito 1000 = crédito 1000)
- Si débito != crédito, retorna 400 "Asiento desbalanceado"

**Criterios de Aceptación Validados:**
- AC-001: Sistema valida balance débito-crédito
- AC-002: No permite guardar asientos desbalanceados

---

#### TC-MGN-004-002: Factura de Cliente Genera Asiento Contable
**Prioridad:** P0
**Tipo:** Functional
**Nivel:** E2E

**Precondiciones:**
- Cliente "ABC Corp" existe
- Producto "Laptop" con precio 1000 existe
- Impuesto IVA 21% configurado

**Pasos:**
1. Crear factura de cliente:
   - Cliente: ABC Corp
   - Línea: Laptop x 1 = 1000
   - IVA: 21% = 210
   - Total: 1210
2. Validar factura (cambiar estado a "posted")
3. GET /api/v1/journal-entries?invoice_id=:id

**Resultado Esperado:**
- Factura cambia a estado "posted"
- Asiento contable se genera automáticamente:
  - Cuenta Clientes (debe): 1210
  - Cuenta Ventas (haber): 1000
  - Cuenta IVA Débito Fiscal (haber): 210
- Asiento está balanceado (1210 = 1210)

**Criterios de Aceptación Validados:**
- AC-003: Factura validada genera asiento contable
- AC-004: Asiento incluye impuestos calculados correctamente

---

#### TC-MGN-004-003: Pago de Factura y Conciliación
**Prioridad:** P0
**Tipo:** Functional
**Nivel:** E2E

**Precondiciones:**
- Factura de cliente "INV-001" con total 1210, estado "posted"

**Pasos:**
1. Registrar pago:
   - Factura: INV-001
   - Monto: 1210
   - Método: Transferencia bancaria
   - Cuenta destino: Banco Santander
2. Conciliar pago con factura

**Resultado Esperado:**
- Pago se registra en payments table
- Asiento contable de pago se genera:
  - Banco Santander (debe): 1210
  - Cuenta Clientes (haber): 1210
- Factura cambia a estado "paid"
- Payment.reconciled = true

**Criterios de Aceptación Validados:**
- AC-005: Pago se registra correctamente
- AC-006: Factura se marca como pagada
- AC-007: Asiento de pago se genera

---

#### TC-MGN-004-004: Reporte Balance General
**Prioridad:** P0
**Tipo:** Functional
**Nivel:** E2E

**Precondiciones:**
- Múltiples asientos contables registrados
- Cuentas de activo, pasivo, patrimonio con saldos

**Pasos:**
1. GET /api/v1/reports/balance-sheet?date=2025-11-24

**Resultado Esperado:**
- Reporte agrupa cuentas por tipo:
  - ACTIVO: suma de saldos deudores
  - PASIVO: suma de saldos acreedores
  - PATRIMONIO: suma de saldos acreedores
- Balance: ACTIVO = PASIVO + PATRIMONIO
- Formato JSON para frontend + PDF export

**Criterios de Aceptación Validados:**
- AC-008: Balance General muestra activo, pasivo, patrimonio
- AC-009: ACTIVO = PASIVO + PATRIMONIO (ecuación fundamental)

---

#### TC-MGN-004-005: Cálculo de Impuestos Múltiples
**Prioridad:** P0
**Tipo:** Functional
**Nivel:** Integration

**Precondiciones:**
- Impuesto IVA 21% configurado
- Impuesto Percepción IIBB 3% configurado
- Producto "Laptop" con ambos impuestos

**Pasos:**
1. POST /api/v1/invoices con línea:
   - Producto: Laptop
   - Precio: 1000
   - Cantidad: 1

**Resultado Esperado:**
- Subtotal: 1000
- IVA 21%: 210 (sobre 1000)
- Percepción IIBB 3%: 30 (sobre 1000)
- Total: 1240
- Detalle de impuestos en invoice_taxes table

**Criterios de Aceptación Validados:**
- AC-010: Sistema calcula múltiples impuestos
- AC-011: Base imponible correcta para cada impuesto

---

### 4.2 Casos de Prueba No Funcionales

#### TC-MGN-004-PERF-001: Performance de Balance General
**Tipo:** Performance
**Herramienta:** k6

**Escenario:**
- 100,000 asientos contables
- 1,000 cuentas contables
- Período: 12 meses

**Criterios de Éxito:**
- p95: <2s
- Query optimizado con índices
- Agregación en BD (no en app layer)

---

## 5. DATOS DE PRUEBA

### 5.1 Test Data Requirements

**Plan de Cuentas (50 cuentas):**
- 1.1 ACTIVO
  - 1.1.1 Activo Corriente
    - 1.1.1.1 Caja
    - 1.1.1.2 Bancos
    - 1.1.1.3 Clientes
- 2.1 PASIVO
  - 2.1.1 Pasivo Corriente
    - 2.1.1.1 Proveedores
    - 2.1.1.2 IVA Débito Fiscal
- 3.1 PATRIMONIO
- 4.1 INGRESOS
  - 4.1.1 Ventas
- 5.1 EGRESOS
  - 5.1.1 Costo de Ventas

**Journals:**
- Ventas (SALES)
- Compras (PURCHASES)
- Banco (BANK)
- Caja (CASH)
- Misceláneos (MISC)

**Impuestos:**
- IVA 21%
- IVA 10.5%
- Percepción IIBB 3%
- Retención IVA 10%

**Facturas de Prueba (20):**
- 10 facturas de cliente (estados: draft, posted, paid)
- 10 facturas de proveedor (estados: draft, posted, paid)

---

## 6. SCHEDULE

| Sprint | RF | Actividad | Duración |
|--------|-----|-----------|----------|
| Sprint 7-8 | RF-001, RF-002, RF-003 | Plan cuentas, Journals, Asientos | 4 sem |
| Sprint 9 | RF-004 | Impuestos | 2 sem |
| Sprint 10 | RF-005, RF-006 | Facturas Cliente/Proveedor | 2 sem |
| Sprint 11 | RF-007, RF-008 | Pagos, Reportes | 2 sem |

---

## 7. RIESGOS ESPECÍFICOS DEL MÓDULO

| Riesgo | Probabilidad | Impacto | Mitigación |
|--------|--------------|---------|------------|
| **Asientos desbalanceados** | Alta | Crítico | Validación estricta. Constraint en BD. Tests exhaustivos. |
| **Cálculo de impuestos incorrecto** | Media | Alto | Unit tests con casos reales. Revisión por contador. |
| **Performance de reportes** | Alta | Medio | Índices optimizados. Materializar saldos. Cache. |
| **Conciliación bancaria compleja** | Media | Alto | Tests con casos reales. Importación de extractos. |

---

## 8. MÉTRICAS

**Total test cases:** 180
- Unit: 108
- Integration: 54
- E2E: 18

**Executed:** 0/180 (0%)
**Pass rate:** 0% (objetivo: >95%)

---

## 9. SIGN-OFF

**QA Engineer:** _______________  Date: _______
**Tech Lead:** _______________  Date: _______
**Product Owner:** _______________  Date: _______

---

## 10. REFERENCIAS

- [User Stories MGN-004](../../03-user-stories/mgn-004/)
- [RF MGN-004](../../02-modelado/requerimientos-funcionales/mgn-004/)
- [Traceability MGN-004](../../02-modelado/trazabilidad/TRACEABILITY-MGN-004.yaml)
- [Master Test Plan](./MASTER-TEST-PLAN.md)

---

**Versión:** 1.0
**Última actualización:** 2025-11-24
**Estado:** Draft
