mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
Merge branch '11.0' of https://github.com/hootel/hootel into 11.0
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
'demo': ['data/hotel_data.xml'],
|
||||
'data': [
|
||||
'security/hotel_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
# 'security/ir.model.access.csv',
|
||||
'wizard/massive_changes.xml',
|
||||
'wizard/split_reservation.xml',
|
||||
'wizard/duplicate_reservation.xml',
|
||||
|
||||
@@ -2999,13 +2999,13 @@ msgid "Action Needed"
|
||||
msgstr "Action Needed"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.actions.act_window,name:hotel.action_cardex
|
||||
msgid "Action cardex"
|
||||
#: model:ir.actions.act_window,name:hotel.action_checkin_partner
|
||||
msgid "Action checkin"
|
||||
msgstr "Acción Checkin"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.actions.act_window,name:hotel.action_cardex_download
|
||||
msgid "Action cardex download"
|
||||
#: model:ir.actions.act_window,name:hotel.action_checkin_partner_download
|
||||
msgid "Action checkin download"
|
||||
msgstr "Accción descarga de checkin"
|
||||
|
||||
#. module: hotel
|
||||
@@ -3311,39 +3311,39 @@ msgid "Capacity:"
|
||||
msgstr "Capacidad:"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.ui.menu,name:hotel.menu_cardex
|
||||
msgid "Cardex"
|
||||
#: model:ir.ui.menu,name:hotel.menu_checkin_partner
|
||||
msgid "Checkin"
|
||||
msgstr "Checkin"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_pending
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_pending_num
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_pending
|
||||
msgid "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_checkin_partner_pending_num
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_pending
|
||||
msgid "Checkin Pending"
|
||||
msgstr "Checkin Pendientes"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_pending_num
|
||||
msgid "Cardex Pending Num"
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_pending_num
|
||||
msgid "Checkin Pending Num"
|
||||
msgstr "Nº de Checkin Pendientes"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_cardex_count
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_count
|
||||
msgid "Cardex counter"
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_folio_checkin_partner_count
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_checkin_partner_count
|
||||
msgid "Checkin counter"
|
||||
msgstr "Contador de Checkin"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.model.fields,field_description:hotel.field_checkin_wizard_cardex_ids
|
||||
#: model:ir.model.fields,field_description:hotel.field_hotel_reservation_cardex_ids
|
||||
msgid "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_checkin_partner_ids
|
||||
msgid "Checkin ids"
|
||||
msgstr "Checkin ids"
|
||||
|
||||
#. module: hotel
|
||||
#: code:addons/hotel/models/hotel_folio.py:333
|
||||
#: code:addons/hotel/models/hotel_reservation.py:359
|
||||
#, python-format
|
||||
msgid "Cardexs"
|
||||
msgid "Checkins"
|
||||
msgstr "Checkin"
|
||||
|
||||
#. module: hotel
|
||||
@@ -3483,7 +3483,7 @@ msgstr "Niños"
|
||||
|
||||
#. module: hotel
|
||||
#: 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"
|
||||
msgstr "Nombre de Cliente"
|
||||
|
||||
@@ -3653,7 +3653,7 @@ msgid "Create invoice/bill"
|
||||
msgstr "Crear Factura/cuenta"
|
||||
|
||||
#. 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_currency_exchange_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"
|
||||
|
||||
#. 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_currency_exchange_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."
|
||||
|
||||
#. module: hotel
|
||||
#: code:addons/hotel/models/cardex.py:38
|
||||
#: code:addons/hotel/models/checkin.py:38
|
||||
#, python-format
|
||||
msgid "Departure date (%s) is prior to arrival on %s"
|
||||
msgstr "La fecha de salida (%s) es anterior a la llegada el %s"
|
||||
|
||||
#. module: hotel
|
||||
#: code:addons/hotel/models/cardex.py:80
|
||||
#: code:addons/hotel/models/checkin.py:80
|
||||
#, python-format
|
||||
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"
|
||||
@@ -3999,7 +3999,7 @@ msgid "Discount Type"
|
||||
msgstr "Tipo de Descuento"
|
||||
|
||||
#. 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_currency_exchange_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"
|
||||
|
||||
#. 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_reservation_email
|
||||
msgid "E-mail"
|
||||
@@ -4127,13 +4127,13 @@ msgid "End Date"
|
||||
msgstr "Fecha finalización"
|
||||
|
||||
#. 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
|
||||
msgid "Enter date"
|
||||
msgstr "Fecha Entrada"
|
||||
|
||||
#. 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
|
||||
msgid "Exit date"
|
||||
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."
|
||||
|
||||
#. 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_currency_exchange_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"
|
||||
|
||||
#. 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_currency_exchange___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"
|
||||
|
||||
#. 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_currency_exchange_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"
|
||||
|
||||
#. 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_currency_exchange_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"
|
||||
|
||||
#. 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_reservation_mobile
|
||||
msgid "Mobile"
|
||||
@@ -5570,7 +5570,7 @@ msgid "Partner for checkin"
|
||||
msgstr "Partner for checkin"
|
||||
|
||||
#. 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
|
||||
msgid "Partner id"
|
||||
msgstr "Id del cliente"
|
||||
@@ -6089,7 +6089,7 @@ msgid "Reservation has no adults"
|
||||
msgstr "La reserva no tiene adultos"
|
||||
|
||||
#. 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
|
||||
msgid "Reservation 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"
|
||||
|
||||
#. module: hotel
|
||||
#: model:ir.model,name:hotel.model_cardex
|
||||
msgid "cardex"
|
||||
#: model:ir.model,name:hotel.model_checkin_partner
|
||||
msgid "checkin"
|
||||
msgstr "checkin"
|
||||
|
||||
#. module: hotel
|
||||
|
||||
@@ -1,68 +1,68 @@
|
||||
# Copyright 2017 Dario Lodeiros
|
||||
# Copyright 2018 Alexandre Díaz
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
import datetime
|
||||
from openerp import models, fields, api, _
|
||||
from openerp.exceptions import except_orm, ValidationError
|
||||
|
||||
|
||||
class Cardex(models.Model):
|
||||
_name = 'cardex'
|
||||
|
||||
# Validation for Departure date is after arrival date.
|
||||
@api.constrains('exit_date')
|
||||
def validation_dates(self):
|
||||
if self.exit_date < self.enter_date:
|
||||
raise models.ValidationError(
|
||||
_('Departure date (%s) is prior to arrival on %s') %
|
||||
(self.exit_date, self.enter_date))
|
||||
|
||||
def default_reservation_id(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation
|
||||
return False
|
||||
|
||||
def default_enter_date(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.checkin
|
||||
return False
|
||||
|
||||
def default_exit_date(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.checkout
|
||||
return False
|
||||
|
||||
def default_partner_id(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.partner_id
|
||||
return False
|
||||
|
||||
@api.onchange('enter_date', 'exit_date')
|
||||
def check_change_dates(self):
|
||||
if self.exit_date <= self.enter_date:
|
||||
date_1 = fields.Date.from_string(self.enter_date)
|
||||
date_2 = date_1 + datetime.timedelta(days=1)
|
||||
self.update({'exit_date': date_2, })
|
||||
raise ValidationError(
|
||||
_('Departure date, is prior to arrival. Check it now. %s') %
|
||||
(date_2))
|
||||
|
||||
partner_id = fields.Many2one('res.partner', default=default_partner_id,
|
||||
required=True)
|
||||
reservation_id = fields.Many2one(
|
||||
'hotel.reservation',
|
||||
default=default_reservation_id, readonly=True)
|
||||
enter_date = fields.Date(default=default_enter_date, required=True)
|
||||
exit_date = fields.Date(default=default_exit_date, required=True)
|
||||
# Copyright 2017 Dario Lodeiros
|
||||
# Copyright 2018 Alexandre Díaz
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
import datetime
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import except_orm, ValidationError
|
||||
|
||||
|
||||
class HotelCheckinPartner(models.Model):
|
||||
_name = 'hotel_checkin_partner'
|
||||
|
||||
# Validation for Departure date is after arrival date.
|
||||
@api.constrains('exit_date')
|
||||
def validation_dates(self):
|
||||
if self.exit_date < self.enter_date:
|
||||
raise models.ValidationError(
|
||||
_('Departure date (%s) is prior to arrival on %s') %
|
||||
(self.exit_date, self.enter_date))
|
||||
|
||||
def default_reservation_id(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation
|
||||
return False
|
||||
|
||||
def default_enter_date(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.checkin
|
||||
return False
|
||||
|
||||
def default_exit_date(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.checkout
|
||||
return False
|
||||
|
||||
def default_partner_id(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].search([
|
||||
('id', '=', self.env.context['reservation_id'])
|
||||
])
|
||||
return reservation.partner_id
|
||||
return False
|
||||
|
||||
@api.onchange('enter_date', 'exit_date')
|
||||
def check_change_dates(self):
|
||||
if self.exit_date <= self.enter_date:
|
||||
date_1 = fields.Date.from_string(self.enter_date)
|
||||
date_2 = date_1 + datetime.timedelta(days=1)
|
||||
self.update({'exit_date': date_2, })
|
||||
raise ValidationError(
|
||||
_('Departure date, is prior to arrival. Check it now. %s') %
|
||||
(date_2))
|
||||
|
||||
partner_id = fields.Many2one('res.partner', default=default_partner_id,
|
||||
required=True)
|
||||
reservation_id = fields.Many2one(
|
||||
'hotel.reservation',
|
||||
default=default_reservation_id, readonly=True)
|
||||
enter_date = fields.Date(default=default_enter_date, required=True)
|
||||
exit_date = fields.Date(default=default_exit_date, required=True)
|
||||
|
||||
@@ -105,11 +105,11 @@ class HotelFolio(models.Model):
|
||||
string="Payments")
|
||||
|
||||
booking_pending = fields.Integer('Booking pending',
|
||||
compute='_compute_cardex_count')
|
||||
cardex_count = fields.Integer('Cardex counter',
|
||||
compute='_compute_cardex_count')
|
||||
cardex_pending_count = fields.Integer('Cardex Pending',
|
||||
compute='_compute_cardex_count')
|
||||
compute='_compute_checkin_partner_count')
|
||||
checkin_partner_count = fields.Integer('Checkin counter',
|
||||
compute='_compute_checkin_partner_count')
|
||||
checkin_partner_pending_count = fields.Integer('Checkin Pending',
|
||||
compute='_compute_checkin_partner_count')
|
||||
checkins_reservations = fields.Integer('checkins reservations')
|
||||
checkouts_reservations = fields.Integer('checkouts reservations')
|
||||
partner_internal_comment = fields.Text(string='Internal Partner Notes',
|
||||
@@ -467,10 +467,10 @@ class HotelFolio(models.Model):
|
||||
self.ensure_one()
|
||||
rooms = self.mapped('room_lines.id')
|
||||
return {
|
||||
'name': _('Cardexs'),
|
||||
'name': _('Checkins'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'cardex',
|
||||
'res_model': 'hotel_checkin_partner',
|
||||
'type': 'ir.actions.act_window',
|
||||
'domain': [('reservation_id', 'in', rooms)],
|
||||
'target': 'new',
|
||||
@@ -502,19 +502,19 @@ class HotelFolio(models.Model):
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
def _compute_cardex_count(self):
|
||||
_logger.info('_compute_cardex_amount')
|
||||
def _compute_checkin_partner_count(self):
|
||||
_logger.info('_compute_checkin_partner_amount')
|
||||
for record in self:
|
||||
if record.reservation_type == 'normal' and record.room_lines:
|
||||
write_vals = {}
|
||||
filtered_reservs = record.room_lines.filtered(
|
||||
lambda x: x.state != 'cancelled' and \
|
||||
not x.parent_reservation)
|
||||
mapped_cardex = filtered_reservs.mapped('cardex_ids.id')
|
||||
record.cardex_count = len(mapped_cardex)
|
||||
mapped_cardex_count = filtered_reservs.mapped(
|
||||
lambda x: (x.adults + x.children) - len(x.cardex_ids))
|
||||
record.cardex_pending_count = sum(mapped_cardex_count)
|
||||
mapped_checkin_partner = filtered_reservs.mapped('checkin_partner_ids.id')
|
||||
record.checkin_partner_count = len(mapped_checkin_partner)
|
||||
mapped_checkin_partner_count = filtered_reservs.mapped(
|
||||
lambda x: (x.adults + x.children) - len(x.checkin_partner_ids))
|
||||
record.checkin_partner_pending_count = sum(mapped_checkin_partner_count)
|
||||
|
||||
"""
|
||||
MAILING PROCESS
|
||||
|
||||
@@ -179,16 +179,16 @@ class HotelReservation(models.Model):
|
||||
pricelist_id = fields.Many2one('product.pricelist',
|
||||
related='folio_id.pricelist_id',
|
||||
readonly="1")
|
||||
cardex_ids = fields.One2many('cardex', 'reservation_id')
|
||||
# TODO: As cardex_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
|
||||
checkin_partner_ids = fields.One2many('hotel_checkin_partner', 'reservation_id')
|
||||
# TODO: As checkin_partner_count is a computed field, it can't not be used in a domain filer
|
||||
# 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.
|
||||
# The value is a method name returning a Domains
|
||||
cardex_count = fields.Integer('Cardex counter',
|
||||
compute='_compute_cardex_count')
|
||||
cardex_pending_count = fields.Integer('Cardex Pending Num',
|
||||
compute='_compute_cardex_count',
|
||||
search='_search_cardex_pending')
|
||||
checkin_partner_count = fields.Integer('Checkin counter',
|
||||
compute='_compute_checkin_partner_count')
|
||||
checkin_partner_pending_count = fields.Integer('Checkin Pending Num',
|
||||
compute='_compute_checkin_partner_count',
|
||||
search='_search_checkin_partner_pending')
|
||||
# check_rooms = fields.Boolean('Check Rooms')
|
||||
is_checkin = fields.Boolean()
|
||||
is_checkout = fields.Boolean()
|
||||
@@ -646,7 +646,7 @@ class HotelReservation(models.Model):
|
||||
hotel_reserv_obj = self.env['hotel.reservation']
|
||||
for record in self:
|
||||
vals = {}
|
||||
if record.cardex_ids:
|
||||
if record.checkin_partner_ids:
|
||||
vals.update({'state': 'booking'})
|
||||
else:
|
||||
vals.update({'state': 'confirm'})
|
||||
@@ -912,18 +912,18 @@ class HotelReservation(models.Model):
|
||||
"""
|
||||
|
||||
@api.multi
|
||||
def _compute_cardex_count(self):
|
||||
_logger.info('_compute_cardex_count')
|
||||
def _compute_checkin_partner_count(self):
|
||||
_logger.info('_compute_checkin_partner_count')
|
||||
for record in self:
|
||||
record.cardex_count = len(record.cardex_ids)
|
||||
record.cardex_pending_count = (record.adults + record.children) \
|
||||
- len(record.cardex_ids)
|
||||
record.checkin_partner_count = len(record.checkin_partner_ids)
|
||||
record.checkin_partner_pending_count = (record.adults + record.children) \
|
||||
- len(record.checkin_partner_ids)
|
||||
|
||||
# https://www.odoo.com/es_ES/forum/ayuda-1/question/calculated-fields-in-search-filter-possible-118501
|
||||
@api.multi
|
||||
def _search_cardex_pending(self, operator, value):
|
||||
def _search_checkin_partner_pending(self, operator, value):
|
||||
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 []
|
||||
|
||||
@api.multi
|
||||
@@ -991,10 +991,10 @@ class HotelReservation(models.Model):
|
||||
def action_checks(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': _('Cardexs'),
|
||||
'name': _('Checkins'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'cardex',
|
||||
'res_model': 'hotel_checkin_partner',
|
||||
'type': 'ir.actions.act_window',
|
||||
'domain': [('reservation_id', '=', self.id)],
|
||||
'target': 'new',
|
||||
|
||||
@@ -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_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_model_cardex_call,hotel.currency_exchange.call,hotel.model_cardex,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_call,hotel.currency_exchange.call,hotel.model_checkin_partner,hotel.group_hotel_call,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_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
|
||||
|
||||
|
@@ -1,57 +1,57 @@
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<!-- Action to open INE Codes list -->
|
||||
<act_window
|
||||
id="action_cardex"
|
||||
name="Action cardex"
|
||||
res_model="cardex"
|
||||
view_mode="tree,form" />
|
||||
<act_window
|
||||
id="action_cardex_download"
|
||||
name="Action cardex download"
|
||||
res_model="cardex"
|
||||
view_mode="form" /> <!-- Menu item to open INE Codes list -->
|
||||
<menuitem
|
||||
id="menu_cardex"
|
||||
name="Cardex"
|
||||
parent="hotel.hotel_reports_menu"
|
||||
sequence="25"
|
||||
action="action_cardex" />
|
||||
|
||||
<record id="view_form_cardex" model="ir.ui.view">
|
||||
<field name="name">Cardex Form</field>
|
||||
<field name="model">cardex</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group name="group_top">
|
||||
<group name="group_left">
|
||||
<field name="partner_id" required="True"/>
|
||||
<field name="enter_date"/>
|
||||
<field name="exit_date"/>
|
||||
</group>
|
||||
<group name="group_left">
|
||||
<field name="reservation_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_tree_cardex" model="ir.ui.view">
|
||||
<field name="name">Cardex Tree</field>
|
||||
<field name="model">cardex</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="partner_id" string="Client name"/>
|
||||
<field name="enter_date"/>
|
||||
<field name="exit_date"/>
|
||||
<field name="reservation_id"/>
|
||||
<!-- button type="action" class="oe_stat_button" id="cardex_smart_button" icon="fa-bed" /-->
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
|
||||
<!-- Action to open INE Codes list -->
|
||||
<act_window
|
||||
id="action_checkin_partner"
|
||||
name="Action checkin"
|
||||
res_model='hotel_checkin_partner'
|
||||
view_mode="tree,form" />
|
||||
<act_window
|
||||
id="action_checkin_partner_download"
|
||||
name="Action checkin download"
|
||||
res_model='hotel_checkin_partner'
|
||||
view_mode="form" /> <!-- Menu item to open INE Codes list -->
|
||||
<menuitem
|
||||
id="menu_hotel_checkin_partner"
|
||||
name="Checkins"
|
||||
parent="hotel.hotel_reports_menu"
|
||||
sequence="25"
|
||||
action="action_checkin_partner" />
|
||||
|
||||
<record id="view_form_checkin_partner" model="ir.ui.view">
|
||||
<field name="name">Checkin Form</field>
|
||||
<field name="model">hotel_checkin_partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group name="group_top">
|
||||
<group name="group_left">
|
||||
<field name="partner_id" required="True"/>
|
||||
<field name="enter_date"/>
|
||||
<field name="exit_date"/>
|
||||
</group>
|
||||
<group name="group_left">
|
||||
<field name="reservation_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_tree_checkin_partner" model="ir.ui.view">
|
||||
<field name="name">Checkin Tree</field>
|
||||
<field name="model">hotel_checkin_partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="partner_id" string="Client name"/>
|
||||
<field name="enter_date"/>
|
||||
<field name="exit_date"/>
|
||||
<field name="reservation_id"/>
|
||||
<!-- button type="action" class="oe_stat_button" id="checkin_partner_smart_button" icon="fa-bed" /-->
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -40,26 +40,26 @@
|
||||
<sheet>
|
||||
<div class=" oe_button_box">
|
||||
<button type="action" class="oe_stat_button"
|
||||
id="cardex_smart_button"
|
||||
id="checkin_partner_smart_button"
|
||||
icon="fa-user-plus"
|
||||
name="%(launch_checkin_wizard_add)d"
|
||||
attrs="{'invisible': [('cardex_pending_count','<=',0)]}"
|
||||
attrs="{'invisible': [('checkin_partner_pending_count','<=',0)]}"
|
||||
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">
|
||||
<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>
|
||||
<span class="o_stat_text">Pending Checks</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<button type="object" class="oe_stat_button"
|
||||
id="cardex_smart_button"
|
||||
id="checkin_partner_smart_button"
|
||||
icon="fa-users"
|
||||
name="action_checks"
|
||||
attrs="{'invisible': [('cardex_count','<=',0)]}">
|
||||
attrs="{'invisible': [('checkin_partner_count','<=',0)]}">
|
||||
<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>
|
||||
<span class="o_stat_text">Checks</span>
|
||||
</div>
|
||||
@@ -175,12 +175,12 @@
|
||||
<field name="folio_id" invisible="1"/>
|
||||
<field name="state" />
|
||||
<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"
|
||||
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)]}"
|
||||
('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}"
|
||||
/>
|
||||
<field name="partner_id"/>
|
||||
<field name="splitted" invisible="1" />
|
||||
@@ -191,9 +191,9 @@
|
||||
<field name="adults" string="Persons"/>
|
||||
<field name="checkin" 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="cardex_pending_count" invisible="1"/>
|
||||
<field name="checkin_partner_pending_count" invisible="1"/>
|
||||
<!-- <field name="qty_delivered" invisible="1"/> -->
|
||||
<!-- attrs="{'readonly': [('qty_delivered_updateable', '=', False)]}"/> -->
|
||||
<!-- <field name="qty_invoiced" invisible="1"/> -->
|
||||
@@ -330,7 +330,7 @@
|
||||
<group invisible="1">
|
||||
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
|
||||
<!-- <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="nights" invisible="1"/>
|
||||
</group>
|
||||
@@ -514,8 +514,8 @@
|
||||
<field name="refund_amount"/>
|
||||
<field name="invoices_paid"/>
|
||||
<field name="booking_pending"/>
|
||||
<field name="cardex_count"/>
|
||||
<field name="cardex_pending_count"/>
|
||||
<field name="checkin_partner_count"/>
|
||||
<field name="checkin_partner_pending_count"/>
|
||||
<field name="checkins_reservations"/>
|
||||
<field name="checkouts_reservations"/>
|
||||
<field name="partner_internal_comment"/>
|
||||
@@ -530,8 +530,8 @@
|
||||
<strong class="oe_partner_heading"><field name="partner_id"/></strong>
|
||||
<ul>
|
||||
<li t-if="record.name.raw_value"><field name="name"/></li>
|
||||
<span t-if="record.cardex_count.value>0" class="badge"><i class="fa fa-fw fa-bed"/><t t-esc="record.cardex_count.value"/></span>
|
||||
<span t-if="record.cardex_pending_count.value>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_count.value>0" class="badge"><i class="fa fa-fw fa-bed"/><t t-esc="record.checkin_partner_count.value"/></span>
|
||||
<span t-if="record.checkin_partner_pending_count.value>0" class="badge"><i class="fa fa-fw fa-user-plus"/><t t-esc="record.checkin_partner_pending_count.value"/></span>
|
||||
</ul>
|
||||
<div class="oe_kanban_partner_links"/>
|
||||
</div>
|
||||
|
||||
@@ -127,11 +127,11 @@
|
||||
icon="fa-user-plus"
|
||||
name="%(launch_checkin_wizard_add)d"
|
||||
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)]}">
|
||||
('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}">
|
||||
<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>
|
||||
<span class="o_stat_text">Pending Checks</span>
|
||||
</div>
|
||||
@@ -140,10 +140,10 @@
|
||||
id="checkin_smart_button"
|
||||
icon="fa-users"
|
||||
name="action_checks"
|
||||
attrs="{'invisible': ['|', ('cardex_count','<=',0),
|
||||
attrs="{'invisible': ['|', ('checkin_partner_count','<=',0),
|
||||
('parent_reservation','!=',False)]}">
|
||||
<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>
|
||||
<span class="o_stat_text">Checks</span>
|
||||
</div>
|
||||
@@ -233,7 +233,7 @@
|
||||
<group invisible="1">
|
||||
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
|
||||
<!-- <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="nights" invisible="1"/>
|
||||
<!-- <field name="product_uom" string="Rent(UOM)" invisible="1" /> -->
|
||||
@@ -335,8 +335,8 @@
|
||||
icon="fa fa-1x fa-user-plus"
|
||||
name="%(launch_checkin_wizard_add)d"
|
||||
context="{'partner_id': partner_id,'enter_date': checkin,
|
||||
'exit_date': checkout,'reservation_id': id, 'hidden_cardex': True, 'edit_cardex': True }"
|
||||
attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')),('cardex_pending_count','=', 0),('parent_reservation','!=',False)]}"
|
||||
'exit_date': checkout,'reservation_id': id, 'hidden_checkin_partner': True, 'edit_checkin_partner': True }"
|
||||
attrs="{'invisible':['|','|', ('state','not in',('confirm','booking')),('checkin_partner_pending_count','=', 0),('parent_reservation','!=',False)]}"
|
||||
/>
|
||||
<button type="action" class="oe_stat_button"
|
||||
icon="fa fa-2x fa-list-ul"
|
||||
@@ -354,10 +354,10 @@
|
||||
<field name="create_date"/>
|
||||
<field name="overbooking" invisible="1" />
|
||||
<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"/>
|
||||
<!-- cardex_smart_button attrs depends on cardex_pending to be showed -->
|
||||
<field name="cardex_pending_count" invisible="1"/>
|
||||
<!-- checkin_partner_smart_button attrs depends on checkin_partner_pending to be showed -->
|
||||
<field name="checkin_partner_pending_count" invisible="1"/>
|
||||
<field name="folio_pending_amount" string="Folio Pending Amount"/>
|
||||
<button type="object" class="oe_stat_button"
|
||||
icon="fa fa-3x fa-money"
|
||||
|
||||
@@ -34,9 +34,9 @@ class Wizard(models.TransientModel):
|
||||
# return current room line (onlyone in this case)
|
||||
return 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
|
||||
if res.cardex_count < (res.adults + res.children) and \
|
||||
if res.checkin_partner_count < (res.adults + res.children) and \
|
||||
res.state not in ["cancelled"]:
|
||||
return res
|
||||
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
|
||||
return False
|
||||
|
||||
def default_cardex_ids(self):
|
||||
def default_checkin_partner_ids(self):
|
||||
if ('reservation_ids' and 'folio') in self.env.context:
|
||||
ids = [item[1] for item in self.env.context.get('reservation_ids')]
|
||||
reservations = self.env['hotel.reservation'].browse(ids)
|
||||
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:
|
||||
ids = [item[1] for item in self.env.context.get('reservation_ids')]
|
||||
reservations = self.env['hotel.reservation'].browse(ids)
|
||||
@@ -65,38 +65,38 @@ class Wizard(models.TransientModel):
|
||||
return res.segmentation_id
|
||||
|
||||
''' TODO: clean-up
|
||||
def default_count_cardex(self):
|
||||
def default_count_checkin_partner(self):
|
||||
if 'reservation_ids' and 'folio' in self.env.context:
|
||||
ids = [item[1] for item in self.env.context['reservation_ids']]
|
||||
reservations = self.env['hotel.reservation'].browse(ids)
|
||||
for res in reservations:
|
||||
return res.cardex_count
|
||||
return res.checkin_partner_count
|
||||
'''
|
||||
''' TODO: clean-up
|
||||
def default_pending_cardex(self):
|
||||
def default_pending_checkin_partner(self):
|
||||
if 'reservation_ids' and 'folio' in self.env.context:
|
||||
ids = [item[1] for item in self.env.context['reservation_ids']]
|
||||
reservations = self.env['hotel.reservation'].browse(ids)
|
||||
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
|
||||
def comp_checkin_list_visible(self):
|
||||
if 'partner_id' in self.env.context:
|
||||
self.list_checkin_cardex = False
|
||||
self.list_checkin_checkin_partner = False
|
||||
return
|
||||
'''
|
||||
def comp_checkin_edit(self):
|
||||
if 'edit_cardex' in self.env.context:
|
||||
if 'edit_checkin_partner' in self.env.context:
|
||||
return True
|
||||
return False
|
||||
|
||||
cardex_ids = fields.Many2many('cardex', 'reservation_id',
|
||||
default=default_cardex_ids)
|
||||
# count_cardex = fields.Integer('Cardex counter',
|
||||
# default=default_count_cardex)
|
||||
# pending_cardex = fields.Integer('Cardex pending',
|
||||
# default=default_pending_cardex)
|
||||
checkin_partner_ids = fields.Many2many('hotel_checkin_partner', 'reservation_id',
|
||||
default=default_checkin_partner_ids)
|
||||
# count_checkin_partner = fields.Integer('Checkin counter',
|
||||
# default=default_count_checkin_partner)
|
||||
# pending_checkin_partner = fields.Integer('Checkin pending',
|
||||
# default=default_pending_checkin_partner)
|
||||
partner_id = fields.Many2one('res.partner',
|
||||
default=default_partner_id)
|
||||
reservation_id = fields.Many2one('hotel.reservation',
|
||||
@@ -106,24 +106,24 @@ class Wizard(models.TransientModel):
|
||||
exit_date = fields.Date(default=default_exit_date,
|
||||
required=True)
|
||||
|
||||
firstname_cardex = fields.Char('Firstname',
|
||||
firstname_checkin_partner = fields.Char('Firstname',
|
||||
required=True)
|
||||
lastname_cardex = fields.Char('Lastname',
|
||||
lastname_checkin_partner = fields.Char('Lastname',
|
||||
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(
|
||||
related='reservation_id.folio_id.segmentation_ids')
|
||||
|
||||
|
||||
''' 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)
|
||||
'''
|
||||
# edit_checkin_cardex = fields.Boolean(default=comp_checkin_edit,
|
||||
# edit_checkin_checkin_partner = fields.Boolean(default=comp_checkin_edit,
|
||||
# store=True)
|
||||
|
||||
op_select_partner = fields.Selection([
|
||||
@@ -142,38 +142,38 @@ class Wizard(models.TransientModel):
|
||||
if self.op_select_partner == 'S':
|
||||
partner_vals = {
|
||||
'id': self.partner_id.id,
|
||||
'firstname': self.firstname_cardex,
|
||||
'lastname': self.lastname_cardex,
|
||||
'email': self.email_cardex,
|
||||
'mobile': self.mobile_cardex,
|
||||
'firstname': self.firstname_checkin_partner,
|
||||
'lastname': self.lastname_checkin_partner,
|
||||
'email': self.email_checkin_partner,
|
||||
'mobile': self.mobile_checkin_partner,
|
||||
}
|
||||
self.partner_id.sudo().write(partner_vals)
|
||||
elif self.op_select_partner == 'C':
|
||||
partner_vals = {
|
||||
'firstname': self.firstname_cardex,
|
||||
'lastname': self.lastname_cardex,
|
||||
'email': self.email_cardex,
|
||||
'mobile': self.mobile_cardex,
|
||||
'firstname': self.firstname_checkin_partner,
|
||||
'lastname': self.lastname_checkin_partner,
|
||||
'email': self.email_checkin_partner,
|
||||
'mobile': self.mobile_checkin_partner,
|
||||
}
|
||||
new_partner = self.env['res.partner'].create(partner_vals)
|
||||
self.partner_id = self.env['res.partner'].browse(new_partner.id)
|
||||
|
||||
# prepare checkin values
|
||||
cardex_val = {
|
||||
checkin_partner_val = {
|
||||
'partner_id': self.partner_id.id,
|
||||
'enter_date': self.enter_date,
|
||||
'exit_date': self.exit_date
|
||||
}
|
||||
record_id = self.env['hotel.reservation'].browse(
|
||||
self.reservation_id.id)
|
||||
# save the cardex for this reservation
|
||||
# save the checkin for this reservation
|
||||
record_id.write({
|
||||
'cardex_ids': [(0, False, cardex_val)],
|
||||
'checkin_partner_ids': [(0, False, checkin_partner_val)],
|
||||
'segmentation_id': self.segmentation_id,
|
||||
})
|
||||
|
||||
# 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.is_checkin = False
|
||||
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']]
|
||||
reservations = self.env['hotel.reservation'].browse(ids)
|
||||
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 {
|
||||
# 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_cardex','=','2']},
|
||||
# 'warning': {'title': "Warning", 'message': self.env.context['cardex_count']},
|
||||
# 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_checkin_partner','=','2']},
|
||||
# 'warning': {'title': "Warning", 'message': self.env.context['checkin_partner_count']},
|
||||
# }
|
||||
'''
|
||||
|
||||
@@ -204,10 +204,10 @@ class Wizard(models.TransientModel):
|
||||
def onchange_partner_id(self):
|
||||
# update partner fields
|
||||
write_vals = {
|
||||
'firstname_cardex': self.partner_id.firstname,
|
||||
'lastname_cardex': self.partner_id.lastname,
|
||||
'email_cardex': self.partner_id.email,
|
||||
'mobile_cardex': self.partner_id.mobile,
|
||||
'firstname_checkin_partner': self.partner_id.firstname,
|
||||
'lastname_checkin_partner': self.partner_id.lastname,
|
||||
'email_checkin_partner': self.partner_id.email,
|
||||
'mobile_checkin_partner': self.partner_id.mobile,
|
||||
}
|
||||
# show the checkin fields if a partner is selected
|
||||
if self.op_select_partner == 'S' and self.partner_id.id != False:
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<group col="4">
|
||||
<field options="{'no_quick_create': True, 'no_create_edit' : True, 'no_open': True}"
|
||||
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"/>
|
||||
</group>
|
||||
<group col="4">
|
||||
@@ -25,13 +25,13 @@
|
||||
</group>
|
||||
|
||||
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
|
||||
<field name="firstname_cardex" colspan="2"/>
|
||||
<field name="lastname_cardex" colspan="2"/>
|
||||
<field name="firstname_checkin_partner" colspan="2"/>
|
||||
<field name="lastname_checkin_partner" colspan="2"/>
|
||||
</group>
|
||||
|
||||
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
|
||||
<field name="email_cardex" colspan="2"/>
|
||||
<field name="mobile_cardex" colspan="2"/>
|
||||
<field name="email_checkin_partner" colspan="2"/>
|
||||
<field name="mobile_checkin_partner" colspan="2"/>
|
||||
</group>
|
||||
|
||||
<footer>
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
<field name="checkin_mode" invisible="True"/>
|
||||
<!-- <field name="checkin_show" invisible="True"/> -->
|
||||
<!-- <field name="edit_checkin_cardex" invisible="True"/> -->
|
||||
<!-- <field name="edit_checkin_checkin_partner" invisible="True"/> -->
|
||||
</footer>
|
||||
</sheet>
|
||||
</form>
|
||||
@@ -66,17 +66,17 @@
|
||||
<label for="reservation_id" string="Resevation"/>
|
||||
<field name="reservation_id" nolabel="1" domain="[('folio_id','=',context.get('folio'))]"/>
|
||||
<button type="action" class="oe_stat_button"
|
||||
id="cardex_smart_button"
|
||||
id="checkin_partner_smart_button"
|
||||
icon="fa-user-plus"
|
||||
name="%(launch_checkin_wizard_add)d"
|
||||
context="{'reservation_id': reservation_id, 'hidden_cardex': True}">
|
||||
context="{'reservation_id': reservation_id, 'hidden_checkin_partner': True}">
|
||||
<div>
|
||||
<field name="pending_cardex"
|
||||
<field name="pending_checkin_partner"
|
||||
string="Pending" widget="statinfo"/>
|
||||
</div>
|
||||
</button>
|
||||
</group>
|
||||
<field name="cardex_ids" readonly="1"/>
|
||||
<field name="checkin_partner_ids" readonly="1"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
Reference in New Issue
Block a user