From 8f9e6582be13ea1833aa965b04ef69bac55968c7 Mon Sep 17 00:00:00 2001 From: Luis Ernesto Portillo Zaldivar Date: Mon, 14 Jul 2025 00:34:54 -0600 Subject: [PATCH] fix(#5): Corregir error de evaluacion de contexto en accion de ventana --- GEMINI.md | 28 ++++++++++++++++++++++++++++ documents/plans/ISSUE5_PLAN.md | 16 ++++++++-------- lims_management/views/menus.xml | 4 ++-- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/GEMINI.md b/GEMINI.md index 2fd3ea5..7a40a21 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -141,6 +141,10 @@ Busca errores en la salida. Si encuentras alguno, debes presentar un resumen del - **Permisos incorrectos:** Problemas de acceso a archivos o directorios. - **Datos incorrectos:** Errores en los archivos de datos de demostración o iniciales. +### Política de Persistencia de la Instancia + +Después de una instalación o actualización exitosa, la instancia de Odoo **debe permanecer activa** para permitir la validación manual por parte del usuario. **No se debe detener la instancia** (`docker-compose down -v`) hasta que el usuario confirme explícitamente que ha finalizado sus pruebas. + --- ## Convenciones de Desarrollo en Odoo 18 @@ -212,4 +216,28 @@ O, de forma equivalente: ```xml ``` + +### Uso de `ref()` en el Contexto de Acciones de Ventana + +La función `ref('module.xml_id')` se utiliza para obtener el ID de base de datos de un registro a partir de su ID XML. Sin embargo, esta función **solo existe en el servidor**. + +Cuando se define el `context` de una acción de ventana (`ir.actions.act_window`), este se evalúa en el cliente (navegador), donde `ref()` no está definido, causando un error `Name 'ref' is not defined`. + +Para solucionar esto, el `context` debe ser evaluado en el servidor utilizando el atributo `eval`. + +**Forma Incorrecta:** +```xml +{ + 'default_categ_id': ref('lims_management.product_category_analysis') +} +``` +Esto envía la cadena `"{'default_categ_id': ref(...)}"` al cliente, que no puede procesarla. + +**Forma Correcta:** +```xml + +``` +Al usar `eval`, Odoo ejecuta la expresión en el servidor, reemplaza `ref(...)` por el ID numérico correspondiente, y envía un diccionario JSON válido al cliente. ``` diff --git a/documents/plans/ISSUE5_PLAN.md b/documents/plans/ISSUE5_PLAN.md index 760dfab..181312a 100644 --- a/documents/plans/ISSUE5_PLAN.md +++ b/documents/plans/ISSUE5_PLAN.md @@ -29,14 +29,14 @@ - [x] Mostrar campos condicionalmente (`is_analysis = True`). - [x] Crear una vista de árbol independiente para los rangos de referencia (`lims.analysis.range`). - [x] En la vista de formulario del producto, referenciar la nueva vista de árbol para el campo `value_range_ids`. - - [ ] **(Nuevo)** Modificar las etiquetas en la acción de ventana para que se muestre "Análisis Clinico" en lugar de "Producto". + - [x] **(Nuevo)** Modificar las etiquetas en la acción de ventana para que se muestre "Análisis Clinico" en lugar de "Producto". - [x] **Crear el Menú "Catálogo de Análisis":** - [x] Modificar `lims_management/views/menus.xml`. - [x] Crear una nueva acción de ventana (`ir.actions.act_window`). - - [ ] **(Nuevo)** Definir valores por defecto en el `context` de la acción para: `type`, `purchase_ok`, `categ_id`. - - [ ] **(Nuevo)** Crear la categoría de producto "Análisis Clínico" mediante un archivo de datos. + - [x] **(Nuevo)** Definir valores por defecto en el `context` de la acción para: `type`, `purchase_ok`, `categ_id`. + - [x] **(Nuevo)** Crear la categoría de producto "Análisis Clínico" mediante un archivo de datos. - [x] Crear un `menuitem` para "Catálogo de Análisis". - [x] **Actualizar el Manifiesto (`__manifest__.py`):** @@ -49,11 +49,11 @@ - [x] Revisar logs de `odoo_init`. - [x] Verificar la funcionalidad en la interfaz de Odoo. -- [ ] **(Nuevo) Crear Datos de Demostración:** - - [ ] Crear el archivo `demo/analysis_demo.xml`. - - [ ] Definir registros de ejemplo para análisis clínicos (Hemograma, Perfil Lipídico, etc.). - - [ ] Asegurarse de que los datos de demostración incluyan la configuración de los rangos de referencia. - - [ ] Añadir el archivo `analysis_demo.xml` a la clave `demo` en `__manifest__.py`. +- [x] **(Nuevo) Crear Datos de Demostración:** + - [x] Crear el archivo `demo/analysis_demo.xml`. + - [x] Definir registros de ejemplo para análisis clínicos (Hemograma, Perfil Lipídico, etc.). + - [x] Asegurarse de que los datos de demostración incluyan la configuración de los rangos de referencia. + - [x] Añadir el archivo `analysis_demo.xml` a la clave `demo` en `__manifest__.py`. --- diff --git a/lims_management/views/menus.xml b/lims_management/views/menus.xml index 9f4aa35..e4dc041 100644 --- a/lims_management/views/menus.xml +++ b/lims_management/views/menus.xml @@ -66,12 +66,12 @@ product.template kanban,form [('is_analysis', '=', True)] - { +

Crea un nuevo análisis clínico