refactor: el alcance de fincas lo resuelve el ERP, no el bot

Los catalogos ahora mandan ?wa= igual que los informes, y el endpoint fincas
devuelve solo las asignadas a ese numero. El "Todas las fincas" se antepone
unicamente a quien no tiene restriccion: con dos de cinco asignadas no
significa nada claro.

Con eso sale sobrando todo el filtrado del lado del bot —scope_from,
alcanceDelNumero y fincas_json en PhoneSync— y queda una sola fuente de verdad,
del lado donde estan los datos.

Efecto util: con una sola finca asignada el catalogo trae un unico item y
handleDynamicList auto-selecciona, asi que el usuario nunca ve la pregunta.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-05 23:59:35 -05:00
co-authored by Claude Sonnet 4.6
parent 478ba3ea73
commit 94d4dcd26a
4 changed files with 34 additions and 64 deletions
+2 -7
View File
@@ -71,12 +71,11 @@ class PhoneSync
$db = db();
$upsert = $db->prepare("
INSERT INTO company_phones (company_id, wa_number, label, permission_type, fincas_json, is_active)
VALUES (?, ?, ?, ?, ?, 1)
INSERT INTO company_phones (company_id, wa_number, label, permission_type, is_active)
VALUES (?, ?, ?, ?, 1)
ON DUPLICATE KEY UPDATE
label = VALUES(label),
permission_type = VALUES(permission_type),
fincas_json = VALUES(fincas_json),
is_active = 1
");
@@ -85,15 +84,11 @@ class PhoneSync
$waNumber = trim($n['wa_number'] ?? '');
if ($waNumber === '') continue;
// Lista vacía = sin restricción (ve todas las fincas)
$fincas = array_values(array_filter(array_map('intval', (array)($n['fincas'] ?? []))));
$upsert->execute([
$companyId,
$waNumber,
trim($n['nombre'] ?? ''),
(int)($n['permiso'] ?? 1),
$fincas ? json_encode($fincas) : null,
]);
$activeNumbers[] = $waNumber;
}