feat: cada numero ve solo las fincas que el ERP le asigno

PhoneSync guarda el alcance que llega en whatsapp_numeros, y ask_finca acota la
lista con scope_from. Lista vacia = sin restriccion, para que quien tiene todas
vea tambien las fincas que se creen despues.

"Todas las fincas" sobrevive al filtro y pasa a significar "todas las mias"; de
acotarla se encarga el ERP, que es donde estan los datos.

Tolera que la columna todavia no exista: mientras tanto nadie queda restringido.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-05 23:53:34 -05:00
co-authored by Claude Sonnet 4.6
parent eb0ae1f208
commit 478ba3ea73
4 changed files with 66 additions and 2 deletions
+7 -2
View File
@@ -71,11 +71,12 @@ class PhoneSync
$db = db();
$upsert = $db->prepare("
INSERT INTO company_phones (company_id, wa_number, label, permission_type, is_active)
VALUES (?, ?, ?, ?, 1)
INSERT INTO company_phones (company_id, wa_number, label, permission_type, fincas_json, is_active)
VALUES (?, ?, ?, ?, ?, 1)
ON DUPLICATE KEY UPDATE
label = VALUES(label),
permission_type = VALUES(permission_type),
fincas_json = VALUES(fincas_json),
is_active = 1
");
@@ -84,11 +85,15 @@ 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;
}