from odoo import fields, models


class SaleOrder(models.Model):
    _inherit = 'sale.order'

    # =========================
    # OT RELACIONADA
    # =========================

    repair_order_id = fields.Many2one(
        'repair.order',
        string='Orden de Trabajo',
        readonly=True,
        copy=False,
        index=True,
    )

    # =========================
    # CREAR / ABRIR OT
    # =========================

    def action_create_ot(self):

        self.ensure_one()

        # SI YA EXISTE OT
        if self.repair_order_id:

            return {
                'type': 'ir.actions.act_window',
                'res_model': 'repair.order',
                'view_mode': 'form',
                'res_id': self.repair_order_id.id,
                'target': 'current',
            }

        # CREAR OT
        repair_order = self.env['repair.order'].create({

            'partner_id': self.partner_id.id,

            # RELACIÓN PRINCIPAL
            'sale_order_id': self.id,

            # HISTÓRICO / MANY2MANY
            'sale_order_ids': [(4, self.id)],

            'product_id': False,

        })

        # RELACIÓN INVERSA
        self.repair_order_id = repair_order.id

        return {
            'type': 'ir.actions.act_window',
            'res_model': 'repair.order',
            'view_mode': 'form',
            'res_id': repair_order.id,
            'target': 'current',
        }

    # =========================
    # CONFIRMAR PEDIDO
    # AUTO-LINK PICKINGS
    # =========================

    def action_confirm(self):

        result = super().action_confirm()

        for order in self:

            if order.repair_order_id:

                for picking in order.picking_ids:

                    picking.repair_order_id = (
                        order.repair_order_id.id
                    )

                    picking.tipo_albaran = 'repair'

        return result
