Plataforma técnica · Sevastopol
Gastos en Sevastopol
Islands Gastos
Propósito
Section titled “Propósito”El dominio gastos del frontend cubre el ciclo del gasto operacional: registro del documento (asociado a un proveedor y una categoría), contabilización contra cuentas del plan, reversa cuando hay errores, y resumen agregado por período. Es la contraparte contable de las compras SII que no califican como activo fijo ni inventario.
Se materializa en una sola island — GastosIsland — con tres pestañas controladas por una signal local. Comparte selector de proveedores con el dominio inventario y selector de cuentas con administración.
Decisiones de UX
Section titled “Decisiones de UX”| Decisión | Motivo |
|---|---|
| Una island con 3 pestañas | Gastos, categorías y resumen forman un flujo único de mantenimiento; separar en islands obligaría a repetir el contexto de tenant/período. |
| Período activo dirige la lista | Cambiar year/month en el workspace recarga gastos y resumen filtrados. |
IVA no recuperable como concepto especial (id = 30) | Constante en el código (IVA_NO_RECUPERABLE_CONCEPTO_ID = 30). Cuando se elige ese concepto en el modal, el gasto se trata como IVA no recuperable y va a cuenta distinta. |
| Categorías con cuenta contable mapeada | Cada categoría de gasto fija una cuenta contable; el alta de gasto hereda esa cuenta. Cambiar la categoría de un gasto existente no mueve la cuenta — preserva trazabilidad. |
| Carga lateral de proveedores, cuentas y conceptos | El modal de alta requiere catálogos de tres orígenes (/api/inventario/proveedores, /api/admin/chart-of-accounts, conceptos de impuestos). Se cargan en paralelo al cambiar tenant. |
| Acciones por estado del gasto | BORRADOR permite editar y contabilizar; CONTABILIZADO solo reversa. La UI muestra solo las acciones válidas para evitar viajes rechazados. |
| Confirmación destructiva en reversa | La reversa elimina las líneas contables del gasto y vuelve a BORRADOR; debe ser consciente. |
| Filtros locales (estado, categoría) sobre lista cargada | El volumen mensual por tenant es manejable; paginar agregaría latencia. |
Lenguaje compartido
Section titled “Lenguaje compartido”GastosIsland usa los tokens del ContabilidadWorkspace:
| Componente | Uso |
|---|---|
ContabilidadWorkspaceHeader | Header con pills, controls y note. |
WorkspaceTabBar | Cambio entre gastos / categorias / resumen. |
InlineMetricPill | Métricas inline (total, pendientes, contabilizados, monto). |
WorkspaceSectionCard | Sección con eyebrow, title, description, pills. |
Hooks compartidos
Section titled “Hooks compartidos”| Hook | Uso |
|---|---|
useActiveTenant | Recarga gastos + catálogos al cambiar tenant. |
useActivePeriod | { year, month } define qué gastos y qué resumen mostrar. Sincronizado a la query. |
Backend de referencia
Section titled “Backend de referencia”GastosService (Orchestrator) gestiona el CRUD, la asociación con la compra de origen cuando aplica, el wiring contable (cuenta gasto + IVA), la contabilización y la reversa.
Endpoint base
Section titled “Endpoint base”/api/gastos/* vía createProxy — ver BFF Proxy. Laterales usados:
/api/admin/chart-of-accounts— plan de cuentas para selectores./api/inventario/proveedores— catálogo de proveedores compartido con inventario./api/admin/conceptos-impuestos— catálogo de conceptos tributarios (elid=30es IVA no recuperable).
Relación con otros dominios
Section titled “Relación con otros dominios”- Operaciones SII alimenta los documentos (compras) que pueden derivar a gasto.
- Inventario comparte el padrón de proveedores; un mismo RUT puede aparecer en compras de inventario y de gasto.
- Activo fijo es la alternativa para compras de bienes que cumplen criterios de capitalización.
- Provisiones complementa el cierre con devengos sin documento.
- Ciclo contable consume el estado de contabilización de gastos como parte del cierre mensual.
Cada destino documenta su propio mecanismo de integración.