[WIP] Add channel virtual pricelists

This commit is contained in:
Pablo
2019-03-05 03:14:48 +01:00
parent 604234fb6c
commit 56dac40616
7 changed files with 59 additions and 3 deletions

View File

@@ -53,6 +53,9 @@ class HotelChannelInterfaceAdapter(AbstractComponent):
def create_plan(self, name, daily=1):
raise NotImplementedError
def create_vplan(self, name, pid, dtype, value):
raise NotImplementedError
def delete_plan(self, channel_plan_id):
raise NotImplementedError

View File

@@ -28,6 +28,15 @@ class ChannelProductPricelist(models.Model):
exporter = work.component(usage='product.pricelist.exporter')
exporter.create_plan(self)
@job(default_channel='root.channel')
@api.multi
def create_vplan(self):
self.ensure_one()
if not self.external_id:
with self.backend_id.work_on(self._name) as work:
exporter = work.component(usage='product.pricelist.exporter')
exporter.create_vplan(self)
@job(default_channel='root.channel')
@api.multi
def update_plan_name(self):
@@ -62,7 +71,7 @@ class ProductPricelist(models.Model):
inverse_name='odoo_id',
string='Hotel Channel Connector Bindings')
is_virtual_plan = fields.Boolean("Is a Virtual Pricing Plan", compute='_compute_virtual_plan', readonly="True",
is_virtual_plan = fields.Boolean("Is a Virtual Pricing Plan", compute='_compute_virtual_plan',
help="A virtual plan is based on another Pricelist "
"with a fixed or percentage variation.")
@@ -149,7 +158,10 @@ class ChannelBindingProductPricelistListener(Component):
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
def on_record_create(self, record, fields=None):
record.create_plan()
if record.is_virtual_plan:
record.create_vplan()
else:
record.create_plan()
@skip_if(lambda self, record, **kwargs: self.no_connector_export(record))
def on_record_unlink(self, record, fields=None):

View File

@@ -18,3 +18,7 @@ class ProductPricelistExporter(Component):
@api.model
def create_plan(self, binding):
raise NotImplementedError
@api.model
def create_vplan(self, binding):
raise NotImplementedError

View File

@@ -13,7 +13,7 @@
<group>
<field name="external_id" />
<field name="is_daily_plan" />
<field name="is_virtual_plan" />
<field name="is_virtual_plan"/>
</group>
</form>
</field>

View File

@@ -322,6 +322,21 @@ class WuBookAdapter(AbstractComponent):
})
return results
def create_vplan(self, name, pid, dtype, value):
rcode, results = self._server.add_vplan(
self._session_info[0],
self._session_info[1],
name,
pid,
dtype,
value,
)
if rcode != 0:
raise ChannelConnectorError(_("Can't add virtual pricing plan to wubook"), {
'message': results,
})
return results
def delete_plan(self, channel_plan_id):
rcode, results = self._server.del_plan(
self._session_info[0],

View File

@@ -15,6 +15,9 @@ class ProductPricelistAdapter(Component):
def create_plan(self, name):
return super(ProductPricelistAdapter, self).create_plan(name)
def create_vplan(self, name, pid, dtype, value):
return super(ProductPricelistAdapter, self).create_vplan(name, pid, dtype, value)
def delete_plan(self, external_id):
return super(ProductPricelistAdapter, self).delete_plan(external_id)

View File

@@ -36,3 +36,22 @@ class ProductPricelistExporter(Component):
else:
binding.external_id = external_id
self.binder.bind(external_id, binding)
@api.model
def create_vplan(self, binding):
try:
import wdb; wdb.set_trace()
external_id = self.backend_adapter.create_vplan(
binding.name,
binding.pid,
binding.dtype,
binding.value,
)
except ChannelConnectorError as err:
self.create_issue(
section='pricelist',
internal_message=str(err),
channel_message=err.data['message'])
else:
binding.external_id = external_id
self.binder.bind(external_id, binding)