Below is an example based on our Woocommerce connector. But all the connectors are extended the same way. First of all usually we name extension modules like “integration_woocommerce_extension”
You need to extend all send and receive fields for product.product and product.template
integration_woocommerce_extension/models/fields/send_fields_product_template.py
from odoo.addons.integration_woocommerce.models.fields.send_fields_product_template import (
SendFieldsProductTemplateWooCommerce,
)
class SendProductTemplateExtension(SendFieldsProductTemplateWooCommerce):
def send_xxx(self, field_name):
...
return {
field_name: ...,
}
integration_woocommerce_extension/models/fields/receive_fields_product_template.py
from odoo.addons.integration_woocommerce.models.fields.receive_fields_product_template \
import ReceiveFieldsProductTemplateWooCommerce
class ReceiveProductTemplateExtension(ReceiveFieldsProductTemplateWooCommerce):
def receive_xxx(self, field_name):
return {}
integration_woocommerce_extension/models/fields/send_fields_product_product.py
from odoo.addons.integration_woocommerce.models.fields.send_fields_product_product \
import SendFieldsProductProductWooCommerce
class SendProductProductExtension(SendFieldsProductProductWooCommerce):
pass
integration_woocommerce_extension/models/fields/receive_fields_product_product.py
from odoo.addons.integration_woocommerce.models.fields.receive_fields_product_product \
import ReceiveFieldsProductProductWooCommerce
class ReceiveProductProductExtension(ReceiveFieldsProductProductWooCommerce):
pass
Also if you want to add more API calls to Woocommerce, create also new API class
integration_woocommerce_extension/woocommerce_api_client.py
from odoo.addons.integration_woocommerce.woocommerce_api_client import WooCommerceApiClient class WooCommerceApiClientExtension(WooCommerceApiClient): pass
Now register all new classes in sales integration
integration_woocommerce_extension/models/sale_integration.py
from .fields.send_fields_product_product import SendProductProductExtension
from .fields.send_fields_product_template import SendProductTemplateExtension
from .fields.receive_fields_product_product import ReceiveProductProductExtension
from .fields.receive_fields_product_template import ReceiveProductTemplateExtension
from ..woocommerce_api_client import WooCommerceApiClientExtension
class SaleIntegration(models.Model):
_inherit = 'sale.integration'
def init_send_field_converter(self, odoo_obj=False):
if not self.is_woocommerce():
return super(SaleIntegration, self).init_send_field_converter(odoo_obj)
if getattr(odoo_obj, '_name', '') == 'product.template':
return SendProductTemplateExtension(self, odoo_obj)
if getattr(odoo_obj, '_name', '') == 'product.product':
return SendProductProductExtension(self, odoo_obj)
return super(SaleIntegration, self).init_send_field_converter(odoo_obj)
def init_receive_field_converter(self, odoo_obj=False, external_obj=False):
if not self.is_woocommerce():
return super(SaleIntegration, self).init_receive_field_converter(odoo_obj, external_obj)
if getattr(odoo_obj, '_name', '') == 'product.template':
return ReceiveProductTemplateExtension(self, odoo_obj, external_obj)
if getattr(odoo_obj, '_name', '') == 'product.product':
return ReceiveProductProductExtension(self, odoo_obj, external_obj)
return super(SaleIntegration, self).init_receive_field_converter(odoo_obj, external_obj)
def get_class(self):
self.ensure_one()
if self.is_woocommerce():
return WooCommerceApiClientExtension
return super(SaleIntegration, self).get_class()