fix: Odoo 19 compatibility — tree→list views, remove search group wrappers, remove numbercall

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-03-31 21:40:53 -04:00
parent ad50c579c3
commit 5d361d8c8a
15 changed files with 119 additions and 98 deletions

View File

@@ -7,7 +7,7 @@
<field name="code">model._cron_sync_products()</field>
<field name="interval_number">15</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
@@ -18,7 +18,7 @@
<field name="code">model._cron_sync_orders()</field>
<field name="interval_number">5</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
@@ -29,7 +29,7 @@
<field name="code">model._cron_sync_inventory()</field>
<field name="interval_number">15</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
@@ -40,7 +40,7 @@
<field name="code">model._cron_sync_customers()</field>
<field name="interval_number">30</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
@@ -51,7 +51,7 @@
<field name="code">model._cron_health_check()</field>
<field name="interval_number">10</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
@@ -62,7 +62,7 @@
<field name="code">model._cron_cleanup_logs()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="active">True</field>
</record>
</odoo>

View File

@@ -106,6 +106,34 @@ class WooInstance(models.Model):
self.ensure_one()
self.odoo_api_key = secrets.token_urlsafe(32)
def action_view_product_maps(self):
"""Open product mapping list filtered by this instance."""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Product Mapping',
'res_model': 'woo.product.map',
'view_mode': 'list,form',
'domain': [('instance_id', '=', self.id)],
'context': {'default_instance_id': self.id},
}
def action_view_sync_errors(self):
"""Open sync log filtered to errors for this instance."""
self.ensure_one()
twenty_four_ago = fields.Datetime.subtract(fields.Datetime.now(), hours=24)
return {
'type': 'ir.actions.act_window',
'name': 'Sync Errors (24h)',
'res_model': 'woo.sync.log',
'view_mode': 'list,form',
'domain': [
('instance_id', '=', self.id),
('state', '=', 'failed'),
('create_date', '>=', twenty_four_ago),
],
}
def _log_sync(self, sync_type, direction, record_ref, state, message=''):
"""Create a woo.sync.log record for this instance."""
self.ensure_one()

View File

@@ -199,7 +199,7 @@ export class WooDashboard extends Component {
type: "ir.actions.act_window",
name: "Sync Errors (Last 24 h)",
res_model: "woo.sync.log",
view_mode: "tree,form",
view_mode: "list,form",
domain: [["state", "=", "failed"]],
target: "current",
});

View File

@@ -5,7 +5,7 @@
<record id="action_woo_config_settings" model="ir.actions.act_window">
<field name="name">WooCommerce Settings</field>
<field name="res_model">woo.instance</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
</record>
</odoo>

View File

@@ -11,12 +11,12 @@
<page string="WooCommerce" name="woocommerce"
invisible="woo_order_count == 0">
<field name="woo_bind_ids" readonly="1">
<tree>
<list>
<field name="instance_id"/>
<field name="woo_order_number"/>
<field name="woo_status"/>
<field name="state" widget="badge"/>
</tree>
</list>
</field>
</page>
</xpath>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.conflict.tree</field>
<field name="model">woo.conflict</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="instance_id"/>
<field name="conflict_type"/>
<field name="field_name"/>
@@ -15,7 +15,7 @@
<field name="resolution" widget="badge"
decoration-warning="resolution == 'pending'"
decoration-success="resolution != 'pending'"/>
</tree>
</list>
</field>
</record>
@@ -69,14 +69,13 @@
domain="[('resolution', '=', 'pending')]"/>
<filter name="resolved" string="Resolved"
domain="[('resolution', '!=', 'pending')]"/>
<group expand="1" string="Group By">
<filter name="group_type" string="Type"
context="{'group_by': 'conflict_type'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_resolution" string="Resolution"
context="{'group_by': 'resolution'}"/>
</group>
<separator/>
<filter name="group_type" string="Type"
context="{'group_by': 'conflict_type'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_resolution" string="Resolution"
context="{'group_by': 'resolution'}"/>
</search>
</field>
</record>
@@ -85,7 +84,7 @@
<record id="action_woo_conflict" model="ir.actions.act_window">
<field name="name">Sync Conflicts</field>
<field name="res_model">woo.conflict</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_conflict_view_search"/>
</record>

View File

@@ -6,13 +6,13 @@
<field name="name">woo.customer.tree</field>
<field name="model">woo.customer</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="instance_id"/>
<field name="partner_id"/>
<field name="woo_customer_id"/>
<field name="woo_email"/>
<field name="last_synced"/>
</tree>
</list>
</field>
</record>
@@ -48,10 +48,9 @@
<search>
<field name="partner_id"/>
<field name="woo_email"/>
<group expand="1" string="Group By">
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
</group>
<separator/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
</search>
</field>
</record>
@@ -60,7 +59,7 @@
<record id="action_woo_customer" model="ir.actions.act_window">
<field name="name">WooCommerce Customers</field>
<field name="res_model">woo.customer</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_customer_view_search"/>
</record>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.instance.tree</field>
<field name="model">woo.instance</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="name"/>
<field name="url"/>
<field name="company_id" groups="base.group_multi_company"/>
@@ -15,7 +15,7 @@
decoration-success="state == 'connected'"
decoration-warning="state == 'draft'"
decoration-danger="state == 'error'"/>
</tree>
</list>
</field>
</record>
@@ -93,7 +93,7 @@
</page>
<page string="Product Mappings" name="product_maps">
<field name="product_map_ids">
<tree editable="bottom">
<list editable="bottom">
<field name="product_id"/>
<field name="woo_product_name"/>
<field name="woo_sku"/>
@@ -105,22 +105,22 @@
decoration-success="state == 'mapped'"
decoration-warning="state == 'conflict'"
decoration-danger="state == 'error'"/>
</tree>
</list>
</field>
</page>
<page string="Orders" name="orders">
<field name="order_ids">
<tree>
<list>
<field name="woo_order_number"/>
<field name="sale_order_id"/>
<field name="woo_status"/>
<field name="state" widget="badge"/>
</tree>
</list>
</field>
</page>
<page string="Sync Log" name="sync_log">
<field name="sync_log_ids" readonly="1">
<tree>
<list>
<field name="create_date"/>
<field name="sync_type"/>
<field name="direction"/>
@@ -130,7 +130,7 @@
decoration-danger="state == 'failed'"
decoration-warning="state == 'conflict'"/>
<field name="message"/>
</tree>
</list>
</field>
</page>
</notebook>
@@ -154,12 +154,11 @@
domain="[('state', '=', 'draft')]"/>
<filter name="error" string="Error"
domain="[('state', '=', 'error')]"/>
<group expand="1" string="Group By">
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_company" string="Company"
context="{'group_by': 'company_id'}"/>
</group>
<separator/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_company" string="Company"
context="{'group_by': 'company_id'}"/>
</search>
</field>
</record>
@@ -168,7 +167,7 @@
<record id="action_woo_instance" model="ir.actions.act_window">
<field name="name">WooCommerce Instances</field>
<field name="res_model">woo.instance</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_instance_view_search"/>
</record>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.order.tree</field>
<field name="model">woo.order</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="woo_order_number"/>
<field name="instance_id"/>
<field name="sale_order_id"/>
@@ -16,7 +16,7 @@
decoration-info="state == 'confirmed'"
decoration-warning="state == 'shipped'"
decoration-danger="state == 'cancelled'"/>
</tree>
</list>
</field>
</record>
@@ -48,14 +48,14 @@
<notebook>
<page string="Shipments" name="shipments">
<field name="shipment_ids">
<tree>
<list>
<field name="picking_id"/>
<field name="carrier_id"/>
<field name="tracking_number"/>
<field name="shipped_date"/>
<field name="is_backorder"/>
<field name="synced_to_woo"/>
</tree>
</list>
</field>
</page>
</notebook>
@@ -82,12 +82,11 @@
domain="[('state', '=', 'completed')]"/>
<filter name="cancelled" string="Cancelled"
domain="[('state', '=', 'cancelled')]"/>
<group expand="1" string="Group By">
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
</group>
<separator/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
</search>
</field>
</record>
@@ -96,7 +95,7 @@
<record id="action_woo_order" model="ir.actions.act_window">
<field name="name">WooCommerce Orders</field>
<field name="res_model">woo.order</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_order_view_search"/>
</record>

View File

@@ -6,13 +6,13 @@
<field name="name">woo.pricelist.map.tree</field>
<field name="model">woo.pricelist.map</field>
<field name="arch" type="xml">
<tree editable="bottom">
<list editable="bottom">
<field name="instance_id"/>
<field name="pricelist_id"/>
<field name="woo_role"/>
<field name="woo_role_name"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</list>
</field>
</record>
@@ -20,7 +20,7 @@
<record id="action_woo_pricelist_map" model="ir.actions.act_window">
<field name="name">Price List Mapping</field>
<field name="res_model">woo.pricelist.map</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
</record>
</odoo>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.product.map.tree</field>
<field name="model">woo.product.map</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="instance_id"/>
<field name="product_id"/>
<field name="woo_product_name"/>
@@ -19,7 +19,7 @@
decoration-success="state == 'mapped'"
decoration-warning="state == 'conflict'"
decoration-danger="state == 'error'"/>
</tree>
</list>
</field>
</record>
@@ -78,14 +78,13 @@
domain="[('state', '=', 'conflict')]"/>
<filter name="error" string="Errors"
domain="[('state', '=', 'error')]"/>
<group expand="1" string="Group By">
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_type" string="Product Type"
context="{'group_by': 'woo_product_type'}"/>
</group>
<separator/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_type" string="Product Type"
context="{'group_by': 'woo_product_type'}"/>
</search>
</field>
</record>
@@ -94,7 +93,7 @@
<record id="action_woo_product_map" model="ir.actions.act_window">
<field name="name">Product Mapping</field>
<field name="res_model">woo.product.map</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_product_map_view_search"/>
</record>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.return.tree</field>
<field name="model">woo.return</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="instance_id"/>
<field name="order_id"/>
<field name="picking_id"/>
@@ -16,7 +16,7 @@
decoration-info="state == 'approved'"
decoration-warning="state == 'requested'"
decoration-danger="state == 'rejected'"/>
</tree>
</list>
</field>
</record>
@@ -56,11 +56,11 @@
<notebook>
<page string="Return Lines" name="lines">
<field name="line_ids">
<tree editable="bottom">
<list editable="bottom">
<field name="product_id"/>
<field name="quantity"/>
<field name="reason"/>
</tree>
</list>
</field>
</page>
</notebook>
@@ -82,12 +82,11 @@
domain="[('state', '=', 'approved')]"/>
<filter name="refunded" string="Refunded"
domain="[('state', '=', 'refunded')]"/>
<group expand="1" string="Group By">
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
</group>
<separator/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
</search>
</field>
</record>
@@ -96,7 +95,7 @@
<record id="action_woo_return" model="ir.actions.act_window">
<field name="name">WooCommerce Returns</field>
<field name="res_model">woo.return</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_return_view_search"/>
</record>

View File

@@ -6,12 +6,12 @@
<field name="name">woo.shipping.carrier.tree</field>
<field name="model">woo.shipping.carrier</field>
<field name="arch" type="xml">
<tree editable="bottom">
<list editable="bottom">
<field name="name"/>
<field name="code"/>
<field name="tracking_url"/>
<field name="active"/>
</tree>
</list>
</field>
</record>
@@ -19,7 +19,7 @@
<record id="action_woo_shipping_carrier" model="ir.actions.act_window">
<field name="name">Shipping Carriers</field>
<field name="res_model">woo.shipping.carrier</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
</record>
</odoo>

View File

@@ -6,7 +6,7 @@
<field name="name">woo.sync.log.tree</field>
<field name="model">woo.sync.log</field>
<field name="arch" type="xml">
<tree create="0" edit="0" delete="0">
<list create="0" edit="0" delete="0">
<field name="create_date" string="Date"/>
<field name="instance_id"/>
<field name="sync_type"/>
@@ -17,7 +17,7 @@
decoration-danger="state == 'failed'"
decoration-warning="state == 'conflict'"/>
<field name="message"/>
</tree>
</list>
</field>
</record>
@@ -66,16 +66,15 @@
<separator/>
<filter name="today" string="Today"
domain="[('create_date', '&gt;=', (context_today()).strftime('%Y-%m-%d'))]"/>
<group expand="1" string="Group By">
<filter name="group_sync_type" string="Sync Type"
context="{'group_by': 'sync_type'}"/>
<filter name="group_direction" string="Direction"
context="{'group_by': 'direction'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
</group>
<separator/>
<filter name="group_sync_type" string="Sync Type"
context="{'group_by': 'sync_type'}"/>
<filter name="group_direction" string="Direction"
context="{'group_by': 'direction'}"/>
<filter name="group_instance" string="Instance"
context="{'group_by': 'instance_id'}"/>
<filter name="group_state" string="State"
context="{'group_by': 'state'}"/>
</search>
</field>
</record>
@@ -84,7 +83,7 @@
<record id="action_woo_sync_log" model="ir.actions.act_window">
<field name="name">Sync Logs</field>
<field name="res_model">woo.sync.log</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="woo_sync_log_view_search"/>
</record>

View File

@@ -6,13 +6,13 @@
<field name="name">woo.tax.map.tree</field>
<field name="model">woo.tax.map</field>
<field name="arch" type="xml">
<tree editable="bottom">
<list editable="bottom">
<field name="instance_id"/>
<field name="tax_id"/>
<field name="woo_tax_class"/>
<field name="woo_tax_class_name"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</list>
</field>
</record>
@@ -20,7 +20,7 @@
<record id="action_woo_tax_map" model="ir.actions.act_window">
<field name="name">Tax Mapping</field>
<field name="res_model">woo.tax.map</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
</record>
</odoo>