From 8f0fc07457f8b1670e31bd3becb7ebc47d668d63 Mon Sep 17 00:00:00 2001 From: Dario Lodeiros Date: Tue, 16 Apr 2019 09:57:07 +0200 Subject: [PATCH] [IMP] real avail compute on hcalendar management --- hotel/models/hotel_reservation.py | 3 ++ .../models/hotel_calendar_management.py | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/hotel/models/hotel_reservation.py b/hotel/models/hotel_reservation.py index ce0ca6533..00f669f7f 100644 --- a/hotel/models/hotel_reservation.py +++ b/hotel/models/hotel_reservation.py @@ -1088,10 +1088,13 @@ class HotelReservation(models.Model): @return: array with the reservations _confirmed_ between both dates `dfrom` and `dto` """ domain = self._get_domain_reservations_occupation(dfrom, dto) + _logger.info(domain) return self.env['hotel.reservation'].search(domain) @api.model def _get_domain_reservations_occupation(self, dfrom, dto): + #WARNING If add or remove domain items, update _hcalendar_get_count_reservations_json_data + # in calendar module hotel_calendar_management.py domain = [('reservation_line_ids.date', '>=', dfrom), ('reservation_line_ids.date', '<=', dto), ('state', '!=', 'cancelled'), diff --git a/hotel_calendar/models/hotel_calendar_management.py b/hotel_calendar/models/hotel_calendar_management.py index cdfcc16d5..65e52057c 100644 --- a/hotel_calendar/models/hotel_calendar_management.py +++ b/hotel_calendar/models/hotel_calendar_management.py @@ -179,14 +179,31 @@ class HotelCalendarManagement(models.TransientModel): for i in range(0, date_diff): cur_date = date_start + timedelta(days=i) cur_date_str = cur_date.strftime(DEFAULT_SERVER_DATE_FORMAT) - + self.env.cr.execute(''' + SELECT + hrl.id + FROM hotel_reservation_line AS hrl + WHERE date = %s + ''', ((cur_date_str),)) + line_ids = [r[0] for r in self.env.cr.fetchall()] + reservation_ids = self.env['hotel.reservation.line'].browse(line_ids).\ + mapped('reservation_id.id') + reservations = self.env['hotel.reservation'].\ + browse(reservation_ids).filtered( + lambda r: r.state != 'cancelled' + and not r.overbooking and not r.reselling + ) + reservations_rooms = reservations.mapped('room_id.id') + free_rooms = self.env['hotel.room'].search([ + ('id', 'not in', reservations_rooms), + ]) + rooms_linked = self.env['hotel.room.type'].search([ + ('id', '=', room_type.id) + ]).room_ids + free_rooms = free_rooms & rooms_linked json_data.setdefault(room_type.id, []).append({ 'date': cur_date_str, - 'num': len( - room_type_obj.check_availability_room_type( - cur_date_str, - cur_date_str, - room_type_id=room_type.id)), + 'num': len(free_rooms), }) return json_data