# This file is part of Tryton. 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, If from trytond.transaction import Transaction __all__ = ['Configuration', 'ConfigurationProduct'] class Configuration(ModelSQL, ModelView): 'Hotel Configuration' __name__ = 'hotel.configuration' booking_sequence = fields.Many2One('ir.sequence', 'Hotel Booking Sequence', domain=[ ('company', 'in', [Eval('context', {}).get('company', 0), None]), ('code', '=', 'hotel'), ], required=True) hotel_service_sequence = fields.Many2One('ir.sequence', 'Hotel Service Sequence', domain=[ ('company', 'in', [Eval('context', {}).get('company', 0), None]), ('code', '=', 'hotel'), ], required=True) registration_card_sequence = fields.Many2One('ir.sequence', 'Registration Card Sequence', domain=[ ('company', 'in', [Eval('context', {}).get('company', 0), None]), ('code', '=', 'hotel'), ], required=True) default_charges = fields.Many2Many('hotel.configuration-product.product', 'configuration', 'product', 'Default Charges') check_in_time = fields.Time('Check In Time', required=True) check_out_time = fields.Time('Check Out Time', required=True) default_accommodation = fields.Many2One('product.product', 'Default Accommodation') taxes_exception_rule = fields.Many2One('account.tax.rule', 'Taxes Exception Rule') default_channel_seller = fields.Many2One('hotel.channel', 'Default Channel') company = fields.Many2One('company.company', 'Company', required=True, domain=[ ('id', If(Eval('context', {}).contains('company'), '=', '!='), Eval('context', {}).get('company', 0)), ]) full_clean_time = fields.Selection([ ('', ''), ('by_time', 'By Time'), ('on_check_out', 'On Check Out'), ], 'Full Clean Time') full_clean_lapse = fields.Integer('Full Clean Lapse', help='In Days') age_children_policy = fields.Integer('Age Children Policy', help='In Days') cleaning_check_out = fields.Many2One('hotel.housekeeping.cleaning_type', 'Cleaning Check Out') cleaning_check_in = fields.Many2One('hotel.housekeeping.cleaning_type', 'Cleaning Check In') cleaning_occupied = fields.Many2One('hotel.housekeeping.cleaning_type', 'Cleaning Occupied') quarantine_rooms = fields.Numeric('Quarantine Rooms', digits=(2, 0), help='In days') booking_email_template = fields.Many2One('email.template', 'Booking Template Email') @classmethod def __setup__(cls): super(Configuration, cls).__setup__() cls._error_messages.update({ 'missing_default_configuration': ('Missing default configuration sequence!'), }) @staticmethod def default_company(): return Transaction().context.get('company') or False @classmethod def get_configuration(cls): company_id = Transaction().context.get('company') if company_id: config, = cls.search([ ('company', '=', company_id) ]) if not config or not config.booking_sequence: cls.raise_user_error('missing_default_configuration') return config class ConfigurationProduct(ModelSQL): 'Configuration - Product' __name__ = 'hotel.configuration-product.product' _table = 'hotel_configuration_product_rel' configuration = fields.Many2One('hotel.configuration', 'Configuration', ondelete='CASCADE', select=True, required=True) product = fields.Many2One('product.product', 'Product', ondelete='RESTRICT', select=True, required=True)