mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] Refactoring Code - hotel_checkin_partner
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
<act_window
|
||||
id="action_checkin_partner"
|
||||
name="Action checkin"
|
||||
res_model='hotel_checkin_partner'
|
||||
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'
|
||||
res_model='hotel.checkin.partner'
|
||||
view_mode="form" /> <!-- Menu item to open INE Codes list -->
|
||||
<menuitem
|
||||
id="menu_hotel_checkin_partner"
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
<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="model">hotel.checkin.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
<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="model">hotel.checkin.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="partner_id" string="Client name"/>
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user