from odoo import api, fields, models


class AccountAnalyticLine(models.Model):
    """Línea de timesheet / cuenta analítica.

    Añadimos un FK directo a `repair.order` para que el operario pueda
    apuntar horas contra una OT directamente, sin necesidad de conocer
    ni manipular la cuenta analítica de la OT.
    """
    _inherit = 'account.analytic.line'

    repair_order_id = fields.Many2one(
        'repair.order',
        string='Orden de Trabajo',
        index=True,
        ondelete='set null',
    )

    @api.model_create_multi
    def create(self, vals_list):
        # Si la línea viene con repair_order_id pero sin account_id, lo
        # rellenamos con la cuenta analítica de la OT (vía sudo para no
        # exigir al operario permisos de contabilidad analítica).
        for vals in vals_list:
            if vals.get('repair_order_id') and not vals.get('account_id'):
                ot = self.env['repair.order'].sudo().browse(vals['repair_order_id'])
                if ot.analytic_account_id:
                    vals['account_id'] = ot.analytic_account_id.id
        return super().create(vals_list)
