Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions partner_event/models/event_registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -22,13 +23,35 @@ class EventRegistration(models.Model):
index=True,
)

@api.model
def _prepare_partner(self, vals):
return {
"name": vals.get("name") or vals.get("email"),
"email": vals.get("email", False),
"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 (
Expand Down
13 changes: 12 additions & 1 deletion partner_event/views/event_registration_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,18 @@
<field name="inherit_id" ref="event.view_event_registration_form" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="attendee_partner_id" />
<label for="attendee_partner_id" class="o_form_label" />
<div class="o_row">
<field name="attendee_partner_id" />
<button
name="action_create_attendee_partner"
icon="fa-plus-square"
string="Create Partner"
type="object"
class="oe_edit_only btn-link"
invisible="attendee_partner_id or (not name and not email)"
/>
</div>
</field>
</field>
</record>
Expand Down
Loading