clinical_laboratory/lims_management/views/menus.xml
Luis Ernesto Portillo Zaldivar 0a7e3a1b12 fix: Corregir errores de compatibilidad con Odoo 18 y validación de resultados
- Cambiar view_mode de 'tree' a 'list' en menus.xml para action_lims_test
- Cambiar mode='tree' a 'list' en lims_test_views.xml para campo result_ids
- Corregir script create_demo_data.py:
  * Comentar campo inexistente 'lab_request_priority'
  * Cambiar 'observations' por 'note' (campo estándar)
  * Cambiar 'lab_sample_ids' por 'generated_sample_ids'
  * Ajustar índices de pacientes para usar María González (femenina) para embarazo
- Mejorar validación en lims_result.py:
  * Considerar False y 0.0 como equivalentes para campos numéricos
  * Solo requerir valores cuando la prueba no esté en estado 'draft'

Resuelve el error "View types not defined tree found in act_window action 457"
y permite confirmar órdenes con pruebas de selección correctamente.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 18:25:24 -06:00

276 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<!-- Menú Principal -->
<menuitem
id="lims_menu_root"
name="Laboratorio"
sequence="10"/>
<!-- Acción de Ventana para Pacientes -->
<record id="action_lims_patient" model="ir.actions.act_window">
<field name="name">Pacientes</field>
<field name="res_model">res.partner</field>
<field name="view_mode">list,form</field>
<field name="view_id" ref="lims_management.view_patient_tree"/>
<field name="domain">[('is_patient', '=', True)]</field>
<field name="context">{'default_is_patient': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo paciente
</p>
</field>
</record>
<!-- Submenú de Pacientes -->
<menuitem
id="lims_menu_patients"
name="Pacientes"
parent="lims_menu_root"
action="action_lims_patient"
sequence="20"/>
<!-- Acción de Ventana para Doctores -->
<record id="action_lims_doctor" model="ir.actions.act_window">
<field name="name">Doctores</field>
<field name="res_model">res.partner</field>
<field name="view_mode">list,form</field>
<field name="view_id" ref="lims_management.view_doctor_tree"/>
<field name="domain">[('is_doctor', '=', True)]</field>
<field name="context">{'default_is_doctor': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo doctor
</p>
</field>
</record>
<!-- Submenú de Doctores -->
<menuitem
id="lims_menu_doctors"
name="Doctores"
parent="lims_menu_root"
action="action_lims_doctor"
sequence="30"/>
<!-- Acción de Ventana para Solicitudes de Laboratorio -->
<record id="action_lims_lab_request" model="ir.actions.act_window">
<field name="name">Solicitudes de Laboratorio</field>
<field name="res_model">sale.order</field>
<field name="view_mode">list,form</field>
<field name="domain">[('is_lab_request', '=', True)]</field>
<field name="context">{'default_is_lab_request': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea una nueva solicitud de laboratorio
</p>
</field>
</record>
<!-- Menú para Solicitudes de Laboratorio -->
<menuitem
id="lims_menu_lab_requests"
name="Solicitudes de Laboratorio"
parent="lims_menu_root"
action="action_lims_lab_request"
sequence="15"/>
<!-- Acción de Ventana para Muestras de Laboratorio -->
<record id="action_lims_lab_sample" model="ir.actions.act_window">
<field name="name">Muestras de Laboratorio</field>
<field name="res_model">stock.lot</field>
<field name="view_mode">list,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'list', 'view_id': ref('view_lab_sample_list')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('view_lab_sample_form')})]"/>
<field name="domain">[('is_lab_sample', '=', True)]</field>
<field name="context" eval="{
'default_is_lab_sample': True
}"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea una nueva muestra de laboratorio
</p>
</field>
</record>
<!-- Menú para Muestras de Laboratorio -->
<menuitem
id="lims_menu_lab_samples"
name="Muestras"
parent="lims_menu_root"
action="action_lims_lab_sample"
sequence="16"/>
<!-- Submenú de Laboratorio -->
<menuitem
id="lims_menu_laboratory"
name="Laboratorio"
parent="lims_menu_root"
sequence="20"/>
<!-- Acción para lims.test -->
<record id="action_lims_test" model="ir.actions.act_window">
<field name="name">Pruebas de Laboratorio</field>
<field name="res_model">lims.test</field>
<field name="view_mode">list,kanban,form</field>
<field name="context">{'search_default_my_tests': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crear primera prueba de laboratorio
</p>
<p>
Aquí podrá gestionar las pruebas de laboratorio,
ingresar resultados y validarlos.
</p>
</field>
</record>
<!-- Menú para Pruebas -->
<menuitem id="menu_lims_tests"
name="Pruebas"
parent="lims_menu_laboratory"
action="action_lims_test"
sequence="10"/>
<!-- Menú para Ingreso de Resultados -->
<menuitem id="menu_lims_result_entry"
name="Ingreso de Resultados"
parent="lims_menu_laboratory"
action="action_lims_result_entry"
sequence="25"/>
<!-- Menú para Resultados -->
<menuitem id="menu_lims_result"
name="Resultados"
parent="lims_menu_laboratory"
action="action_lims_result"
sequence="30"/>
<!-- Submenú de Reportes -->
<menuitem
id="lims_menu_reports"
name="Reportes"
parent="lims_menu_root"
sequence="90"/>
<!-- Menú para Análisis de Resultados en Reportes -->
<menuitem id="menu_lims_result_analysis"
name="Análisis de Resultados"
parent="lims_menu_reports"
action="action_lims_result_analysis"
sequence="20"/>
<!-- Submenú de Configuración -->
<menuitem
id="lims_menu_config"
name="Configuración"
parent="lims_menu_root"
sequence="100"/>
<!-- Acción de Ventana para Catálogo de Análisis -->
<record id="action_lims_analysis_catalog" model="ir.actions.act_window">
<field name="name">Análisis Clínicos</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('is_analysis', '=', True)]</field>
<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 name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo análisis clínico
</p>
</field>
</record>
<!-- Menú para Catálogo de Análisis -->
<menuitem
id="lims_menu_analysis_catalog"
name="Análisis Clínicos"
parent="lims_menu_config"
action="action_lims_analysis_catalog"
sequence="10"/>
<!-- Acción de Ventana para Tipos de Muestra -->
<record id="action_lims_sample_type_catalog" model="ir.actions.act_window">
<field name="name">Tipos de Muestra</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('is_sample_type', '=', True)]</field>
<field name="context" eval="{
'default_is_sample_type': True,
'default_type': 'service'
}"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo tipo de muestra
</p>
</field>
</record>
<!-- Menú para Tipos de Muestra -->
<menuitem
id="lims_menu_sample_type_catalog"
name="Tipos de Muestra"
parent="lims_menu_config"
action="action_lims_sample_type_catalog"
sequence="20"/>
<!-- Acción para abrir configuración de laboratorio -->
<record id="action_lims_config_settings" model="ir.actions.act_window">
<field name="name">Configuración</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'lims_management'}</field>
</record>
<!-- Menú de Panel de Parámetros -->
<menuitem id="menu_lims_parameter_dashboard"
name="Panel de Parámetros"
parent="lims_menu_config"
action="action_lims_parameter_dashboard"
sequence="10"/>
<!-- Menú de Parámetros de Análisis -->
<menuitem id="menu_lims_analysis_parameter"
name="Parámetros de Análisis"
parent="lims_menu_config"
action="action_lims_analysis_parameter"
sequence="20"/>
<!-- Menú de Rangos de Referencia -->
<menuitem id="menu_lims_parameter_range"
name="Rangos de Referencia"
parent="lims_menu_config"
action="action_lims_parameter_range"
sequence="25"/>
<!-- Menú de Config. Parámetros-Análisis -->
<menuitem id="menu_product_template_parameter_config"
name="Config. Parámetros-Análisis"
parent="lims_menu_config"
action="action_product_template_parameter_config"
sequence="30"/>
<!-- Menú de Estadísticas -->
<menuitem id="menu_lims_parameter_statistics"
name="Estadísticas"
parent="lims_menu_config"
action="action_lims_parameter_statistics"
sequence="40"/>
<!-- Menú de configuración de ajustes -->
<menuitem id="menu_lims_config_settings"
name="Ajustes"
parent="lims_menu_config"
action="action_lims_config_settings"
sequence="100"/>
</data>
</odoo>