From 5013dbeff64da2574ec82d162209c6627b5fc91e Mon Sep 17 00:00:00 2001 From: RisvanaCybro Date: Mon, 20 May 2024 15:57:13 +0530 Subject: [PATCH] May 20: [FIX] Bug Fixed 'venue_booking_management' --- venue_booking_management/__manifest__.py | 4 ++- .../controllers/portal.py | 9 +---- .../data/cancellation_email_template_data.xml | 29 ++++++++++++++++ .../data/confirmation_email_template_data.xml | 3 +- venue_booking_management/doc/RELEASE_NOTES.md | 6 +++- .../models/venue_booking.py | 34 ++++++++++++++++--- .../security/ir.model.access.csv | 12 ++++--- .../security/venue_booking_secruity.xml | 15 ++++++-- 8 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 venue_booking_management/data/cancellation_email_template_data.xml diff --git a/venue_booking_management/__manifest__.py b/venue_booking_management/__manifest__.py index 190a65125..c01a3e1c5 100644 --- a/venue_booking_management/__manifest__.py +++ b/venue_booking_management/__manifest__.py @@ -21,7 +21,7 @@ ############################################################################### { 'name': 'Venue / Event Booking Management', - 'version': '17.0.1.0.1', + 'version': '17.0.1.0.2', 'summary': 'Core Module for Managing Different Types of ' 'Venue/ Event Booking.', 'description': 'Core Module for Managing Different Types of ' @@ -36,8 +36,10 @@ 'website': "https://www.cybrosys.com", 'data': [ 'security/venue_booking_management_groups.xml', + 'security/venue_booking_secruity.xml', 'security/ir.model.access.csv', 'data/venue_type_data.xml', + 'data/cancellation_email_template_data.xml', 'data/confirmation_email_template_data.xml', 'views/venue_booking_views.xml', 'views/venue_type_views.xml', diff --git a/venue_booking_management/controllers/portal.py b/venue_booking_management/controllers/portal.py index 6bd02fe13..f46b8fcd8 100644 --- a/venue_booking_management/controllers/portal.py +++ b/venue_booking_management/controllers/portal.py @@ -78,10 +78,7 @@ class CustomerPortal(portal.CustomerPortal): values event, page, pager, filter, sort, and search""" values = self._prepare_portal_layout_values() Venue = request.env['venue.booking'] - domain = expression.AND([ - domain or [], - self._get_booking_domain(), - ]) + domain = [] searchbar_sortings = self._get_venue_booking_searchbar_sortings() # default sort by order if not sortby: @@ -136,10 +133,6 @@ class CustomerPortal(portal.CustomerPortal): 'my_venue_booking_history', False, **kwargs) - def _get_booking_domain(self): - """Returns the booking that are in stage 'cancel' and 'draft'""" - return [('state', 'not in', ('cancel', 'closed'))] - def _get_venue_booking_searchbar_sortings(self): """Sort the booking based on the date and name""" return { diff --git a/venue_booking_management/data/cancellation_email_template_data.xml b/venue_booking_management/data/cancellation_email_template_data.xml new file mode 100644 index 000000000..168018914 --- /dev/null +++ b/venue_booking_management/data/cancellation_email_template_data.xml @@ -0,0 +1,29 @@ + + + + + + Cancelled Venue Booking + Venue booking cancelled: The Venue Booking for + {{ object.venue_id.name }} + + + {{ (object.env.user.login) }} + + + + Dear customer ,

+ Your booking for the venue + on has been cancelled. +

+ Thank You +

+ ]]> +
+ {{ object.partner_id.lang or '' }} + +
+
+
diff --git a/venue_booking_management/data/confirmation_email_template_data.xml b/venue_booking_management/data/confirmation_email_template_data.xml index b24100844..574f29d39 100644 --- a/venue_booking_management/data/confirmation_email_template_data.xml +++ b/venue_booking_management/data/confirmation_email_template_data.xml @@ -4,8 +4,7 @@ Confirmed Venue Booking - Venue booking: Received the Venue Booking for - {{ object.venue_id.name }} + Venue booking: Received the Venue Booking for {{ object.venue_id.name }} diff --git a/venue_booking_management/doc/RELEASE_NOTES.md b/venue_booking_management/doc/RELEASE_NOTES.md index 9075fb32d..33dde6a7c 100644 --- a/venue_booking_management/doc/RELEASE_NOTES.md +++ b/venue_booking_management/doc/RELEASE_NOTES.md @@ -7,5 +7,9 @@ #### 06.05.2024 #### Version 17.0.1.0.1 ##### UPDT -- Bug Fix-Revised the validations for venue booking. +- Bug Fix-Revised the validations for venue booking +#### 20.05.2024 +#### Version 17.0.1.0.2 +##### UPDT +- Bug Fix-Updated the workflow of venue booking and cancellation diff --git a/venue_booking_management/models/venue_booking.py b/venue_booking_management/models/venue_booking.py index 8b8b055ad..7e4a4f571 100644 --- a/venue_booking_management/models/venue_booking.py +++ b/venue_booking_management/models/venue_booking.py @@ -161,7 +161,6 @@ class VenueBooking(models.Model): ('state', 'in', ['confirm', 'invoice']) ]) if booking: - print(booking.state) raise ValidationError( "Venue is not available for the selected time range.") @@ -172,7 +171,7 @@ class VenueBooking(models.Model): for record in self: if record.start_date and record.end_date: delta = record.end_date - record.start_date - record.days_difference = delta.days + record.days_difference = delta.days + 1 else: record.days_difference = 0 @@ -235,8 +234,17 @@ class VenueBooking(models.Model): if bookings: raise ValidationError( "Booking dates overlap with existing bookings.") - else: - self.state = "confirm" + draft_bookings = self.env['venue.booking'].search([ + ('venue_id', '=', booking.venue_id.id), + ('start_date', '<', booking.end_date), + ('end_date', '>', booking.start_date), + ('state', '=', 'draft'), + ('id', '!=', booking.id), # Exclude the current record itself + ]) + if draft_bookings: + for draft in draft_bookings: + draft.action_booking_cancel() + self.state = "confirm" def action_reset_to_draft(self): """Button action to reset""" @@ -346,7 +354,23 @@ class VenueBooking(models.Model): search_count([('invoice_origin', '=', self.ref)]) def action_booking_cancel(self): - """Button action to move the cancel state""" + """Button action to move the cancel state and send email""" + template = self.env.ref( + 'venue_booking_management.mail_template_cancel_venue_booking').sudo() + template.send_mail(self._origin.id, force_send=True, + email_values={ + 'email_to': self.partner_id.email}) + for rec in self: + body = Markup( + "

%(greeting)s

%(content)s

%(conclude)s

") % { + 'greeting': _("Dear %s", rec.partner_id.name), + 'content': _( + "Your booking for the venue %s has been cancelled. Please log in to " + "your portal for further details.", + rec.venue_id.name), + 'conclude': _('Thank You'), + } + rec.message_post(body=body) self.state = "cancel" def action_booking_close(self): diff --git a/venue_booking_management/security/ir.model.access.csv b/venue_booking_management/security/ir.model.access.csv index 9fc24ff71..6386522e1 100644 --- a/venue_booking_management/security/ir.model.access.csv +++ b/venue_booking_management/security/ir.model.access.csv @@ -1,10 +1,14 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_venue_type_manager,access.venue.type.manager,model_venue_type,base.group_user,1,1,1,1 -access_venue_booking,access.venue.booking,model_venue_booking,base.group_user,1,1,1,1 +access_venue_type_user,access.venue.type.user,model_venue_type,base.group_user,1,1,1,1 +access_venue_type_portal,access.venue.type.portal,model_venue_type,base.group_portal,1,1,1,1 +access_venue_booking_user,access.venue.booking.user,model_venue_booking,base.group_user,1,1,1,1 +access_venue_booking_portal,access.venue.booking.portal,model_venue_booking,base.group_portal,1,1,1,1 access_amenities,access.amenities,model_amenities,base.group_user,1,1,1,1 -access_venue,access.venue,model_venue,base.group_user,1,1,1,1 +access_venue_user,access.venue.user,model_venue,base.group_portal,1,1,1,1 +access_venue_portal,access.venue.portal,model_venue,base.group_user,1,1,1,1 access_venue_lines,access.venue.lines,model_venue_lines,base.group_user,1,1,1,1 -access_venue_booking_line,access.venue.booking.line,model_venue_booking_line,base.group_user,1,1,1,1 +access_venue_booking_line_user,access.venue.booking.line.user,model_venue_booking_line,base.group_user,1,1,1,1 +access_venue_booking_line_portal,access.venue.booking.line.portal,model_venue_booking_line,base.group_portal,1,1,1,1 access_check_venue_availability,access.check.venue.availability,model_check_venue_availability,base.group_user,1,1,1,1 access_venue_booking_report,access.venue.booking.report,model_venue_booking_report,base.group_user,1,1,1,1 access_venue_booking_analysis,access.venue.booking.analysis,model_venue_booking_analysis,base.group_user,1,1,1,1 diff --git a/venue_booking_management/security/venue_booking_secruity.xml b/venue_booking_management/security/venue_booking_secruity.xml index 80211c1de..9121b6339 100644 --- a/venue_booking_management/security/venue_booking_secruity.xml +++ b/venue_booking_management/security/venue_booking_secruity.xml @@ -4,9 +4,9 @@ View Own Docs - ['|',('user_id', '=', - user.id),('create_uid', - '=', user.id)] + ['|',('partner_id', '=', + user.partner_id.commercial_partner_id.id),('create_uid', + '=', user.partner_id.commercial_partner_id.id)] @@ -19,4 +19,13 @@ + + + Portal Personal Venue Bookings + + ['|',('partner_id', '=', + user.partner_id.commercial_partner_id.id),('create_uid', + '=', user.partner_id.commercial_partner_id.id)] + +