mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[FIX] Connector
This commit is contained in:
@@ -234,11 +234,15 @@ class ChannelBindingHotelReservationListener(Component):
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_write(self, record, fields=None):
|
||||
record.push_availability()
|
||||
fields_to_check = ('room_id', 'state', 'checkin', 'checkout', 'room_type_id',
|
||||
'reservation_line_ids', 'splitted', 'overbooking')
|
||||
fields_checked = [elm for elm in fields_to_check if elm in fields]
|
||||
if any(fields_checked):
|
||||
record.refresh_availability()
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_unlink(self, record, fields=None):
|
||||
record.push_availability()
|
||||
record.refresh_availability()
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_cancel(self, record, fields=None):
|
||||
|
||||
@@ -136,4 +136,7 @@ class ChannelBindingRoomTypeListener(Component):
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_write(self, record, fields=None):
|
||||
record.modify_room()
|
||||
fields_to_check = ('name', 'ota_capacity', 'list_price', 'total_rooms_count')
|
||||
fields_checked = [elm for elm in fields_to_check if elm in fields]
|
||||
if any(fields_checked):
|
||||
record.modify_room()
|
||||
|
||||
@@ -153,6 +153,24 @@ class BindingHotelRoomTypeAvailabilityListener(Component):
|
||||
if 'avail' in fields:
|
||||
record.channel_bind_ids.write({'channel_pushed': False})
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_create(self, record, fields=None):
|
||||
if not any(record.channel_bind_ids):
|
||||
channel_room_type_avail_obj = self.env[
|
||||
'channel.room.type.availability']
|
||||
backends = self.env['channel.backend'].search([])
|
||||
for backend in backends:
|
||||
avail_bind = channel_room_type_avail_obj.search([
|
||||
('odoo_id', '=', record.id),
|
||||
('backend_id', '=', backend.id),
|
||||
])
|
||||
if not avail_bind:
|
||||
channel_room_type_avail_obj.create({
|
||||
'odoo_id': record.id,
|
||||
'channel_pushed': False,
|
||||
'backend_id': backend.id,
|
||||
})
|
||||
|
||||
class ChannelBindingHotelRoomTypeAvailabilityListener(Component):
|
||||
_name = 'channel.binding.hotel.room.type.availability.listener'
|
||||
_inherit = 'base.connector.listener'
|
||||
@@ -160,7 +178,9 @@ class ChannelBindingHotelRoomTypeAvailabilityListener(Component):
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
def on_record_write(self, record, fields=None):
|
||||
if 'avail' in fields:
|
||||
fields_to_check = ('avail', 'date')
|
||||
fields_checked = [elm for elm in fields_to_check if elm in fields]
|
||||
if any(fields_checked):
|
||||
record.channel_pushed = False
|
||||
|
||||
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
|
||||
|
||||
@@ -75,6 +75,8 @@ class ProductPricelist(models.Model):
|
||||
if pricelist_bind.external_id:
|
||||
new_name += ' (%s Backend)' % pricelist_bind.backend_id.name
|
||||
names.append((name[0], new_name))
|
||||
else:
|
||||
names.append((name[0], name[1]))
|
||||
return names
|
||||
|
||||
class BindingProductPricelistListener(Component):
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from odoo.addons.component.core import Component
|
||||
from odoo.addons.hotel_channel_connector.components.core import ChannelConnectorError
|
||||
from odoo import api, _
|
||||
from odoo import api, _, fields
|
||||
|
||||
class HotelReservationExporter(Component):
|
||||
_inherit = 'channel.hotel.reservation.exporter'
|
||||
@@ -12,6 +12,9 @@ class HotelReservationExporter(Component):
|
||||
def cancel_reservation(self, binding):
|
||||
user = self.env['res.user'].browse(self.env.uid)
|
||||
try:
|
||||
binding.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({'sync_date': fields.Datetime.now()})
|
||||
return self.backend_adapter.cancel_reservation(
|
||||
binding.external_id,
|
||||
_('Cancelled by %s') % user.partner_id.name)
|
||||
|
||||
@@ -12,7 +12,9 @@ class HotelRoomTypeExporter(Component):
|
||||
@api.model
|
||||
def modify_room(self, binding):
|
||||
try:
|
||||
binding.sync_date = fields.Datetime.now()
|
||||
binding.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({'sync_date': fields.Datetime.now()})
|
||||
return self.backend_adapter.modify_room(
|
||||
binding.external_id,
|
||||
binding.name,
|
||||
@@ -47,7 +49,9 @@ class HotelRoomTypeExporter(Component):
|
||||
internal_message=str(err),
|
||||
channel_message=err.data['message'])
|
||||
else:
|
||||
binding.write({
|
||||
binding.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({
|
||||
'channel_short_code': short_code,
|
||||
})
|
||||
self.binder.bind(external_id, binding)
|
||||
|
||||
@@ -56,7 +56,9 @@ class HotelRoomTypeAvailabilityExporter(Component):
|
||||
channel_message=err.data['message'])
|
||||
return False
|
||||
else:
|
||||
channel_room_type_avails.write({
|
||||
channel_room_type_avails.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({
|
||||
'channel_pushed': True,
|
||||
'sync_date': fields.Datetime.now(),
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from odoo.addons.component.core import Component
|
||||
from odoo.addons.hotel_channel_connector.components.core import ChannelConnectorError
|
||||
from odoo import api
|
||||
from odoo import api, fields
|
||||
|
||||
|
||||
class HotelRoomTypeRestrictionExporter(Component):
|
||||
@@ -12,6 +12,9 @@ class HotelRoomTypeRestrictionExporter(Component):
|
||||
@api.model
|
||||
def rename_rplan(self, binding):
|
||||
try:
|
||||
binding.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({'sync_date': fields.Datetime.now()})
|
||||
return self.backend_adapter.rename_rplan(
|
||||
binding.external_id,
|
||||
binding.name)
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
# Copyright 2018 Alexandre Díaz <dev@redneboa.es>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
import logging
|
||||
from datetime import timedelta
|
||||
from odoo.addons.component.core import Component
|
||||
from odoo.addons.hotel_channel_connector.components.core import ChannelConnectorError
|
||||
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
|
||||
from odoo import api,fields
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class HotelRoomTypeRestrictionItemExporter(Component):
|
||||
@@ -79,7 +81,9 @@ class HotelRoomTypeRestrictionItemExporter(Component):
|
||||
internal_message=str(err),
|
||||
channel_message=err.data['message'])
|
||||
else:
|
||||
unpushed.write({
|
||||
unpushed.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({
|
||||
'channel_pushed': True,
|
||||
'sync_date': fields.Datetime.now(),
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
from odoo.addons.component.core import Component
|
||||
from odoo.addons.hotel_channel_connector.components.core import ChannelConnectorError
|
||||
from odoo import api, _
|
||||
from odoo import api, _, fields
|
||||
|
||||
|
||||
class ProductPricelistExporter(Component):
|
||||
@@ -12,6 +12,9 @@ class ProductPricelistExporter(Component):
|
||||
@api.model
|
||||
def rename_plan(self, binding):
|
||||
try:
|
||||
binding.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({'sync_date': fields.Datetime.now()})
|
||||
return self.backend_adapter.rename_plan(
|
||||
binding.external_id,
|
||||
binding.name)
|
||||
|
||||
@@ -72,7 +72,9 @@ class ProductPricelistItemExporter(Component):
|
||||
internal_message=str(err),
|
||||
channel_message=err.data['message'])
|
||||
else:
|
||||
channel_unpushed.write({
|
||||
channel_unpushed.with_context({
|
||||
'connector_no_export': True,
|
||||
}).write({
|
||||
'channel_pushed': True,
|
||||
'sync_date': fields.Datetime.now(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user