Plataforma técnica · Sevastopol
Plan de Cuentas en Sevastopol
Islands Command Plan Cuentas
Propósito
Section titled “Propósito”La gestión del plan de cuentas en Sevastopol vive en dos islands complementarias:
PlanCuentasCommandIsland— la island principal del SUPER_ADMIN. Edita el template maestro, calcula diff contra cada tenant y propaga cambios. Tiene 4 tabs internas.ChartOfAccountsViewIsland— la vista read-only que el operador del tenant ve. Carga/api/admin/chart-of-accounts, muestra el catálogo jerárquico y un banner ámbar que redirige a Command si el rol es SUPER_ADMIN.
Ambas se documentan aquí porque operan sobre el mismo dominio. La edición vive en Command; el tenant solo lee.
Decisiones de UX
Section titled “Decisiones de UX”| Decisión | Motivo |
|---|---|
| 4 tabs en una sola island (Overview, Detail, Template, Manual) | Los cuatro flujos comparten el template completo y el padrón de manuales. Separar en islands forzaría 3x cargas y rompería el handoff entre tabs. |
| Overview con KPIs agregados | up_to_date, total_orphans, total_missing, total_locales consolidados sobre tenantRows() — visibilidad inmediata del estado de la flota. |
| Detail por tenant con tres sub-tabs | Missing (faltantes en el tenant), Orphans (existen en el tenant pero no en el template), Divergent (mismo código, campos distintos). Cada uno requiere acción distinta. |
| Template editable con propagación opcional | El form de cuenta tiene checkbox propagate — si activo, la edición del template dispara sync a tenants. Default desactivado para evitar propagación accidental. |
| Sync con 3 modos: insert_missing, update_divergent, delete_orphans | Cada modo se activa por separado en el modal de sync. delete_orphans default false — borrar es destructivo y los huérfanos pueden ser cuentas locales legítimas del tenant. |
| Dry-run obligatorio antes del sync real | POST /sync/:db con dry_run: true devuelve plan completo (inserted, updated, deleted, skipped, errors) sin tocar el tenant. El operador revisa y aprueba. |
| Sync-all como acción agregada | POST /sync-all propaga a todos los tenants no-template en una llamada. Útil tras editar el template — propaga el cambio a la flota. |
Manual editor en Modal con 6 sub-tabs | NIC, Debe, Haber, Ejemplos, Asientos, Refs. Cada uno con tipo distinto: NIC es estructurado, Debe/Haber son Markdown, Ejemplos es lista de Markdown, Asientos es estructurado, Refs es lista de códigos + tags. |
Paginación del padrón de manuales con MANUAL_FETCH_LIMIT=100 | loadManuales() itera ?limit=100&skip=N hasta agotar total. Permite volúmenes grandes sin un fetch enorme. |
Handoff de codigo via sessionStorage manual-cuentas:open-editor | ManualSearchIsland setea el código y dispara el evento — PlanCuentasCommandIsland lo consume al montarse (consumeManualHandoff) o vía listener. Evita acoplamiento directo. |
ChartOfAccountsViewIsland banner ámbar | La vista read-only muestra a SUPER_ADMIN un banner <a href="/dashboard#PlanCuentasCommand"> para saltar a la edición. El resto solo ve el texto explicativo. |
ChartOfAccountsViewIsland lateral con ManualPanel | Click en “Ver manual” reduce la tabla a 2 columnas y monta ManualPanel lateral. Cualquier island puede pedir abrir el manual emitiendo plan-cuentas:select. |
Padding-left por nivel en ChartOfAccountsViewIsland | (r.nivel - 1) * 12px refleja visualmente la jerarquía sin números explícitos. Orden previo por código preserva la jerarquía aunque los filtros oculten intermedios. |
| Filtros locales (6 signals en ChartOfAccountsViewIsland) | qCode, qName, qIFRS, qType, qNature, qLevel — todos sub-string sobre la lista cargada. El plan tiene cientos de filas; paginar local mejora render. |
Tabs internas — PlanCuentasCommandIsland
Section titled “Tabs internas — PlanCuentasCommandIsland”| Tab | Endpoint base | Contenido |
|---|---|---|
overview | /api/command/plan-cuentas/overview | Lista de tenants con KPIs de divergencia. |
detail | /api/command/plan-cuentas/diff/:db | Diff completo por tenant (missing, orphans, divergent). |
template | /api/command/plan-cuentas/template | CRUD del catálogo template con propagación opcional. |
manual | /api/command/manual-cuentas | Padrón de manuales — editor por cuenta con 6 sub-tabs (NIC, Debe, Haber, Ejemplos, Asientos, Refs). |
Sub-tabs del editor de manual
Section titled “Sub-tabs del editor de manual”| Sub-tab | Contenido |
|---|---|
nic | Norma, tratamiento, referencia (estructurado). |
debe | Markdown — qué se carga al debe. |
haber | Markdown — qué se carga al haber. |
ejemplos | Lista de ejemplos: título + descripción Markdown. |
asientos | Lista de asientos tipo: título + lista de líneas D/H con código + concepto. |
refs | Códigos cruzados (ver_tambien) + tags. |
Atributos contables visibles (ChartOfAccountsViewIsland)
Section titled “Atributos contables visibles (ChartOfAccountsViewIsland)”Columna Atributos apila tres BoolBadge:
| Badge | Origen | Significado |
|---|---|---|
| Imputable | es_imputable | Acepta asientos directos vs. solo agregadora. |
| Tercero | requiere_tercero | El asiento debe indicar RUT contraparte. |
| C.C. | requiere_cc | El asiento debe indicar centro de costo. |
Endpoints
Section titled “Endpoints”| Método + ruta | Uso |
|---|---|
GET /api/command/plan-cuentas/overview | Lista de tenants con KPIs. |
GET /api/command/plan-cuentas/diff/:db | Diff por tenant. |
POST /api/command/plan-cuentas/sync/:db (con dry_run) | Sync por tenant. |
POST /api/command/plan-cuentas/sync-all (con dry_run) | Sync masivo. |
GET /api/command/plan-cuentas/template | Catálogo template. |
POST/PUT/DELETE /api/command/plan-cuentas/template/:codigo | CRUD del template con propagate opcional. |
GET /api/command/manual-cuentas?limit=&skip= | Padrón de manuales paginado. |
GET /api/command/manual-cuentas/:codigo | Manual de una cuenta. |
POST/PUT/DELETE /api/command/manual-cuentas/:codigo | CRUD del manual. |
GET /api/admin/chart-of-accounts?tenant_id= (ChartOfAccounts read) | Lectura desde el tenant. |
POST /api/auth/validate | Validación de rol para mostrar acciones destructivas y banner. |
Backend de referencia
Section titled “Backend de referencia”PlanCuentasSyncService consolida overview, diff y sync sobre los tenants. ChartOfAccountsService expone la lectura desde el tenant. El manual contable vive en Mongo bajo /api/command/manual-cuentas (admin) y /api/manual-cuentas (tenant).