From 8db81e40ea5137cfc1dce5d159adb99d37be2b01 Mon Sep 17 00:00:00 2001 From: mgite Date: Mon, 18 Nov 2024 18:47:52 +0400 Subject: [PATCH] Status text fields --- bross_hms/models/hms_models.py | 64 +++++++++++++++++++++++++++++++- bross_hms/views/bookings.xml | 13 ++++++- bross_hms/views/room_revenue.xml | 11 +++++- 3 files changed, 82 insertions(+), 6 deletions(-) diff --git a/bross_hms/models/hms_models.py b/bross_hms/models/hms_models.py index 4c77b3c..8ea6ca0 100644 --- a/bross_hms/models/hms_models.py +++ b/bross_hms/models/hms_models.py @@ -187,12 +187,22 @@ class HmsBookings(models.Model): booking_status = fields.Many2one(comodel_name="hms.booking.status", string="Booking Status", compute="_compute_checkin_checkout_date", store=True) status = fields.Many2one(comodel_name="hms.status", string="Status", compute="_compute_checkin_checkout_date", store=True) + booking_status_text = fields.Char(string="Booking Status ", compute="_compute_checkin_checkout_date", store=True) + show_booking_status = fields.Boolean(string="Show Booking Status", compute="_compute_checkin_checkout_date", store=True) + + status_text = fields.Char(string="Status ", compute="_compute_checkin_checkout_date", store=True) + show_status = fields.Boolean(string="Show Status", compute="_compute_checkin_checkout_date", store=True) + @api.depends('roomStays', 'payment_ids') def _compute_checkin_checkout_date(self): for booking in self: # Status fields + booking.show_booking_status = False + booking.show_status = False if booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'): booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Confirmed')]).id + booking.booking_status_text = f"Confirmed {len(booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'))} / {len(booking.roomStays)}" + booking.show_booking_status = True elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Cancelled'): booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Cancelled')]).id elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Pending'): @@ -201,9 +211,15 @@ class HmsBookings(models.Model): if not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn') and not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut') and booking.roomStays.filtered(lambda stay: stay.status.name == 'New'): booking.status = self.env['hms.status'].search([('name', '=', 'Upcoming')]).id elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'): - booking.status = self.env['hms.status'].search([('name', '=', 'CheckedIn')]).id + checked_in_records = self.env['hms.status'].search([('name', '=', 'CheckedIn')]) + booking.status = checked_in_records.id + booking.status_text = f"CheckedIn ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'))} / {len(booking.roomStays)})" + booking.show_status = True elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'): - booking.status = self.env['hms.status'].search([('name', '=', 'CheckedOut')]).id + checked_out_records = self.env['hms.status'].search([('name', '=', 'CheckedOut')]) + booking.status = checked_out_records.id + booking.status_text = f"CheckedOut ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'))} / {len(booking.roomStays)})" + booking.show_status = True elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'Cancelled'): booking.status = self.env['hms.status'].search([('name', '=', 'Cancelled')]).id elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'No Show'): @@ -311,6 +327,15 @@ class HmsBookings(models.Model): } } + # @api.model + # def _get_contextual_booking(self): + # ctx = self.env.context + # if self.env.context.get('booking_id') is not None: + # return self.browse(ctx.get('booking_id')) + # if self.env.context.get('default_booking_id') is not None: + # return self.browse(ctx.get('default_booking_id')) + # return False + class HmsStatus(models.Model): _name = 'hms.status' @@ -318,6 +343,41 @@ class HmsStatus(models.Model): name = fields.Char(string="Status", required=True) + # total_roomstays = fields.Integer(string="Total Roomstays", compute="_compute_roomstays") + # checkedin_count = fields.Integer(string="CheckedIn", compute="_compute_roomstays") + # checkedout_count = fields.Integer(string="CheckedOut", compute="_compute_roomstays") + + # def requested_display_name(self): + # return self._context.get('status_display_name', True) and self._context.get('booking_id') + + # @api.depends_context('booking_id', 'default_booking_id') + # def _compute_roomstays(self): + # booking_id = self.env['hms.bookings']._get_contextual_booking() + # if booking_id: + # if booking_id.roomStays: + # total_roomstays = len(booking_id.roomStays) + # checkedin_count = len(booking_id.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn')) + # checkedout_count = len(booking_id.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut')) + # else: + # total_roomstays = 0 + # checkedin_count = 0 + # checkedout_count = 0 + # self.total_roomstays = total_roomstays + # self.checkedin_count = checkedin_count + # self.checkedout_count = checkedout_count + + # @api.depends('total_roomstays', 'checkedin_count', 'checkedin_count') + # @api.depends_context('status_display_name', 'booking_id', 'default_booking_id') + # def _compute_display_name(self): + # if not self.requested_display_name(): + # return super()._compute_display_name() + # for record in self: + # if record.name == 'CheckedIn': + # name = _("%(name)s (%(time)g checkedin out of %(maximum)g days)", name=record.name, time=record.checkedin_count, maximum=record.total_roomstays) + # elif record.name == 'CheckedOut': + # name = _("%(name)s (%(time)g checkedout out of %(maximum)g days)", name=record.name, time=record.checkedout_count, maximum=record.total_roomstays) + # record.display_name = name + class HmsBookingStatus(models.Model): _name = 'hms.booking.status' diff --git a/bross_hms/views/bookings.xml b/bross_hms/views/bookings.xml index cbf60dc..0740904 100644 --- a/bross_hms/views/bookings.xml +++ b/bross_hms/views/bookings.xml @@ -62,8 +62,15 @@ - - + + + + + + + + + @@ -143,6 +150,8 @@ + { + 'status_display_name': False}

Create your first booking record. diff --git a/bross_hms/views/room_revenue.xml b/bross_hms/views/room_revenue.xml index b25fe3e..08b21c0 100644 --- a/bross_hms/views/room_revenue.xml +++ b/bross_hms/views/room_revenue.xml @@ -65,8 +65,15 @@ - - + + + + + + + + +