Skip to content

Operaciones SII en Sevastopol

Sevastopol · Operaciones SII

Compras-VentasSevastopolUI

OperationsViewIsland es la interfaz frontend para revisar documentos SII normalizados y operar el detalle contable generado por OperationsService. La vista permite consultar ventas, compras y boletas por periodo, revisar su estado y solicitar la generación o reproceso del detalle operacional.

Esta página documenta el flujo frontend actual. La clasificación contable, la persistencia y la validación de reprocesos viven en Orchestrator; Sevastopol actúa como interfaz operativa y proxy hacia el backend.

  • Directorysevastopol/src/components/islands/accounting/
    • OperationsViewIsland.tsx
  • Directorysevastopol/src/pages/api/accounting/
    • index.ts
    • […path].ts

La vista trabaja sobre tres tipos documentales del SII.

TipoUso en la interfaz
VENTARevisa facturas emitidas, notas de crédito, notas de débito y su detalle neto e IVA.
COMPRARevisa facturas recibidas, IVA recuperable, IVA no recuperable, otros impuestos y clasificación posterior.
BOLETARevisa resúmenes de boletas y su separación automática entre neto e IVA.

La pantalla depende del tenant activo y de un periodo mensual o rango de periodos. El detalle mostrado corresponde a documentos fuente y líneas generadas en operaciones_sii.compras_ventas_detalle.

  1. Seleccionar tenant, tipo documental y periodo de trabajo.

    const params = new URLSearchParams({
    tenant_id: tenantId,
    tipo_documento: tipoDocumento,
    periodo,
    });
  2. Consultar documentos fuente normalizados para el tipo seleccionado.

    const r = await authenticatedFetch(`/api/accounting/operations?${params}`);
    await handleAuthResponse(r);
  3. Consultar el estado de contabilización del periodo.

    const estado = await authenticatedFetch(
    `/api/accounting/operations/estado?${params}`,
    );
  4. Renderizar totales, estado general y tabla de documentos.

La acción de generación solicita a Orchestrator que procese los documentos fuente del periodo y cree líneas operacionales. La opción de reproceso debe usarse solo cuando se necesita borrar el detalle previo y reconstruirlo con reglas actualizadas.

const body = {
tipo_documento: tipoDocumento,
periodo_desde: periodoDesde,
periodo_hasta: periodoHasta,
forzar_reproceso: forceReprocess,
contabilizar_ingresos: contabilizarIngresos,
};
OpciónEfecto
forzar_reprocesoBorra el detalle existente del tipo y periodo antes de regenerar.
contabilizar_ingresosMarca ingresos netos de ventas o boletas como contabilizados. No aplica a compras.

Para VENTA y BOLETA, la vista puede pedir que los ingresos netos generados queden contabilizados en el mismo flujo. Esta acción no crea líneas nuevas; cambia el estado de las líneas netas pendientes y deja trazabilidad para los servicios posteriores.

Tipo documentalAcción permitida
VENTAGenerar detalle y opcionalmente contabilizar ingresos netos.
BOLETAGenerar detalle y opcionalmente contabilizar ingresos netos.
COMPRAGenerar detalle; la clasificación posterior deriva a activo fijo, existencias, gastos o impuestos.

Las compras no se agotan en la generación del detalle operacional. Después de consultar o regenerar el periodo, la UI debe conducir las líneas COMPRA pendientes hacia una clasificación por proveedor y, desde ahí, hacia su destino contable.

DestinoCriterio
InventariosBienes adquiridos para venta, transformación, producción o consumo futuro.
Activo fijoBienes tangibles usados por más de un periodo y no destinados a venta ordinaria.
GastosBienes o servicios consumidos en el periodo o sin activo identificable.

La reversa aplica solo a ingresos netos de ventas o boletas marcados por este flujo. La vista debe impedir que compras entren en esta acción, porque las compras se consumen por procesos posteriores.

await authenticatedFetch(`/api/accounting/operations/reversar`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tenant_id: tenantId,
tipo_documento: tipoDocumento,
periodo_desde: periodoDesde,
periodo_hasta: periodoHasta,
}),
});
EstadoLectura de interfaz
VACIONo existen documentos fuente ni detalle para el periodo.
PENDIENTEExisten documentos fuente, pero falta generar detalle.
VALIDADOLos documentos tienen detalle generado y pendiente de acciones posteriores.
CONTABILIZADOLas líneas aplicables ya fueron marcadas como contabilizadas.
PAGADOEl flujo posterior marcó las líneas como pagadas.
PARCIALExiste mezcla de estados o avance incompleto.
INCONSISTENTEHay diferencias entre documentos fuente y detalle generado.
MétodoRutaOperación
GET/api/accounting/operationsConsulta documentos fuente normalizados.
GET/api/accounting/operations/estadoConsulta resumen de estado por tipo y periodo.
POST/api/accounting/operations/generateGenera o reprocesa detalle contable operacional.
POST/api/accounting/operations/reversarRevierte contabilización de ingresos de ventas o boletas.

Sevastopol no debe acoplar la island a la URL interna de Orchestrator. Las rutas bajo src/pages/api/accounting/ reenvían método, query string, cookies, Authorization y cuerpo hacia el backend.

let targetUrl = `${ORCHESTRATOR_BASE_URL}/api/accounting/${restPath}`;
if (url.search) targetUrl += url.search;
const orchestratorRes = await fetch(targetUrl, {
method: request.method,
headers: getProxyHeaders(request),
body,
credentials: 'include',
});
ReglaMotivo
Usar tenant activoLas operaciones pertenecen a la base tenant seleccionada.
Separar tipo documentalVentas, compras y boletas tienen reglas contables distintas.
Mostrar estado antes de reprocesarEvita borrar detalle ya revisado sin contexto.
Bloquear contabilizar_ingresos para comprasLas compras derivan a flujos posteriores y no se contabilizan como ingreso.
Recargar resumen después de cada acciónMantiene la tabla alineada con el estado real de Orchestrator.