mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
# Copyright 2018 Alexandre Díaz <dev@redneboa.es>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
import logging
|
|
from odoo import models, api
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class HotelReservation(models.Model):
|
|
_inherit = "hotel.reservation"
|
|
|
|
|
|
def _hcalendar_reservation_data(self, reservations):
|
|
vals = super(HotelReservation, self)._hcalendar_reservation_data(reservations)
|
|
# TODO: Improve performance by doing a SQL as in get_hcalendar_reservations_data()
|
|
hotel_reservation_obj = self.env['hotel.reservation']
|
|
for v_rval in vals[0]:
|
|
reserv = hotel_reservation_obj.browse(v_rval['id'])
|
|
v_rval.update({
|
|
'fix_days': reserv.splitted or reserv.is_from_ota,
|
|
})
|
|
# Update tooltips
|
|
if any(reserv.channel_bind_ids):
|
|
vals[1][reserv.id].update({
|
|
'ota_name': reserv.channel_bind_ids[0].ota_id.name,
|
|
'ota_reservation_id': reserv.channel_bind_ids[0].ota_reservation_id,
|
|
'external_id': reserv.channel_bind_ids[0].external_id,
|
|
})
|
|
elif reserv.splitted and reserv.parent_reservation.channel_bind_ids:
|
|
# chunks in splitted reservation has not channel_bind_ids
|
|
vals[1][reserv.id].update({
|
|
'ota_name': reserv.parent_reservation.channel_bind_ids[0].ota_id.name,
|
|
'ota_reservation_id': reserv.parent_reservation.channel_bind_ids[0].ota_reservation_id,
|
|
'external_id': reserv.parent_reservation.channel_bind_ids[0].external_id,
|
|
})
|
|
# REVIEW: What happens if the reservation is splitted and no parent with channel_bind_ids ¿?
|
|
return vals
|
|
|
|
|
|
def generate_bus_values(self, naction, ntype, ntitle=''):
|
|
self.ensure_one()
|
|
vals = super(HotelReservation, self).generate_bus_values(naction, ntype, ntitle)
|
|
vals.update({
|
|
'fix_days': self.splitted or self.is_from_ota,
|
|
})
|
|
if any(self.channel_bind_ids):
|
|
vals.update({
|
|
'ota_name': self.channel_bind_ids[0].ota_id.name,
|
|
'ota_reservation_id': self.channel_bind_ids[0].ota_reservation_id,
|
|
'external_id': self.channel_bind_ids[0].external_id,
|
|
})
|
|
return vals
|
|
|
|
|
|
def confirm(self):
|
|
for record in self:
|
|
if record.to_assign:
|
|
record.write({'to_assign': False})
|
|
return super(HotelReservation, self).confirm()
|