Plataforma técnica · Orchestrator
Operaciones (RCV SII)
Orchestrator Operaciones Sii
El dominio Operaciones procesa el RCV (Registro de Compras y Ventas) del SII y produce detalle contable auditable. Su responsabilidad es convertir documentos tributarios normalizados — facturas, notas de crédito/débito, boletas — en líneas operacionales clasificadas por concepto contable, listas para ser contabilizadas, pagadas o usadas como base de declaraciones (F29 principalmente).
Servicios
Section titled “Servicios”| Servicio | Responsabilidad |
|---|---|
OperacionesService | Único servicio del dominio. Genera, contabiliza, reversa y consulta detalle operacional. |
No hay más servicios en domain/operaciones/. La complejidad del dominio está en la lógica de clasificación (notas de crédito invierten signos, facturas de compra en libro de ventas tratan IVA retenido, IVA no recuperable se separa como gasto, redondeos de 1–2 pesos se ajustan automáticamente), toda concentrada en un solo servicio.
Hooks emitidos
Section titled “Hooks emitidos”| Evento | Trigger | Payload |
|---|---|---|
venta:contabilizada | OperacionesService.generate con contabilizar_ingresos: true (1 evento por documento marcado) | { ventaId, documentoTipo: BOLETA | FACTURA, rutCliente, monto, formaPago } |
Catálogo completo en Domain Events. El payload se enriquece con tenantDb, userId, requestId al flush post-COMMIT del outbox transaccional.
Dependencias entre dominios
Section titled “Dependencias entre dominios”flowchart LR
subgraph IN["Entrada"]
SII["operaciones_sii.ventas + compras + boletas<br/>(sincronizado upstream desde SII)"]
end
subgraph CFG["Configuración (admin)"]
CC["operaciones_sii.conceptos_operaciones<br/>(catálogo de conceptos)"]
PCT["administracion.plan_contable<br/>(via ConfigContableService.cuentas)"]
end
subgraph SVC["domain/operaciones/"]
OP["OperacionesService"]
end
subgraph OUT["Salida"]
DET["operaciones_sii.compras_ventas_detalle<br/>(estado: PENDIENTE → CONTABILIZADO → PAGADO)"]
EVT["DomainEventBus<br/>venta:contabilizada"]
end
SII --> OP
CC --> OP
PCT -. wiring via ConfigContable .-> OP
OP --> DET
OP -. solo si contabilizar_ingresos .-> EVT Cadena de configuración requerida
Section titled “Cadena de configuración requerida”Para que OperacionesService.generate funcione, el tenant debe tener:
- Plan contable poblado — administrado por
ChartOfAccountsService. - Conceptos activos en
operaciones_sii.conceptos_operaciones— catálogo seedeado. - Wiring contable opcional vía
ConfigContableServicesi se quiere derivar a asientos definitivos después.
Sin (1) y (2), generate lanza Error('Concepto no encontrado: <codigo>') y aborta el procesamiento.
Convenciones de signo
Section titled “Convenciones de signo”| Caso | Signo del monto en compras_ventas_detalle |
|---|---|
| Factura normal (venta/compra) | Positivo. |
| Nota de crédito (NC) | Negativo (revierte). |
| Nota de débito (ND) | Positivo. |
| IVA no recuperable en NC | Negativo. |
| Redondeo | Puede ser positivo o negativo (±1 o ±2). |
| Boleta | Positivo. |
Esto permite que SUM(monto) GROUP BY concepto dé el saldo neto del período correctamente sin lógica adicional.