| 1234567891011121314151617181920212223242526272829303132 |
- # -*- 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
|