# -*- coding: utf-8 -*- from odoo import models, fields, api class SaleOrderLine(models.Model): _inherit = 'sale.order.line' template_line_id = fields.Many2one( 'sale.order.template.line', string='Línea de Plantilla Origen', help="Línea de la plantilla de presupuesto que originó esta línea de pedido.", index=True, copy=False, # No copiar al duplicar el pedido ondelete='set null' # No eliminar la línea si se borra la de la plantilla ) code = fields.Char( string='Código de Línea', compute='_compute_code', store=True, # Almacenar el valor en la base de datos help="Código único para la línea de pedido, basado en su origen (plantilla o línea de venta directa)." ) @api.depends('template_line_id', 'product_id', 'product_id.type', 'template_line_id.project_id') def _compute_code(self): for line in self: if line.product_id.type == 'service': if line.template_line_id and line.template_line_id.project_id: line.code = f"P-{line.product_id.id}" else: line.code = f"SOL-{line.id}" else: line.code = False # O None, para que el campo quede vacío