feat: add OWL product mapping UI with live AJAX search

- AjaxSearch component: debounced 300ms, calls /woo/search/* endpoints via rpc()
- ProductMapping client action: 3 tabs (Mapped, Unmatched, Conflicts)
  - Mapped tab: live search, bulk unmap/sync, per-row price/inventory sync toggles
  - Unmatched tab: split Odoo|WC panels, click-to-select, Map/Create/Ignore actions
  - Conflicts tab: Use Odoo / Use WC per-row and bulk resolve
- Top bar: instance selector, Fetch Products, Sync Now, live stats
- woo_dashboard.xml updated with ir.actions.client records
- woo_menus.xml pointed at new client action
- CSS: full layout styles, badges, split view, progress bar, buttons

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-03-31 20:53:43 -04:00
parent 1f86a7c497
commit de14a28112
7 changed files with 1225 additions and 10 deletions

View File

@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--
Dashboard placeholder.
The actual OWL component will be added in Task 15.
For now, the dashboard menu points to the instance list.
-->
<record id="action_woo_dashboard" model="ir.actions.act_window">
<!-- ===== Dashboard Client Action (Task 15) ===== -->
<record id="action_woo_dashboard" model="ir.actions.client">
<field name="name">WooCommerce Dashboard</field>
<field name="res_model">woo.instance</field>
<field name="view_mode">tree,form</field>
<field name="tag">fusion_woocommerce.woo_dashboard</field>
</record>
<!-- ===== Product Mapping Client Action (Task 14) ===== -->
<record id="action_woo_product_map_ui" model="ir.actions.client">
<field name="name">Product Mapping</field>
<field name="tag">fusion_woocommerce.product_mapping</field>
</record>
</odoo>

View File

@@ -23,7 +23,7 @@
<menuitem id="woo_menu_product_map"
name="Product Mapping"
parent="woo_menu_operations"
action="action_woo_product_map"
action="action_woo_product_map_ui"
sequence="10"/>
<menuitem id="woo_menu_orders"