Skip to content

Plataforma técnica · Sevastopol

Finanzas en Sevastopol

Islands Finanzas

El dominio finanzas del frontend cubre el ciclo completo de la cuenta bancaria del tenant — desde la cartola (lo que el banco reportó) hasta el libro contable (lo que la empresa registró) — y los mecanismos para resolver las diferencias entre ambos. Cinco islands montadas sobre el mismo proxy /api/financieros se reparten el trabajo.

  • Directorysevastopol/src/components/islands/financieros/
    • BancosIsland.tsx
    • CartolasIsland.tsx
    • ConciliacionBancariaIsland.tsx
    • LibroBancoIsland.tsx
    • PrestamosIsland.tsx
    • FinancierosWorkspace.tsx — tokens visuales compartidos por las 5 islands
  • Directorysevastopol/src/pages/api/financieros/
    • […all].ts — proxy genérico vía createProxy(“/api/financieros”)
flowchart LR
  subgraph FUENTE["Fuente bancaria"]
    XLSX[("XLSX del banco")]
    ETL["ETL"]
    CART["Cartolas Island"]
  end

  subgraph CONTABLE["Lado contable"]
    SISTEMA["Documentos sistema<br/>compras · ventas · F29"]
    LB["Libro Banco Island"]
  end

  subgraph MATCH["Conciliación"]
    CONC["Conciliación Bancaria Island"]
    DIF["Diferencias"]
    RES["Resoluciones<br/>castigo · compensación"]
  end

  subgraph MAESTRO["Catálogo"]
    BAN["Bancos Island"]
    CAT["Categorías movimiento"]
    PRE["Préstamos Island"]
  end

  XLSX --> ETL --> CART
  CART --> CONC
  SISTEMA --> CONC
  CONC -- pendientes --> CONC
  CONC -- vincular/manual --> LB
  LB --> DIF --> RES
  PRE -- pago de cuota --> CONC
  BAN -. catálogo .-> CART
  BAN -. catálogo .-> CONC
  BAN -. catálogo .-> LB
  BAN -. catálogo .-> PRE
  CAT -. categoría .-> CONC
  CAT -. categoría .-> LB

Las 5 islands comparten varios elementos del FinancierosWorkspace:

ComponenteUso
FinancierosWorkspaceHeaderHeader con pills, controls y note.
InlineMetricPillMétricas inline (vista, contadores, totales). Tonos success, warning, default.
WorkspaceSectionCardSección con eyebrow, title, description, pills y maxHeight opcional.
WorkspaceTabBarTabs principales por island.
WorkspaceSegmentedControlFiltros estilo “Todos / Pendientes / Cerrados”.
WORKSPACE_SCROLL_HEIGHTConstante de altura para tablas largas.
Botones tonalizadosworkspacePrimaryButtonClass, workspaceSecondaryButtonClass, workspaceWarningButtonClass, workspaceDangerButtonClass, workspaceSuccessButtonClass.
Inputs tonalizadosworkspaceFieldClass, workspaceCompactFieldClass, workspaceFieldLabelClass.
HookConsumenComportamiento por island
useActiveTenantLas 5Limpia estado local y recarga catálogos al cambiar tenant.
useActivePeriodBancos, Cartolas, Conciliación, Libro BancoBancos mueve fechaHasta al último día del mes; las otras tres lo usan al pulsar Cargar período. Préstamos no lo consume.

useActivePeriod no dispara re-fetch automático en este dominio (excepto Bancos que recalcula el saldo) — el operador suele cambiar varios filtros y un fetch reactivo interrumpiría la edición.

Todas las islands llaman a /api/financieros/*. El proxy reenvía a Orchestrator vía createProxy("/api/financieros") (ver BFF Proxy).

Excepciones — endpoints fuera del dominio que algunas islands consumen:

IslandEndpoint externoPara
Bancos/api/admin/chart-of-accountsPlan de cuentas imputables para selectores.
Libro Banco/api/admin/chart-of-accountsIgual.
Conciliación Bancaria/api/financieros/categorias-movimientoCategorías compartidas con Libro Banco.
OrigenDestinoMecanismo
CicloContableIsland paso incobrablesLibro Bancowindow.dispatchEvent(new CustomEvent("sidebar:navigate", { detail: "LibroBancoView" }))
Libro Banco diferencia → Compensaciones(pestaña interna)switchTab("compensaciones") + loadCompensacionProveedorDocumento(id)
Conciliación vincular → Libro(read implícito)El operador refresca LibroBancoIsland para ver el movimiento ya con categoría/cuenta.
ServiceCubre
FinancierosServiceBancos, categorías, cuentas bancarias.
MovimientosServiceCartola, movimientos manuales, ETL.
ConciliacionServiceVinculación, conciliación manual, castigo, compensación, resoluciones.
AnticiposProveedorServiceAnticipos como pseudo-movimiento bancario.
PrestamosServicePréstamos y amortización.
DecisiónAplica aMotivo
Filtros locales sobre Promise.all de fetch grandeTodas excepto PréstamosVolúmenes manejables por tenant/mes; paginar agregaría latencia perceptible.
Cargas en paralelo al cambiar tenantBancos, Conciliación, Libro BancoTres catálogos independientes; serializar es visible.
Tabla con Cargo y Abono en columnas separadasCartolas, Libro BancoLectura tipo libro mayor; no inferir signo del monto.
:::caution::: antes de operaciones destructivasEliminar movimiento, regenerar amortización, desconciliar, castigar, compensar, reversar resoluciónCada una afecta lado contable o tabla maestra.
Saldo bancario al cierre del mes activo, no a hoyBancosEl operador piensa en términos contables, no en tiempo real.
Botón Cargar período explícitoConciliación, Libro BancoLos 3 fetch en paralelo son pesados; lanzarlos en cada cambio de filtro castigaría al backend.