#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')