ESI Peppol : Ce plugin nécessite PHP 7.0.0 ou supérieur. Vous utilisez actuellement PHP ' . htmlspecialchars(PHP_VERSION, ENT_QUOTES, 'UTF-8') . '. Veuillez mettre à jour votre version de PHP.

'; return; } ?>

:

ESI Peppol : Ce plugin nécessite WooCommerce. Veuillez installer et activer WooCommerce avant d\'utiliser ce plugin.

'; return; } ?>

:

Event_Controller.php $file = $base_dir . 'controllers/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'views\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('views\\PEPPOL_')); $file = $base_dir . 'views/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'models\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('models\\PEPPOL_')); $file = $base_dir . 'models/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } if (strpos($relative_class, 'helpers\\PEPPOL_') === 0) { $class_name = substr($relative_class, strlen('helpers\\PEPPOL_')); $file = $base_dir . 'helpers/' . $class_name . '.php'; if (file_exists($file)) { require_once $file; return; } } // Mapping explicite pour les classes PEPPOL_ dont le nom de fichier // ne suit pas strictement le schéma "NomDeClasse.php". switch ($relative_class) { case 'controllers\\PEPPOL_Plugin': $file = $base_dir . 'controllers/Plugin.php'; break; case 'controllers\\PEPPOL_Woocommerce_controller': $file = $base_dir . 'controllers/Woocommerce_controller.php'; break; case 'controllers\\PEPPOL_peppol_controller': $file = $base_dir . 'controllers/Peppol_controller.php'; break; case 'controllers\\PEPPOL_Webhook_controller': $file = $base_dir . 'controllers/Webhook_controller.php'; break; case 'models\\PEPPOL_Main_model': $file = $base_dir . 'models/Main_model.php'; break; case 'helpers\\PEPPOL_Woo_Helper': // Helper WooCommerce : fichier réel situé dans "app/helper/woo_helper.php" // Attention : sur les systèmes Linux, la casse et le nom du dossier/import doivent correspondre. $file = $base_dir . 'helper/woo_helper.php'; break; default: // Fallback : essayer le mapping standard $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; break; } if (file_exists($file)) { require_once $file; return; } } } }); // Hook d'activation du plugin avec vérification WooCommerce register_activation_hook( __FILE__, function () { // Vérifier si WooCommerce est actif avant l'activation if (!esi_peppol_is_woocommerce_active()) { deactivate_plugins(plugin_basename(__FILE__)); wp_die( esc_html__('ESI Peppol nécessite WooCommerce pour fonctionner. Veuillez installer et activer WooCommerce avant d\'activer ce plugin.', 'esi_peppol'), esc_html__('Dépendance manquante', 'esi_peppol'), ['back_link' => true] ); } // Déléguer à PEPPOL_Plugin::activate() si WooCommerce est disponible PEPPOL_Plugin::activate(); } ); // Menu et pages d'administration du plugin add_action( 'admin_menu', [PEPPOL_Plugin::class, 'add_admin_menu'] ); // Assets d'administration add_action( 'admin_enqueue_scripts', [PEPPOL_Plugin::class, 'enqueue_admin_assets'] ); // AJAX admin pour test de connexion API add_action( 'wp_ajax_esi_peppol_test_connection', [PEPPOL_Plugin::class, 'ajax_test_connection'] ); // AJAX admin pour renvoyer une facture Peppol depuis la page de logs add_action( 'wp_ajax_esi_peppol_resend_invoice', [PEPPOL_Plugin::class, 'ajax_resend_invoice'] ); // AJAX admin pour consulter le statut d'une facture Peppol depuis la page de logs add_action( 'wp_ajax_esi_peppol_check_invoice_status', [PEPPOL_Plugin::class, 'ajax_check_invoice_status'] ); // AJAX admin pour récupérer les détails d'un log Peppol add_action( 'wp_ajax_esi_peppol_get_log_details', [PEPPOL_Plugin::class, 'ajax_get_log_details'] ); // AJAX admin pour détecter les champs TVA add_action( 'wp_ajax_esi_peppol_detect_vat_fields', [PEPPOL_Plugin::class, 'ajax_detect_vat_fields'] ); // AJAX admin pour sauvegarder le champ TVA sélectionné add_action( 'wp_ajax_esi_peppol_save_vat_field', [PEPPOL_Plugin::class, 'ajax_save_vat_field'] ); // Champ TVA de la boutique dans les réglages WooCommerce > Général. add_filter( 'woocommerce_general_settings', [PEPPOL_Plugin::class, 'filter_woocommerce_general_settings'] ); // Initialisation générale du plugin (hooks WooCommerce, etc.) add_action( 'plugins_loaded', static function () { $plugin = new PEPPOL_Plugin(); $plugin->init(); }, 20 ); // Enregistrement des routes REST API pour les webhooks add_action( 'rest_api_init', [\ESI_PEPPOL\controllers\PEPPOL_Webhook_controller::class, 'register_routes'] );