Indice de Especificaciones Tecnicas - MGN-010 Financial
Identificacion
| Campo |
Valor |
| Modulo |
MGN-010 |
| Epic |
Base Financiera |
| Total ET |
3 |
| Story Points |
46 |
| Fecha |
2025-12-05 |
Especificaciones Tecnicas
| ID |
Titulo |
RF Cubiertos |
Estado |
| ET-FIN-database |
Schema core_financial |
RF-001 a RF-004 |
Documentado |
| ET-FIN-backend |
Servicios y API REST |
RF-001 a RF-004 |
Documentado |
| ET-FIN-frontend |
Componentes React + Decimal.js |
RF-001 a RF-004 |
Documentado |
Resumen de Componentes
Database (ET-FIN-database)
| Tabla |
RF |
Descripcion |
| account_types |
RF-001 |
Tipos de cuenta (global) |
| charts_of_accounts |
RF-001 |
Planes de cuentas por tenant |
| accounts |
RF-001 |
Cuentas contables jerarquicas |
| tenant_currencies |
RF-002 |
Monedas habilitadas por tenant |
| exchange_rates |
RF-002 |
Tipos de cambio historicos |
| fiscal_years |
RF-003 |
Anos fiscales |
| fiscal_periods |
RF-003 |
Periodos contables |
| cost_centers |
RF-004 |
Centros de costo |
| journal_entries |
RF-004 |
Asientos contables (cabecera) |
| journal_lines |
RF-004 |
Lineas de asiento (partida doble) |
Total: 10 tablas
Funciones:
get_exchange_rate() - Obtener tipo de cambio para fecha
get_period_for_date() - Obtener periodo abierto
post_journal_entry() - Contabilizar asiento atomicamente
get_account_balance() - Saldo de cuenta
create_default_chart() - Crear plan de cuentas base
Backend (ET-FIN-backend)
| Servicio |
Responsabilidad |
RF |
| ChartsService |
CRUD planes de cuentas |
RF-001 |
| AccountsService |
CRUD cuentas, balances |
RF-001 |
| CurrenciesService |
Monedas, conversiones |
RF-002 |
| ExchangeRatesService |
Tipos de cambio |
RF-002 |
| FiscalYearsService |
CRUD anos fiscales |
RF-003 |
| FiscalPeriodsService |
CRUD periodos, cierre |
RF-003 |
| JournalService |
Asientos, contabilizacion |
RF-004 |
| CostCentersService |
CRUD centros de costo |
RF-004 |
Total: 23 endpoints
Matriz de Trazabilidad RF -> ET
| RF |
Database |
Backend |
| RF-FIN-001 |
account_types, charts_of_accounts, accounts |
ChartsService, AccountsService |
| RF-FIN-002 |
tenant_currencies, exchange_rates |
CurrenciesService, ExchangeRatesService |
| RF-FIN-003 |
fiscal_years, fiscal_periods |
FiscalYearsService, FiscalPeriodsService |
| RF-FIN-004 |
journal_entries, journal_lines, cost_centers |
JournalService, CostCentersService |
Arquitectura Contable
+------------------+
| Chart of Accounts|
+--------+---------+
|
v
+--------+---------+
| Accounts |<--- Jerarquia (LTREE)
| (Detail/Group) |
+--------+---------+
|
v
+--------+---------+ +------------------+
| Journal Entry |---->| Fiscal Period |
+--------+---------+ +------------------+
| |
v v
+--------+---------+ +------------------+
| Journal Lines | | Fiscal Year |
| (Debit/Credit) | +------------------+
+------------------+
Flujo de Contabilizacion
-
Crear asiento (draft)
- Validar periodo abierto
- Obtener tipo de cambio
- Generar numero secuencial
- Crear lineas con montos base
-
Contabilizar (post)
- Verificar balance (debito = credito)
- Actualizar saldos de cuentas
- Marcar como posted
-
Reversar (si necesario)
- Crear asiento inverso
- Contabilizar reverso
- Marcar original como reversed
Precisiones Numericas
| Campo |
Tipo |
Precision |
Uso |
| Montos |
DECIMAL |
18,4 |
Valores monetarios |
| Tipos de cambio |
DECIMAL |
18,8 |
Tasas de conversion |
| Saldos |
DECIMAL |
18,4 |
Acumulados de cuenta |
Dependencias Tecnicas
Externas
- PostgreSQL 15+ (LTREE, DECIMAL, transactions)
- TypeORM 0.3+
- NestJS 10+
- date-fns (manejo de fechas)
Internas
- core_tenants.tenants (RLS)
- core_catalogs.currencies (catalogo global)
- MGN-001 Auth (Autenticacion)
- MGN-003 RBAC (Permisos)
Permisos Requeridos
| Permiso |
Descripcion |
| financial.accounts.read |
Ver cuentas y balances |
| financial.accounts.manage |
Crear/editar cuentas |
| financial.currencies.read |
Ver monedas y tasas |
| financial.currencies.manage |
Configurar monedas |
| financial.periods.read |
Ver anos y periodos |
| financial.periods.manage |
Crear/cerrar periodos |
| financial.journal.read |
Ver asientos |
| financial.journal.create |
Crear asientos |
| financial.journal.post |
Contabilizar asientos |
| financial.journal.reverse |
Reversar asientos |
| financial.costcenters.read |
Ver centros de costo |
| financial.costcenters.manage |
Crear/editar CC |
| financial.reports.read |
Ver reportes financieros |
Reportes Derivados
| Reporte |
Descripcion |
Query Base |
| Balance General |
Activo, Pasivo, Capital |
Saldos por clasificacion |
| Estado de Resultados |
Ingresos vs Gastos |
Movimientos del periodo |
| Balanza de Comprobacion |
Saldos por cuenta |
get_account_balance() |
| Libro Mayor |
Movimientos por cuenta |
getLedger() |
| Libro Diario |
Asientos cronologicos |
findAll() |
Integracion con Verticales
MGN-010 Financial (Base)
│
├── Facturacion
│ └── JournalService.create(sourceModule: 'invoicing')
│
├── Cuentas por Cobrar
│ └── JournalService.create(sourceModule: 'receivables')
│
├── Cuentas por Pagar
│ └── JournalService.create(sourceModule: 'payables')
│
└── Tesoreria
└── JournalService.create(sourceModule: 'treasury')
Cada modulo vertical:
- Define sus cuentas contables en el plan
- Genera asientos automaticamente
- Referencia documentos via
sourceDocumentId
Historial
| Version |
Fecha |
Autor |
Cambios |
| 1.0 |
2025-12-05 |
Requirements-Analyst |
Creacion inicial con 2 ET |
| 1.1 |
2025-12-05 |
Requirements-Analyst |
Agregado ET Frontend |