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