fix: los lotes de ciclos mezclaban fincas
Los catalogos de los campos select y multi_select pedian la lista mandando solo
lo recolectado en el formulario, nunca el metadata de la conversacion: la finca
elegida no viajaba, {finca_id} quedaba sin resolver en la URL y el ERP lo leia
como 0 —todas las fincas—. Elegir REPOSO y ver lotes de otras fincas, tal cual
lo reporto el usuario.
Ahora el metadata acompana lo recolectado en ambos puntos. Los fixtures delatan
la fuga —sin finca_id valido cuelan un lote ajeno— y dos casos nuevos verifican
que a los catalogos de ciclos y labores solo lleguen lotes de la finca elegida.
De paso el select simple gana resolverPorCampos en su clave, que el multi ya
tenia: un catalogo por campo puede depender de lo elegido antes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
6c524a39ed
commit
5ee2cfe2e6
@@ -102,6 +102,8 @@ capturas();
|
||||
echo "\nCiclos — apertura de varios lotes\n";
|
||||
|
||||
$ctx = contexto('57300CICLOS');
|
||||
$id = ConversationContext::getOrCreate(1, '57300CICLOS')['id'];
|
||||
ConversationContext::updateMetadata($id, ['finca' => ['finca_id' => '4', 'finca_label' => 'REPOSO']]);
|
||||
$r = NormalBot::processInteractive($co, $ctx, 'registrar_ciclo');
|
||||
check('pregunta el tipo de ciclo', str_contains(textoDe($r), 'Qué ciclo'));
|
||||
|
||||
@@ -113,6 +115,8 @@ $r = NormalBot::processInteractive($co, $ctx, $hoy);
|
||||
$filas = filasDe($r);
|
||||
check('lista de lotes con "Otro lote" y "Listo"',
|
||||
isset($filas['__todos']) && isset($filas['__listo']));
|
||||
check('solo lotes de la finca elegida, ninguno ajeno',
|
||||
!isset($filas['99']) && !str_contains(implode(' ', $filas), 'ROSA BLANCA'));
|
||||
|
||||
$r = NormalBot::processInteractive($co, $ctx, '1');
|
||||
check('marcar redibuja con el check', str_contains(filasDe($r)['1'] ?? '', '✅'));
|
||||
@@ -181,6 +185,7 @@ check('el catálogo viene filtrado por fase', filasDe($r), ['42' => 'TRACTORISTA
|
||||
|
||||
$r = NormalBot::processInteractive($co, $ctx, '42');
|
||||
check('los lotes son los de su finca', isset(filasDe($r)['4']) && isset(filasDe($r)['9']));
|
||||
check('sin lotes de otras fincas', !isset(filasDe($r)['99']));
|
||||
|
||||
$r = NormalBot::processInteractive($co, $ctx, '4');
|
||||
$r = NormalBot::processInteractive($co, $ctx, '412');
|
||||
|
||||
Reference in New Issue
Block a user