Plataforma técnica · Sevastopol
Resultado Acumulado en Sevastopol
Islands Reportes Patrimonio
Propósito
Section titled “Propósito”ResultadoAcumuladoIsland mantiene la cuenta de patrimonio que acumula el resultado del ejercicio al cierre. El sistema separa utilidades retenidas (cuenta 2302001) de pérdidas acumuladas (2302002) — la island decide qué cuenta corresponde según el resultado del período.
El registro es per-año y soporta dos vistas paralelas: financiera (resultado contable) y tributaria (base imponible). Ambas conviven porque el operador necesita explicar la diferencia ante la auditoría.
Decisiones de UX
Section titled “Decisiones de UX”| Decisión | Motivo |
|---|---|
Tipo de resultado (FINANCIERO vs TRIBUTARIO) en toggle | Misma cuenta, diferente cifra. La presentación de auditoría exige ambas. El toggle re-fetchea con tipo_resultado distinto — no se calculan localmente. |
| Cuenta derivada del signo del resultado | 2302001 si utilidad, 2302002 si pérdida. La UI muestra el código + nombre derivados (cuentaActual memo). |
| Modo ANUAL_ACUMULADO ignora el mes | Default ANUAL_ACUMULADO usa mes 12 implícito. Modo MENSUAL exige mes válido (1–12) y dispara validación al generarRegistro. |
Workflow BORRADOR → CONTABILIZADO → APROBADO | Tres estados con actualizarEstado(row, estado). Cada transición es PUT explícito al backend. La UI muestra solo los estados destino válidos por fila. |
acumulado_actual = acumulado_anterior + resultado_periodo | El backend calcula; la island solo presenta. Cambiar tipo_resultado o anio recarga el listado completo del año. |
| Resumen con conteos por estado | Stats: total, borradores, contabilizados, aprobados. Detecta cuántos registros pendientes hay sin abrir el modal. |
tipoPresentacion (TRIBUTARIO/IFRS) ortogonal al tipo | Cruce 2x2: FINANCIERO + TRIBUTARIO / FINANCIERO + IFRS / TRIBUTARIO + TRIBUTARIO / TRIBUTARIO + IFRS. Cada combinación es un registro distinto. |
WorkspaceSegmentedControl para los toggles | Botones segmentados en vez de selects — el operador alterna rápido entre vistas. |
| Validación de año al generar | Number.isInteger(anioNum) && 2000 ≤ anioNum ≤ 2100 antes del POST. Evita rebote del backend por años fuera de rango. |
Datos visibles
Section titled “Datos visibles”| Grupo | Campos esperados |
|---|---|
| Periodo | anio, mes, modo_periodo (MENSUAL/ANUAL_ACUMULADO). |
| Tipos | tipo_resultado (FINANCIERO/TRIBUTARIO), tipo_presentacion (TRIBUTARIO/IFRS). |
| Cuenta | cuenta_codigo (2302001 utilidades / 2302002 pérdidas). |
| Cálculo | resultado_periodo, acumulado_anterior, acumulado_actual. |
| Estado | estado, notas, fecha_resultado, fecha_contabilizacion. |
Endpoints
Section titled “Endpoints”| Método + ruta | Uso |
|---|---|
GET /api/reportes/resultados-acumulados?tenant_id=&tipo_resultado=&anio= | Listado del año. |
POST /api/reportes/resultados-acumulados/generar?tenant_id= | Genera registro en BORRADOR con anio, tipo_resultado, tipo_presentacion, modo_periodo, mes. |
PUT /api/reportes/resultados-acumulados/:id/estado?tenant_id= | Cambia estado (BORRADOR / CONTABILIZADO / APROBADO). |
Backend de referencia
Section titled “Backend de referencia”ResultadosAcumuladosService — calcula el resultado del periodo, resuelve la cuenta destino y mantiene el workflow de aprobación.