From a69f4d95842ee50595ff429e5263c62a10f739fe Mon Sep 17 00:00:00 2001 From: Franco Leyes Date: Tue, 27 May 2025 20:08:00 +0000 Subject: [PATCH] [IMP] academic_split_name: update firstname and lastname fields to include compute methods --- academic_split_name/__manifest__.py | 2 +- academic_split_name/models/res_partner.py | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/academic_split_name/__manifest__.py b/academic_split_name/__manifest__.py index 639c0b49..5a9a8a93 100644 --- a/academic_split_name/__manifest__.py +++ b/academic_split_name/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Academic Split Name", - "version": "18.0.1.0.0", + "version": "18.0.1.1.0", "sequence": 14, "summary": "", "author": "ADHOC SA", diff --git a/academic_split_name/models/res_partner.py b/academic_split_name/models/res_partner.py index d3058410..e328323c 100644 --- a/academic_split_name/models/res_partner.py +++ b/academic_split_name/models/res_partner.py @@ -13,9 +13,9 @@ class ResPartner(models.Model): store=True, readonly=False, ) - firstname = fields.Char("Primer Nombre") + firstname = fields.Char("Primer Nombre", compute="_compute_firstname", store=True, readonly=False) middlename = fields.Char("Segundo Nombre") - lastname = fields.Char("Primer Apellido") + lastname = fields.Char("Primer Apellido", compute="_compute_lastname", store=True, readonly=False) second_lastname = fields.Char("Segundo Apellido") @api.depends("firstname", "lastname", "second_lastname", "middlename") @@ -23,3 +23,17 @@ def _compute_name(self): for rec in self.filtered(lambda x: x.partner_type in ("student", "family", "parent")): name_parts = filter(None, [rec.firstname, rec.middlename, rec.lastname, rec.second_lastname]) rec.name = " ".join(name_parts) + + @api.depends("name") + def _compute_firstname(self): + for rec in self.filtered(lambda x: x.partner_type in ("student", "parent")): + parts = (rec.name or "").strip().split() + rec.firstname = parts[0] if parts else False + + @api.depends("name") + def _compute_lastname(self): + for rec in self.filtered(lambda x: x.partner_type == "family"): + rec.lastname = rec.name or False + for rec in self.filtered(lambda x: x.partner_type in ("student", "parent")): + parts = (rec.name or "").strip().split() + rec.lastname = " ".join(parts[1:]) if len(parts) > 1 else False