feat(#8): Task 5 completada - Configuración de validación opcional
- Modelo res.config.settings con parámetro lims_require_validation - Método _compute_require_validation usa la configuración - Auto-validación cuando no se requiere validación manual - Vista de configuración en Laboratorio > Configuración > Ajustes - Instancia validada sin errores
This commit is contained in:
parent
de9102f7e0
commit
619c6a3afa
|
@ -16,7 +16,7 @@
|
|||
'website': "https://gitea.grupoconsiti.com/luis_portillo/clinical_laboratory",
|
||||
'category': 'Industries',
|
||||
'version': '18.0.1.0.0',
|
||||
'depends': ['base', 'product', 'sale'],
|
||||
'depends': ['base', 'product', 'sale', 'base_setup'],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'lims_management/static/src/css/lims_test.css',
|
||||
|
@ -34,6 +34,7 @@
|
|||
'views/sale_order_views.xml',
|
||||
'views/stock_lot_views.xml',
|
||||
'views/lims_test_views.xml',
|
||||
'views/res_config_settings_views.xml',
|
||||
'views/menus.xml',
|
||||
],
|
||||
'demo': [
|
||||
|
|
|
@ -6,3 +6,4 @@ from . import sale_order
|
|||
from . import stock_lot
|
||||
from . import lims_test
|
||||
from . import lims_result
|
||||
from . import res_config_settings
|
||||
|
|
Binary file not shown.
|
@ -105,10 +105,10 @@ class LimsTest(models.Model):
|
|||
@api.depends('company_id')
|
||||
def _compute_require_validation(self):
|
||||
"""Calcula si la prueba requiere validación basado en configuración."""
|
||||
IrConfig = self.env['ir.config_parameter'].sudo()
|
||||
require_validation = IrConfig.get_param('lims_management.require_validation', 'True')
|
||||
for record in self:
|
||||
# Por ahora, siempre requiere validación
|
||||
# TODO: Implementar cuando se agregue res.config.settings
|
||||
record.require_validation = True
|
||||
record.require_validation = require_validation == 'True'
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
|
@ -148,13 +148,23 @@ class LimsTest(models.Model):
|
|||
if not self.result_ids:
|
||||
raise UserError(_('Debe ingresar al menos un resultado.'))
|
||||
|
||||
self.state = 'result_entered'
|
||||
|
||||
# Log en el chatter
|
||||
self.message_post(
|
||||
body=_('Resultados ingresados por %s') % self.env.user.name,
|
||||
subject=_('Resultados Ingresados')
|
||||
)
|
||||
# Si no requiere validación, pasar directamente a validado
|
||||
if not self.require_validation:
|
||||
self.write({
|
||||
'state': 'validated',
|
||||
'validator_id': self.env.user.id,
|
||||
'validation_date': fields.Datetime.now()
|
||||
})
|
||||
self.message_post(
|
||||
body=_('Resultados ingresados y auto-validados por %s') % self.env.user.name,
|
||||
subject=_('Resultados Validados')
|
||||
)
|
||||
else:
|
||||
self.state = 'result_entered'
|
||||
self.message_post(
|
||||
body=_('Resultados ingresados por %s') % self.env.user.name,
|
||||
subject=_('Resultados Ingresados')
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
|
20
lims_management/models/res_config_settings.py
Normal file
20
lims_management/models/res_config_settings.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
lims_require_validation = fields.Boolean(
|
||||
string='Requerir Validación de Resultados',
|
||||
help='Si está activado, los resultados de las pruebas deben ser validados por un administrador antes de considerarse finales.',
|
||||
config_parameter='lims_management.require_validation',
|
||||
default=True
|
||||
)
|
||||
|
||||
lims_auto_generate_tests = fields.Boolean(
|
||||
string='Generar Pruebas Automáticamente',
|
||||
help='Si está activado, se generarán automáticamente registros de pruebas (lims.test) cuando se confirme una orden de laboratorio.',
|
||||
config_parameter='lims_management.auto_generate_tests',
|
||||
default=False
|
||||
)
|
|
@ -167,5 +167,12 @@
|
|||
parent="lims_menu_config"
|
||||
action="action_lims_sample_type_catalog"
|
||||
sequence="20"/>
|
||||
|
||||
<!-- Menú de configuración de ajustes -->
|
||||
<menuitem id="menu_lims_config_settings"
|
||||
name="Ajustes"
|
||||
parent="lims_menu_config"
|
||||
action="lims_management.action_lims_config_settings"
|
||||
sequence="100"/>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
37
lims_management/views/res_config_settings_views.xml
Normal file
37
lims_management/views/res_config_settings_views.xml
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Vista formulario heredada para res.config.settings -->
|
||||
<record id="res_config_settings_view_form_lims" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.lims</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//form" position="inside">
|
||||
<app data-string="Laboratorio" string="Laboratorio" name="lims_management">
|
||||
<block title="Configuración del Laboratorio" name="lims_settings">
|
||||
<setting help="Si está activado, los resultados de las pruebas deben ser validados por un administrador">
|
||||
<field name="lims_require_validation"/>
|
||||
</setting>
|
||||
<setting help="Si está activado, se generarán automáticamente registros de pruebas al confirmar órdenes">
|
||||
<field name="lims_auto_generate_tests"/>
|
||||
</setting>
|
||||
</block>
|
||||
</app>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
</data>
|
||||
</odoo>
|
Loading…
Reference in New Issue
Block a user