[IMP] Roommatik integration

This commit is contained in:
Dario Lodeiros
2019-08-11 12:15:35 +02:00
parent 7fd696192b
commit 9c45badee8
5 changed files with 20 additions and 26 deletions

View File

@@ -1,4 +1,3 @@
from . import inherited_hotel_folio
from . import inherited_hotel_checkin_partner from . import inherited_hotel_checkin_partner
from . import inherited_res_partner from . import inherited_res_partner
from . import inherited_hotel_room_type from . import inherited_hotel_room_type

View File

@@ -30,10 +30,14 @@ class HotelCheckinPartner(models.Model):
'channel_type': 'virtualdoor', 'channel_type': 'virtualdoor',
} }
reservation_rm = reservation_obj.create(vals) reservation_rm = reservation_obj.create(vals)
stay['ReservationCode'] = reservation_rm.localizator
else: else:
reservation_rm = self.env['hotel.reservation'].browse( reservation_rm = self.env['hotel.reservation'].search([
stay['ReservationCode']) ('localizator', '=', stay['ReservationCode'])
])
total_chekins = reservation_rm.checkin_partner_pending_count total_chekins = reservation_rm.checkin_partner_pending_count
stay['Total'] = reservation_rm.folio_pending_amount
stay['Paid'] = reservation_rm._computed_deposit_roommatik(stay['ReservationCode'])
if total_chekins > 0 and len(stay["Customers"]) <= total_chekins: if total_chekins > 0 and len(stay["Customers"]) <= total_chekins:
_logger.info('ROOMMATIK checkin %s customer in %s Reservation.', _logger.info('ROOMMATIK checkin %s customer in %s Reservation.',
total_chekins, total_chekins,
@@ -65,19 +69,21 @@ class HotelCheckinPartner(models.Model):
record.id) record.id)
record.action_on_board() record.action_on_board()
stay['Id'] = record.id stay['Id'] = record.id
stay['Room'] = reservation_rm.room_id.id stay['Room'] = {}
stay['Room']['Id'] = reservation_rm.room_id.id
stay['Room']['Name'] = reservation_rm.room_id.name
json_response = stay json_response = stay
except Exception as e: except Exception as e:
error_name = 'Error not create Checkin ' error_name = 'Error not create Checkin '
error_name += e.name error_name += e.name
json_response = {'Estate': error_name} json_response = {'State': error_name}
_logger.error('ROOMMATIK writing %s in reservation: %s).', _logger.error('ROOMMATIK writing %s in reservation: %s).',
checkin_partner_val['partner_id'], checkin_partner_val['partner_id'],
checkin_partner_val['reservation_id']) checkin_partner_val['reservation_id'])
return json_response return json_response
else: else:
json_response = {'Estate': 'Error checkin_partner_pending_count \ json_response = {'State': 'Error checkin_partner_pending_count \
values do not match.'} values do not match.'}
_logger.error('ROOMMATIK checkin pending count do not match for \ _logger.error('ROOMMATIK checkin pending count do not match for \
Reservation ID %s.', reservation_rm.id) Reservation ID %s.', reservation_rm.id)
@@ -93,10 +99,8 @@ class HotelCheckinPartner(models.Model):
default_departure_hour = self.env['ir.default'].sudo().get( default_departure_hour = self.env['ir.default'].sudo().get(
'res.config.settings', 'default_departure_hour') 'res.config.settings', 'default_departure_hour')
if any(checkin_partner): if any(checkin_partner):
arrival = "%s %s:00" % (checkin_partner.enter_date.strftime( arrival = checkin_partner.enter_date or default_arrival_hour
DEFAULT_ROOMMATIK_DATE_FORMAT), default_arrival_hour) departure = checkin_partner.exit_date or default_departure_hour
departure = "%s %s:00" % (checkin_partner.exit_date.strftime(
DEFAULT_ROOMMATIK_DATE_FORMAT), default_departure_hour)
stay = {'Code': checkin_partner.id} stay = {'Code': checkin_partner.id}
stay['Id'] = checkin_partner.id stay['Id'] = checkin_partner.id
stay['Room'] = {} stay['Room'] = {}

View File

@@ -1,11 +0,0 @@
# Copyright 2019 Jose Luis Algara (Alda hotels) <osotranquilo@gmail.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models
import logging
_logger = logging.getLogger(__name__)
class HotelFolio(models.Model):
_inherit = 'hotel.folio'

View File

@@ -52,8 +52,8 @@ class HotelRoomType(models.Model):
@api.model @api.model
def rm_get_prices(self, start_date, number_intervals, def rm_get_prices(self, start_date, number_intervals,
room_type, guest_number): room_type, guest_number):
start_date = fields.Datetime.from_string(start_date) start_date = fields.Date.from_string(start_date)
end_date = start_date + timedelta(days=number_intervals) end_date = start_date + timedelta(days=int(number_intervals))
dfrom = start_date.strftime( dfrom = start_date.strftime(
DEFAULT_ROOMMATIK_DATE_FORMAT) DEFAULT_ROOMMATIK_DATE_FORMAT)
dto = end_date.strftime( dto = end_date.strftime(
@@ -64,7 +64,7 @@ class HotelRoomType(models.Model):
rates = self.get_rate_room_types( rates = self.get_rate_room_types(
room_type_ids=room_type.id, room_type_ids=room_type.id,
date_from=dfrom, date_from=dfrom,
days=number_intervals, days=int(number_intervals),
partner_id=False) partner_id=False)
return [item['price'] for item in rates.get(room_type.id)] return [item['price'] for item in rates.get(room_type.id)]
return [] return []

View File

@@ -76,9 +76,11 @@ class RoomMatik(models.Model):
def rm_get_prices(self, start_date, number_intervals, room_type, guest_number): def rm_get_prices(self, start_date, number_intervals, room_type, guest_number):
# Gets some prices related to different dates of the same stay. # Gets some prices related to different dates of the same stay.
# return ArrayOfDecimal # return ArrayOfDecimal
room_type = self.env['hotel.room.type'].browse(room_type)
_logger.info('ROOMMATIK Get Prices')
apidata = self.env['hotel.room.type'] apidata = self.env['hotel.room.type']
room_type = apidata.browse(int(room_type))
_logger.info('ROOMMATIK Get Prices')
if not room_type:
return {'State': 'Error Room Type not Found'}
return apidata.sudo().rm_get_prices(start_date, number_intervals, room_type, guest_number) return apidata.sudo().rm_get_prices(start_date, number_intervals, room_type, guest_number)
@api.model @api.model