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 @@ Checkin Form - hotel_checkin_partner + hotel.checkin.partner
@@ -42,7 +42,7 @@ Checkin Tree - hotel_checkin_partner + hotel.checkin.partner diff --git a/hotel/wizard/checkinwizard.py b/hotel/wizard/checkinwizard.py index 771885432..c648f3270 100644 --- a/hotel/wizard/checkinwizard.py +++ b/hotel/wizard/checkinwizard.py @@ -91,7 +91,7 @@ class Wizard(models.TransientModel): return True return False - checkin_partner_ids = fields.Many2many('hotel_checkin_partner', 'reservation_id', + 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)