mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD] WorkFlow Checkin auto get in
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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', '<', (context_today()+datetime.timedelta(days=7)).strftime('%Y-%m-%d')),
|
||||
('state', '=', 'confirm')]"
|
||||
|
||||
Reference in New Issue
Block a user