Skip to content

Plataforma técnica · Orchestrator

Conciliacion Service

Orchestrator Finanzas Conciliacion

ConciliacionService es el servicio con mayor densidad de reglas del dominio Finanzas. Vincula movimientos bancarios con documentos del sistema, resuelve diferencias, aplica anticipos, marca incobrables y emite eventos post-COMMIT.

flowchart TB
  IN["vincular(ctx, dto)"]
  MOV["findMovimientoById"]
  CAT["categoria_movimiento_id actual"]
  ANT{"categoria = ANTICIPO-PROV<br/>y movimiento CARGO?"}
  AV["aplicarAnticipoProveedorDesdeConciliacion"]
  DISP["calcular monto disponible"]
  DOCS["validar documentos<br/>COMPRA_VENTA / DECLARACION / HONORARIO"]
  AUTO["resolver categoria automatica"]
  TX["withTransaction"]
  INS["insertVinculos"]
  UPD["actualizar estados de documentos<br/>y movimiento"]
  EVT["queue conciliacion:matched<br/>queue movimiento:vinculado si aplica"]

  IN --> MOV --> CAT --> ANT
  ANT -- si --> AV
  ANT -- no --> DISP --> DOCS --> AUTO --> TX --> INS --> UPD --> EVT
MétodoUso
solicitarMatch(tenantDb, compraId)Busca candidatos para una compra contabilizada; si existe exactamente un candidato, llama vincular.
vincular(ctx, dto)Vincula movimiento bancario con documentos de sistema y actualiza estados.
conciliarManual(ctx, dto)Cierra un movimiento con categoría contable sin documento externo.
desconciliar(ctx, movimientoId)Elimina conciliaciones de un movimiento y emite conciliacion:desconciliada.
getResumen(ctx, bancoId, anio, mes, acumulado)Devuelve resumen enriquecido de conciliación.
marcarIncobrable(ctx, conciliacionId)Marca diferencias de ventas o boletas como incobrables.
castigarContraEstimacion(ctx, conciliacionId, dto)Contabiliza castigo contra estimación de incobrables.
reversarCastigoContraEstimacion(ctx, conciliacionId, dto)Reversa el castigo previamente contabilizado.
compensarProveedorDesdeConciliacionCompensa una diferencia de cliente contra factura de proveedor desde una conciliación específica.
compensarProveedorMultipleDesdeDocumentoDistribuye compensación contra varias facturas proveedor desde un documento cliente.
reversarCompensacionProveedorElimina una resolución de compensación y recalcula coberturas.
TipoOrigenValidación principalEfecto
COMPRA_VENTAoperaciones_sii.compras_ventas_detalleDocumento contabilizado.Marca pagado y actualiza conciliación.
DECLARACIONdeclaraciones.declaraciones_f29F29 no anulado y con total a pagar.Registra fecha_pago.
HONORARIOremuneraciones.honorariosHonorario contabilizado.Cambia a PAGADA.
MANUALMovimiento bancarioCategoría contable asignada y sin conciliaciones parciales.Cierra el movimiento.
CódigoCondición
PAGO-IMPSolo documentos DECLARACION.
PAGO-HONSolo documentos HONORARIO.
PAGO-PROVDocumento comercial identificado como compra/proveedor.
COBRO-CLTEDocumento comercial identificado como venta o boleta.
ANTICIPO-PROVMovimiento CARGO ya categorizado como anticipo proveedor.

El servicio usa cuentas explícitas para castigo contra estimación:

ConstanteCuenta
CLIENTES_ACCOUNT_CODE1104001
ESTIMACION_INCOBRABLES_ACCOUNT_CODE1104002
INCOBRABLE_EXPENSE_ACCOUNT_CODE3502003
EventoTrigger
conciliacion:matchedVinculación exitosa contra documentos comerciales.
movimiento:vinculadoAsignación automática de categoría a un movimiento sin categoría previa.
conciliacion:desconciliadaDesconciliación de movimiento bancario.

listeners.ts registra un listener sobre compra:contabilizada. Si formaPago es transferencia o cheque, llama ConciliacionService.solicitarMatch. Otras formas de pago no solicitan match automático.

MétodoRutaService call
POST/api/financieros/conciliacion/vincularvincular(ctx, body)
POST/api/financieros/conciliacion/manualconciliarManual(ctx, body)
GET/api/financieros/conciliacion/resumengetResumen(ctx, bancoId, anio, mes, acumulado)
DELETE/api/financieros/conciliacion/movimiento/:iddesconciliar(ctx, id)
PUT/api/financieros/conciliacion/:id/incobrablemarcarIncobrable(ctx, id)
POST/api/financieros/conciliacion/:id/castigo-estimacioncastigarContraEstimacion(ctx, id, body)
PUT/api/financieros/conciliacion/:id/castigo-estimacion/reversarreversarCastigoContraEstimacion(ctx, id, body)
POST/api/financieros/conciliacion/:id/compensacion-proveedorcompensarProveedorDesdeConciliacion(ctx, id, body)
POST/api/financieros/conciliacion/documento/:id/compensaciones-proveedorcompensarProveedorMultipleDesdeDocumento(ctx, id, body)
DELETE/api/financieros/conciliacion/compensacion-proveedor/:idreversarCompensacionProveedor(ctx, id)