fix(#67): Corregir widget de selección mostrando 'Sin Opciones' #68

Closed
luis_portillo wants to merge 6 commits from bugfix/67-selection-widget-empty into dev

Resumen

Este PR corrige el problema del widget de selección que mostraba 'Sin Opciones' en los resultados de laboratorio.

Problema

El campo value_selection estaba definido como Char pero se intentaba usar con widget='selection' en las vistas. En Odoo, el widget selection solo funciona con campos de tipo Selection, no con campos Char.

Solución

  1. Nuevo campo Selection: Se agregó un campo value_selection_field de tipo Selection con opciones dinámicas basadas en el parámetro.

  2. Método de selección dinámica: El campo utiliza el método _get_selection_options() que obtiene las opciones del parámetro asociado.

  3. Sincronización de campos: Se agregó un método @api.onchange para sincronizar el nuevo campo con el campo char existente para mantener compatibilidad.

  4. Actualización de vistas: Se actualizaron las vistas para usar el nuevo campo value_selection_field en lugar del campo char.

  5. Script de migración: Se incluyó un script de migración para copiar los valores existentes del campo char al nuevo campo selection.

Cambios realizados

  • Modificación del modelo lims.result para agregar el nuevo campo
  • Actualización de las vistas de resultado individual y entrada masiva
  • Script de migración en migrations/18.0.1.0.1/post-migrate.py
  • Incremento de versión del módulo a 18.0.1.0.1

Testing

  • La instancia se reinició correctamente sin errores
  • El widget de selección ahora debería mostrar las opciones configuradas en el parámetro
  • Los valores existentes se migrarán automáticamente

Closes #67

## Resumen Este PR corrige el problema del widget de selección que mostraba 'Sin Opciones' en los resultados de laboratorio. ## Problema El campo value_selection estaba definido como Char pero se intentaba usar con widget='selection' en las vistas. En Odoo, el widget selection solo funciona con campos de tipo Selection, no con campos Char. ## Solución 1. **Nuevo campo Selection**: Se agregó un campo value_selection_field de tipo Selection con opciones dinámicas basadas en el parámetro. 2. **Método de selección dinámica**: El campo utiliza el método _get_selection_options() que obtiene las opciones del parámetro asociado. 3. **Sincronización de campos**: Se agregó un método @api.onchange para sincronizar el nuevo campo con el campo char existente para mantener compatibilidad. 4. **Actualización de vistas**: Se actualizaron las vistas para usar el nuevo campo value_selection_field en lugar del campo char. 5. **Script de migración**: Se incluyó un script de migración para copiar los valores existentes del campo char al nuevo campo selection. ## Cambios realizados - Modificación del modelo lims.result para agregar el nuevo campo - Actualización de las vistas de resultado individual y entrada masiva - Script de migración en migrations/18.0.1.0.1/post-migrate.py - Incremento de versión del módulo a 18.0.1.0.1 ## Testing - La instancia se reinició correctamente sin errores - El widget de selección ahora debería mostrar las opciones configuradas en el parámetro - Los valores existentes se migrarán automáticamente Closes #67
luis_portillo added 5 commits 2025-07-17 01:49:09 +00:00
- Agregar campo computed selection_options_display que muestra las opciones disponibles
- Implementar método _compute_selection_options_display que obtiene opciones del parámetro
- Actualizar vista para mostrar las opciones disponibles debajo del campo de entrada
- Remover widget selection que no funciona con campos Char dinámicos
- Agregar placeholder descriptivo para guiar al usuario

El usuario ahora puede ver las opciones válidas (ej: "Negativo  < /dev/null |  Positivo")
y escribir el valor correcto en el campo de texto.

Scripts de prueba agregados para validar la solución.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Modificar método action_cancel para manejar múltiples registros
- Usar bucle for para procesar cada registro individualmente
- Mantener la funcionalidad de registro de actividad para cada muestra cancelada
- Cambiar campo value_selection de Char a Selection con opciones dinámicas
- Agregar método _get_selection_options() que obtiene las opciones del parámetro
- Remover campo selection_options_display de la vista ya que el widget selection muestra las opciones
- El widget selection ahora muestra solo las opciones válidas definidas en el parámetro
- Mantener campo value_selection como Char para flexibilidad
- Agregar validación en constrains para verificar valores válidos
- Mostrar opciones disponibles debajo del campo para guiar al usuario
- El campo ahora valida que solo se ingresen valores de la lista definida
- Add new Selection field 'value_selection_field' with dynamic options
- Update views to use the new field instead of char field with selection widget
- Add migration script to copy existing data from old field to new field
- Update field synchronization and validation logic
- Increment module version to trigger migration

The issue was that Odoo doesn't support using widget='selection' on Char fields.
The solution implements a proper Selection field with dynamic options based on
the parameter configuration.
luis_portillo added 1 commit 2025-07-17 01:57:44 +00:00
- Mantener campo value_selection como Char con validación
- Remover campos y métodos no utilizados (value_selection_field, _get_selection_values)
- Mostrar opciones disponibles debajo del campo para guiar al usuario
- La validación se mantiene en el constraint para asegurar valores válidos
luis_portillo closed this pull request 2025-07-17 02:22:06 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Grupo-Consiti/clinical_laboratory#68
No description provided.