# -*- coding: utf-8 -*- from odoo import models, fields, api class LimsRejectionReason(models.Model): _name = 'lims.rejection.reason' _description = 'Motivo de Rechazo de Muestra' _order = 'sequence, name' name = fields.Char( string='Motivo', required=True ) code = fields.Char( string='Código', required=True, help="Código único para identificar el motivo" ) description = fields.Text( string='Descripción', help="Descripción detallada del motivo de rechazo" ) active = fields.Boolean( string='Activo', default=True ) sequence = fields.Integer( string='Secuencia', default=10, help="Orden de aparición en las listas" ) requires_new_sample = fields.Boolean( string='Requiere Nueva Muestra', default=True, help="Indica si este tipo de rechazo requiere solicitar una nueva muestra" ) severity = fields.Selection([ ('low', 'Baja'), ('medium', 'Media'), ('high', 'Alta'), ('critical', 'Crítica') ], string='Severidad', default='medium', help="Severidad del problema que causa el rechazo") # Statistics rejection_count = fields.Integer( string='Cantidad de Rechazos', compute='_compute_rejection_count', help="Número de muestras rechazadas con este motivo" ) @api.depends('name') def _compute_rejection_count(self): for record in self: record.rejection_count = self.env['stock.lot'].search_count([ ('rejection_reason_id', '=', record.id), ('state', '=', 'rejected') ]) _sql_constraints = [ ('code_uniq', 'unique (code)', 'El código del motivo de rechazo debe ser único!'), ]