# FIX 2026-08-25 — Formulario Blacklist/Whitelist del panel /pbx

**Síntoma**: en Configuración > Blacklist/Whitelist > Agregar Entrada, al Guardar sale
"Error: El número es requerido" aunque el número esté escrito (reportado por Paloma, 25-08-2026).
Editar abría el modal vacío.

**Causa**: `tables/manage_blacklist.php` envía `phone_number` / `allowed_dids`;
`tables/ajax_handler.php` (`save_blacklist_entry`) leía `number` / `dids`. El formulario nunca
había funcionado (todas las filas previas venían de una carga masiva o de inserciones manuales).
En Editar, `get_blacklist_entry` devuelve `{success,data:{caller_id,...}}` y el JS leía `data.phone_number`.

**Cambio** (backups `*.bak_blacklist_fix_20260825` junto a cada fichero):
- `ajax_handler.php`: acepta `number|phone_number` y `dids|allowed_dids`; normaliza el número a
  solo dígitos (`preg_replace('/[^0-9]/','',...)`) porque el AGI `base_processor.py` compara
  `caller_id = %s` exacto. OJO: "+34 6xx" se guarda como `346xx...`; los móviles españoles llegan
  como 9 dígitos, así que hay que meterlos sin prefijo.
- `manage_blacklist.php`: el modal lee `data.caller_id` / `data.destination` y `resp.data`.

**Verificación**: login HTTP con usuario temporal (borrado después), POST del formulario →
fila 144 `633638045`; `get_blacklist_entry` devuelve los datos. Sintaxis `php -l` OK.

**Rollback**: `cp tables/ajax_handler.php.bak_blacklist_fix_20260825 tables/ajax_handler.php`
(ídem manage_blacklist.php).
