diff --git a/lims_management/__manifest__.py b/lims_management/__manifest__.py index 91f86ee..3aecd8d 100644 --- a/lims_management/__manifest__.py +++ b/lims_management/__manifest__.py @@ -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': [ diff --git a/lims_management/models/__init__.py b/lims_management/models/__init__.py index a49eb6c..78eb9f2 100644 --- a/lims_management/models/__init__.py +++ b/lims_management/models/__init__.py @@ -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 diff --git a/lims_management/models/__pycache__/__init__.cpython-312.pyc b/lims_management/models/__pycache__/__init__.cpython-312.pyc index f3a9a8e..8a440fc 100644 Binary files a/lims_management/models/__pycache__/__init__.cpython-312.pyc and b/lims_management/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/lims_management/models/lims_test.py b/lims_management/models/lims_test.py index cdd8464..c047b98 100644 --- a/lims_management/models/lims_test.py +++ b/lims_management/models/lims_test.py @@ -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 diff --git a/lims_management/models/res_config_settings.py b/lims_management/models/res_config_settings.py new file mode 100644 index 0000000..ed0ddcb --- /dev/null +++ b/lims_management/models/res_config_settings.py @@ -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 + ) \ No newline at end of file diff --git a/lims_management/views/menus.xml b/lims_management/views/menus.xml index b2123d5..e8e789b 100644 --- a/lims_management/views/menus.xml +++ b/lims_management/views/menus.xml @@ -167,5 +167,12 @@ parent="lims_menu_config" action="action_lims_sample_type_catalog" sequence="20"/> + + + diff --git a/lims_management/views/res_config_settings_views.xml b/lims_management/views/res_config_settings_views.xml new file mode 100644 index 0000000..1e7e15a --- /dev/null +++ b/lims_management/views/res_config_settings_views.xml @@ -0,0 +1,37 @@ + + + + + + + res.config.settings.view.form.inherit.lims + res.config.settings + + + + + + + + + + + + + + + + + + + + Configuración + ir.actions.act_window + res.config.settings + form + inline + {'module' : 'lims_management'} + + + + \ No newline at end of file