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
+16
-2
@@ -1447,7 +1447,13 @@ class NormalBot
|
||||
self::resolverPorCampos($claveSrc,
|
||||
$cap['collected'] ?? []),
|
||||
$company,
|
||||
['__ep_vars_combined' => $cap['collected'] ?? []],
|
||||
// La finca elegida vive en el metadata de la conversación, no en
|
||||
// lo recolectado: sin esto {finca_id} quedaba sin resolver y el
|
||||
// ERP devolvía los lotes de todas las fincas.
|
||||
array_merge(
|
||||
$ctxId > 0 ? ConversationContext::getMetadata($ctxId) : [],
|
||||
['__ep_vars_combined' => $cap['collected'] ?? []]
|
||||
),
|
||||
$to
|
||||
);
|
||||
if (empty($items)) {
|
||||
@@ -1479,7 +1485,15 @@ class NormalBot
|
||||
if ($type === 'select') {
|
||||
$vf = $field['value_field'] ?? 'id';
|
||||
$lf = $field['label_field'] ?? 'label';
|
||||
$items = self::fetchDynamicList($field['source_endpoint_key'] ?? '', $company, ['__ep_vars_combined' => $cap['collected'] ?? []], $to);
|
||||
$items = self::fetchDynamicList(
|
||||
self::resolverPorCampos($field['source_endpoint_key'] ?? '', $cap['collected'] ?? []),
|
||||
$company,
|
||||
array_merge(
|
||||
$ctxId > 0 ? ConversationContext::getMetadata($ctxId) : [],
|
||||
['__ep_vars_combined' => $cap['collected'] ?? []]
|
||||
),
|
||||
$to
|
||||
);
|
||||
|
||||
|
||||
if (!empty($items)) {
|
||||
|
||||
Reference in New Issue
Block a user