diff --git a/fusion-woo-odoo/fusion_woocommerce/__manifest__.py b/fusion-woo-odoo/fusion_woocommerce/__manifest__.py index 1370bb1f..d015db9e 100644 --- a/fusion-woo-odoo/fusion_woocommerce/__manifest__.py +++ b/fusion-woo-odoo/fusion_woocommerce/__manifest__.py @@ -15,6 +15,7 @@ 'data/cron.xml', 'data/mail_template.xml', 'views/woo_instance_views.xml', + 'views/woo_category_map_views.xml', 'views/woo_product_map_views.xml', 'views/woo_order_views.xml', 'views/woo_sync_log_views.xml', diff --git a/fusion-woo-odoo/fusion_woocommerce/models/__init__.py b/fusion-woo-odoo/fusion_woocommerce/models/__init__.py index 0657c847..69a8d7ae 100644 --- a/fusion-woo-odoo/fusion_woocommerce/models/__init__.py +++ b/fusion-woo-odoo/fusion_woocommerce/models/__init__.py @@ -1,5 +1,6 @@ from . import woo_shipping_carrier from . import woo_instance +from . import woo_category_map from . import woo_product_map from . import woo_order from . import woo_shipment diff --git a/fusion-woo-odoo/fusion_woocommerce/models/woo_category_map.py b/fusion-woo-odoo/fusion_woocommerce/models/woo_category_map.py new file mode 100644 index 00000000..89530f5e --- /dev/null +++ b/fusion-woo-odoo/fusion_woocommerce/models/woo_category_map.py @@ -0,0 +1,14 @@ +from odoo import api, fields, models + + +class WooCategoryMap(models.Model): + _name = 'woo.category.map' + _description = 'WooCommerce Category Mapping' + _order = 'odoo_category_id' + + instance_id = fields.Many2one('woo.instance', required=True, ondelete='cascade') + odoo_category_id = fields.Many2one('product.category', string='Odoo Category') + woo_category_id = fields.Integer(string='WC Category ID', required=True) + woo_category_name = fields.Char(string='WC Category Name') + woo_category_slug = fields.Char(string='WC Category Slug') + company_id = fields.Many2one('res.company', required=True, default=lambda self: self.env.company) diff --git a/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py b/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py index 08fb9480..a89e4445 100644 --- a/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py +++ b/fusion-woo-odoo/fusion_woocommerce/models/woo_instance.py @@ -51,6 +51,43 @@ class WooInstance(models.Model): customer_ids = fields.One2many('woo.customer', 'instance_id') sync_log_ids = fields.One2many('woo.sync.log', 'instance_id') + # Category mapping + category_map_ids = fields.One2many('woo.category.map', 'instance_id', string='Category Mappings') + + # AI Configuration + ai_provider = fields.Selection([ + ('claude', 'Claude (Anthropic)'), + ('openai', 'OpenAI'), + ], string='AI Provider') + ai_api_key = fields.Char(string='AI API Key', groups='base.group_system') + ai_model = fields.Char(string='AI Model', + help='e.g., claude-sonnet-4-5-20250514 for Claude or gpt-4o for OpenAI') + + # AI Prompts + prompt_product_title = fields.Text(string='Product Title Prompt', + default='Generate an SEO-optimized product title in Title Case. Keep it concise, include the brand name and key product features. Do not use ALL CAPS.') + prompt_short_description = fields.Text(string='Short Description Prompt', + default='Write a compelling 2-3 sentence product summary in HTML format. Highlight key benefits and features. Use

tags.') + prompt_long_description = fields.Text(string='Long Description Prompt', + default='Write a detailed SEO-optimized product description in HTML format. Include sections with

headings for Features, Specifications, and Benefits. Use