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:
co-authored by
Claude Sonnet 4.6
parent
eb0ae1f208
commit
478ba3ea73
@@ -253,6 +253,8 @@ $configJson = [
|
||||
'meta_group' => 'finca',
|
||||
'meta_key' => 'finca_id',
|
||||
'entity_key' => 'finca',
|
||||
// Solo las fincas que el ERP le asigno a este numero
|
||||
'scope_from' => 'fincas',
|
||||
'next_node' => 'show_main_menu',
|
||||
'skip_if_set' => true,
|
||||
'nlu_description' => 'Seleccionar o cambiar la finca de trabajo',
|
||||
|
||||
@@ -509,6 +509,29 @@ foreach (['show_main_menu', 'descargar_informes', 'enviar_informacion'] as $k) {
|
||||
check('el bot ya no reordena por su cuenta',
|
||||
isset(flowsDe($config, '3')['registrar_ausentismo']['fields'][1]['frecuentes']), false);
|
||||
|
||||
echo "\nAlcance de fincas por número\n";
|
||||
|
||||
check('ask_finca respeta el alcance del número',
|
||||
$flows['ask_finca']['scope_from'] ?? null, 'fincas');
|
||||
|
||||
/** Espejo del filtro de handleDynamicList */
|
||||
$acotar = function (array $items, array $permitidas): array {
|
||||
if (!$permitidas) return array_column($items, 'id');
|
||||
return array_column(array_values(array_filter($items,
|
||||
fn($i) => $i['id'] === '0' || in_array($i['id'], $permitidas, true))), 'id');
|
||||
};
|
||||
|
||||
$catalogo = [['id' => '0'], ['id' => '4'], ['id' => '7'], ['id' => '9']];
|
||||
|
||||
check('sin restricción ve todas', $acotar($catalogo, []), ['0', '4', '7', '9']);
|
||||
check('con dos fincas ve solo esas', $acotar($catalogo, ['4', '9']), ['0', '4', '9']);
|
||||
check('"todas" sobrevive al filtro', in_array('0', $acotar($catalogo, ['4']), true), true);
|
||||
|
||||
// Una sola finca: handleDynamicList auto-selecciona con un unico item, pero el
|
||||
// "todas" cuenta como segundo, asi que igual pregunta. Es correcto: elegir entre
|
||||
// "su finca" y "todas las suyas" son cosas distintas si mañana le suman otra.
|
||||
check('una sola finca deja dos opciones', $acotar($catalogo, ['7']), ['0', '7']);
|
||||
|
||||
echo "\nask_finca\n";
|
||||
$af = $flows['ask_finca'];
|
||||
check('no repregunta si ya hay finca', $af['skip_if_set'] ?? false, true);
|
||||
|
||||
Reference in New Issue
Block a user