[FIX] fix quota and availability in hotel room type

This commit is contained in:
Pablo
2019-02-25 23:07:01 +01:00
parent f36c7c3d27
commit d6bc9e72fe
4 changed files with 15 additions and 11 deletions

View File

@@ -185,6 +185,7 @@ class HotelReservation(models.Model):
vals.update({'to_read': True})
reservation_id = super(HotelReservation, self).create(vals)
import wdb; wdb.set_trace()
# restar quota si en viene de wubook y es mayor que cero
backend_id = self.env['channel.hotel.room.type'].search([
('odoo_id', '=', vals['room_type_id'])

View File

@@ -41,7 +41,7 @@ class ChannelHotelRoomType(models.Model):
default_max_avail = fields.Integer("Max. Availability", default=_default_max_avail,
help="Maximum simultaneous availability given no availability rules. "
"Use `-1` for using maximum simultaneous availability.")
default_availability = fields.Integer(default=_default_availability, readonly = True,
default_availability = fields.Integer(default=_default_availability, readonly=True,
help="Default availability for OTAs. "
"The availability is calculated based on the quota, "
"the maximum simultaneous availability and "
@@ -52,16 +52,16 @@ class ChannelHotelRoomType(models.Model):
max_price = fields.Float('Max. Price', default=200.0, digits=dp.get_precision('Product Price'),
help="Setup the max price to prevent incidents while editing your prices.")
@api.constrains('default_max_avail', 'default_quota', 'default_availability')
@api.constrains('default_max_avail', 'default_quota')
def _check_availability(self):
for record in self:
if record.quota > record.room_type_id.total_rooms_count:
if record.default_quota > record.total_rooms_count:
raise ValidationError(_("The quota assigned to the channel manager can't be greater "
"than the total rooms count!"))
if (record.max_avail > record.quota) and (record.quota >= 0):
raise ValidationError(_("The maximum simultaneous availability can't be greater "
"than a given quota."))
if record.max_avail > record.room_type_id.total_rooms_count:
# if (record.default_max_avail > record.default_quota) and (record.default_quota >= 0):
# raise ValidationError(_("The maximum simultaneous availability can't be greater "
# "than a given quota."))
if record.default_max_avail > record.total_rooms_count:
raise ValidationError(_("The maximum simultaneous availability can't be greater "
"than the total rooms count!"))
@@ -178,6 +178,7 @@ class HotelRoomType(models.Model):
'default_odoo_id': self.id,
'default_name': self.name,
'default_ota_capacity': self.capacity,
'default_capacity': self.capacity,
'default_list_price': self.list_price,
'default_total_rooms_count': self.total_rooms_count}
return action

View File

@@ -165,7 +165,8 @@ class ChannelHotelRoomTypeAvailability(models.Model):
to_eval.append(room_type_bind.default_availability)
else:
# default availability for OTAs if not record given
# This should happens only when refreshing availability from hotel.reservation
# This should never happens because the channel.hotel.room.type.availability
# should be created and the quota update (if needed) __before__ refreshing_availability()
to_eval.append(room_type_bind.default_availability)
avail = max(min(to_eval), 0)
@@ -185,7 +186,8 @@ class ChannelHotelRoomTypeAvailability(models.Model):
if room_type_avail_id.channel_avail != avail:
room_type_avail_id.write({'channel_avail': avail})
else:
# This should happens only when refreshing availability from hotel.reservation
# This should never happens because the channel.hotel.room.type.availability
# should be created and the quota update (if needed) __before__ refreshing_availability()
channel_room_type_avail_obj.create({
'odoo_id': room_type_bind.odoo_id.id,
'backend_id': backend_id,

View File

@@ -36,10 +36,10 @@
</group>
<group>
<field name="total_rooms_count" />
<field name="default_availability" />
<field name="default_availability" force_save="1" />
</group>
<label colspan="2" class="fa fa-info-circle"
string="Use `-1` for managing no Quota or Maximum simultaneous availability.">
string=" Use `-1` for managing no Quota or Maximum simultaneous availability.">
</label>
</group>
</group>