mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] Wizard Reservation
This commit is contained in:
@@ -50,9 +50,9 @@ class FolioWizard(models.TransientModel):
|
|||||||
return 'phone'
|
return 'phone'
|
||||||
|
|
||||||
partner_id = fields.Many2one('res.partner',string="Customer")
|
partner_id = fields.Many2one('res.partner',string="Customer")
|
||||||
checkin = fields.Datetime('Check In', required=True,
|
checkin = fields.Date('Check In', required=True,
|
||||||
default=_get_default_checkin)
|
default=_get_default_checkin)
|
||||||
checkout = fields.Datetime('Check Out', required=True,
|
checkout = fields.Date('Check Out', required=True,
|
||||||
default=_get_default_checkout)
|
default=_get_default_checkout)
|
||||||
reservation_wizard_ids = fields.One2many('hotel.reservation.wizard',
|
reservation_wizard_ids = fields.One2many('hotel.reservation.wizard',
|
||||||
'folio_wizard_id',
|
'folio_wizard_id',
|
||||||
@@ -69,7 +69,7 @@ class FolioWizard(models.TransientModel):
|
|||||||
('phone', 'Phone')
|
('phone', 'Phone')
|
||||||
], string='Sales Channel', default=_get_default_channel_type)
|
], string='Sales Channel', default=_get_default_channel_type)
|
||||||
room_type_wizard_ids = fields.Many2many('hotel.room.type.wizard',
|
room_type_wizard_ids = fields.Many2many('hotel.room.type.wizard',
|
||||||
string="Virtual Rooms")
|
string="Room Types")
|
||||||
call_center = fields.Boolean(default=_get_default_center_user)
|
call_center = fields.Boolean(default=_get_default_center_user)
|
||||||
|
|
||||||
def assign_rooms(self):
|
def assign_rooms(self):
|
||||||
@@ -148,24 +148,27 @@ class FolioWizard(models.TransientModel):
|
|||||||
@param self: object pointer
|
@param self: object pointer
|
||||||
'''
|
'''
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
checkin_dt = datetime.now() if not self.checkin else fields.Date.from_string(self.checkin)
|
tz_hotel = self.env['ir.default'].sudo().get(
|
||||||
checkout_dt = datetime.now() if not self.checkout else fields.Date.from_string(self.checkout)
|
'res.config.settings', 'tz_hotel')
|
||||||
|
today = fields.Date.context_today(self.with_context(tz=tz_hotel))
|
||||||
|
checkin_dt = fields.Date.from_string(today) if not self.checkin else fields.Date.from_string(self.checkin)
|
||||||
|
checkout_dt = ields.Date.from_string(today) if not self.checkout else fields.Date.from_string(self.checkout)
|
||||||
if checkin_dt >= checkout_dt:
|
if checkin_dt >= checkout_dt:
|
||||||
checkout_dt = checkin_dt + timedelta(days=1)
|
checkout_dt = checkin_dt + timedelta(days=1)
|
||||||
|
|
||||||
chekin_str = checkin_dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
checkin_str = checkin_dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
||||||
chekout_str = checkout_dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
checkout_str = checkout_dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
|
||||||
|
|
||||||
room_type_ids = self.env['hotel.room.type'].search([])
|
room_type_ids = self.env['hotel.room.type'].search([])
|
||||||
cmds = room_type_ids.mapped(lambda x: (0, False, {
|
cmds = room_type_ids.mapped(lambda x: (0, False, {
|
||||||
'room_type_id': x.id,
|
'room_type_id': x.id,
|
||||||
'checkin': chekin_str,
|
|
||||||
'checkout': chekout_str,
|
|
||||||
'folio_wizard_id': self.id,
|
'folio_wizard_id': self.id,
|
||||||
|
'checkin': checkin_str,
|
||||||
|
'checkout': checkout_str,
|
||||||
}))
|
}))
|
||||||
self.write({
|
self.update({
|
||||||
'checkin': chekin_str,
|
'checkin': checkin_str,
|
||||||
'checkout': chekout_str,
|
'checkout': checkout_str,
|
||||||
'room_type_wizard_ids': cmds,
|
'room_type_wizard_ids': cmds,
|
||||||
})
|
})
|
||||||
for room_type in self.room_type_wizard_ids:
|
for room_type in self.room_type_wizard_ids:
|
||||||
@@ -239,6 +242,7 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def _get_default_checkin(self):
|
def _get_default_checkin(self):
|
||||||
|
import wdb; wdb.set_trace()
|
||||||
return self.folio_wizard_id.checkin
|
return self.folio_wizard_id.checkin
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
@@ -246,7 +250,7 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
return self.folio_wizard_id.checkout
|
return self.folio_wizard_id.checkout
|
||||||
|
|
||||||
room_type_id = fields.Many2one('hotel.room.type',
|
room_type_id = fields.Many2one('hotel.room.type',
|
||||||
string="Virtual Rooms")
|
string="Rooms Type")
|
||||||
rooms_num = fields.Integer('Number of Rooms')
|
rooms_num = fields.Integer('Number of Rooms')
|
||||||
max_rooms = fields.Integer('Max', compute="_compute_max")
|
max_rooms = fields.Integer('Max', compute="_compute_max")
|
||||||
price = fields.Float(string='Price by Room')
|
price = fields.Float(string='Price by Room')
|
||||||
@@ -255,9 +259,9 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
amount_reservation = fields.Float(string='Total', readonly=True)
|
amount_reservation = fields.Float(string='Total', readonly=True)
|
||||||
discount = fields.Float('discount')
|
discount = fields.Float('discount')
|
||||||
min_stay = fields.Integer('Min. Days', compute="_compute_max")
|
min_stay = fields.Integer('Min. Days', compute="_compute_max")
|
||||||
checkin = fields.Datetime('Check In', required=True,
|
checkin = fields.Date('Check In', required=True,
|
||||||
default=_get_default_checkin)
|
default=_get_default_checkin)
|
||||||
checkout = fields.Datetime('Check Out', required=True,
|
checkout = fields.Date('Check Out', required=True,
|
||||||
default=_get_default_checkout)
|
default=_get_default_checkout)
|
||||||
can_confirm = fields.Boolean(compute="_can_confirm")
|
can_confirm = fields.Boolean(compute="_can_confirm")
|
||||||
|
|
||||||
@@ -308,7 +312,7 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
avail = real_max
|
avail = real_max
|
||||||
|
|
||||||
|
|
||||||
if 100000 < avail > 0:
|
if 100000 > avail > 0:
|
||||||
res.max_rooms = avail
|
res.max_rooms = avail
|
||||||
else:
|
else:
|
||||||
res.max_rooms = 0
|
res.max_rooms = 0
|
||||||
@@ -320,7 +324,6 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
for record in self:
|
for record in self:
|
||||||
if record.rooms_num > record.max_rooms:
|
if record.rooms_num > record.max_rooms:
|
||||||
raise ValidationError(_("There are not enough rooms!"))
|
raise ValidationError(_("There are not enough rooms!"))
|
||||||
|
|
||||||
checkin = record.checkin or record.folio_wizard_id.checkin
|
checkin = record.checkin or record.folio_wizard_id.checkin
|
||||||
checkout = record.checkout or record.folio_wizard_id.checkout
|
checkout = record.checkout or record.folio_wizard_id.checkout
|
||||||
chkin_utc_dt = fields.Date.from_string(checkin)
|
chkin_utc_dt = fields.Date.from_string(checkin)
|
||||||
@@ -350,7 +353,7 @@ class HotelRoomTypeWizards(models.TransientModel):
|
|||||||
|
|
||||||
price = (res_price * record.discount) * 0.01
|
price = (res_price * record.discount) * 0.01
|
||||||
total_price = record.rooms_num * price
|
total_price = record.rooms_num * price
|
||||||
record.write({
|
record.update({
|
||||||
'checkin': checkin,
|
'checkin': checkin,
|
||||||
'checkout': checkout,
|
'checkout': checkout,
|
||||||
'price': price,
|
'price': price,
|
||||||
@@ -371,10 +374,10 @@ class ReservationWizard(models.TransientModel):
|
|||||||
help='List of adults there in guest list. ')
|
help='List of adults there in guest list. ')
|
||||||
children = fields.Integer('Children',
|
children = fields.Integer('Children',
|
||||||
help='Number of children there in guest list.')
|
help='Number of children there in guest list.')
|
||||||
checkin = fields.Datetime('Check In', required=True)
|
checkin = fields.Date('Check In', required=True)
|
||||||
checkout = fields.Datetime('Check Out', required=True)
|
checkout = fields.Date('Check Out', required=True)
|
||||||
room_type_id = fields.Many2one('hotel.room.type',
|
room_type_id = fields.Many2one('hotel.room.type',
|
||||||
string='Virtual Room Type',
|
string='Room Type',
|
||||||
required=True)
|
required=True)
|
||||||
nights = fields.Integer('Nights', readonly=True)
|
nights = fields.Integer('Nights', readonly=True)
|
||||||
price = fields.Float(string='Total')
|
price = fields.Float(string='Total')
|
||||||
|
|||||||
Reference in New Issue
Block a user