fix(#5): Corregir error de evaluacion de contexto en accion de ventana
This commit is contained in:
parent
b78e71ac5c
commit
8f9e6582be
28
GEMINI.md
28
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
|
||||
<field name="special_field" invisible="is_special == False"/>
|
||||
```
|
||||
|
||||
### 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
|
||||
<field name="context">{
|
||||
'default_categ_id': ref('lims_management.product_category_analysis')
|
||||
}</field>
|
||||
```
|
||||
Esto envía la cadena `"{'default_categ_id': ref(...)}"` al cliente, que no puede procesarla.
|
||||
|
||||
**Forma Correcta:**
|
||||
```xml
|
||||
<field name="context" eval="{
|
||||
'default_categ_id': ref('lims_management.product_category_analysis')
|
||||
}"/>
|
||||
```
|
||||
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.
|
||||
```
|
||||
|
|
|
@ -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`.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -66,12 +66,12 @@
|
|||
<field name="res_model">product.template</field>
|
||||
<field name="view_mode">kanban,form</field>
|
||||
<field name="domain">[('is_analysis', '=', True)]</field>
|
||||
<field name="context">{
|
||||
<field name="context" eval="{
|
||||
'default_is_analysis': True,
|
||||
'default_type': 'service',
|
||||
'default_purchase_ok': False,
|
||||
'default_categ_id': ref('lims_management.product_category_analysis')
|
||||
}</field>
|
||||
}"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Crea un nuevo análisis clínico
|
||||
|
|
Loading…
Reference in New Issue
Block a user