feat: labores diarias fase 2; el bot repite lo que responde el ERP
Quinto flujo de carga: fecha, labor, lote, trabajadores y cantidad. El catalogo de novedades lo filtra el ERP por fase, asi que el bot no decide cual corresponde. El trabajador vinculado se pre-llena y el supervisor elige. Ademas, collect_and_post descartaba la respuesta del POST y decia "listo" aunque el ERP hubiera rechazado parte. Ahora repite lo que contesta: cuantos entraron, quien ya tenia jornal, que quedo afuera. Y from_phone respeta el tipo del campo: multi_select espera un arreglo aunque el perfil traiga un solo tercero. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
356c157811
commit
8399a86972
+23
-4
@@ -1072,9 +1072,11 @@ class NormalBot
|
||||
if (empty($perfil['es_supervisor'])) {
|
||||
foreach ($fields as $f) {
|
||||
$origen = $f['from_phone'] ?? '';
|
||||
if ($origen !== '' && !empty($perfil[$origen])) {
|
||||
$collected[$f['key']] = (string)$perfil[$origen];
|
||||
}
|
||||
if ($origen === '' || empty($perfil[$origen])) continue;
|
||||
// multi_select espera un arreglo aunque el perfil traiga uno solo
|
||||
$collected[$f['key']] = ($f['type'] ?? '') === 'multi_select'
|
||||
? [(string)$perfil[$origen]]
|
||||
: (string)$perfil[$origen];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1600,7 +1602,24 @@ class NormalBot
|
||||
return self::sendText('⚠️ Error al guardar los datos. Intenta de nuevo.' . $nav, $context['from'], $company);
|
||||
}
|
||||
|
||||
return self::sendText($cap['success_text'] . $nav, $context['from'], $company);
|
||||
// El ERP suele responder algo que el usuario necesita saber: cuántos
|
||||
// lotes entraron, quién ya tenía jornal, qué quedó afuera. Sin esto el
|
||||
// bot decía "listo" sobre registros que no se guardaron.
|
||||
$texto = $cap['success_text'];
|
||||
$resp = json_decode((string)$response, true);
|
||||
if (is_array($resp)) {
|
||||
$detalle = trim((string)($resp['mensaje'] ?? ''));
|
||||
if ($detalle !== '' && ($resp['status'] ?? '1') !== '1') {
|
||||
$texto = '⚠️ ' . $detalle;
|
||||
} elseif ($detalle !== '') {
|
||||
$texto .= "\n" . $detalle;
|
||||
}
|
||||
if (!empty($resp['rechazados'])) {
|
||||
$texto .= "\n\n_" . count($resp['rechazados']) . ' sin procesar_';
|
||||
}
|
||||
}
|
||||
|
||||
return self::sendText($texto . $nav, $context['from'], $company);
|
||||
}
|
||||
|
||||
// ── Submit form (end of multi-step collection) ───────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user