From a31ac17936943e713b2867fdcecb74cb0db34a8a Mon Sep 17 00:00:00 2001 From: Pablo Quesada Barriuso Date: Sat, 28 Jul 2018 11:34:16 +0200 Subject: [PATCH] Remove Virtual Room --- hotel/models/virtual_room.py | 137 ----------------------------------- 1 file changed, 137 deletions(-) delete mode 100644 hotel/models/virtual_room.py diff --git a/hotel/models/virtual_room.py b/hotel/models/virtual_room.py deleted file mode 100644 index 2ccfa9a99..000000000 --- a/hotel/models/virtual_room.py +++ /dev/null @@ -1,137 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2017 Solucións Aloxa S.L. -# Dario Lodeiros <> -# Alexandre Díaz -# -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## -from decimal import Decimal -from datetime import datetime, timedelta -import dateutil.parser -# For Python 3.0 and later -from urllib.request import urlopen -import time -from openerp.exceptions import except_orm, UserError, ValidationError -from openerp.tools import ( - misc, - DEFAULT_SERVER_DATE_FORMAT, - DEFAULT_SERVER_DATETIME_FORMAT) -from openerp import models, fields, api, _ -from odoo.addons.hotel import date_utils - - -class VirtualRoom(models.Model): - _name = 'hotel.virtual.room' - _inherits = {'product.product': 'product_id'} - - @api.depends('room_ids', 'room_type_ids') - def _compute_total_rooms(self): - for r in self: - count = 0 - count += len(r.room_ids) # Rooms linked directly - room_categories = r.room_type_ids.mapped('room_ids.id') - count += self.env['hotel.room'].search_count([ - ('categ_id.id', 'in', room_categories) - ]) # Rooms linked through room type - r.total_rooms_count = count - - @api.constrains('room_ids', 'room_type_ids') - def _check_duplicated_rooms(self): - warning_msg = "" - for r in self: - room_categories = self.room_type_ids.mapped('room_ids.id') - if self.room_ids & self.env['hotel.room'].search([ - ('categ_id.id', 'in', room_categories)]): - room_ids = self.room_ids & self.env['hotel.room'].search([ - ('categ_id.id', 'in', room_categories) - ]) - rooms_name = ','.join(str(x.name) for x in room_ids) - warning_msg += _('You can not enter the same room in duplicate \ - (check the room types) %s') % rooms_name - raise models.ValidationError(warning_msg) - - @api.constrains('max_real_rooms', 'room_ids', 'room_type_ids') - def _check_max_rooms(self): - warning_msg = "" - for r in self: - if self.max_real_rooms > self.total_rooms_count: - warning_msg += _('The Maxime rooms allowed can not be greate \ - than total rooms count') - raise models.ValidationError(warning_msg) - - virtual_code = fields.Char('Code') # not used - room_ids = fields.Many2many('hotel.room', string='Rooms') - room_type_ids = fields.Many2many('hotel.room.type', string='Room Types') - total_rooms_count = fields.Integer(compute='_compute_total_rooms') - product_id = fields.Many2one('product.product', 'Product_id', - required=True, delegate=True, - ondelete='cascade') - # FIXME services are related to real rooms - service_ids = fields.Many2many('hotel.services', - string='Included Services') - max_real_rooms = fields.Integer('Default Max Room Allowed') - product_id = fields.Many2one( - 'product.product', required=True, - ondelete='cascade') - active = fields.Boolean(default=True, help="The active field allows you to hide the category without removing it.") - - @api.multi - def get_capacity(self): - self.ensure_one() - hotel_room_obj = self.env['hotel.room'] - room_categories = self.room_type_ids.mapped('room_ids.id') - room_ids = self.room_ids + hotel_room_obj.search([ - ('categ_id.id', 'in', room_categories) - ]) - capacities = room_ids.mapped('capacity') - return any(capacities) and min(capacities) or 0 - - @api.model - def check_availability_virtual_room(self, checkin, checkout, - virtual_room_id=False, notthis=[]): - occupied = self.env['hotel.reservation'].occupied(checkin, checkout) - rooms_occupied = occupied.mapped('product_id.id') - free_rooms = self.env['hotel.room'].search([ - ('product_id.id', 'not in', rooms_occupied), - ('id', 'not in', notthis) - ]) - if virtual_room_id: - hotel_room_obj = self.env['hotel.room'] - virtual_room = self.env['hotel.virtual.room'].search([ - ('id', '=', virtual_room_id) - ]) - room_categories = virtual_room.room_type_ids.mapped('room_ids.id') - rooms_linked = virtual_room.room_ids | hotel_room_obj.search([ - ('categ_id.id', 'in', room_categories)]) - free_rooms = free_rooms & rooms_linked - return free_rooms.sorted(key=lambda r: r.sequence) - - @api.multi - def unlink(self): - for record in self: - # Set fixed price to rooms with price from this virtual rooms - rooms = self.env['hotel.room'].search([ - ('sale_price_type', '=', 'vroom'), - ('price_virtual_room', '=', record.id) - ]) - for room in rooms: - room.sale_price_type = 'fixed' - # Remove product.product - record.product_id.unlink() - return super(VirtualRoom, self).unlink()