Skip to content

Plataforma técnica · Sevastopol

Ciclo Contable en Sevastopol

Islands Ciclo Contable

El dominio ciclo contable del frontend es la vista de control read-only del cierre por período: agrega el estado de los dominios operativos (operaciones SII, compras, ventas, remuneraciones, declaraciones, inventario, depreciación, conciliación, balances, provisiones, PPM, incobrables, resultados acumulados) en una semántica uniforme pendiente | parcial | completo por paso.

Se materializa en una sola island — CicloContableIsland — que es el panel de cierre del operador contable. No genera asientos ni contabiliza; su responsabilidad es agregar y mostrar dónde se traba el cierre y permitir el salto cross-island al lugar donde se resuelve.

DecisiónMotivo
Vista read-only del cierreEl cierre es el resultado de actividad en otros dominios. Contabilizar desde aquí rompería trazabilidad, idempotencia (refrescar el panel materializaría asientos) y tolerancia multi-tenant.
Una única acción de escritura: Generar StockEs el único paso cuya acción está estrechamente acoplada al control del operador y no a una decisión contable; delega en /api/inventario/saldo-stock/procesar.
Tres modos de visualizaciónMensual con mes → pipeline de 11 pasos. Mensual sin mes → resumen comparativo 12 meses (12 fetch en paralelo). Anual → pipeline de 7 pasos.
Cross-island navigation vía sidebar:navigateLos pasos incobrables y ppm no resuelven en este dominio — saltan a LibroBancoIsland y IngresosViewIsland respectivamente.
Columna Global derivada en clienteOrchestrator no emite estado agregado por mes; la columna existe sólo como UX local. La regla every completo → completo / some no-pendiente → parcial / sino pendiente no es contractual.
Distinguir Sin datos de PendienteUn paso sin actividad ni esquema (multi-tenant tolerante) no debe leerse como tarea por hacer. La UI deriva el badge desde labelPendiente(paso).startsWith("sin ").
Acordeón único de detalleUn solo pasoActivo por vez; clickear de nuevo lo cierra. Mantiene contexto del cierre en una sola página.

La island usa IslandBase con ContabilidadWorkspaceHeader, WorkspaceSegmentedControl, InlineMetricPill y WorkspaceSectionCard — el mismo lenguaje que finanzas y administración. No tiene un *Workspace.tsx propio.

HookUso
useActiveTenantTenant del cierre; recarga estado y plan de cuentas al cambiar.
useActivePeriod{ year, month }. El mes determina entre pipeline de un período (con mes) y resumen comparativo 12 meses (sin mes). El modo anual ignora month.

Ciclo Contable (Orchestrator) — el servicio CicloContableService compone el snapshot vía Promise.all de queries independientes contra los esquemas operativos. No abre transacciones, es read-only puro. Aplica reglas declarativas pendiente | parcial | completo por paso y tolera tenants con esquemas incompletos (42P01, 3F000, 42703).

/api/ciclo-contable/* vía createProxy exporta solo GET (read-only). Ver BFF Proxy. Laterales usados:

  • /api/inventario/saldo-stock/procesar para la única acción de escritura.
  • /api/admin/chart-of-accounts para etiquetar cuentas en el detalle de incobrables.

El ciclo contable es agregador: lee estado de prácticamente todos los demás dominios operativos. Las relaciones de salto cross-island son:

  • incobrablesLibroBancoIsland (pestaña diferencias para castigo o compensación)
  • ppmIngresosViewIsland (pestaña PPM anual)

Cada destino documenta su entrada y maneja su propia lógica; aquí solo aparece el botón que despacha el sidebar:navigate.