From e5eda97b718fba39fe8c243cdfa86999aef05934 Mon Sep 17 00:00:00 2001 From: sris-odoo Date: Wed, 16 Apr 2025 11:24:58 +0530 Subject: [PATCH] [ADD] event: Limit max ticket per registration feature --- event_max_ticket_per_registration/__init__.py | 1 + .../__manifest__.py | 17 ++++++++ .../models/__init__.py | 1 + .../models/event_event.py | 23 +++++++++++ .../views/event_event_views.xml | 17 ++++++++ .../event_templates_page_registration.xml | 39 +++++++++++++++++++ 6 files changed, 98 insertions(+) create mode 100644 event_max_ticket_per_registration/__init__.py create mode 100644 event_max_ticket_per_registration/__manifest__.py create mode 100644 event_max_ticket_per_registration/models/__init__.py create mode 100644 event_max_ticket_per_registration/models/event_event.py create mode 100644 event_max_ticket_per_registration/views/event_event_views.xml create mode 100644 event_max_ticket_per_registration/views/event_templates_page_registration.xml diff --git a/event_max_ticket_per_registration/__init__.py b/event_max_ticket_per_registration/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/event_max_ticket_per_registration/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/event_max_ticket_per_registration/__manifest__.py b/event_max_ticket_per_registration/__manifest__.py new file mode 100644 index 00000000000..e94debc352f --- /dev/null +++ b/event_max_ticket_per_registration/__manifest__.py @@ -0,0 +1,17 @@ +{ + 'name': "Event Limit Max tickets", + 'version': '1.0', + 'depends': ['website_event'], + 'author': "Rishav Shah", + 'category': 'events', + 'description': """ + Limit maximum number of tickets per registration + """, + 'installable': True, + 'application': True, + 'license': 'LGPL-3', + 'data': [ + 'views/event_event_views.xml', + 'views/event_templates_page_registration.xml', + ], +} diff --git a/event_max_ticket_per_registration/models/__init__.py b/event_max_ticket_per_registration/models/__init__.py new file mode 100644 index 00000000000..b6bc3899716 --- /dev/null +++ b/event_max_ticket_per_registration/models/__init__.py @@ -0,0 +1 @@ +from . import event_event diff --git a/event_max_ticket_per_registration/models/event_event.py b/event_max_ticket_per_registration/models/event_event.py new file mode 100644 index 00000000000..08162420323 --- /dev/null +++ b/event_max_ticket_per_registration/models/event_event.py @@ -0,0 +1,23 @@ +from odoo import api, models, fields +from odoo.exceptions import ValidationError + + +class EventType(models.Model): + _inherit = "event.event" + + has_ticket_limitation = fields.Boolean(string="Limit Tickets per Rgistration", default=False) + ticket_max_per_registration = fields.Integer(compute='_compute_tickets_max_per_registration', + readonly=False, store=True, default=0, + help="It will select this default maximum value when you choose number of tickets in this event registration") + + @api.depends('has_ticket_limitation') + def _compute_tickets_max_per_registration(self): + for record in self: + if not record.has_ticket_limitation: + record.ticket_max_per_registration = 0 + + @api.constrains("ticket_max_per_registration") + def _set_ticket_max_per_registration(self): + for record in self: + if record.has_ticket_limitation and record.ticket_max_per_registration == 0: + raise ValidationError("Limit Tickets should be greater than 0") diff --git a/event_max_ticket_per_registration/views/event_event_views.xml b/event_max_ticket_per_registration/views/event_event_views.xml new file mode 100644 index 00000000000..fd42dbb16d9 --- /dev/null +++ b/event_max_ticket_per_registration/views/event_event_views.xml @@ -0,0 +1,17 @@ + + + + event.event.form.inherit + event.event + + + + + + + diff --git a/event_max_ticket_per_registration/views/event_templates_page_registration.xml b/event_max_ticket_per_registration/views/event_templates_page_registration.xml new file mode 100644 index 00000000000..c299766649a --- /dev/null +++ b/event_max_ticket_per_registration/views/event_templates_page_registration.xml @@ -0,0 +1,39 @@ + + + +