Skip to content

Plataforma técnica · Sevastopol

Ingresos en Sevastopol

Islands Ingresos

El dominio ingresos en Sevastopol tiene una sola island visible — IngresosViewIsland — que actúa como contenedor de dos pestañas: la operación mensual sobre documentos SII (ventas y boletas, delegada a OperationsViewIsland con filtro de ingresos) y la actualización anual de PPM con su contabilización contra 1108001 y 4201002.

La pestaña inicial es navegable desde otra island por sessionStorageCicloContableIsland la usa para llevar al operador directo a “PPM anual” desde el paso del ciclo.

  • Directorysevastopol/src/components/islands/contabilidad/
    • IngresosViewIsland.tsx — dispatcher con 2 tabs
    • PpmActualizacionAnualIsland.tsx — pestaña PPM
    • ContabilidadWorkspace.tsx — tokens compartidos
  • Directorysevastopol/src/components/islands/accounting/
    • OperationsViewIsland.tsx — exporta IngresosViewIsland (pestaña Operaciones)
  • Directorysevastopol/src/pages/api/reportes/
    • […path].ts — proxy
flowchart LR
  subgraph UI["Sevastopol"]
    CONT["IngresosViewIsland<br/>dispatcher 2 tabs"]
    OPS["Operaciones tab<br/>(OperationsViewIsland)"]
    PPM["PPM Anual tab<br/>(PpmActualizacionAnualIsland)"]
  end

  subgraph BFF["/api/*"]
    OPSAPI["/api/operaciones"]
    REPAPI["/api/reportes/ppm-actualizacion-anual"]
  end

  subgraph BE["Orchestrator"]
    OPSV["OperacionesService"]
    PPMV["PpmService<br/>(reportes)"]
  end

  CONT --> OPS --> OPSAPI --> OPSV
  CONT --> PPM --> REPAPI --> PPMV

  CC["CicloContableIsland<br/>paso ppm"] -. sessionStorage<br/>+ sidebar:navigate .-> CONT

Desde CicloContableIsland, el botón “Abrir PPM anual” del paso ppm del ciclo anual:

window.sessionStorage.setItem("ingresos.activeTab", "ppm");
window.dispatchEvent(new CustomEvent("sidebar:navigate", { detail: "IngresosView" }));

IngresosViewIsland lee la clave en onMount, fija la pestaña y la elimina inmediatamente para no contaminar navegaciones posteriores.

Ambas pestañas usan useActiveTenant + useActivePeriod. La actualización de período se interpreta distinto en cada una:

PestañaAñoMes
OperacionesFiltra documentos del año.Filtra documentos del mes.
PPM anualDefine el año del resumen.Ignorado (la DJ es anual).
ServiceCubre
OperacionesServiceCompras/ventas/boletas SII; la pestaña Operaciones filtra a ventas.
PpmServiceCálculo del factor de actualización, contabilización contra 1108001/4201002, reversa.
DecisiónMotivo
Contenedor sin lógica de fetchEl dispatcher solo decide qué pestaña; las queries pertenecen a la island hija para que cada una pueda usarse independiente.
sessionStorage se borra al leerSi no se borrara, navegar a Ingresos por menú repetiría la pestaña forzada por la última deep-link.
Pestañas explícitas en vez de un solo flujoOperaciones y PPM tienen ciclos contables distintos (mensual vs anual); mezclarlas confunde al operador.
Año del PPM sigue al período activoSi el operador cambia de año en el workspace, el resumen se mueve con él.