mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] Checkin Workflow
This commit is contained in:
@@ -17,6 +17,14 @@ class HotelCheckinPartner(models.Model):
|
||||
return reservation
|
||||
return False
|
||||
|
||||
def _default_folio_id(self):
|
||||
if 'folio_id' in self.env.context:
|
||||
folio = self.env['hotel.folio'].browse([
|
||||
self.env.context['reservation_id']
|
||||
])
|
||||
return folio
|
||||
raise ValidationError(_('You only can create checkin from reservations or folios'))
|
||||
|
||||
def _default_enter_date(self):
|
||||
if 'reservation_id' in self.env.context:
|
||||
reservation = self.env['hotel.reservation'].browse([
|
||||
@@ -45,10 +53,18 @@ class HotelCheckinPartner(models.Model):
|
||||
partner_id = fields.Many2one('res.partner', default=_default_partner_id,
|
||||
required=True)
|
||||
reservation_id = fields.Many2one(
|
||||
'hotel.reservation',
|
||||
default=_default_reservation_id, readonly=True)
|
||||
'hotel.reservation', default=_default_reservation_id)
|
||||
folio_id = fields.Many2one('hotel.reservation',
|
||||
default=_default_folio_id, readonly=True)
|
||||
enter_date = fields.Date(default=_default_enter_date, required=True)
|
||||
exit_date = fields.Date(default=_default_exit_date, required=True)
|
||||
state = fields.Selection([('draft', 'Pending Entry'),
|
||||
('booking', 'On Board'),
|
||||
('done', 'Out'),
|
||||
('cancelled', 'Cancelled')],
|
||||
'State', readonly=True,
|
||||
default=lambda *a: 'draft',
|
||||
track_visibility='onchange')
|
||||
|
||||
# Validation for Departure date is after arrival date.
|
||||
@api.multi
|
||||
@@ -72,3 +88,13 @@ class HotelCheckinPartner(models.Model):
|
||||
raise ValidationError(
|
||||
_('Departure date, is prior to arrival. Check it now. %s') %
|
||||
date_out)
|
||||
|
||||
@api.multi
|
||||
def action_on_board(self):
|
||||
for record in self:
|
||||
record.state = 'booking'
|
||||
|
||||
@api.multi
|
||||
def action_done(self):
|
||||
for record in self:
|
||||
record.state = 'done'
|
||||
|
||||
@@ -188,6 +188,7 @@ class HotelFolio(models.Model):
|
||||
compute='_amount_all', track_visibility='always')
|
||||
|
||||
#Checkin Fields-----------------------------------------------------
|
||||
checkin_partner_ids = fields.One2many('hotel.checkin.partner', 'reservation_id')
|
||||
booking_pending = fields.Integer('Booking pending',
|
||||
compute='_compute_checkin_partner_count')
|
||||
checkin_partner_count = fields.Integer('Checkin counter',
|
||||
@@ -567,7 +568,6 @@ class HotelFolio(models.Model):
|
||||
|
||||
@api.multi
|
||||
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 = {}
|
||||
|
||||
@@ -572,6 +572,13 @@ class HotelReservation(models.Model):
|
||||
if self.reservation_type == 'out':
|
||||
self.update({'partner_id': self.env.user.company_id.partner_id.id})
|
||||
|
||||
@api.multi
|
||||
@api.onchange('checkin_partner_ids')
|
||||
def onchange_checkin_partner_ids(self):
|
||||
for record in self:
|
||||
if len(record.checkin_partner_ids) > record.adults + record.children:
|
||||
raise models.ValidationError(_('The room already is completed'))
|
||||
|
||||
# When we need to overwrite the prices even if they were already established
|
||||
@api.onchange('room_type_id', 'pricelist_id', 'reservation_type')
|
||||
def onchange_overwrite_price_by_day(self):
|
||||
@@ -953,6 +960,13 @@ class HotelReservation(models.Model):
|
||||
CHECKIN/OUT PROCESS ------------------------------------------------
|
||||
"""
|
||||
|
||||
@api.multi
|
||||
@api.constrains('checkin_partner_ids')
|
||||
def _max_checkin_partner_ids(self):
|
||||
for record in self:
|
||||
if len(record.checkin_partner_ids) > record.adults + record.children:
|
||||
raise models.ValidationError(_('The room already is completed'))
|
||||
|
||||
@api.multi
|
||||
def _compute_checkin_partner_count(self):
|
||||
_logger.info('_compute_checkin_partner_count')
|
||||
@@ -972,6 +986,7 @@ class HotelReservation(models.Model):
|
||||
def action_reservation_checkout(self):
|
||||
for record in self:
|
||||
record.state = 'done'
|
||||
record.checkin_partner_ids.action_done()
|
||||
|
||||
@api.multi
|
||||
def action_checks(self):
|
||||
|
||||
Reference in New Issue
Block a user