[ADD] WorkFlow Checkin auto get in

This commit is contained in:
Dario Lodeiros
2019-03-13 22:10:57 +01:00
parent 64bf51d820
commit f625182ee1
2 changed files with 34 additions and 12 deletions

View File

@@ -4,6 +4,8 @@
import datetime
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError
from odoo.tools import (
DEFAULT_SERVER_DATE_FORMAT)
class HotelCheckinPartner(models.Model):
@@ -56,6 +58,15 @@ class HotelCheckinPartner(models.Model):
return reservation.partner_id
return False
def _default_to_enter(self):
tz_hotel = self.env['ir.default'].sudo().get(
'res.config.settings', 'tz_hotel')
today = fields.Date.context_today(self.with_context(tz=tz_hotel))
today_str = fields.Date.from_string(today).strftime(
DEFAULT_SERVER_DATE_FORMAT)
if self._default_enter_date() == today_str:
return True
return False
partner_id = fields.Many2one('res.partner', default=_default_partner_id,
required=True)
@@ -64,9 +75,11 @@ class HotelCheckinPartner(models.Model):
reservation_id = fields.Many2one(
'hotel.reservation', default=_default_reservation_id)
folio_id = fields.Many2one('hotel.folio',
default=_default_folio_id, readonly=True, required=True)
default=_default_folio_id,
readonly=True, required=True)
enter_date = fields.Date(default=_default_enter_date, required=True)
exit_date = fields.Date(default=_default_exit_date, required=True)
auto_booking = fields.Boolean('Get in Now', default=_default_to_enter)
state = fields.Selection([('draft', 'Pending Entry'),
('booking', 'On Board'),
('done', 'Out'),
@@ -74,11 +87,17 @@ class HotelCheckinPartner(models.Model):
'State', readonly=True,
default=lambda *a: 'draft',
track_visibility='onchange')
@api.model
def create(self, vals):
record = super(HotelCheckinPartner, self).create(vals)
if vals.get('auto_booking', False):
record.action_on_board()
return record
# Validation for Departure date is after arrival date.
@api.multi
@api.constrains('exit_date','enter_date')
@api.constrains('exit_date', 'enter_date')
def _check_exit_date(self):
for record in self:
date_in = fields.Date.from_string(record.enter_date)
@@ -104,8 +123,8 @@ class HotelCheckinPartner(models.Model):
def _check_partner_id(self):
for record in self:
checkins = self.env['hotel.checkin.partner'].search([
('id','!=', record.id),
('reservation_id','=', record.reservation_id.id)
('id', '!=', record.id),
('reservation_id', '=', record.reservation_id.id)
])
if record.partner_id.id in checkins.mapped('partner_id.id'):
raise models.ValidationError(
@@ -116,8 +135,8 @@ class HotelCheckinPartner(models.Model):
def _check_partner_id(self):
for record in self:
checkins = self.env['hotel.checkin.partner'].search([
('id','!=', record.id),
('reservation_id','=', record.reservation_id.id)
('id', '!=', record.id),
('reservation_id', '=', record.reservation_id.id)
])
if record.partner_id.id in checkins.mapped('partner_id.id'):
raise models.ValidationError(

View File

@@ -6,7 +6,7 @@
name="Action checkin"
res_model="hotel.checkin.partner"
view_mode="tree,form" />
<menuitem
id="menu_hotel_checkin_partner"
name="Checkins"
@@ -47,9 +47,12 @@
<button type="object" class="oe_stat_button"
icon="fa fa-2x fa-check-circle"
name="action_on_board"
attrs="{'invisible':[('state','not in', ['draft'])]}"
help="Get in"
attrs="{'invisible':['|',
('state','not in', ['draft']),
('id','=',False)]}"
help="Get in"
/>
<field name="auto_booking" attrs="{'invisible':[('id','!=',False)]}" />
<field name="partner_id" required="True"/>
<field name="mobile"/>
<field name="email"/>
@@ -75,7 +78,7 @@
icon="fa fa-2x fa-check-circle"
name="action_on_board"
attrs="{'invisible':[('state','not in', ['draft'])]}"
help="Get in"
help="Get in"
/>
<field name="partner_id" required="True"/>
<field name="mobile"/>
@@ -108,7 +111,7 @@
<filter string="Checkins Tomorrow" name="enter_tomorrow"
domain="[('enter_date', '=', (context_today()+datetime.timedelta(days=1)).strftime('%Y-%m-%d')),
('state', '=', 'confirm')]"
help="Show all checkins for enter tomorrow"/>
help="Show all checkins for enter tomorrow"/>
<filter string="Checkins to 7 days" name="next_res_week"
domain="[('enter_date', '&lt;', (context_today()+datetime.timedelta(days=7)).strftime('%Y-%m-%d')),
('state', '=', 'confirm')]"