368 lines
9.6 KiB
Markdown
368 lines
9.6 KiB
Markdown
# 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
|