[FIX] check_availability_room_type use checkout date minus 1 day

This commit is contained in:
Dario Lodeiros
2019-03-19 21:28:13 +01:00
parent 6ef58cdc62
commit 28f1a74061
5 changed files with 30 additions and 8 deletions

View File

@@ -515,8 +515,15 @@ class HotelReservation(models.Model):
room_type_id = values.get('room_type_id')
if checkin and checkout and room_type_id:
if 'overbooking' not in values:
room_chosen = self.env['hotel.room.type'].check_availability_room_type(checkin, checkout, room_type_id)[0]
# Check room_chosen exist
room_chosen = self.env['hotel.room.type'].\
check_availability_room_type(
checkin,
(fields.Date.from_string(checkout) -
timedelta(days=1)).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
room_type_id)[0]
# Check room_chosen exist
else:
room_chosen = self.env['hotel.room.type'].browse(room_type_id).room_ids[0]
res.update({

View File

@@ -68,7 +68,7 @@ class HotelRoomType(models.Model):
@api.model
def check_availability_room_type(self, dfrom, dto,
room_type_id=False, notthis=[]):
room_type_id=False, notthis=[]):
"""
Check the avalability for an specific type of room
@param self: The object pointer
@@ -78,7 +78,8 @@ class HotelRoomType(models.Model):
@param notthis: Array excluding Rooms
@return: A recordset of free rooms ?
"""
reservations = self.env['hotel.reservation'].get_reservations(dfrom, dto)
reservations = self.env['hotel.reservation'].get_reservations(dfrom,
dto)
reservations_rooms = reservations.mapped('room_id.id')
free_rooms = self.env['hotel.room'].search([
('id', 'not in', reservations_rooms),

View File

@@ -2,7 +2,9 @@
# Copyright 2018 Alexandre Díaz
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.exceptions import ValidationError
from datetime import timedelta
from openerp import models, fields, api, _
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
class DuplicateReservationWizard(models.TransientModel):
@@ -34,7 +36,10 @@ class DuplicateReservationWizard(models.TransientModel):
# Check Input
avails = hotel_room_type_obj.check_availability_room_type(
reservation_id.checkin,
reservation_id.checkout,
(fields.Date.from_string(reservation_id.checkout) -
timedelta(days=1)).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
room_type_id=reservation_id.room_type_id.id)
total_free_rooms = len(avails)
@@ -45,7 +50,10 @@ class DuplicateReservationWizard(models.TransientModel):
for i in range(0, self.num):
free_rooms = hotel_room_type_obj.check_availability_room_type(
reservation_id.checkin,
reservation_id.checkout,
(fields.Date.from_string(reservation_id.checkout) -
timedelta(days=1)).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
room_type_id=reservation_id.room_type_id.id)
if any(free_rooms):
new_reservation_id = hotel_reservation_obj.create({

View File

@@ -339,7 +339,10 @@ class HotelRoomTypeWizards(models.TransientModel):
])
real_max = len(res.room_type_id.check_availability_room_type(
res.checkin,
res.checkout,
(fields.Date.from_string(res.checkout) -
timedelta(days=1)).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
res.room_type_id.id))
res.real_avail = real_max
avail = 100000

View File

@@ -388,7 +388,10 @@ class HotelReservationImporter(Component):
free_rooms = room_type_bind.odoo_id.check_availability_room_type(
vals['checkin'],
vals['checkout'],
(fields.Date.from_string(vals['checkout']) -
timedelta(days=1)).strftime(
DEFAULT_SERVER_DATE_FORMAT
),
room_type_id=room_type_bind.odoo_id.id,
notthis=used_rooms)
if any(free_rooms):