# -*- 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!'),
    ]