trytonpsk-hotel/configuration.py

92 lines
3.8 KiB
Python

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