diff --git a/partner_event/models/event_registration.py b/partner_event/models/event_registration.py index ef4fc855b..b0861f534 100644 --- a/partner_event/models/event_registration.py +++ b/partner_event/models/event_registration.py @@ -8,6 +8,7 @@ # Copyright 2024 Tecnativa - Juan José Seguí # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models +from odoo.exceptions import UserError class EventRegistration(models.Model): @@ -22,6 +23,7 @@ class EventRegistration(models.Model): index=True, ) + @api.model def _prepare_partner(self, vals): return { "name": vals.get("name") or vals.get("email"), @@ -29,6 +31,27 @@ def _prepare_partner(self, vals): "phone": vals.get("phone", False), } + def action_create_attendee_partner(self): + self.ensure_one() + if self.attendee_partner_id: + return True + if not self.name and not self.email: + raise UserError( + self.env._( + "Set at least the attendee name or email before creating a partner." + ) + ) + keys = self._prepare_partner({}).keys() + attendee_partner = self.env["res.partner"].create( + self._prepare_partner({field_name: self[field_name] for field_name in keys}) + ) + vals = {"attendee_partner_id": attendee_partner.id} + if not self.partner_id: + vals["partner_id"] = attendee_partner.id + self.write(vals) + return True + + @api.model def _update_attendee_partner_id(self, vals): # Don't update if doing a partner merging if ( diff --git a/partner_event/views/event_registration_view.xml b/partner_event/views/event_registration_view.xml index 80fb9accf..5f2510b69 100644 --- a/partner_event/views/event_registration_view.xml +++ b/partner_event/views/event_registration_view.xml @@ -8,7 +8,18 @@ - +