diff --git a/hotel/models/hotel_checkin_partner.py b/hotel/models/hotel_checkin_partner.py
index fafc6ab6b..6b5cbf3ff 100644
--- a/hotel/models/hotel_checkin_partner.py
+++ b/hotel/models/hotel_checkin_partner.py
@@ -1,68 +1,74 @@
# Copyright 2017 Dario Lodeiros
-# Copyright 2018 Alexandre Díaz
+# Copyright 2018 Alexandre Diaz
# 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
+from odoo.exceptions import ValidationError
class HotelCheckinPartner(models.Model):
- _name = 'hotel_checkin_partner'
+ _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):
+ def _default_reservation_id(self):
if 'reservation_id' in self.env.context:
- reservation = self.env['hotel.reservation'].search([
- ('id', '=', self.env.context['reservation_id'])
+ reservation = self.env['hotel.reservation'].browse([
+ self.env.context['reservation_id']
])
return reservation
return False
- def default_enter_date(self):
+ def _default_enter_date(self):
if 'reservation_id' in self.env.context:
- reservation = self.env['hotel.reservation'].search([
- ('id', '=', self.env.context['reservation_id'])
+ reservation = self.env['hotel.reservation'].browse([
+ self.env.context['reservation_id']
])
return reservation.checkin
return False
- def default_exit_date(self):
+ def _default_exit_date(self):
if 'reservation_id' in self.env.context:
- reservation = self.env['hotel.reservation'].search([
- ('id', '=', self.env.context['reservation_id'])
+ reservation = self.env['hotel.reservation'].browse([
+ self.env.context['reservation_id']
])
return reservation.checkout
return False
- def default_partner_id(self):
+ def _default_partner_id(self):
if 'reservation_id' in self.env.context:
- reservation = self.env['hotel.reservation'].search([
- ('id', '=', self.env.context['reservation_id'])
+ reservation = self.env['hotel.reservation'].browse([
+ 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,
+ 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)
+ 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)
+
+ # Validation for Departure date is after arrival date.
+ @api.multi
+ @api.constrains('exit_date','enter_date')
+ def _check_exit_date(self):
+ for record in self:
+ date_in = fields.Date.from_string(record.enter_date)
+ date_out = fields.Date.from_string(record.exit_date)
+ if date_out < date_in:
+ raise models.ValidationError(
+ _('Departure date (%s) is prior to arrival on %s') %
+ (date_out, date_in))
+
+ @api.onchange('enter_date', 'exit_date')
+ def _onchange_enter_date(self):
+ date_in = fields.Date.from_string(self.enter_date)
+ date_out = fields.Date.from_string(self.exit_date)
+ if date_out <= date_in:
+ date_out = date_in + datetime.timedelta(days=1)
+ self.update({'exit_date': date_out})
+ raise ValidationError(
+ _('Departure date, is prior to arrival. Check it now. %s') %
+ date_out)
diff --git a/hotel/models/hotel_folio.py b/hotel/models/hotel_folio.py
index 761e3c59a..04b6691f6 100644
--- a/hotel/models/hotel_folio.py
+++ b/hotel/models/hotel_folio.py
@@ -470,7 +470,7 @@ class HotelFolio(models.Model):
'name': _('Checkins'),
'view_type': 'form',
'view_mode': 'tree,form',
- 'res_model': 'hotel_checkin_partner',
+ 'res_model': 'hotel.checkin.partner',
'type': 'ir.actions.act_window',
'domain': [('reservation_id', 'in', rooms)],
'target': 'new',
diff --git a/hotel/models/hotel_reservation.py b/hotel/models/hotel_reservation.py
index 369194114..80e48967c 100644
--- a/hotel/models/hotel_reservation.py
+++ b/hotel/models/hotel_reservation.py
@@ -179,7 +179,7 @@ class HotelReservation(models.Model):
pricelist_id = fields.Many2one('product.pricelist',
related='folio_id.pricelist_id',
readonly="1")
- checkin_partner_ids = fields.One2many('hotel_checkin_partner', 'reservation_id')
+ 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.
@@ -994,7 +994,7 @@ class HotelReservation(models.Model):
'name': _('Checkins'),
'view_type': 'form',
'view_mode': 'tree,form',
- 'res_model': 'hotel_checkin_partner',
+ 'res_model': 'hotel.checkin.partner',
'type': 'ir.actions.act_window',
'domain': [('reservation_id', '=', self.id)],
'target': 'new',
diff --git a/hotel/views/hotel_checkin_partner_views.xml b/hotel/views/hotel_checkin_partner_views.xml
index 8963788f8..b72f62bce 100644
--- a/hotel/views/hotel_checkin_partner_views.xml
+++ b/hotel/views/hotel_checkin_partner_views.xml
@@ -5,12 +5,12 @@