feat: ausentismo en dos pasos — tipo y despues motivo
17 motivos en una sola lista llegaban con el nombre cortado a 24 caracteres, el limite de WhatsApp, y costaban de entender. Ahora primero se elige el tipo —Incapacidad, Permiso, Licencia, Ausencia, Vacaciones...— y despues solo los motivos de ese tipo. Quitar el prefijo del grupo libera los caracteres que faltaban: "INCAPACIDAD ENFERMEDAD < 3 DIAS" queda en "ENFERMEDAD < 3 DIAS". Sin siglas, que era la otra opcion pero empeoraba justo lo que el cliente pidio arreglar. El nombre completo va en la descripcion de la fila, asi no se pierde nada. El ERP agrupa por nombre y no por id, para que una novedad nueva caiga sola en su grupo; lo que no reconoce queda en 'Otros', visible. desc_field es nuevo en los select: antes solo el multi_select podia describir. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
5ee2cfe2e6
commit
2ef3091260
+12
-2
@@ -711,6 +711,7 @@ class NormalBot
|
||||
$labelField = $flow['label_field'] ?? 'name';
|
||||
// Auto-detect multi-section if items carry a 'section' key
|
||||
$sectionField = $flow['section_field'] ?? (isset($items[0]['section']) ? 'section' : null);
|
||||
$descField = $flow['desc_field'] ?? (isset($items[0]['descripcion']) ? 'descripcion' : null);
|
||||
|
||||
if ($sectionField !== null) {
|
||||
$grouped = [];
|
||||
@@ -719,7 +720,12 @@ class NormalBot
|
||||
if ($id === '') continue;
|
||||
$title = mb_substr((string)($item[$labelField] ?? $id), 0, 24);
|
||||
$sec = mb_substr((string)($item[$sectionField] ?? 'Opciones'), 0, 24);
|
||||
$grouped[$sec][] = ['id' => $id, 'title' => $title];
|
||||
$fila = ['id' => $id, 'title' => $title];
|
||||
// El titulo se corta a 24: la descripcion lleva el nombre entero
|
||||
if ($descField !== null && !empty($item[$descField])) {
|
||||
$fila['description'] = mb_substr((string)$item[$descField], 0, 72);
|
||||
}
|
||||
$grouped[$sec][] = $fila;
|
||||
}
|
||||
$sections = [];
|
||||
foreach (array_slice($grouped, 0, 10, true) as $secTitle => $rows) {
|
||||
@@ -737,7 +743,11 @@ class NormalBot
|
||||
foreach ($visibles as $item) {
|
||||
$id = (string)($item[$valueField] ?? '');
|
||||
if ($id === '') continue;
|
||||
$rows[] = ['id' => $id, 'title' => mb_substr((string)($item[$labelField] ?? $id), 0, 24)];
|
||||
$fila = ['id' => $id, 'title' => mb_substr((string)($item[$labelField] ?? $id), 0, 24)];
|
||||
if ($descField !== null && !empty($item[$descField])) {
|
||||
$fila['description'] = mb_substr((string)$item[$descField], 0, 72);
|
||||
}
|
||||
$rows[] = $fila;
|
||||
}
|
||||
|
||||
$restantes = count($items) - (($pagina + 1) * $porPagina);
|
||||
|
||||
Reference in New Issue
Block a user