sale_order_line.py 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. # -*- coding: utf-8 -*-
  2. from odoo import models, fields, api
  3. class SaleOrderLine(models.Model):
  4. _inherit = 'sale.order.line'
  5. template_line_id = fields.Many2one(
  6. 'sale.order.template.line',
  7. string='Línea de Plantilla Origen',
  8. help="Línea de la plantilla de presupuesto que originó esta línea de pedido.",
  9. index=True,
  10. copy=False, # No copiar al duplicar el pedido
  11. ondelete='set null' # No eliminar la línea si se borra la de la plantilla
  12. )
  13. code = fields.Char(
  14. string='Código de Línea',
  15. compute='_compute_code',
  16. store=True, # Almacenar el valor en la base de datos
  17. help="Código único para la línea de pedido, basado en su origen (plantilla o línea de venta directa)."
  18. )
  19. @api.depends('template_line_id', 'product_id', 'product_id.type', 'template_line_id.project_id')
  20. def _compute_code(self):
  21. for line in self:
  22. if line.product_id.type == 'service':
  23. if line.template_line_id and line.template_line_id.project_id:
  24. line.code = f"P-{line.product_id.id}"
  25. else:
  26. line.code = f"SOL-{line.id}"
  27. else:
  28. line.code = False # O None, para que el campo quede vacío