[WIP] retrieve data in calendar by product.pricelist and hotel

This commit is contained in:
Pablo
2019-08-22 20:15:36 +02:00
parent 0df9a27fcd
commit 42a53dfd26
8 changed files with 26 additions and 12 deletions

View File

@@ -64,6 +64,7 @@
</button> </button>
</div> </div>
<field name="hotel_id" invisible="0"/>
<h2><field name="name"/></h2> <h2><field name="name"/></h2>
<h1> <h1>
<field name="partner_id" default_focus="1" placeholder="Guest" attrs="{'invisible':[('reservation_type','in',('out'))]}"/> <field name="partner_id" default_focus="1" placeholder="Guest" attrs="{'invisible':[('reservation_type','in',('out'))]}"/>
@@ -237,6 +238,7 @@
<field name="amount_total" sum="Total amount"/> <field name="amount_total" sum="Total amount"/>
<field name="pending_amount" sum="Total debt"/> <field name="pending_amount" sum="Total debt"/>
<field name="invoice_status" /> <field name="invoice_status" />
<field name="hotel_id" invisible="0"/>
</tree> </tree>
</field> </field>
</record> </record>

View File

@@ -142,6 +142,7 @@
</div> </div>
<span class="label label-danger" attrs="{'invisible': [('state', 'not in', ('cancelled'))]}">Cancelled Reservation!</span> <span class="label label-danger" attrs="{'invisible': [('state', 'not in', ('cancelled'))]}">Cancelled Reservation!</span>
<span class="label label-warning" attrs="{'invisible': [('overbooking', '=', False)]}">OverBooking!</span> <span class="label label-warning" attrs="{'invisible': [('overbooking', '=', False)]}">OverBooking!</span>
<field name="hotel_id" invisible="0"/>
<h1> <h1>
<field name="room_id" select="1" <field name="room_id" select="1"
nolabel="1" options="{'no_create': True,'no_open': True}" placeholder="Room" nolabel="1" options="{'no_create': True,'no_open': True}" placeholder="Room"

View File

@@ -22,7 +22,7 @@
</h1> </h1>
</div> </div>
<group> <group>
<field name="hotel_id" invisible="1"/> <field name="hotel_id" invisible="0"/>
</group> </group>
<div> <div>
<separator string="Pricelist Items"/> <separator string="Pricelist Items"/>

View File

@@ -22,7 +22,7 @@
<field name="class_id" /> <field name="class_id" />
</group> </group>
<group> <group>
<field name="hotel_id" invisible="1"/> <field name="hotel_id" invisible="0"/>
<field name="list_price" widget='monetary' options="{'currency_field': 'currency_id', 'field_digits': True}"/> <field name="list_price" widget='monetary' options="{'currency_field': 'currency_id', 'field_digits': True}"/>
</group> </group>
</group> </group>

View File

@@ -32,7 +32,7 @@
<notebook> <notebook>
<page name="information_hotel_room" string="Information"> <page name="information_hotel_room" string="Information">
<group colspan="4" col="4"> <group colspan="4" col="4">
<field name="hotel_id" invisible="1"/> <field name="hotel_id" invisible="0" force_save="1"/>
<field name="floor_id" string="Ubication" <field name="floor_id" string="Ubication"
attrs="{'readonly':[('shared_room_id','!=', False)]}" /> attrs="{'readonly':[('shared_room_id','!=', False)]}" />
<!-- <field name="categ_id" select="1" domain="[('isroomtype','=',True)]" string="Room Type" /> --> <!-- <field name="categ_id" select="1" domain="[('isroomtype','=',True)]" string="Room Type" /> -->

View File

@@ -6,7 +6,7 @@ from odoo.tools import (
DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATE_FORMAT,
DEFAULT_SERVER_DATETIME_FORMAT) DEFAULT_SERVER_DATETIME_FORMAT)
from odoo import models, api, _, fields from odoo import models, api, _, fields
from odoo.exceptions import ValidationError from odoo.exceptions import AccessError, ValidationError
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@@ -211,9 +211,12 @@ class HotelCalendarManagement(models.TransientModel):
@api.model @api.model
def get_hcalendar_all_data(self, dfrom, dto, pricelist_id, restriction_id, def get_hcalendar_all_data(self, dfrom, dto, pricelist_id, restriction_id,
withRooms): withRooms):
hotel_id = self.env.user.hotel_id.id
if not dfrom or not dto: if not dfrom or not dto:
raise ValidationError(_('Input Error: No dates defined!')) raise ValidationError(_('Input Error: No dates defined!'))
vals = {} vals = {}
# TODO: res.config by hotel
if not pricelist_id: if not pricelist_id:
pricelist_id = self.env['ir.default'].sudo().get( pricelist_id = self.env['ir.default'].sudo().get(
'res.config.settings', 'default_pricelist_id') 'res.config.settings', 'default_pricelist_id')
@@ -221,17 +224,16 @@ class HotelCalendarManagement(models.TransientModel):
restriction_id = self.env['ir.default'].sudo().get( restriction_id = self.env['ir.default'].sudo().get(
'res.config.settings', 'default_restriction_id') 'res.config.settings', 'default_restriction_id')
# TODO: ensure pricelist_id and restriction_id belong to the current hotel
pricelist_id = int(pricelist_id) pricelist_id = int(pricelist_id)
vals.update({'pricelist_id': pricelist_id}) vals.update({'pricelist_id': pricelist_id})
restriction_id = int(restriction_id) restriction_id = int(restriction_id)
vals.update({'restriction_id': restriction_id}) vals.update({'restriction_id': restriction_id})
room_type_rest_it_obj = self.env['hotel.room.type.restriction.item'] restriction_item_ids = self.env['hotel.room.type.restriction.item'].search([
restriction_item_ids = room_type_rest_it_obj.search([
('date', '>=', dfrom), ('date', '<=', dto), ('date', '>=', dfrom), ('date', '<=', dto),
('restriction_id', '=', restriction_id), ('restriction_id', '=', restriction_id),
]) ])
pricelist_item_ids = self.env['product.pricelist.item'].search([ pricelist_item_ids = self.env['product.pricelist.item'].search([
('date_start', '>=', dfrom), ('date_end', '<=', dto), ('date_start', '>=', dfrom), ('date_end', '<=', dto),
('pricelist_id', '=', pricelist_id), ('pricelist_id', '=', pricelist_id),
@@ -241,6 +243,7 @@ class HotelCalendarManagement(models.TransientModel):
json_prices = self._hcalendar_pricelist_json_data(pricelist_item_ids) json_prices = self._hcalendar_pricelist_json_data(pricelist_item_ids)
json_rest = self._hcalendar_restriction_json_data(restriction_item_ids) json_rest = self._hcalendar_restriction_json_data(restriction_item_ids)
# TODO REVIEW: what are json_rc and json_events used for in calendar management ¿?
json_rc = self._hcalendar_get_count_reservations_json_data(dfrom, dto) json_rc = self._hcalendar_get_count_reservations_json_data(dfrom, dto)
json_events = self._hcalendar_events_json_data(dfrom, dto) json_events = self._hcalendar_events_json_data(dfrom, dto)
vals.update({ vals.update({
@@ -251,9 +254,15 @@ class HotelCalendarManagement(models.TransientModel):
}) })
if withRooms: if withRooms:
room_ids = self.env['hotel.room.type'].search( room_ids = self.env['hotel.room.type'].search([
[], ('hotel_id', '=', hotel_id)
order='sequence ASC') ], order='sequence ASC') or None
if not room_ids:
raise AccessError(
_("Wrong hotel and company access settings for this user. "
"No room types found for hotel %s") % self.env.user.hotel_id.name)
json_rooms = self._hcalendar_room_json_data(room_ids) json_rooms = self._hcalendar_room_json_data(room_ids)
vals.update({'rooms': json_rooms or []}) vals.update({'rooms': json_rooms or []})

View File

@@ -10,6 +10,7 @@ class ProductPricelist(models.Model):
@api.multi @api.multi
def update_price(self, room_type_id, date, price): def update_price(self, room_type_id, date, price):
import wdb; wdb.set_trace()
room_type = self.env['hotel.room.type'].browse(room_type_id) room_type = self.env['hotel.room.type'].browse(room_type_id)
pritem_obj = self.env['product.pricelist.item'] pritem_obj = self.env['product.pricelist.item']
for record in self: for record in self:

View File

@@ -40,7 +40,7 @@ return AbstractModel.extend({
}, },
get_pricelists: function () { get_pricelists: function () {
var domain = []; var domain = [['hotel_ids', 'in', Session.user_hotels.current_hotel[0]]];
domain.push(['pricelist_type', '=', 'daily']); domain.push(['pricelist_type', '=', 'daily']);
return this._rpc({ return this._rpc({
model: 'product.pricelist', model: 'product.pricelist',
@@ -51,10 +51,11 @@ return AbstractModel.extend({
}, },
get_restrictions: function () { get_restrictions: function () {
var domain = [['hotel_id', '=', Session.user_hotels.current_hotel[0]]];
return this._rpc({ return this._rpc({
model: 'hotel.room.type.restriction', model: 'hotel.room.type.restriction',
method: 'search_read', method: 'search_read',
args: [false, ['id','name']], args: [domain, ['id','name']],
context: Session.user_context, context: Session.user_context,
}); });
}, },