Files
MokoCassiopeia/data/demo/dolibarr/integration-config.sql
2026-01-29 23:16:07 +00:00

154 lines
7.5 KiB
SQL

-- Dolibarr Integration Configuration
-- Version: 1.0.0
-- Sample configuration for Joomla-Dolibarr integration
-- NOTE: This is reference data - actual integration requires custom plugin/development
-- Configuration table (example - actual implementation varies)
CREATE TABLE IF NOT EXISTS `#__dolibarr_config` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`config_key` varchar(255) NOT NULL,
`config_value` text,
`description` text,
PRIMARY KEY (`id`),
UNIQUE KEY `config_key` (`config_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- API Connection Settings
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('dolibarr_url', 'https://erp.example.com', 'Base URL of Dolibarr installation'),
('dolibarr_api_key', '', 'API key for authentication - SET THIS'),
('api_enabled', '1', 'Enable/disable API integration'),
('api_timeout', '30', 'API request timeout in seconds'),
('verify_ssl', '1', 'Verify SSL certificates'),
('sync_enabled', '1', 'Enable automatic synchronization'),
('sync_direction', 'bidirectional', 'Sync direction: joomla_to_dolibarr, dolibarr_to_joomla, bidirectional'),
('sync_interval', '300', 'Sync interval in seconds (5 minutes)'),
('log_enabled', '1', 'Enable sync logging'),
('log_level', 'info', 'Log level: debug, info, warning, error');
-- Customer/Contact Field Mapping
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('map_customer_enabled', '1', 'Enable customer sync'),
('map_customer_name', 'name|nom', 'Map Joomla name to Dolibarr nom'),
('map_customer_email', 'email|email', 'Map email field'),
('map_customer_phone', 'phone|phone', 'Map phone field'),
('map_customer_company', 'company|client.nom', 'Map company name'),
('map_customer_address', 'address_1|address', 'Map address field'),
('map_customer_city', 'city|town', 'Map city field'),
('map_customer_state', 'state|state', 'Map state/province'),
('map_customer_zip', 'zip|zip', 'Map postal code'),
('map_customer_country', 'country_code|country_code', 'Map country code'),
('map_customer_ref', 'id|ref_ext', 'Map Joomla user ID to Dolibarr external reference');
-- Product Field Mapping
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('map_product_enabled', '1', 'Enable product sync'),
('map_product_name', 'product_name|label', 'Map product name'),
('map_product_sku', 'product_sku|ref', 'Map product SKU/reference'),
('map_product_desc', 'product_desc|description', 'Map product description'),
('map_product_price', 'product_price|price', 'Map product price'),
('map_product_weight', 'product_weight|weight', 'Map product weight'),
('map_product_stock', 'product_in_stock|stock_reel', 'Map stock quantity'),
('map_product_category', 'category|fk_product_type', 'Map product category'),
('map_product_ref', 'virtuemart_product_id|ref_ext', 'Map product ID to external reference');
-- Order Field Mapping
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('map_order_enabled', '1', 'Enable order sync'),
('map_order_number', 'order_number|ref', 'Map order number'),
('map_order_date', 'created_on|date_commande', 'Map order date'),
('map_order_status', 'order_status|fk_statut', 'Map order status'),
('map_order_total', 'order_total|total_ttc', 'Map order total with tax'),
('map_order_subtotal', 'order_subtotal|total_ht', 'Map order subtotal without tax'),
('map_order_tax', 'order_tax|total_tva', 'Map tax amount'),
('map_order_shipping', 'order_shipment|total_port', 'Map shipping cost'),
('map_order_ref', 'virtuemart_order_id|ref_ext', 'Map order ID to external reference');
-- Order Status Mapping
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('status_pending', 'P|0', 'VirtueMart Pending to Dolibarr Draft'),
('status_confirmed', 'C|1', 'VirtueMart Confirmed to Dolibarr Validated'),
('status_shipped', 'S|3', 'VirtueMart Shipped to Dolibarr Closed/Delivered'),
('status_cancelled', 'X|-1', 'VirtueMart Cancelled to Dolibarr Cancelled'),
('status_refunded', 'R|-1', 'VirtueMart Refunded to Dolibarr Cancelled');
-- Payment Method Mapping
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('payment_cash', 'Cash|LIQ', 'Cash payment'),
('payment_check', 'Check|CHQ', 'Check payment'),
('payment_transfer', 'Bank Transfer|VIR', 'Bank transfer'),
('payment_creditcard', 'Credit Card|CB', 'Credit card'),
('payment_paypal', 'PayPal|PRE', 'PayPal'),
('payment_stripe', 'Stripe|PRE', 'Stripe');
-- Sync Log Table
CREATE TABLE IF NOT EXISTS `#__dolibarr_sync_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sync_type` varchar(50) NOT NULL COMMENT 'customer, product, order',
`sync_direction` varchar(50) NOT NULL,
`joomla_id` int(11) DEFAULT NULL,
`dolibarr_id` int(11) DEFAULT NULL,
`status` varchar(20) NOT NULL COMMENT 'success, error, pending',
`message` text,
`sync_date` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `sync_type` (`sync_type`),
KEY `status` (`status`),
KEY `sync_date` (`sync_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Sync Queue Table (for batch processing)
CREATE TABLE IF NOT EXISTS `#__dolibarr_sync_queue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sync_type` varchar(50) NOT NULL,
`sync_direction` varchar(50) NOT NULL,
`joomla_id` int(11) DEFAULT NULL,
`priority` int(11) DEFAULT 5,
`attempts` int(11) DEFAULT 0,
`max_attempts` int(11) DEFAULT 3,
`created_date` datetime NOT NULL,
`scheduled_date` datetime NOT NULL,
`processed_date` datetime DEFAULT NULL,
`status` varchar(20) DEFAULT 'pending',
PRIMARY KEY (`id`),
KEY `status` (`status`),
KEY `scheduled_date` (`scheduled_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Field Mapping Cache (stores last synced values)
CREATE TABLE IF NOT EXISTS `#__dolibarr_field_cache` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`entity_type` varchar(50) NOT NULL COMMENT 'customer, product, order',
`joomla_id` int(11) NOT NULL,
`dolibarr_id` int(11) NOT NULL,
`last_sync` datetime NOT NULL,
`joomla_hash` varchar(64) DEFAULT NULL COMMENT 'MD5 of Joomla data',
`dolibarr_hash` varchar(64) DEFAULT NULL COMMENT 'MD5 of Dolibarr data',
PRIMARY KEY (`id`),
UNIQUE KEY `entity_mapping` (`entity_type`, `joomla_id`),
KEY `dolibarr_id` (`dolibarr_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Webhook Configuration (for real-time sync)
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('webhook_enabled', '0', 'Enable webhook notifications'),
('webhook_url_customer', '', 'Webhook URL for customer events'),
('webhook_url_product', '', 'Webhook URL for product events'),
('webhook_url_order', '', 'Webhook URL for order events'),
('webhook_secret', '', 'Webhook secret for verification');
-- Sample sync schedule (for cron jobs)
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('cron_customer_sync', '0 */6 * * *', 'Sync customers every 6 hours'),
('cron_product_sync', '0 */4 * * *', 'Sync products every 4 hours'),
('cron_order_sync', '*/15 * * * *', 'Sync orders every 15 minutes'),
('cron_cleanup_logs', '0 2 * * 0', 'Cleanup old logs weekly');
-- Error Handling Configuration
INSERT INTO `#__dolibarr_config` (`config_key`, `config_value`, `description`) VALUES
('error_retry_enabled', '1', 'Enable automatic retry on errors'),
('error_retry_max', '3', 'Maximum retry attempts'),
('error_retry_delay', '300', 'Delay between retries in seconds'),
('error_notification_enabled', '1', 'Send email on persistent errors'),
('error_notification_email', 'admin@example.com', 'Email for error notifications');