Skip to content

Plataforma técnica · Sevastopol

Manual Panel en Sevastopol

Islands Command Manual Cuentas

ManualPanel no es una island independiente — es un componente lateral que otras islands montan para mostrar el manual contable de una cuenta. La instancia más visible está en ChartOfAccountsViewIsland (panel a la derecha de la tabla), pero cualquier island puede emitir plan-cuentas:select para que esa instancia cargue la cuenta solicitada.

El panel es read-only — la edición vive en PlanCuentasCommandIsland del subdominio.

DecisiónMotivo
AbortController por cargaCada cambio de props.account aborta el fetch anterior — evita race conditions cuando el usuario navega rápido entre cuentas.
loadSequence como id incrementalDoble protección: aunque el AbortController falle, isCurrentLoad descarta resultados de fetches obsoletos antes de hacer setManual.
Estados explícitos: idle / loading / ready / empty / errorCada uno con UI dedicada — el operador siempre sabe qué pasa. 404 se trata como empty, no como error.
Estructura del manual: Debe, Haber, NIC, Ejemplos, Asientos, Ver también, TagsRefleja 1:1 el editor del admin. Solo muestra secciones con contenido (Show when por cada una).
Renderizado Markdown vía MarkdownViewDebe, Haber y descripción de ejemplos aceptan formato. Asientos tipo se pintan como tabla estructurada.
Ver también como botones clickeablesClick emite plan-cuentas:select para navegar al manual de la cuenta referenciada — sin acoplar el panel al consumidor.
Wrapped vs unwrapped responseEl backend puede devolver { manual: {...} } o el objeto directamente. isWrappedManual lo detecta para sostener ambos formatos.
Cierre con botón explícitoEl consumidor pasa onClose y el panel solo lo invoca — la decisión de cerrar es del padre.
EstadoUI
idlePanel oculto (!props.open o sin cuenta).
loading”Cargando manual…”
empty”Esta cuenta aún no tiene manual” (incluye 404).
errorBanner rojo: “No se pudo cargar el manual de esta cuenta.”
readyRender completo del manual.
SecciónTipoCondición
DebeMarkdownmanual.debe no vacío.
HaberMarkdownmanual.haber no vacío.
NIC-IFRSEstructurado (Norma + Tratamiento + Referencia)Alguno de los tres campos presente.
EjemplosLista de Markdown con títulomanual.ejemplos.length > 0.
Asientos tipoLista con título + tabla D/H (código + concepto)manual.asientos_tipo.length > 0.
Ver tambiénBotones clickeables (códigos)manual.ver_tambien.length > 0.
TagsChips planasmanual.tags.length > 0.
EventoDirecciónPropósito
plan-cuentas:selectEmiteClick en código de “Ver también” — pide a cualquier consumidor saltar al manual de esa cuenta.
Método + rutaUso
GET /api/manual-cuentas/:codigoManual de la cuenta. 404 se trata como “sin manual aún”.

El manual contable vive en Mongo. El endpoint del tenant (/api/manual-cuentas) es solo lectura; la edición vive en /api/command/manual-cuentas (admin), descrita en Plan de Cuentas (UI).