Browse Source

May 20: [FIX] Bug Fixed 'venue_booking_management'

pull/317/head
RisvanaCybro 1 year ago
parent
commit
5013dbeff6
  1. 4
      venue_booking_management/__manifest__.py
  2. 9
      venue_booking_management/controllers/portal.py
  3. 29
      venue_booking_management/data/cancellation_email_template_data.xml
  4. 3
      venue_booking_management/data/confirmation_email_template_data.xml
  5. 6
      venue_booking_management/doc/RELEASE_NOTES.md
  6. 34
      venue_booking_management/models/venue_booking.py
  7. 12
      venue_booking_management/security/ir.model.access.csv
  8. 15
      venue_booking_management/security/venue_booking_secruity.xml

4
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',

9
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 {

29
venue_booking_management/data/cancellation_email_template_data.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Email to notify the Customer to cancel the Venue Booking -->
<record id="mail_template_cancel_venue_booking" model="mail.template">
<field name="name">Cancelled Venue Booking</field>
<field name="subject">Venue booking cancelled: The Venue Booking for
{{ object.venue_id.name }}
</field>
<field name="model_id"
ref="venue_booking_management.model_venue_booking"/>
<field name="email_from">{{ (object.env.user.login) }}
</field>
<field name="body_html">
<![CDATA[
<p>
Dear customer <t t-out="object.partner_id.name"/>,<br/><br/>
Your booking for the venue
<strong><t t-out="object.venue_id.name"/></strong> on has been cancelled.
<br/><br/>
Thank You
</p>
]]>
</field>
<field name="lang">{{ object.partner_id.lang or '' }}</field>
<field name="auto_delete" eval="False"/>
</record>
</data>
</odoo>

3
venue_booking_management/data/confirmation_email_template_data.xml

@ -4,8 +4,7 @@
<!-- Email to notify the Customer to Confirm the Venue Booking -->
<record id="mail_template_notify_venue_booking" model="mail.template">
<field name="name">Confirmed Venue Booking</field>
<field name="subject">Venue booking: Received the Venue Booking for
{{ object.venue_id.name }}
<field name="subject">Venue booking: Received the Venue Booking for {{ object.venue_id.name }}
</field>
<field name="model_id"
ref="venue_booking_management.model_venue_booking"/>

6
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

34
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(
"<p>%(greeting)s<br/><br/>%(content)s<br/><br/>%(conclude)s<p>") % {
'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):

12
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

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_venue_type_manager access_venue_type_user access.venue.type.manager access.venue.type.user model_venue_type base.group_user 1 1 1 1
3 access_venue_booking access_venue_type_portal access.venue.booking access.venue.type.portal model_venue_booking model_venue_type base.group_user base.group_portal 1 1 1 1
4 access_venue_booking_user access.venue.booking.user model_venue_booking base.group_user 1 1 1 1
5 access_venue_booking_portal access.venue.booking.portal model_venue_booking base.group_portal 1 1 1 1
6 access_amenities access.amenities model_amenities base.group_user 1 1 1 1
7 access_venue access_venue_user access.venue access.venue.user model_venue base.group_user base.group_portal 1 1 1 1
8 access_venue_portal access.venue.portal model_venue base.group_user 1 1 1 1
9 access_venue_lines access.venue.lines model_venue_lines base.group_user 1 1 1 1
10 access_venue_booking_line access_venue_booking_line_user access.venue.booking.line access.venue.booking.line.user model_venue_booking_line base.group_user 1 1 1 1
11 access_venue_booking_line_portal access.venue.booking.line.portal model_venue_booking_line base.group_portal 1 1 1 1
12 access_check_venue_availability access.check.venue.availability model_check_venue_availability base.group_user 1 1 1 1
13 access_venue_booking_report access.venue.booking.report model_venue_booking_report base.group_user 1 1 1 1
14 access_venue_booking_analysis access.venue.booking.analysis model_venue_booking_analysis base.group_user 1 1 1 1

15
venue_booking_management/security/venue_booking_secruity.xml

@ -4,9 +4,9 @@
<record id="venue_booking_rule_space_user" model="ir.rule">
<field name="name">View Own Docs</field>
<field ref="model_venue_booking" name="model_id"/>
<field name="domain_force">['|',('user_id', '=',
user.id),('create_uid',
'=', user.id)]
<field name="domain_force">['|',('partner_id', '=',
user.partner_id.commercial_partner_id.id),('create_uid',
'=', user.partner_id.commercial_partner_id.id)]
</field>
<field name="groups"
eval="[(4, ref('venue_booking_management.venue_booking_management_group_venue_user'))]"/>
@ -19,4 +19,13 @@
<field name="groups"
eval="[(4, ref('venue_booking_management.venue_booking_management_group_venue_manager'))]"/>
</record>
<!--XML for viewing created records of portal user-->
<record id="venue_booking_rule_portal" model="ir.rule">
<field name="name">Portal Personal Venue Bookings</field>
<field name="model_id" ref="model_venue_booking"/>
<field name="domain_force">['|',('partner_id', '=',
user.partner_id.commercial_partner_id.id),('create_uid',
'=', user.partner_id.commercial_partner_id.id)]</field>
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
</record>
</odoo>

Loading…
Cancel
Save