mirror of
https://bitbucket.org/presik/trytonpsk-hotel.git
synced 2023-12-14 07:52:52 +01:00
110 lines
3.6 KiB
Python
110 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')
|