From e2ed8e6d220cb76d4218dd49a16bbf06fc7fbf11 Mon Sep 17 00:00:00 2001 From: Deniz Gallo Date: Thu, 2 Jul 2026 09:41:38 +0200 Subject: [PATCH] [IMP] connector_woocommerce: export product template/variant by Odoo id --- connector_woocommerce/i18n/ca.po | 30 +++++++++++++++++++ connector_woocommerce/i18n/es.po | 30 +++++++++++++++++++ .../models/backend/backend.py | 24 +++++++++++++-- .../models/product_product/binding.py | 6 ++-- .../models/product_template/binding.py | 8 +++-- .../views/woocommerce_backend_view.xml | 24 +++++++++++++++ 6 files changed, 116 insertions(+), 6 deletions(-) diff --git a/connector_woocommerce/i18n/ca.po b/connector_woocommerce/i18n/ca.po index ede8e5709..36f92e211 100644 --- a/connector_woocommerce/i18n/ca.po +++ b/connector_woocommerce/i18n/ca.po @@ -1501,6 +1501,12 @@ msgstr "" msgid "Export Product Template Since" msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_id +#: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form +msgid "Export Product Template by ID" +msgstr "Exportar plantilla de producte per ID" + #. module: connector_woocommerce #: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_since_date msgid "Export Product Templates Since" @@ -1521,6 +1527,12 @@ msgstr "" msgid "Export Product public category Since" msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_id +#: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form +msgid "Export Product Variant by ID" +msgstr "Exportar variant de producte per ID" + #. module: connector_woocommerce #: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_products_since_date #: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form @@ -1903,6 +1915,24 @@ msgstr "" msgid "If empty, company default (if any) or default will be applied." msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_id +msgid "" +"If set, the export ignores the 'since' date and exports only this product " +"template by its Odoo ID." +msgstr "" +"Si s'informa, l'exportació ignora la data 'des de' i exporta només aquesta " +"plantilla de producte pel seu ID d'Odoo." + +#. module: connector_woocommerce +#: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_backend__export_product_id +msgid "" +"If set, the export ignores the 'since' date and exports only this product " +"variant by its Odoo ID." +msgstr "" +"Si s'informa, l'exportació ignora la data 'des de' i exporta només aquesta " +"variant de producte pel seu ID d'Odoo." + #. module: connector_woocommerce #: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_res_partner__team_id msgid "" diff --git a/connector_woocommerce/i18n/es.po b/connector_woocommerce/i18n/es.po index 95526715c..21c3df51c 100644 --- a/connector_woocommerce/i18n/es.po +++ b/connector_woocommerce/i18n/es.po @@ -1501,6 +1501,12 @@ msgstr "" msgid "Export Product Template Since" msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_id +#: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form +msgid "Export Product Template by ID" +msgstr "Exportar plantilla de producto por ID" + #. module: connector_woocommerce #: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_since_date msgid "Export Product Templates Since" @@ -1521,6 +1527,12 @@ msgstr "" msgid "Export Product public category Since" msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_product_id +#: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form +msgid "Export Product Variant by ID" +msgstr "Exportar variante de producto por ID" + #. module: connector_woocommerce #: model:ir.model.fields,field_description:connector_woocommerce.field_woocommerce_backend__export_products_since_date #: model_terms:ir.ui.view,arch_db:connector_woocommerce.woocommerce_backend_view_form @@ -1903,6 +1915,24 @@ msgstr "" msgid "If empty, company default (if any) or default will be applied." msgstr "" +#. module: connector_woocommerce +#: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_backend__export_product_tmpl_id +msgid "" +"If set, the export ignores the 'since' date and exports only this product " +"template by its Odoo ID." +msgstr "" +"Si se informa, la exportación ignora la fecha 'desde' y exporta solo esta " +"plantilla de producto por su ID de Odoo." + +#. module: connector_woocommerce +#: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_backend__export_product_id +msgid "" +"If set, the export ignores the 'since' date and exports only this product " +"variant by its Odoo ID." +msgstr "" +"Si se informa, la exportación ignora la fecha 'desde' y exporta solo esta " +"variante de producto por su ID de Odoo." + #. module: connector_woocommerce #: model:ir.model.fields,help:connector_woocommerce.field_woocommerce_res_partner__team_id msgid "" diff --git a/connector_woocommerce/models/backend/backend.py b/connector_woocommerce/models/backend/backend.py index 340d4f165..0961ae10a 100644 --- a/connector_woocommerce/models/backend/backend.py +++ b/connector_woocommerce/models/backend/backend.py @@ -108,6 +108,20 @@ def _check_page_size(self): import_sale_order_since_date = fields.Datetime( string="Import Sale Order Since", ) + export_product_tmpl_id = fields.Many2one( + comodel_name="product.template", + string="Export Product Template by ID", + copy=False, + help="If set, the export ignores the 'since' date and exports only this " + "product template by its Odoo ID.", + ) + export_product_id = fields.Many2one( + comodel_name="product.product", + string="Export Product Variant by ID", + copy=False, + help="If set, the export ignores the 'since' date and exports only this " + "product variant by its Odoo ID.", + ) stock_location_ids = fields.Many2many( string="Locations", comodel_name="stock.location", @@ -122,8 +136,11 @@ def export_product_tmpl_since(self): since_date = fields.Datetime.from_string(rec.export_product_tmpl_since_date) rec.export_product_tmpl_since_date = fields.Datetime.now() self.env["woocommerce.product.template"].export_product_tmpl_since( - backend_record=rec, since_date=since_date + backend_record=rec, + since_date=since_date, + product=rec.export_product_tmpl_id, ) + rec.export_product_tmpl_id = False def export_products_since(self): self.env.user.company_id = self.company_id @@ -131,8 +148,11 @@ def export_products_since(self): since_date = fields.Datetime.from_string(rec.export_products_since_date) rec.export_products_since_date = fields.Datetime.now() self.env["woocommerce.product.product"].export_products_since( - backend_record=rec, since_date=since_date + backend_record=rec, + since_date=since_date, + product=rec.export_product_id, ) + rec.export_product_id = False def export_sale_orders_since(self): self.env.user.company_id = self.company_id diff --git a/connector_woocommerce/models/product_product/binding.py b/connector_woocommerce/models/product_product/binding.py index bb39d9f0c..1432ad568 100644 --- a/connector_woocommerce/models/product_product/binding.py +++ b/connector_woocommerce/models/product_product/binding.py @@ -47,9 +47,11 @@ def _get_base_domain(self): # TODO: Review Why is export_products_since used instead of overriding # the export_data function? - def export_products_since(self, backend_record=None, since_date=None): + def export_products_since(self, backend_record=None, since_date=None, product=None): domain = self._get_base_domain() - if since_date: + if product: + domain.append(("id", "=", product.id)) + elif since_date: domain.append( ("woocommerce_write_date", ">", fields.Datetime.to_string(since_date)) ) diff --git a/connector_woocommerce/models/product_template/binding.py b/connector_woocommerce/models/product_template/binding.py index c880c75d2..2ab33e68a 100644 --- a/connector_woocommerce/models/product_template/binding.py +++ b/connector_woocommerce/models/product_template/binding.py @@ -38,9 +38,13 @@ def _get_base_domain(self): ("has_attributes", "=", False), ] - def export_product_tmpl_since(self, backend_record=None, since_date=None): + def export_product_tmpl_since( + self, backend_record=None, since_date=None, product=None + ): domain = self._get_base_domain() - if since_date: + if product: + domain.append(("id", "=", product.id)) + elif since_date: domain = [ ( "woocommerce_write_date", diff --git a/connector_woocommerce/views/woocommerce_backend_view.xml b/connector_woocommerce/views/woocommerce_backend_view.xml index 0694f0eb6..b5bd8fc89 100644 --- a/connector_woocommerce/views/woocommerce_backend_view.xml +++ b/connector_woocommerce/views/woocommerce_backend_view.xml @@ -132,6 +132,18 @@ class="oe_inline" nolabel="1" /> +
+