trytonpsk-hotel/configuration.py

89 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
from trytond.model.exceptions import AccessError
from trytond.i18n import gettext
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__()
@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:
raise AccessError(gettext('hotel.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)