# INTERLINK — Conciliación bancaria v2.3: DNI / CUIT / CUIL

## Alcance
Actualización incremental sobre conciliación v2.2. No cambia tablas, pagos, imputaciones, IA, Meta ni el importador XLS.

## Corrección principal
Para identidad del emisor, el sistema acepta:
- DNI de 8 dígitos contra el bloque central de un CUIT/CUIL válido `XX-DNI-X`.
- DNI de 7 dígitos contra el bloque central de 8 dígitos del CUIT/CUIL, únicamente agregando el cero inicial estructural.
- CUIT/CUIL completo contra el mismo CUIT/CUIL.

Nunca busca el DNI como substring arbitrario: el CUIT/CUIL debe tener 11 dígitos y dígito verificador válido, y se compara exclusivamente el bloque central de 8 dígitos.

Ejemplo:
`DNI 40069488` equivale estructuralmente a `27-40069488-0`.

## Nombres truncados
Cuando el documento coincide, el nombre bancario deja de exigir igualdad literal. Se aceptan:
- truncamiento final normal del banco (`DONAIR` / `DONAIRE`);
- un carácter omitido o agregado en tokens largos (`ALMAZAN` / `ALMANZAN`);
- segundo apellido omitido (`JUDITH MARISOL SOLOZA` / `JUDITH MARISOL SOLOZA HERRERA`).

Un nombre realmente diferente continúa enviando el caso a revisión.

## Reglas que no cambian
- fecha e importe exactos;
- destino INTERLINK configurado;
- regla específica por banco/billetera;
- coincidencia única;
- duplicados contra todo el historial;
- cliente por WhatsApp;
- simulación antes de confirmar;
- Mercado Pago mantiene la coincidencia de 6 dígitos consecutivos con Código de identificación.

## Instalación
Respaldar primero los tres archivos reemplazados. Copiar el contenido de `whatsapp_v2/` sobre la instalación actual.

Comprobar con PHP 7.4:

```bash
cd /var/www/html/_inc/whatsapp_v2
php7.4 bin/check_bank_rules_v2.php
php7.4 tests/bank_rules_by_origin.php
```

Esperado:
- `Comprobaciones compatibles: 14; diferencias: 0.`
- `OK: 116 comprobaciones de reglas e importación.`

Después generar una simulación NUEVA. La versión de reglas cambia a `macro-v2.3-dni-cuit-20260919`, por lo que no se deben confirmar simulaciones anteriores.
