Descripción general
Matcher soporta cuatro patrones de coincidencia:
| Patrón | Descripción | Ejemplo |
|---|---|---|
| 1:1 | Uno a uno | Pago de factura única |
| 1:N | Uno a muchos | Pago masivo cubriendo facturas |
| N:1 | Muchos a uno | Depósitos consolidados en banco |
| N:M | Muchos a muchos | Compensación compleja |
Cómo funciona
El comportamiento de división y agregación se controla mediante dos mecanismos:
- Tipo de contexto — determina la cardinalidad de la coincidencia (
1:1,1:NoN:M). - Flags de asignación en la regla — controlan cómo se distribuyen los montos dentro de un grupo de coincidencia.
Mapeo de tipo de contexto
| Tipo de contexto | Patrones permitidos |
|---|---|
1:1 | Solo un origen a un destino |
1:N | Un origen a muchos destinos (split), o muchos orígenes a un destino (aggregate) |
N:M | Cualquier combinación de orígenes y destinos |
Configuraciones de asignación en reglas
Todos los tipos de regla aceptan flags de asignación en suconfig:
| Campo | Tipo | Descripción |
|---|---|---|
allowPartial | Boolean | Permitir asignación parcial de montos de transacción |
allocationDirection | String | Orden de asignación: LEFT_TO_RIGHT o RIGHT_TO_LEFT |
allocationToleranceMode | String | Cómo se mide la tolerancia: ABS (absoluta) o PERCENT |
allocationToleranceValue | Decimal | Umbral de tolerancia para residuos de asignación |
allocationUseBaseAmount | Boolean | Usar monto base (convertido) para la asignación |
Ejemplo: regla de tolerancia con asignación
cURL
Creando un contexto 1:N
Para habilitar coincidencia dividida o agregada, cree un contexto con tipo
1:N:
cURL
Coincidencia dividida 1:N
Una transacción de origen coincide con múltiples transacciones de destino.
Casos de uso comunes
- Pago masivo: Una transferencia cubriendo múltiples facturas
- Nómina: Un débito bancario para múltiples pagos de salario
- Liquidación: Un pago de pasarela para múltiples órdenes
Ejemplo: pago masivo de facturas
Origen (Extracto bancario):| ID | Monto | Referencia |
|---|---|---|
| bank_001 | $15,000.00 | BULK-PAY-2024-001 |
| ID | Monto | Factura |
|---|---|---|
| inv_001 | $5,000.00 | INV-2024-001 |
| inv_002 | $7,500.00 | INV-2024-002 |
| inv_003 | $2,500.00 | INV-2024-003 |
Coincidencia agregada N:1
Múltiples transacciones de origen coinciden con una transacción de destino.
Casos de uso comunes
- Depósitos bancarios: Múltiples cheques depositados como un crédito
- Liquidaciones de tarjeta: Lote diario de transacciones como un depósito
- Consolidación de efectivo: Múltiples recibos de caja a un depósito
Ejemplo: depósito consolidado
Orígenes (Punto de venta):| ID | Monto | Caja |
|---|---|---|
| pos_001 | $1,250.00 | REG-01 |
| pos_002 | $980.00 | REG-02 |
| pos_003 | $1,770.00 | REG-03 |
| ID | Monto | Referencia |
|---|---|---|
| bank_002 | $4,000.00 | DEPOSIT-20240120 |
Coincidencia N:M muchos a muchos
Múltiples transacciones de origen coinciden con múltiples transacciones de destino. Este es el patrón más complejo.
Casos de uso comunes
- Compensación intercompañía: Múltiples facturas compensadas contra múltiples pagos
- Liquidaciones comerciales: Compensación compleja con llenados parciales
- Reconocimiento de ingresos: Múltiples entregas contra múltiples anticipos
Ejemplo: compensación intercompañía
Orígenes (Cuentas por pagar Empresa A):| ID | Monto | Referencia |
|---|---|---|
| pay_001 | $10,000.00 | IC-PAY-001 |
| pay_002 | $8,000.00 | IC-PAY-002 |
| ID | Monto | Referencia |
|---|---|---|
| rec_001 | $12,000.00 | IC-REC-001 |
| rec_002 | $6,000.00 | IC-REC-002 |
N:M:
cURL
Ejecutando y revisando coincidencias
Después de configurar el contexto y las reglas, inicie una ejecución de coincidencia y revise los grupos resultantes.
Ejecutar coincidencia
cURL
Ver historial de ejecuciones
cURL
Ver grupos de coincidencia
cURL
Ver detalles del grupo
cURL
Confirmar un grupo de coincidencia
cURL
Rechazar un grupo de coincidencia
cURL
Revocar un grupo de coincidencia confirmado
cURL
Algoritmo de coincidencia
Para escenarios N:M, Matcher usa asignación secuencial determinista para emparejar transacciones.
Cómo funciona
- Ordenar: Las transacciones se ordenan de forma determinista para asegurar resultados reproducibles entre ejecuciones.
- Iterar: El motor recorre los candidatos en orden de prioridad.
- Asignar: Los montos se distribuyen según la configuración de
allocationDirection(LEFT_TO_RIGHToRIGHT_TO_LEFT). - Rastrear residuos: Cualquier monto no asignado restante se rastrea. Si
allowPartialestrue, se crean coincidencias parciales; de lo contrario, las transacciones no asignadas se convierten en excepciones.
Mejores prácticas
Comience con 1:N antes de N:M
Comience con 1:N antes de N:M
La coincidencia muchos a muchos es compleja. Comience con patrones más simples y habilite N:M solo cuando sea necesario.
Use tolerancia de asignación para redondeos
Use tolerancia de asignación para redondeos
Las pequeñas diferencias de redondeo son comunes en pagos divididos. Configure allocationToleranceValue en unos pocos centavos para evitar excepciones falsas.
Habilite asignación parcial deliberadamente
Habilite asignación parcial deliberadamente
Solo configure allowPartial como true cuando se esperan coincidencias parciales. Esto previene coincidencias falsas de datos incompletos.
Ejecute dry-run antes de confirmar
Ejecute dry-run antes de confirmar
Siempre pruebe la coincidencia dividida y agregada en modo DRY_RUN primero para verificar los resultados de asignación.
Monitoree los residuos
Monitoree los residuos
Rastree los montos residuales a lo largo del tiempo. Los residuos crecientes pueden indicar problemas sistemáticos de coincidencia.

