[FIX] Connector

This commit is contained in:
QS5ELkMu
2018-12-07 14:46:15 +01:00
parent 902ff6e758
commit e7301ed2d7
11 changed files with 62 additions and 12 deletions

View File

@@ -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):

View File

@@ -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()

View File

@@ -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))

View File

@@ -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):

View File

@@ -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)

View File

@@ -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)

View File

@@ -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(),
})

View File

@@ -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)

View File

@@ -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(),
})

View File

@@ -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)

View File

@@ -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(),
})