You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
2.0 KiB

  1. from odoo import api, fields, models, _
  2. class ResPartner(models.Model):
  3. _inherit = "res.partner"
  4. legal_name = fields.Char()
  5. @api.onchange('name')
  6. def onchange_legal_name(self):
  7. if self.legal_name == '':
  8. self.legal_name = self.name
  9. @api.multi
  10. def name_get(self):
  11. res = []
  12. for partner in self:
  13. name_legal = partner._get_name()
  14. res.append((partner.id, name_legal))
  15. return res
  16. def _get_name(self):
  17. partner = self
  18. name = partner.legal_name or ''
  19. if partner.company_name or partner.parent_id:
  20. if not name and partner.type in ['invoice', 'delivery', 'other']:
  21. name = \
  22. dict(self.fields_get(['type'])['type']
  23. ['selection'])[partner.type]
  24. if not partner.is_company:
  25. name = \
  26. "%s, %s" % (partner.commercial_company_name or
  27. partner.parent_id.legal_name, name)
  28. if self._context.get('show_address_only'):
  29. name = partner._display_address(without_company=True)
  30. if self._context.get('show_address'):
  31. name = name + "\n" + partner._display_address(without_company=True)
  32. name = name.replace('\n\n', '\n')
  33. name = name.replace('\n\n', '\n')
  34. if self._context.get('address_inline'):
  35. name = name.replace('\n', ', ')
  36. if self._context.get('show_email') and partner.email:
  37. name = "%s <%s>" % (name, partner.email)
  38. if self._context.get('html_format'):
  39. name = name.replace('\n', '<br/>')
  40. if self._context.get('show_vat') and partner.vat:
  41. name = "%s - %s" % (name, partner.vat)
  42. return name
  43. @api.depends('is_company', 'legal_name', 'parent_id.name',
  44. 'type', 'company_name')
  45. def _compute_display_name(self):
  46. for partner in self:
  47. partner.display_name = partner.legal_name