Plataforma técnica · Sevastopol
Balance Anual en Sevastopol
Islands Reportes Balance
Propósito
Section titled “Propósito”BalanceAnualIsland es el reporte ejecutivo del balance contable del tenant. Calcula, persiste y cierra el balance anual con vistas separadas por audiencia: tributaria (SII), IFRS (norma internacional) y operativa (detalle por cuenta + historial).
El motor matemático vive en BalanceService y CierrePeriodoService del Orchestrator — la island coordina UI, dispara /calcular (preview) y /guardar (persistencia), gestiona el historial con workflow de aprobación y produce el PDF legal.
Decisiones de UX
Section titled “Decisiones de UX”| Decisión | Motivo |
|---|---|
calcular separado de guardar | El operador revisa el balance antes de fijarlo. POST /calcular devuelve el snapshot completo (balance_clasificado, estado_resultados, renta) sin escribir; POST /guardar persiste con el reporte ya validado. |
| 5 tabs en una sola island | Balance Clasificado (ejecutivo), Estado de Resultados (operacional), Tributario (renta + base imponible), Balance de Cuentas (detalle plan), Historial (snapshots persistidos). Comparten el mismo cálculo — separar en islands forzaría 5x cálculos. |
| Presentación TRIBUTARIO vs IFRS | Toggle global del balance. Cambiar la presentación re-clasifica activos/pasivos según norma. La pill Tipo se pinta en ámbar para IFRS para detectar visualmente el modo no-default. |
| Modo MENSUAL vs ANUAL_ACUMULADO | El cálculo acumula desde enero hasta el mes seleccionado (ANUAL_ACUMULADO, default) o muestra solo el mes (MENSUAL, legado). El label cambia: “Acumulado a MM/YYYY” vs “Mensual legado MM/YYYY”. |
| Cierre del periodo solo en diciembre | cierreDisponible = mes() === 12. El botón cerrarPeriodo está disabled para meses 1–11. El cierre anual es evento contable distinto del guardado mensual. |
Workflow BORRADOR → APROBADO en historial | aprobarGuardado y reversarAprobacionGuardado con confirm explícito. La auditoría exige trazabilidad del estado. |
| PDF como descarga blob → nueva pestaña | GET /pdf devuelve el PDF generado por PdfService (Puppeteer). El frontend lo abre con URL.createObjectURL + window.open. |
Filtros locales en Balance de Cuentas (TIPOS, NIVELES) | Hasta 5 niveles + 5 tipos. El operador acota el detalle sin viajar al servidor. |
| Cuadre visible en stats | balance_clasificado.cuadra + diferencia se exponen en pill para detectar descuadres antes de aprobar. |
useActivePeriod re-sincroniza el mes | Cambiar mes en el workspace actualiza el signal local; el operador puede sobreescribir para consultas ad-hoc sin tocar el workspace. |
Tabs internas
Section titled “Tabs internas”| Tab | Contenido |
|---|---|
balance | Balance clasificado: activos (corrientes + no corrientes), pasivos (corrientes + no corrientes), patrimonio. Cuadre + diferencia. |
resultado | Estado de resultados: ingresos operacionales, costo de ventas, margen bruto, gastos operacionales, resultado operacional, no operacional, antes/después impuesto. |
tributario | Resumen tributario: ventas/compras netas, NC, honorarios, impuestos específicos, base imponible, PPM, impuesto estimado. |
cuentas | Balance de cuentas jerárquico con filtros por tipo (ACTIVO/PASIVO/PATRIMONIO/INGRESO/GASTO) y nivel (0–4). |
historial | Balances guardados — filtros por estado, acciones cargar/aprobar/reversar/eliminar. |
Datos visibles
Section titled “Datos visibles”| Bloque | Campos |
|---|---|
| Balance clasificado | total_activos, total_pasivos_patrimonio, cuadra, diferencia. |
| Estado de resultados | resultado_ejercicio, margen_bruto, resultado_operacional. |
| Tributario | base_imponible, impuesto_estimado, ppm, diferencia. |
| Historial | id, anio, mes, tipo_presentacion, estado, fecha_calculo. |
Endpoints
Section titled “Endpoints”| Método + ruta | Uso |
|---|---|
GET /api/reportes/calcular?anio=&mes=&tipo=&tenant_id= | Preview del balance. |
POST /api/reportes/guardar?tenant_id= | Persistencia del snapshot. |
GET /api/reportes/guardados?tenant_id= | Historial. |
GET /api/reportes/guardados/:id?tenant_id= | Carga puntual de un balance guardado. |
DELETE /api/reportes/guardados/:id?tenant_id= | Eliminación. |
PUT /api/reportes/guardados/:id/aprobar?tenant_id= | Aprobación. |
PUT /api/reportes/guardados/:id/reversar-aprobacion?tenant_id= | Reversa de aprobación. |
GET /api/reportes/pdf?anio=&mes=&tipo=&tenant_id= | PDF legal. |
POST /api/reportes/cerrar-periodo?tenant_id= | Cierre anual (mes 12). |
Backend de referencia
Section titled “Backend de referencia”BalanceService calcula el balance clasificado, estado de resultados y resumen tributario. CierrePeriodoService ejecuta el cierre anual con el balance de diciembre como base.