trytonpsk-hotel/room.py

111 lines
3.6 KiB
Python

#This file is part of Presik. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields
from trytond.pyson import Eval
STATES = {'readonly': (Eval('state') != 'draft')}
class Room(ModelSQL, ModelView):
'Room'
__name__ = 'hotel.room'
name = fields.Char('Name', required=True)
code = fields.Char('Code')
active = fields.Boolean('Active')
templates = fields.Many2Many('hotel.room-product.template', 'room',
'template', 'Hotel Room - Product Accommodation', domain=[
('type', '=', 'service'),
('kind', '=', 'accommodation'),
])
classification = fields.Many2One('hotel.room.classification',
'Classification')
location = fields.Many2One('hotel.location', 'Location',
select=True)
amenities = fields.Many2Many('hotel.room-hotel.amenities', 'room',
'amenities', 'Amenities')
space = fields.Integer('Space', help='Space on m2')
channel_id = fields.Char('Channel ID')
main_accommodation = fields.Many2One('product.template',
'Main Accommodation', ondelete='RESTRICT', depends=['templates'],
domain=[('id', 'in', Eval('templates', []))],
)
# TODO: Maybe add require a Current State field
min_unit_price = fields.Numeric('Min. Unit Price', digits=(16, 4))
max_unit_price = fields.Numeric('Max. Unit Price', digits=(16, 4))
@classmethod
def __setup__(cls):
super(Room, cls).__setup__()
@staticmethod
def default_active():
return True
class RoomAmenities(ModelSQL):
'Room - Amenities'
__name__ = 'hotel.room-hotel.amenities'
_rec_name = 'name'
room = fields.Many2One('hotel.room', 'Room', required=True,
ondelete='CASCADE')
amenities = fields.Many2One('hotel.amenities', 'Amenities',
required=True, ondelete='CASCADE')
class Amenities(ModelSQL, ModelView):
'Amenities'
__name__ = 'hotel.amenities'
_rec_name = 'name'
name = fields.Char('Name', required=True)
notes = fields.Text('Notes')
type = fields.Selection([
('', ''),
('lingerie', 'Lingerie Room'),
('service', 'Service'),
], 'Type of Service')
cleaning_days = fields.One2Many('hotel.cleaning_days', 'amenities',
'Cleanning Days', states={
'invisible': Eval('type') != 'lingerie',
}, depends=['type'])
@classmethod
def __setup__(cls):
super(Amenities, cls).__setup__()
class RoomClassification(ModelSQL, ModelView):
'Room Classification'
__name__ = 'hotel.room.classification'
name = fields.Char('Name', required=True)
class CleanningDays(ModelSQL, ModelView):
'Cleanning Days'
__name__ = 'hotel.cleaning_days'
amenities = fields.Many2One('hotel.amenities', 'Amenities',
required=True, ondelete='CASCADE')
weekday = fields.Selection([
('1', 'Monday'),
('2', 'Tuesday'),
('3', 'Wednesday'),
('4', 'Thursday'),
('5', 'Friday'),
('6', 'Saturday'),
('7', 'Sunday'),
], 'Weekday', required=True)
note = fields.Text('Note')
@classmethod
def __setup__(cls):
super(CleanningDays, cls).__setup__()
class RoomTemplate(ModelSQL):
'Room - Template'
__name__ = 'hotel.room-product.template'
room = fields.Many2One('hotel.room', 'Room', required=True,
ondelete='CASCADE')
template = fields.Many2One('product.template', 'Product Template',
required=True, ondelete='CASCADE')