Merge branch '11.0' of https://github.com/hootel/hootel into 11.0

This commit is contained in:
Dario Lodeiros
2018-11-07 11:12:52 +01:00
13 changed files with 279 additions and 279 deletions

View File

@@ -20,7 +20,7 @@
'demo': ['data/hotel_data.xml'], 'demo': ['data/hotel_data.xml'],
'data': [ 'data': [
'security/hotel_security.xml', 'security/hotel_security.xml',
'security/ir.model.access.csv', # 'security/ir.model.access.csv',
'wizard/massive_changes.xml', 'wizard/massive_changes.xml',
'wizard/split_reservation.xml', 'wizard/split_reservation.xml',
'wizard/duplicate_reservation.xml', 'wizard/duplicate_reservation.xml',

View File

@@ -2999,13 +2999,13 @@ msgid "Action Needed"
msgstr "Action Needed" msgstr "Action Needed"
#. module: hotel #. module: hotel
#: model:ir.actions.act_window,name:hotel.action_cardex #: model:ir.actions.act_window,name:hotel.action_checkin_partner
msgid "Action cardex" msgid "Action checkin"
msgstr "Acción Checkin" msgstr "Acción Checkin"
#. module: hotel #. module: hotel
#: model:ir.actions.act_window,name:hotel.action_cardex_download #: model:ir.actions.act_window,name:hotel.action_checkin_partner_download
msgid "Action cardex download" msgid "Action checkin download"
msgstr "Accción descarga de checkin" msgstr "Accción descarga de checkin"
#. module: hotel #. module: hotel
@@ -3311,39 +3311,39 @@ msgid "Capacity:"
msgstr "Capacidad:" msgstr "Capacidad:"
#. module: hotel #. module: hotel
#: model:ir.ui.menu,name:hotel.menu_cardex #: model:ir.ui.menu,name:hotel.menu_checkin_partner
msgid "Cardex" msgid "Checkin"
msgstr "Checkin" msgstr "Checkin"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_pending #: model:ir.model.fields,field_description:hotel.field_hotel_folio_checkin_partner_pending
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_pending_num #: model:ir.model.fields,field_description:hotel.field_hotel_folio_checkin_partner_pending_num
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_pending #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_pending
msgid "Cardex Pending" msgid "Checkin Pending"
msgstr "Checkin Pendientes" msgstr "Checkin Pendientes"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_pending_num #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_pending_num
msgid "Cardex Pending Num" msgid "Checkin Pending Num"
msgstr "Nº de Checkin Pendientes" msgstr "Nº de Checkin Pendientes"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_count #: model:ir.model.fields,field_description:hotel.field_hotel_folio_checkin_partner_count
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_count #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_count
msgid "Cardex counter" msgid "Checkin counter"
msgstr "Contador de Checkin" msgstr "Contador de Checkin"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_cardex_ids #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_checkin_partner_ids
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_ids #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_ids
msgid "Cardex ids" msgid "Checkin ids"
msgstr "Checkin ids" msgstr "Checkin ids"
#. module: hotel #. module: hotel
#: code:addons/hotel/models/hotel_folio.py:333 #: code:addons/hotel/models/hotel_folio.py:333
#: code:addons/hotel/models/hotel_reservation.py:359 #: code:addons/hotel/models/hotel_reservation.py:359
#, python-format #, python-format
msgid "Cardexs" msgid "Checkins"
msgstr "Checkin" msgstr "Checkin"
#. module: hotel #. module: hotel
@@ -3483,7 +3483,7 @@ msgstr "Niños"
#. module: hotel #. module: hotel
#: model:ir.ui.view,arch_db:hotel.checkin_wizard_form_2 #: model:ir.ui.view,arch_db:hotel.checkin_wizard_form_2
#: model:ir.ui.view,arch_db:hotel.view_tree_cardex #: model:ir.ui.view,arch_db:hotel.view_tree_checkin_partner
msgid "Client name" msgid "Client name"
msgstr "Nombre de Cliente" msgstr "Nombre de Cliente"
@@ -3653,7 +3653,7 @@ msgid "Create invoice/bill"
msgstr "Crear Factura/cuenta" msgstr "Crear Factura/cuenta"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_create_uid #: model:ir.model.fields,field_description:hotel.field_checkin_partner_create_uid
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_create_uid #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_create_uid
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_create_uid #: model:ir.model.fields,field_description:hotel.field_currency_exchange_create_uid
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_create_uid #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_create_uid
@@ -3682,7 +3682,7 @@ msgid "Created by"
msgstr "Creado por" msgstr "Creado por"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_create_date #: model:ir.model.fields,field_description:hotel.field_checkin_partner_create_date
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_create_date #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_create_date
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_create_date #: model:ir.model.fields,field_description:hotel.field_currency_exchange_create_date
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_create_date #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_create_date
@@ -3926,13 +3926,13 @@ msgid "Delivery address for current sales order."
msgstr "Dirección de entrega para el pedido de venta actual." msgstr "Dirección de entrega para el pedido de venta actual."
#. module: hotel #. module: hotel
#: code:addons/hotel/models/cardex.py:38 #: code:addons/hotel/models/checkin.py:38
#, python-format #, python-format
msgid "Departure date (%s) is prior to arrival on %s" msgid "Departure date (%s) is prior to arrival on %s"
msgstr "La fecha de salida (%s) es anterior a la llegada el %s" msgstr "La fecha de salida (%s) es anterior a la llegada el %s"
#. module: hotel #. module: hotel
#: code:addons/hotel/models/cardex.py:80 #: code:addons/hotel/models/checkin.py:80
#, python-format #, python-format
msgid "Departure date, is prior to arrival. Check it now. %s" msgid "Departure date, is prior to arrival. Check it now. %s"
msgstr "La fecha de salida es anterior a la llegada. Revíselo ahora. %s" msgstr "La fecha de salida es anterior a la llegada. Revíselo ahora. %s"
@@ -3999,7 +3999,7 @@ msgid "Discount Type"
msgstr "Tipo de Descuento" msgstr "Tipo de Descuento"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_display_name #: model:ir.model.fields,field_description:hotel.field_checkin_partner_display_name
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_display_name #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_display_name
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_display_name #: model:ir.model.fields,field_description:hotel.field_currency_exchange_display_name
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_display_name #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_display_name
@@ -4098,7 +4098,7 @@ msgid "Duration in Days"
msgstr "Duración en días" msgstr "Duración en días"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_email_cardex #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_email_checkin_partner
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_email #: model:ir.model.fields,field_description:hotel.field_hotel_folio_email
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_email #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_email
msgid "E-mail" msgid "E-mail"
@@ -4127,13 +4127,13 @@ msgid "End Date"
msgstr "Fecha finalización" msgstr "Fecha finalización"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_enter_date #: model:ir.model.fields,field_description:hotel.field_checkin_partner_enter_date
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_enter_date #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_enter_date
msgid "Enter date" msgid "Enter date"
msgstr "Fecha Entrada" msgstr "Fecha Entrada"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_exit_date #: model:ir.model.fields,field_description:hotel.field_checkin_partner_exit_date
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_exit_date #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_exit_date
msgid "Exit date" msgid "Exit date"
msgstr "Fecha Salida" msgstr "Fecha Salida"
@@ -4532,7 +4532,7 @@ msgid "Hotel services detail provide tocustomer and it will include in main Invo
msgstr "Los detalles de servicios al cliente que se incluirán en la Factura principal." msgstr "Los detalles de servicios al cliente que se incluirán en la Factura principal."
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_id #: model:ir.model.fields,field_description:hotel.field_checkin_partner_id
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_id #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_id
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_id #: model:ir.model.fields,field_description:hotel.field_currency_exchange_id
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_id #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_id
@@ -4962,7 +4962,7 @@ msgid "Last Message Date"
msgstr "Last Message Date" msgstr "Last Message Date"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex___last_update #: model:ir.model.fields,field_description:hotel.field_checkin_partner___last_update
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard___last_update #: model:ir.model.fields,field_description:hotel.field_checkin_wizard___last_update
#: model:ir.model.fields,field_description:hotel.field_currency_exchange___last_update #: model:ir.model.fields,field_description:hotel.field_currency_exchange___last_update
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv___last_update #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv___last_update
@@ -4997,7 +4997,7 @@ msgid "Last Updated"
msgstr "Actualizado el" msgstr "Actualizado el"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_write_uid #: model:ir.model.fields,field_description:hotel.field_checkin_partner_write_uid
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_write_uid #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_write_uid
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_write_uid #: model:ir.model.fields,field_description:hotel.field_currency_exchange_write_uid
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_write_uid #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_write_uid
@@ -5026,7 +5026,7 @@ msgid "Last Updated by"
msgstr "Última actualización de" msgstr "Última actualización de"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_write_date #: model:ir.model.fields,field_description:hotel.field_checkin_partner_write_date
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_write_date #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_write_date
#: model:ir.model.fields,field_description:hotel.field_currency_exchange_write_date #: model:ir.model.fields,field_description:hotel.field_currency_exchange_write_date
#: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_write_date #: model:ir.model.fields,field_description:hotel.field_folio_advance_payment_inv_write_date
@@ -5288,7 +5288,7 @@ msgid "Minimum Stock Rules"
msgstr "Reglas de stock mínimo" msgstr "Reglas de stock mínimo"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_mobile_cardex #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_mobile_checkin_partner
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_mobile #: model:ir.model.fields,field_description:hotel.field_hotel_folio_mobile
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_mobile #: model:ir.model.fields,field_description:hotel.field_hotel_reservation_mobile
msgid "Mobile" msgid "Mobile"
@@ -5570,7 +5570,7 @@ msgid "Partner for checkin"
msgstr "Partner for checkin" msgstr "Partner for checkin"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_partner_id #: model:ir.model.fields,field_description:hotel.field_checkin_partner_partner_id
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_partner_id #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_partner_id
msgid "Partner id" msgid "Partner id"
msgstr "Id del cliente" msgstr "Id del cliente"
@@ -6089,7 +6089,7 @@ msgid "Reservation has no adults"
msgstr "La reserva no tiene adultos" msgstr "La reserva no tiene adultos"
#. module: hotel #. module: hotel
#: model:ir.model.fields,field_description:hotel.field_cardex_reservation_id #: model:ir.model.fields,field_description:hotel.field_checkin_partner_reservation_id
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_reservation_id #: model:ir.model.fields,field_description:hotel.field_checkin_wizard_reservation_id
msgid "Reservation id" msgid "Reservation id"
msgstr "Reserva id" msgstr "Reserva id"
@@ -7477,8 +7477,8 @@ msgid "can't assign the same date to more than
msgstr "no puede asignar la misma fecha a más de una habitación virtual" msgstr "no puede asignar la misma fecha a más de una habitación virtual"
#. module: hotel #. module: hotel
#: model:ir.model,name:hotel.model_cardex #: model:ir.model,name:hotel.model_checkin_partner
msgid "cardex" msgid "checkin"
msgstr "checkin" msgstr "checkin"
#. module: hotel #. module: hotel

View File

@@ -1,68 +1,68 @@
# Copyright 2017 Dario Lodeiros # Copyright 2017 Dario Lodeiros
# Copyright 2018 Alexandre Díaz # Copyright 2018 Alexandre Díaz
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import datetime import datetime
from openerp import models, fields, api, _ from odoo import models, fields, api, _
from openerp.exceptions import except_orm, ValidationError from odoo.exceptions import except_orm, ValidationError
class Cardex(models.Model): class HotelCheckinPartner(models.Model):
_name = 'cardex' _name = 'hotel_checkin_partner'
# Validation for Departure date is after arrival date. # Validation for Departure date is after arrival date.
@api.constrains('exit_date') @api.constrains('exit_date')
def validation_dates(self): def validation_dates(self):
if self.exit_date < self.enter_date: if self.exit_date < self.enter_date:
raise models.ValidationError( raise models.ValidationError(
_('Departure date (%s) is prior to arrival on %s') % _('Departure date (%s) is prior to arrival on %s') %
(self.exit_date, self.enter_date)) (self.exit_date, self.enter_date))
def default_reservation_id(self): def default_reservation_id(self):
if 'reservation_id' in self.env.context: if 'reservation_id' in self.env.context:
reservation = self.env['hotel.reservation'].search([ reservation = self.env['hotel.reservation'].search([
('id', '=', self.env.context['reservation_id']) ('id', '=', self.env.context['reservation_id'])
]) ])
return reservation return reservation
return False return False
def default_enter_date(self): def default_enter_date(self):
if 'reservation_id' in self.env.context: if 'reservation_id' in self.env.context:
reservation = self.env['hotel.reservation'].search([ reservation = self.env['hotel.reservation'].search([
('id', '=', self.env.context['reservation_id']) ('id', '=', self.env.context['reservation_id'])
]) ])
return reservation.checkin return reservation.checkin
return False return False
def default_exit_date(self): def default_exit_date(self):
if 'reservation_id' in self.env.context: if 'reservation_id' in self.env.context:
reservation = self.env['hotel.reservation'].search([ reservation = self.env['hotel.reservation'].search([
('id', '=', self.env.context['reservation_id']) ('id', '=', self.env.context['reservation_id'])
]) ])
return reservation.checkout return reservation.checkout
return False return False
def default_partner_id(self): def default_partner_id(self):
if 'reservation_id' in self.env.context: if 'reservation_id' in self.env.context:
reservation = self.env['hotel.reservation'].search([ reservation = self.env['hotel.reservation'].search([
('id', '=', self.env.context['reservation_id']) ('id', '=', self.env.context['reservation_id'])
]) ])
return reservation.partner_id return reservation.partner_id
return False return False
@api.onchange('enter_date', 'exit_date') @api.onchange('enter_date', 'exit_date')
def check_change_dates(self): def check_change_dates(self):
if self.exit_date <= self.enter_date: if self.exit_date <= self.enter_date:
date_1 = fields.Date.from_string(self.enter_date) date_1 = fields.Date.from_string(self.enter_date)
date_2 = date_1 + datetime.timedelta(days=1) date_2 = date_1 + datetime.timedelta(days=1)
self.update({'exit_date': date_2, }) self.update({'exit_date': date_2, })
raise ValidationError( raise ValidationError(
_('Departure date, is prior to arrival. Check it now. %s') % _('Departure date, is prior to arrival. Check it now. %s') %
(date_2)) (date_2))
partner_id = fields.Many2one('res.partner', default=default_partner_id, partner_id = fields.Many2one('res.partner', default=default_partner_id,
required=True) required=True)
reservation_id = fields.Many2one( reservation_id = fields.Many2one(
'hotel.reservation', 'hotel.reservation',
default=default_reservation_id, readonly=True) default=default_reservation_id, readonly=True)
enter_date = fields.Date(default=default_enter_date, required=True) enter_date = fields.Date(default=default_enter_date, required=True)
exit_date = fields.Date(default=default_exit_date, required=True) exit_date = fields.Date(default=default_exit_date, required=True)

View File

@@ -105,11 +105,11 @@ class HotelFolio(models.Model):
string="Payments") string="Payments")
booking_pending = fields.Integer('Booking pending', booking_pending = fields.Integer('Booking pending',
compute='_compute_cardex_count') compute='_compute_checkin_partner_count')
cardex_count = fields.Integer('Cardex counter', checkin_partner_count = fields.Integer('Checkin counter',
compute='_compute_cardex_count') compute='_compute_checkin_partner_count')
cardex_pending_count = fields.Integer('Cardex Pending', checkin_partner_pending_count = fields.Integer('Checkin Pending',
compute='_compute_cardex_count') compute='_compute_checkin_partner_count')
checkins_reservations = fields.Integer('checkins reservations') checkins_reservations = fields.Integer('checkins reservations')
checkouts_reservations = fields.Integer('checkouts reservations') checkouts_reservations = fields.Integer('checkouts reservations')
partner_internal_comment = fields.Text(string='Internal Partner Notes', partner_internal_comment = fields.Text(string='Internal Partner Notes',
@@ -467,10 +467,10 @@ class HotelFolio(models.Model):
self.ensure_one() self.ensure_one()
rooms = self.mapped('room_lines.id') rooms = self.mapped('room_lines.id')
return { return {
'name': _('Cardexs'), 'name': _('Checkins'),
'view_type': 'form', 'view_type': 'form',
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'res_model': 'cardex', 'res_model': 'hotel_checkin_partner',
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'domain': [('reservation_id', 'in', rooms)], 'domain': [('reservation_id', 'in', rooms)],
'target': 'new', 'target': 'new',
@@ -502,19 +502,19 @@ class HotelFolio(models.Model):
return True return True
@api.multi @api.multi
def _compute_cardex_count(self): def _compute_checkin_partner_count(self):
_logger.info('_compute_cardex_amount') _logger.info('_compute_checkin_partner_amount')
for record in self: for record in self:
if record.reservation_type == 'normal' and record.room_lines: if record.reservation_type == 'normal' and record.room_lines:
write_vals = {} write_vals = {}
filtered_reservs = record.room_lines.filtered( filtered_reservs = record.room_lines.filtered(
lambda x: x.state != 'cancelled' and \ lambda x: x.state != 'cancelled' and \
not x.parent_reservation) not x.parent_reservation)
mapped_cardex = filtered_reservs.mapped('cardex_ids.id') mapped_checkin_partner = filtered_reservs.mapped('checkin_partner_ids.id')
record.cardex_count = len(mapped_cardex) record.checkin_partner_count = len(mapped_checkin_partner)
mapped_cardex_count = filtered_reservs.mapped( mapped_checkin_partner_count = filtered_reservs.mapped(
lambda x: (x.adults + x.children) - len(x.cardex_ids)) lambda x: (x.adults + x.children) - len(x.checkin_partner_ids))
record.cardex_pending_count = sum(mapped_cardex_count) record.checkin_partner_pending_count = sum(mapped_checkin_partner_count)
""" """
MAILING PROCESS MAILING PROCESS

View File

@@ -179,16 +179,16 @@ class HotelReservation(models.Model):
pricelist_id = fields.Many2one('product.pricelist', pricelist_id = fields.Many2one('product.pricelist',
related='folio_id.pricelist_id', related='folio_id.pricelist_id',
readonly="1") readonly="1")
cardex_ids = fields.One2many('cardex', 'reservation_id') checkin_partner_ids = fields.One2many('hotel_checkin_partner', 'reservation_id')
# TODO: As cardex_count is a computed field, it can't not be used in a domain filer # TODO: As checkin_partner_count is a computed field, it can't not be used in a domain filer
# Non-stored field hotel.reservation.cardex_count cannot be searched # Non-stored field hotel.reservation.checkin_partner_count cannot be searched
# searching on a computed field can also be enabled by setting the search parameter. # searching on a computed field can also be enabled by setting the search parameter.
# The value is a method name returning a Domains # The value is a method name returning a Domains
cardex_count = fields.Integer('Cardex counter', checkin_partner_count = fields.Integer('Checkin counter',
compute='_compute_cardex_count') compute='_compute_checkin_partner_count')
cardex_pending_count = fields.Integer('Cardex Pending Num', checkin_partner_pending_count = fields.Integer('Checkin Pending Num',
compute='_compute_cardex_count', compute='_compute_checkin_partner_count',
search='_search_cardex_pending') search='_search_checkin_partner_pending')
# check_rooms = fields.Boolean('Check Rooms') # check_rooms = fields.Boolean('Check Rooms')
is_checkin = fields.Boolean() is_checkin = fields.Boolean()
is_checkout = fields.Boolean() is_checkout = fields.Boolean()
@@ -646,7 +646,7 @@ class HotelReservation(models.Model):
hotel_reserv_obj = self.env['hotel.reservation'] hotel_reserv_obj = self.env['hotel.reservation']
for record in self: for record in self:
vals = {} vals = {}
if record.cardex_ids: if record.checkin_partner_ids:
vals.update({'state': 'booking'}) vals.update({'state': 'booking'})
else: else:
vals.update({'state': 'confirm'}) vals.update({'state': 'confirm'})
@@ -912,18 +912,18 @@ class HotelReservation(models.Model):
""" """
@api.multi @api.multi
def _compute_cardex_count(self): def _compute_checkin_partner_count(self):
_logger.info('_compute_cardex_count') _logger.info('_compute_checkin_partner_count')
for record in self: for record in self:
record.cardex_count = len(record.cardex_ids) record.checkin_partner_count = len(record.checkin_partner_ids)
record.cardex_pending_count = (record.adults + record.children) \ record.checkin_partner_pending_count = (record.adults + record.children) \
- len(record.cardex_ids) - len(record.checkin_partner_ids)
# https://www.odoo.com/es_ES/forum/ayuda-1/question/calculated-fields-in-search-filter-possible-118501 # https://www.odoo.com/es_ES/forum/ayuda-1/question/calculated-fields-in-search-filter-possible-118501
@api.multi @api.multi
def _search_cardex_pending(self, operator, value): def _search_checkin_partner_pending(self, operator, value):
self.ensure_one() self.ensure_one()
recs = self.search([]).filtered(lambda x: x.cardex_pending_count > 0) recs = self.search([]).filtered(lambda x: x.checkin_partner_pending_count > 0)
return [('id', 'in', [x.id for x in recs])] if recs else [] return [('id', 'in', [x.id for x in recs])] if recs else []
@api.multi @api.multi
@@ -991,10 +991,10 @@ class HotelReservation(models.Model):
def action_checks(self): def action_checks(self):
self.ensure_one() self.ensure_one()
return { return {
'name': _('Cardexs'), 'name': _('Checkins'),
'view_type': 'form', 'view_type': 'form',
'view_mode': 'tree,form', 'view_mode': 'tree,form',
'res_model': 'cardex', 'res_model': 'hotel_checkin_partner',
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
'domain': [('reservation_id', '=', self.id)], 'domain': [('reservation_id', '=', self.id)],
'target': 'new', 'target': 'new',

View File

@@ -14,8 +14,8 @@ access_hotel_folio_line,hotel_folio.line.user,model_hotel_reservation,hotel.grou
access_hotel_folio_line_call,hotel_folio.line.call,model_hotel_reservation,hotel.group_hotel_call,1,1,1,1 access_hotel_folio_line_call,hotel_folio.line.call,model_hotel_reservation,hotel.group_hotel_call,1,1,1,1
access_hotel_invoice_call,account.invoice.call,account.model_account_invoice,hotel.group_hotel_call,1,1,1,1 access_hotel_invoice_call,account.invoice.call,account.model_account_invoice,hotel.group_hotel_call,1,1,1,1
access_hotel_invoice_user,account.invoice.user,account.model_account_invoice,hotel.group_hotel_user,1,1,1,1 access_hotel_invoice_user,account.invoice.user,account.model_account_invoice,hotel.group_hotel_user,1,1,1,1
access_hotel_model_cardex_call,hotel.currency_exchange.call,hotel.model_cardex,hotel.group_hotel_call,1,1,1,1 access_hotel_model_checkin_partner_call,hotel.currency_exchange.call,hotel.model_checkin_partner,hotel.group_hotel_call,1,1,1,1
access_hotel_model_cardex_user,hotel.currency_exchange.user,hotel.model_cardex,hotel.group_hotel_user,1,1,1,1 access_hotel_model_checkin_partner_user,hotel.currency_exchange.user,hotel.model_checkin_partner,hotel.group_hotel_user,1,1,1,1
access_hotel_order_call,hotel.order.call,sale.model_sale_order,hotel.group_hotel_call,1,1,1,1 access_hotel_order_call,hotel.order.call,sale.model_sale_order,hotel.group_hotel_call,1,1,1,1
access_hotel_order_line_call,hotel.order.line.call,sale.model_sale_order_line,hotel.group_hotel_call,1,1,1,1 access_hotel_order_line_call,hotel.order.line.call,sale.model_sale_order_line,hotel.group_hotel_call,1,1,1,1
access_hotel_order_line_user,hotel.order.line.user,sale.model_sale_order_line,hotel.group_hotel_user,1,1,1,1 access_hotel_order_line_user,hotel.order.line.user,sale.model_sale_order_line,hotel.group_hotel_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
14 access_hotel_folio_line_call hotel_folio.line.call model_hotel_reservation hotel.group_hotel_call 1 1 1 1
15 access_hotel_invoice_call account.invoice.call account.model_account_invoice hotel.group_hotel_call 1 1 1 1
16 access_hotel_invoice_user account.invoice.user account.model_account_invoice hotel.group_hotel_user 1 1 1 1
17 access_hotel_model_cardex_call access_hotel_model_checkin_partner_call hotel.currency_exchange.call hotel.model_cardex hotel.model_checkin_partner hotel.group_hotel_call 1 1 1 1
18 access_hotel_model_cardex_user access_hotel_model_checkin_partner_user hotel.currency_exchange.user hotel.model_cardex hotel.model_checkin_partner hotel.group_hotel_user 1 1 1 1
19 access_hotel_order_call hotel.order.call sale.model_sale_order hotel.group_hotel_call 1 1 1 1
20 access_hotel_order_line_call hotel.order.line.call sale.model_sale_order_line hotel.group_hotel_call 1 1 1 1
21 access_hotel_order_line_user hotel.order.line.user sale.model_sale_order_line hotel.group_hotel_user 1 1 1 1

View File

@@ -1,57 +1,57 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<odoo> <odoo>
<!-- Action to open INE Codes list --> <!-- Action to open INE Codes list -->
<act_window <act_window
id="action_cardex" id="action_checkin_partner"
name="Action cardex" name="Action checkin"
res_model="cardex" res_model='hotel_checkin_partner'
view_mode="tree,form" /> view_mode="tree,form" />
<act_window <act_window
id="action_cardex_download" id="action_checkin_partner_download"
name="Action cardex download" name="Action checkin download"
res_model="cardex" res_model='hotel_checkin_partner'
view_mode="form" /> <!-- Menu item to open INE Codes list --> view_mode="form" /> <!-- Menu item to open INE Codes list -->
<menuitem <menuitem
id="menu_cardex" id="menu_hotel_checkin_partner"
name="Cardex" name="Checkins"
parent="hotel.hotel_reports_menu" parent="hotel.hotel_reports_menu"
sequence="25" sequence="25"
action="action_cardex" /> action="action_checkin_partner" />
<record id="view_form_cardex" model="ir.ui.view"> <record id="view_form_checkin_partner" model="ir.ui.view">
<field name="name">Cardex Form</field> <field name="name">Checkin Form</field>
<field name="model">cardex</field> <field name="model">hotel_checkin_partner</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<sheet> <sheet>
<group name="group_top"> <group name="group_top">
<group name="group_left"> <group name="group_left">
<field name="partner_id" required="True"/> <field name="partner_id" required="True"/>
<field name="enter_date"/> <field name="enter_date"/>
<field name="exit_date"/> <field name="exit_date"/>
</group> </group>
<group name="group_left"> <group name="group_left">
<field name="reservation_id"/> <field name="reservation_id"/>
</group> </group>
</group> </group>
</sheet> </sheet>
</form> </form>
</field> </field>
</record> </record>
<record id="view_tree_cardex" model="ir.ui.view"> <record id="view_tree_checkin_partner" model="ir.ui.view">
<field name="name">Cardex Tree</field> <field name="name">Checkin Tree</field>
<field name="model">cardex</field> <field name="model">hotel_checkin_partner</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree> <tree>
<field name="partner_id" string="Client name"/> <field name="partner_id" string="Client name"/>
<field name="enter_date"/> <field name="enter_date"/>
<field name="exit_date"/> <field name="exit_date"/>
<field name="reservation_id"/> <field name="reservation_id"/>
<!-- button type="action" class="oe_stat_button" id="cardex_smart_button" icon="fa-bed" /--> <!-- button type="action" class="oe_stat_button" id="checkin_partner_smart_button" icon="fa-bed" /-->
</tree> </tree>
</field> </field>
</record> </record>
</odoo> </odoo>

View File

@@ -40,26 +40,26 @@
<sheet> <sheet>
<div class=" oe_button_box"> <div class=" oe_button_box">
<button type="action" class="oe_stat_button" <button type="action" class="oe_stat_button"
id="cardex_smart_button" id="checkin_partner_smart_button"
icon="fa-user-plus" icon="fa-user-plus"
name="%(launch_checkin_wizard_add)d" name="%(launch_checkin_wizard_add)d"
attrs="{'invisible': [('cardex_pending_count','&lt;=',0)]}" attrs="{'invisible': [('checkin_partner_pending_count','&lt;=',0)]}"
context="{'partner_id': partner_id,'reservation_ids': room_lines, context="{'partner_id': partner_id,'reservation_ids': room_lines,
'hidden_cardex': True, 'folio': active_id}"> 'hidden_checkin_partner': True, 'folio': active_id}">
<div class="o_form_field o_stat_info"> <div class="o_form_field o_stat_info">
<span class="o_stat_value"><field name="cardex_pending_count" <span class="o_stat_value"><field name="checkin_partner_pending_count"
widget="statinfo" nolabel="1"/></span> widget="statinfo" nolabel="1"/></span>
<span class="o_stat_text">Pending Checks</span> <span class="o_stat_text">Pending Checks</span>
</div> </div>
</button> </button>
<button type="object" class="oe_stat_button" <button type="object" class="oe_stat_button"
id="cardex_smart_button" id="checkin_partner_smart_button"
icon="fa-users" icon="fa-users"
name="action_checks" name="action_checks"
attrs="{'invisible': [('cardex_count','&lt;=',0)]}"> attrs="{'invisible': [('checkin_partner_count','&lt;=',0)]}">
<div class="o_form_field o_stat_info"> <div class="o_form_field o_stat_info">
<span class="o_stat_value"><field name="cardex_count" <span class="o_stat_value"><field name="checkin_partner_count"
widget="statinfo" nolabel="1"/></span> widget="statinfo" nolabel="1"/></span>
<span class="o_stat_text">Checks</span> <span class="o_stat_text">Checks</span>
</div> </div>
@@ -175,12 +175,12 @@
<field name="folio_id" invisible="1"/> <field name="folio_id" invisible="1"/>
<field name="state" /> <field name="state" />
<button type="action" class="oe_stat_button" <button type="action" class="oe_stat_button"
id="cardex_smart_button" icon="fa fa-1x fa-user-plus" id="checkin_partner_smart_button" icon="fa fa-1x fa-user-plus"
name="%(launch_checkin_wizard_add)d" name="%(launch_checkin_wizard_add)d"
context="{'partner_id': partner_id,'enter_date': checkin, context="{'partner_id': partner_id,'enter_date': checkin,
'exit_date': checkout,'reservation_id': id, 'hidden_cardex': True, 'edit_cardex': True }" 'exit_date': checkout,'reservation_id': id, 'hidden_checkin_partner': True, 'edit_checkin_partner': True }"
attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')), attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')),
('cardex_pending_count','=', 0),('parent_reservation','!=',False)]}" ('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}"
/> />
<field name="partner_id"/> <field name="partner_id"/>
<field name="splitted" invisible="1" /> <field name="splitted" invisible="1" />
@@ -191,9 +191,9 @@
<field name="adults" string="Persons"/> <field name="adults" string="Persons"/>
<field name="checkin" widget="date"/> <field name="checkin" widget="date"/>
<field name="checkout" widget="date"/> <field name="checkout" widget="date"/>
<field name="cardex_ids" invisible ="1"/> <field name="checkin_partner_ids" invisible ="1"/>
<field name="to_assign" invisible="1"/> <field name="to_assign" invisible="1"/>
<field name="cardex_pending_count" invisible="1"/> <field name="checkin_partner_pending_count" invisible="1"/>
<!-- <field name="qty_delivered" invisible="1"/> --> <!-- <field name="qty_delivered" invisible="1"/> -->
<!-- attrs="{'readonly': [('qty_delivered_updateable', '=', False)]}"/> --> <!-- attrs="{'readonly': [('qty_delivered_updateable', '=', False)]}"/> -->
<!-- <field name="qty_invoiced" invisible="1"/> --> <!-- <field name="qty_invoiced" invisible="1"/> -->
@@ -330,7 +330,7 @@
<group invisible="1"> <group invisible="1">
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/> <field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<!-- <field name="check_rooms" invisible="1"/> --> <!-- <field name="check_rooms" invisible="1"/> -->
<field name="cardex_pending_count" invisible="1"/> <field name="checkin_partner_pending_count" invisible="1"/>
<!-- <field name="pricelist_id" invisible="1"/> --> <!-- <field name="pricelist_id" invisible="1"/> -->
<field name="nights" invisible="1"/> <field name="nights" invisible="1"/>
</group> </group>
@@ -514,8 +514,8 @@
<field name="refund_amount"/> <field name="refund_amount"/>
<field name="invoices_paid"/> <field name="invoices_paid"/>
<field name="booking_pending"/> <field name="booking_pending"/>
<field name="cardex_count"/> <field name="checkin_partner_count"/>
<field name="cardex_pending_count"/> <field name="checkin_partner_pending_count"/>
<field name="checkins_reservations"/> <field name="checkins_reservations"/>
<field name="checkouts_reservations"/> <field name="checkouts_reservations"/>
<field name="partner_internal_comment"/> <field name="partner_internal_comment"/>
@@ -530,8 +530,8 @@
<strong class="oe_partner_heading"><field name="partner_id"/></strong> <strong class="oe_partner_heading"><field name="partner_id"/></strong>
<ul> <ul>
<li t-if="record.name.raw_value"><field name="name"/></li> <li t-if="record.name.raw_value"><field name="name"/></li>
<span t-if="record.cardex_count.value&gt;0" class="badge"><i class="fa fa-fw fa-bed"/><t t-esc="record.cardex_count.value"/></span> <span t-if="record.checkin_partner_count.value&gt;0" class="badge"><i class="fa fa-fw fa-bed"/><t t-esc="record.checkin_partner_count.value"/></span>
<span t-if="record.cardex_pending_count.value&gt;0" class="badge"><i class="fa fa-fw fa-user-plus"/><t t-esc="record.cardex_pending_count.value"/></span> <span t-if="record.checkin_partner_pending_count.value&gt;0" class="badge"><i class="fa fa-fw fa-user-plus"/><t t-esc="record.checkin_partner_pending_count.value"/></span>
</ul> </ul>
<div class="oe_kanban_partner_links"/> <div class="oe_kanban_partner_links"/>
</div> </div>

View File

@@ -127,11 +127,11 @@
icon="fa-user-plus" icon="fa-user-plus"
name="%(launch_checkin_wizard_add)d" name="%(launch_checkin_wizard_add)d"
context="{'partner_id': partner_id,'enter_date': checkin, context="{'partner_id': partner_id,'enter_date': checkin,
'exit_date': checkout,'reservation_id': id, 'hidden_cardex': True, 'edit_cardex': True }" 'exit_date': checkout,'reservation_id': id, 'hidden_checkin_partner': True, 'edit_checkin_partner': True }"
attrs="{'invisible':['|', '|', ('state','not in',('confirm','booking')), attrs="{'invisible':['|', '|', ('state','not in',('confirm','booking')),
('cardex_pending_count','=', 0),('parent_reservation','!=',False)]}"> ('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}">
<div class="o_form_field o_stat_info"> <div class="o_form_field o_stat_info">
<span class="o_stat_value"><field name="cardex_pending_count" <span class="o_stat_value"><field name="checkin_partner_pending_count"
widget="statinfo" nolabel="1"/></span> widget="statinfo" nolabel="1"/></span>
<span class="o_stat_text">Pending Checks</span> <span class="o_stat_text">Pending Checks</span>
</div> </div>
@@ -140,10 +140,10 @@
id="checkin_smart_button" id="checkin_smart_button"
icon="fa-users" icon="fa-users"
name="action_checks" name="action_checks"
attrs="{'invisible': ['|', ('cardex_count','&lt;=',0), attrs="{'invisible': ['|', ('checkin_partner_count','&lt;=',0),
('parent_reservation','!=',False)]}"> ('parent_reservation','!=',False)]}">
<div class="o_form_field o_stat_info"> <div class="o_form_field o_stat_info">
<span class="o_stat_value"><field name="cardex_count" <span class="o_stat_value"><field name="checkin_partner_count"
widget="statinfo" nolabel="1"/></span> widget="statinfo" nolabel="1"/></span>
<span class="o_stat_text">Checks</span> <span class="o_stat_text">Checks</span>
</div> </div>
@@ -233,7 +233,7 @@
<group invisible="1"> <group invisible="1">
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/> <field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<!-- <field name="check_rooms" invisible="1"/> --> <!-- <field name="check_rooms" invisible="1"/> -->
<field name="cardex_pending_count" invisible="1"/> <field name="checkin_partner_pending_count" invisible="1"/>
<!-- <field name="pricelist_id" invisible="1"/> --> <!-- <field name="pricelist_id" invisible="1"/> -->
<field name="nights" invisible="1"/> <field name="nights" invisible="1"/>
<!-- <field name="product_uom" string="Rent(UOM)" invisible="1" /> --> <!-- <field name="product_uom" string="Rent(UOM)" invisible="1" /> -->
@@ -335,8 +335,8 @@
icon="fa fa-1x fa-user-plus" icon="fa fa-1x fa-user-plus"
name="%(launch_checkin_wizard_add)d" name="%(launch_checkin_wizard_add)d"
context="{'partner_id': partner_id,'enter_date': checkin, context="{'partner_id': partner_id,'enter_date': checkin,
'exit_date': checkout,'reservation_id': id, 'hidden_cardex': True, 'edit_cardex': True }" 'exit_date': checkout,'reservation_id': id, 'hidden_checkin_partner': True, 'edit_checkin_partner': True }"
attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')),('cardex_pending_count','=', 0),('parent_reservation','!=',False)]}" attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')),('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}"
/> />
<button type="action" class="oe_stat_button" <button type="action" class="oe_stat_button"
icon="fa fa-2x fa-list-ul" icon="fa fa-2x fa-list-ul"
@@ -354,10 +354,10 @@
<field name="create_date"/> <field name="create_date"/>
<field name="overbooking" invisible="1" /> <field name="overbooking" invisible="1" />
<field name="last_updated_res" string="Updated on"/> <field name="last_updated_res" string="Updated on"/>
<field name="cardex_ids" invisible ="1"/> <field name="checkin_partner_ids" invisible ="1"/>
<field name="to_assign" invisible="1"/> <field name="to_assign" invisible="1"/>
<!-- cardex_smart_button attrs depends on cardex_pending to be showed --> <!-- checkin_partner_smart_button attrs depends on checkin_partner_pending to be showed -->
<field name="cardex_pending_count" invisible="1"/> <field name="checkin_partner_pending_count" invisible="1"/>
<field name="folio_pending_amount" string="Folio Pending Amount"/> <field name="folio_pending_amount" string="Folio Pending Amount"/>
<button type="object" class="oe_stat_button" <button type="object" class="oe_stat_button"
icon="fa fa-3x fa-money" icon="fa fa-3x fa-money"

View File

@@ -34,9 +34,9 @@ class Wizard(models.TransientModel):
# return current room line (onlyone in this case) # return current room line (onlyone in this case)
return reservations return reservations
for res in reservations: for res in reservations:
# return the first room line with free space for a cardex # return the first room line with free space for a checkin
# TODO: add 'done' to res.state condition... Maybe too restrictive right now # TODO: add 'done' to res.state condition... Maybe too restrictive right now
if res.cardex_count < (res.adults + res.children) and \ if res.checkin_partner_count < (res.adults + res.children) and \
res.state not in ["cancelled"]: res.state not in ["cancelled"]:
return res return res
elif 'reservation_id' in self.env.context: elif 'reservation_id' in self.env.context:
@@ -50,14 +50,14 @@ class Wizard(models.TransientModel):
# no partner by default. User must search and choose one # no partner by default. User must search and choose one
return False return False
def default_cardex_ids(self): def default_checkin_partner_ids(self):
if ('reservation_ids' and 'folio') in self.env.context: if ('reservation_ids' and 'folio') in self.env.context:
ids = [item[1] for item in self.env.context.get('reservation_ids')] ids = [item[1] for item in self.env.context.get('reservation_ids')]
reservations = self.env['hotel.reservation'].browse(ids) reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations: for res in reservations:
return res.cardex_ids return res.checkin_partner_ids
def default_cardex_ids(self): def default_checkin_partner_ids(self):
if ('reservation_ids' and 'folio') in self.env.context: if ('reservation_ids' and 'folio') in self.env.context:
ids = [item[1] for item in self.env.context.get('reservation_ids')] ids = [item[1] for item in self.env.context.get('reservation_ids')]
reservations = self.env['hotel.reservation'].browse(ids) reservations = self.env['hotel.reservation'].browse(ids)
@@ -65,38 +65,38 @@ class Wizard(models.TransientModel):
return res.segmentation_id return res.segmentation_id
''' TODO: clean-up ''' TODO: clean-up
def default_count_cardex(self): def default_count_checkin_partner(self):
if 'reservation_ids' and 'folio' in self.env.context: if 'reservation_ids' and 'folio' in self.env.context:
ids = [item[1] for item in self.env.context['reservation_ids']] ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids) reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations: for res in reservations:
return res.cardex_count return res.checkin_partner_count
''' '''
''' TODO: clean-up ''' TODO: clean-up
def default_pending_cardex(self): def default_pending_checkin_partner(self):
if 'reservation_ids' and 'folio' in self.env.context: if 'reservation_ids' and 'folio' in self.env.context:
ids = [item[1] for item in self.env.context['reservation_ids']] ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids) reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations: for res in reservations:
return res.adults + res.children - res.cardex_count return res.adults + res.children - res.checkin_partner_count
''' '''
''' TODO: clean-up - list of checkins on smart button clean is not used anymore ''' TODO: clean-up - list of checkins on smart button clean is not used anymore
def comp_checkin_list_visible(self): def comp_checkin_list_visible(self):
if 'partner_id' in self.env.context: if 'partner_id' in self.env.context:
self.list_checkin_cardex = False self.list_checkin_checkin_partner = False
return return
''' '''
def comp_checkin_edit(self): def comp_checkin_edit(self):
if 'edit_cardex' in self.env.context: if 'edit_checkin_partner' in self.env.context:
return True return True
return False return False
cardex_ids = fields.Many2many('cardex', 'reservation_id', checkin_partner_ids = fields.Many2many('hotel_checkin_partner', 'reservation_id',
default=default_cardex_ids) default=default_checkin_partner_ids)
# count_cardex = fields.Integer('Cardex counter', # count_checkin_partner = fields.Integer('Checkin counter',
# default=default_count_cardex) # default=default_count_checkin_partner)
# pending_cardex = fields.Integer('Cardex pending', # pending_checkin_partner = fields.Integer('Checkin pending',
# default=default_pending_cardex) # default=default_pending_checkin_partner)
partner_id = fields.Many2one('res.partner', partner_id = fields.Many2one('res.partner',
default=default_partner_id) default=default_partner_id)
reservation_id = fields.Many2one('hotel.reservation', reservation_id = fields.Many2one('hotel.reservation',
@@ -106,24 +106,24 @@ class Wizard(models.TransientModel):
exit_date = fields.Date(default=default_exit_date, exit_date = fields.Date(default=default_exit_date,
required=True) required=True)
firstname_cardex = fields.Char('Firstname', firstname_checkin_partner = fields.Char('Firstname',
required=True) required=True)
lastname_cardex = fields.Char('Lastname', lastname_checkin_partner = fields.Char('Lastname',
required=True) required=True)
email_cardex = fields.Char('E-mail') email_checkin_partner = fields.Char('E-mail')
mobile_cardex = fields.Char('Mobile') mobile_checkin_partner = fields.Char('Mobile')
segmentation_id = fields.Many2many( segmentation_id = fields.Many2many(
related='reservation_id.folio_id.segmentation_ids') related='reservation_id.folio_id.segmentation_ids')
''' TODO: clean-up - list of checkins on smart button clean is not used anymore ''' TODO: clean-up - list of checkins on smart button clean is not used anymore
list_checkin_cardex = fields.Boolean(compute=comp_checkin_list_visible, list_checkin_checkin_partner = fields.Boolean(compute=comp_checkin_list_visible,
default=True, store=True) default=True, store=True)
''' '''
# edit_checkin_cardex = fields.Boolean(default=comp_checkin_edit, # edit_checkin_checkin_partner = fields.Boolean(default=comp_checkin_edit,
# store=True) # store=True)
op_select_partner = fields.Selection([ op_select_partner = fields.Selection([
@@ -142,38 +142,38 @@ class Wizard(models.TransientModel):
if self.op_select_partner == 'S': if self.op_select_partner == 'S':
partner_vals = { partner_vals = {
'id': self.partner_id.id, 'id': self.partner_id.id,
'firstname': self.firstname_cardex, 'firstname': self.firstname_checkin_partner,
'lastname': self.lastname_cardex, 'lastname': self.lastname_checkin_partner,
'email': self.email_cardex, 'email': self.email_checkin_partner,
'mobile': self.mobile_cardex, 'mobile': self.mobile_checkin_partner,
} }
self.partner_id.sudo().write(partner_vals) self.partner_id.sudo().write(partner_vals)
elif self.op_select_partner == 'C': elif self.op_select_partner == 'C':
partner_vals = { partner_vals = {
'firstname': self.firstname_cardex, 'firstname': self.firstname_checkin_partner,
'lastname': self.lastname_cardex, 'lastname': self.lastname_checkin_partner,
'email': self.email_cardex, 'email': self.email_checkin_partner,
'mobile': self.mobile_cardex, 'mobile': self.mobile_checkin_partner,
} }
new_partner = self.env['res.partner'].create(partner_vals) new_partner = self.env['res.partner'].create(partner_vals)
self.partner_id = self.env['res.partner'].browse(new_partner.id) self.partner_id = self.env['res.partner'].browse(new_partner.id)
# prepare checkin values # prepare checkin values
cardex_val = { checkin_partner_val = {
'partner_id': self.partner_id.id, 'partner_id': self.partner_id.id,
'enter_date': self.enter_date, 'enter_date': self.enter_date,
'exit_date': self.exit_date 'exit_date': self.exit_date
} }
record_id = self.env['hotel.reservation'].browse( record_id = self.env['hotel.reservation'].browse(
self.reservation_id.id) self.reservation_id.id)
# save the cardex for this reservation # save the checkin for this reservation
record_id.write({ record_id.write({
'cardex_ids': [(0, False, cardex_val)], 'checkin_partner_ids': [(0, False, checkin_partner_val)],
'segmentation_id': self.segmentation_id, 'segmentation_id': self.segmentation_id,
}) })
# update the state of the current reservation # update the state of the current reservation
if record_id.cardex_count > 0: if record_id.checkin_partner_count > 0:
record_id.state = 'booking' record_id.state = 'booking'
record_id.is_checkin = False record_id.is_checkin = False
folio = self.env['hotel.folio'].browse(self.reservation_id.folio_id.id) folio = self.env['hotel.folio'].browse(self.reservation_id.folio_id.id)
@@ -192,11 +192,11 @@ class Wizard(models.TransientModel):
ids = [item[1] for item in self.env.context['reservation_ids']] ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids) reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations: for res in reservations:
_logger.info('reservation cardex_count %d', res.cardex_count) _logger.info('reservation checkin_partner_count %d', res.checkin_partner_count)
# return { # return {
# 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_cardex','=','2']}, # 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_checkin_partner','=','2']},
# 'warning': {'title': "Warning", 'message': self.env.context['cardex_count']}, # 'warning': {'title': "Warning", 'message': self.env.context['checkin_partner_count']},
# } # }
''' '''
@@ -204,10 +204,10 @@ class Wizard(models.TransientModel):
def onchange_partner_id(self): def onchange_partner_id(self):
# update partner fields # update partner fields
write_vals = { write_vals = {
'firstname_cardex': self.partner_id.firstname, 'firstname_checkin_partner': self.partner_id.firstname,
'lastname_cardex': self.partner_id.lastname, 'lastname_checkin_partner': self.partner_id.lastname,
'email_cardex': self.partner_id.email, 'email_checkin_partner': self.partner_id.email,
'mobile_cardex': self.partner_id.mobile, 'mobile_checkin_partner': self.partner_id.mobile,
} }
# show the checkin fields if a partner is selected # show the checkin fields if a partner is selected
if self.op_select_partner == 'S' and self.partner_id.id != False: if self.op_select_partner == 'S' and self.partner_id.id != False:

View File

@@ -10,7 +10,7 @@
<group col="4"> <group col="4">
<field options="{'no_quick_create': True, 'no_create_edit' : True, 'no_open': True}" <field options="{'no_quick_create': True, 'no_create_edit' : True, 'no_open': True}"
name="reservation_id" nolabel="1" name="reservation_id" nolabel="1"
domain="[('folio_id','=',context.get('folio')), ('state', '!=', 'cancelled'), ('cardex_pending_count', '>', 0)]" domain="[('folio_id','=',context.get('folio')), ('state', '!=', 'cancelled'), ('checkin_partner_pending_count', '>', 0)]"
style="max-width: 95%; width: 32.2em"/> style="max-width: 95%; width: 32.2em"/>
</group> </group>
<group col="4"> <group col="4">
@@ -25,13 +25,13 @@
</group> </group>
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" > <group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
<field name="firstname_cardex" colspan="2"/> <field name="firstname_checkin_partner" colspan="2"/>
<field name="lastname_cardex" colspan="2"/> <field name="lastname_checkin_partner" colspan="2"/>
</group> </group>
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" > <group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
<field name="email_cardex" colspan="2"/> <field name="email_checkin_partner" colspan="2"/>
<field name="mobile_cardex" colspan="2"/> <field name="mobile_checkin_partner" colspan="2"/>
</group> </group>
<footer> <footer>
@@ -41,7 +41,7 @@
<field name="checkin_mode" invisible="True"/> <field name="checkin_mode" invisible="True"/>
<!-- <field name="checkin_show" invisible="True"/> --> <!-- <field name="checkin_show" invisible="True"/> -->
<!-- <field name="edit_checkin_cardex" invisible="True"/> --> <!-- <field name="edit_checkin_checkin_partner" invisible="True"/> -->
</footer> </footer>
</sheet> </sheet>
</form> </form>
@@ -66,17 +66,17 @@
<label for="reservation_id" string="Resevation"/> <label for="reservation_id" string="Resevation"/>
<field name="reservation_id" nolabel="1" domain="[('folio_id','=',context.get('folio'))]"/> <field name="reservation_id" nolabel="1" domain="[('folio_id','=',context.get('folio'))]"/>
<button type="action" class="oe_stat_button" <button type="action" class="oe_stat_button"
id="cardex_smart_button" id="checkin_partner_smart_button"
icon="fa-user-plus" icon="fa-user-plus"
name="%(launch_checkin_wizard_add)d" name="%(launch_checkin_wizard_add)d"
context="{'reservation_id': reservation_id, 'hidden_cardex': True}"> context="{'reservation_id': reservation_id, 'hidden_checkin_partner': True}">
<div> <div>
<field name="pending_cardex" <field name="pending_checkin_partner"
string="Pending" widget="statinfo"/> string="Pending" widget="statinfo"/>
</div> </div>
</button> </button>
</group> </group>
<field name="cardex_ids" readonly="1"/> <field name="checkin_partner_ids" readonly="1"/>
</sheet> </sheet>
</form> </form>
</field> </field>

View File

@@ -58,7 +58,7 @@
<field name="price_total" string="Final Price"/> <field name="price_total" string="Final Price"/>
<field name="folio_pending_amount" string="Folio Pending Amount"/> <field name="folio_pending_amount" string="Folio Pending Amount"/>
<button type="object" class="oe_stat_button" <button type="object" class="oe_stat_button"
id="cardex_smart_button" icon="fa fa-3x fa-money" id="checkin_partner_smart_button" icon="fa fa-3x fa-money"
name="action_pay_folio" name="action_pay_folio"
attrs="{'invisible':[('folio_pending_amount','==',0)]}" attrs="{'invisible':[('folio_pending_amount','==',0)]}"
/> />

View File

@@ -8,7 +8,7 @@
<xpath expr="//field[@name='channel_type']" position="after"> <xpath expr="//field[@name='channel_type']" position="after">
<!-- field name="channel_reservation_id" attrs='{"readonly": [("able_to_modify_channel","=",False)], "invisible":[("channel_type","!=", "web")]}' string="OTA"/--> <!-- field name="channel_reservation_id" attrs='{"readonly": [("able_to_modify_channel","=",False)], "invisible":[("channel_type","!=", "web")]}' string="OTA"/-->
</xpath> </xpath>
<xpath expr="//field[@name='cardex_pending_count']" position="before"> <xpath expr="//field[@name='checkin_partner_pending_count']" position="before">
<group colspan="6" col="6"> <group colspan="6" col="6">
<field name="is_from_ota" readonly="True" invisible="True"/> <field name="is_from_ota" readonly="True" invisible="True"/>
</group> </group>