WC TB-Web Parrainage
Plugin WordPress WooCommerce pour système de parrainage TB Web
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/srgabrysh/wc-tb-web-parrainage/archive/refs/heads/main.zipVersion: 2.21.4
Auteur: TB-Web
Compatible: WordPress 6.0+, PHP 8.1+, WooCommerce 3.0+
Description
Plugin de parrainage WooCommerce avec webhooks enrichis. Ce plugin combine cinq fonctionnalités principales :
- Système de code parrain au checkout - Permet aux clients de saisir un code parrain lors de la commande avec validation en temps réel
- Calcul automatique des dates de fin de remise - Calcule et stocke automatiquement les dates de fin de période de remise parrainage (12 mois + marge de sécurité)
- Masquage conditionnel des codes promo - Masque automatiquement les champs de codes promo pour les produits configurés
- Webhooks enrichis - Ajoute automatiquement les métadonnées d'abonnement et de tarification parrainage dans les webhooks
- Onglet "Mes parrainages" côté client - Interface utilisateur dédiée dans Mon Compte pour consulter ses parrainages
Fonctionnalités
✨ Système de Parrainage
- Champ "Code parrain" au checkout WooCommerce (conditionnel selon produits configurés)
- Validation en temps réel via AJAX (format et existence en BDD)
- Messages dynamiques selon les produits du panier
- Prévention de l'auto-parrainage
- Stockage complet des informations dans les commandes
- Affichage enrichi dans l'administration des commandes
📅 Calcul Automatique des Dates de Fin de Remise
- Calcul automatique de la date de fin de période de remise parrainage (12 mois + 2 jours de marge)
- Stockage des dates dans les métadonnées des commandes et abonnements
- Intégration aux webhooks avec la clé
parrainage_pricing - Logs de traçabilité pour toutes les opérations de calcul
🚫 Masquage Conditionnel des Codes Promo
- Masquage automatique des champs codes promo au panier et checkout
- Activation selon les produits configurés dans l'interface d'administration
- Désactivation complète des fonctionnalités de coupons pour les produits concernés
⚡ NOUVEAU v2.6.0 - Workflow Asynchrone et Données Réelles
Le système de remises parrain dispose maintenant d'un workflow asynchrone complet qui traite les remises en arrière-plan pour optimiser les performances du checkout :
🔄 Workflow en 3 Phases
- Marquage Synchrone - Identification rapide des commandes avec parrainage (< 50ms)
- Programmation Asynchrone - Planification automatique lors de l'activation de l'abonnement filleul
- Traitement Différé - Calculs réels des remises via le système CRON WordPress
📊 Données Calculées en Temps Réel
- Remplacement des données mockées par de vrais calculs basés sur les classes techniques v2.5.0
- Statuts de workflow visibles :
CALCULÉ (v2.6.0),EN COURS,PROGRAMMÉ,ERREUR - Monitoring complet via les logs avec canal spécialisé
discount-processor - Gestion d'erreurs robuste avec retry automatique (max 3 tentatives)
⚠️ Mode Simulation v2.6.0
Les remises sont calculées mais non appliquées aux abonnements WooCommerce. Cette version permet de :
- Valider le workflow complet en sécurité
- Visualiser les calculs réels dans les interfaces
- Tester la robustesse du système asynchrone
🔧 Activation et Vérification du Workflow
Prérequis obligatoires :
- CRON WordPress activé : Vérifier que
DISABLE_WP_CRONn'est pas défini ou =false - WooCommerce Subscriptions : Plugin actif et fonctionnel
- Parrainage activé : Dans Réglages > TB-Web Parrainage > Paramètres
Vérification du workflow :
// Via code PHP - Vérifier la santé du système
global $wc_tb_parrainage_plugin;
// Validation de l'état de préparation
$readiness = $wc_tb_parrainage_plugin->validate_system_readiness();
if ( $readiness['is_ready'] ) {
echo "✅ Système prêt pour le workflow asynchrone\n";
} else {
echo "❌ Erreurs détectées:\n";
foreach ( $readiness['errors'] as $error ) {
echo "- $error\n";
}
}
// Rapport de diagnostic complet
$diagnostic = $wc_tb_parrainage_plugin->generate_diagnostic_report();
echo "📊 Statistiques workflow:\n";
print_r( $diagnostic['workflow_statistics'] );
// Logs à surveiller
// Canal 'discount-processor' dans Réglages > TB-Web Parrainage > Logs
Test du workflow complet :
- Créer une commande avec code parrain valide
- Activer l'abonnement filleul correspondant
- Attendre 5 minutes (délai de sécurité)
- Vérifier les logs pour "Remise parrainage calculée avec succès"
- Contrôler les statuts dans les interfaces admin/client
🧪 Tests de Validation Recommandés
Test de Conformité :
// Validation complète du système
global $wc_tb_parrainage_plugin;
$validation = $wc_tb_parrainage_plugin->validate_system_readiness();
if ( $validation['is_ready'] ) {
echo "✅ Système validé - Prêt pour tests\n";
// Générer rapport de diagnostic
$report = $wc_tb_parrainage_plugin->generate_diagnostic_report();
echo "📊 Commandes traitées 24h: " . $report['workflow_statistics']['processed_24h'] . "\n";
} else {
echo "❌ Problèmes détectés:\n";
foreach ( $validation['errors'] as $error ) {
echo "- " . $error . "\n";
}
echo "\n💡 Recommandations:\n";
foreach ( $validation['recommendations'] as $rec ) {
echo "- " . $rec . "\n";
}
}
Tests de Robustesse :
- Test avec code parrain invalide : Vérifier les logs d'erreur
- Test sans WooCommerce Subscriptions : Valider les alertes système
- Test avec CRON désactivé : Contrôler les recommandations
- Test de charge : 50+ commandes simultanées avec codes parrain
💰 v2.10.0 - Garantie Montants Facturés avec Remise
- Correction critique : Force synchronisation
_order_totalaprèscalculate_totals() - Garantie facturation : WooCommerce facture toujours les montants avec remise
- Tests unitaires complets : Validation cohérence totale des données
- Robustesse système : Protection contre désynchronisation montants
- Monitoring renforcé : Logs détaillés pour traçabilité des corrections
💰 v2.4.0 - Interfaces Mockées pour Remises Parrain
- Nouvelles colonnes admin : "Remise Appliquée" et "Statut Remise" dans l'interface de parrainage
- Popups interactifs : Détails complets des remises au survol des badges de statut
- Section résumé côté client : Dashboard des économies avec cartes animées
- Données simulées : Génération intelligente de statuts variés pour validation UX
- Animations et interactions : Interface moderne avec tooltips et transitions fluides
- Responsive design : Adaptation parfaite sur mobile et tablette
- Logs des actions de masquage pour le suivi
🔗 Webhooks Enrichis
- Ajout automatique des métadonnées d'abonnement dans les webhooks
- Nouvelles données de tarification parrainage via la clé
parrainage_pricing - Informations complètes : ID, statut, dates, articles, facturation
- Support WooCommerce Subscriptions
- Logs détaillés de tous les traitements
🎛️ Interface d'Administration
- Nouvel onglet "Parrainage" - Interface complète de consultation des données de parrainage
- Consultation en temps réel des logs (avec filtres et recherche)
- Statistiques de parrainage
- Paramètres configurables
- Configuration des produits par interface graphique
- Nettoyage automatique des anciens logs
📊 Interface de Parrainage (Admin)
- Tableau groupé par parrain - Visualisation claire des parrains et leurs filleuls
- Système de filtres avancé - Filtrage par date, parrain, produit, statut d'abonnement
- Export CSV et Excel - Export complet des données avec statistiques
- Édition inline - Modification des avantages directement dans le tableau
- Pagination optimisée - Gestion performante de gros volumes de données
- Interface responsive - Adaptée mobile et tablette
- Liens directs - Accès rapide aux profils utilisateurs, commandes et abonnements
👤 Onglet "Mes parrainages" côté client (Nouveau v1.3.0)
- Onglet dédié dans Mon Compte - Interface utilisateur intuitive et sécurisée
- Contrôle d'accès strict - Visible uniquement pour les abonnés actifs WooCommerce Subscriptions
- Tableau des filleuls - Affichage des parrainages avec email masqué pour confidentialité
- Message d'invitation personnalisé - Code parrain et lien de parrainage si aucun filleul
- Interface responsive - Design adaptatif mobile/tablette avec masquage intelligent des colonnes
- Badges de statut colorés - Statuts d'abonnement visuellement distincts
- Limite de performance - Affichage des 10 derniers parrainages pour un chargement rapide
- CSS natif WooCommerce - Intégration parfaite avec tous les thèmes compatibles
📦 Nouveautés Version 2.4.0 (26-07-25 à 17h54)
🎯 Interfaces Mockées pour Remises Parrain
Cette version introduit des interfaces utilisateur enrichies avec des données simulées pour valider l'ergonomie des futures fonctionnalités de remise avant l'implémentation de la logique métier réelle.
🏗️ Architecture Ajoutée
Nouvelles méthodes mockées :
ParrainageDataProvider::get_mock_discount_data()- Génération de données de remise simuléesMyAccountDataProvider::get_client_mock_discount_data()- Données côté clientMyAccountDataProvider::get_savings_summary()- Calcul du résumé global des économies
Nouveaux fichiers :
assets/parrainage-admin-discount.js- Interactions admin (popups, animations)assets/my-account-discount.js- Interactions client (tooltips, animations)
📊 Interface Administration Enrichie
Nouvelles colonnes dans le tableau de parrainage :
- "Remise Appliquée" : Montant de la remise avec date d'application
- "Statut Remise" : Badge interactif (ACTIVE, EN ATTENTE, ÉCHEC, SUSPENDUE)
Fonctionnalités interactives :
- Popups détaillés au survol des badges de statut
- Animations : Pulsation pour statuts "pending", transitions fluides
- Filtrage rapide par statut de remise
- Notifications en temps réel lors des changements de statut
🎨 Interface Client Modernisée
Section "Résumé de vos remises" :
- 4 cartes animées : Remises actives, Économie mensuelle, Économies totales, Prochaine facturation
- Actions en attente : Notifications des remises en cours de traitement
- Colonne enrichie : Statuts visuels avec icônes emoji et messages explicites
Expérience utilisateur :
- Animations d'entrée progressives pour chaque élément
- Tooltips informatifs au survol des statuts
- Notifications lors des changements de statut
- Simulation temps réel : Évolution des statuts pour démonstration
🔧 Données Simulées Intelligentes
Génération cohérente :
- Utilisation de
mt_srand()basée sur les IDs pour des résultats reproductibles - 4 statuts variés : active (vert), pending (orange), failed (rouge), suspended (gris)
- Montants réalistes : Entre 5€ et 15€ de remise mensuelle
- Dates cohérentes : Application récente, prochaine facturation calculée
Cache optimisé :
- 5 minutes de cache pour les données mockées
- Invalidation automatique lors des modifications
- Performance : Pas d'impact sur les requêtes existantes
🎨 Design System Cohérent
Styles CSS ajoutés :
- Badges de statut avec couleurs sémantiques et animations
- Cartes économies avec gradients et ombres modernes
- Popups responsives avec positionnement intelligent
- Grille adaptative pour mobile, tablette et desktop
Responsive design :
- Mobile first : Masquage intelligent des colonnes selon la taille d'écran
- Touch friendly : Interactions tactiles optimisées
- Accessibilité : Navigation clavier, lecteurs d'écran, attributs ARIA
⚡ Performance et Compatibilité
Optimisations :
- Chargement conditionnel : CSS/JS uniquement sur les pages concernées
- Animations performantes : Utilisation de
transformplutôt que propriétés coûteuses - Dégradation gracieuse : Fonctionnement même si JavaScript désactivé
Compatibilité :
- WordPress 6.0+ : Utilisation des APIs modernes
- WooCommerce 3.0+ : Intégration native avec les hooks existants
- Thèmes standards : Styles isolés pour éviter les conflits
🎯 Objectifs Validés
✅ Validation UX : Interface intuitive pour les administrateurs et clients
✅ Feedback précoce : Démonstration visuelle des futures fonctionnalités
✅ Base technique : Architecture prête pour recevoir les vraies données
✅ Tests visuels : Responsive design testé sur toutes les résolutions
Cette version 2.4.0 pose les fondations visuelles pour les fonctionnalités de remise parrain, permettant de valider l'ergonomie avant l'implémentation de la logique métier dans les prochaines versions.
Installation
1. Installation manuelle
- Téléchargez le plugin
- Uploadez le dossier
wc-tb-web-parrainagedans/wp-content/plugins/ - Activez le plugin via l'interface WordPress
2. Via l'interface WordPress
- Allez dans Extensions > Ajouter
- Uploadez le fichier ZIP du plugin
- Activez le plugin
Configuration
Prérequis
- WordPress 6.0 ou supérieur
- PHP 8.1 ou supérieur
- WooCommerce installé et activé
- WooCommerce Subscriptions (requis pour le système de parrainage et l'onglet "Mes parrainages")
Paramètres
Rendez-vous dans Réglages > TB-Web Parrainage pour configurer :
- ✅ Activer les webhooks enrichis - Ajoute les métadonnées d'abonnement
- ✅ Activer le système de parrainage - Affiche le champ code parrain au checkout (conditionnel)
- ✅ Masquer les codes promo - Masque automatiquement les codes promo pour les produits configurés
- 🕐 Rétention des logs - Durée de conservation (1-365 jours)
Interface de Parrainage
Accédez à l'onglet "Parrainage" pour :
- Consulter les données - Tableau groupé par parrain avec leurs filleuls
- Filtrer les résultats - Par période, parrain, produit ou statut d'abonnement
- Exporter les données - Format CSV ou Excel avec statistiques intégrées
- Modifier les avantages - Édition inline directement dans le tableau
- Naviguer rapidement - Liens directs vers les profils et commandes
Utilisation
Codes Parrain
Les codes parrain correspondent aux ID d'abonnements actifs WooCommerce Subscriptions :
- Format : 4 chiffres (ex: 4896)
- Validation automatique en base de données
- Affichage des informations du parrain lors de la validation
Configuration par Produit
Le plugin utilise une interface d'administration pour configurer les produits. Les fonctionnalités suivantes s'appliquent uniquement aux produits configurés :
- Champ "Code parrain" : Visible et obligatoire seulement pour les produits configurés
- Masquage codes promo : Les codes promo sont masqués automatiquement
- Messages personnalisés : Descriptions et avantages spécifiques par produit
Par défaut configuré pour :
- Produits 6713, 6524, 6519 : "1 mois gratuit supplémentaire"
- Produit 6354 : "10% de remise"
- Autres produits : "Avantage parrainage"
Webhooks
Les webhooks WooCommerce de type "order" sont automatiquement enrichis avec :
{
"has_subscriptions": true,
"subscriptions_count": 1,
"subscription_ids": [4896],
"subscription_metadata": [
{
"subscription_id": 4896,
"subscription_status": "active",
"subscription_start_date": "2024-01-01",
"subscription_next_payment": "2024-02-01",
"subscription_total": "29.99",
"subscription_currency": "EUR",
"subscription_items": [...]
}
],
"parrainage_pricing": {
"date_fin_remise_parrainage": "2025-07-24",
"date_debut_parrainage": "2024-07-22",
"date_fin_remise_parrainage_formatted": "24-07-2025",
"date_debut_parrainage_formatted": "22-07-2024",
"jours_marge_parrainage": 2,
"periode_remise_mois": 12,
"remise_parrain_montant": 7.50,
"remise_parrain_unite": "EUR",
"prix_avant_remise": 89.99,
"frequence_paiement": "mensuel"
},
"parrainage": {
"actif": true,
"filleul": {
"code_parrain_saisi": "6894",
"avantage": "10% de remise sur la 1ère année d'adhésion"
},
"parrain": {
"user_id": 17,
"subscription_id": "6894",
"email": "ga.du@outlook.com",
"nom_complet": "Charlotte Letest",
"prenom": "Charlotte"
},
"dates": {
"debut_parrainage": "2024-07-22",
"fin_remise_parrainage": "2025-07-24",
"debut_parrainage_formatted": "22-07-2024",
"fin_remise_parrainage_formatted": "24-07-2025",
"jours_marge": 2,
"periode_remise_mois": 12
},
"produit": {
"prix_avant_remise": 89.99,
"frequence_paiement": "mensuel"
},
"remise_parrain": {
"montant": 7.50,
"unite": "EUR"
}
}
}
Clé parrainage_pricing
Cette nouvelle clé n'apparaît que si la commande contient un code parrain valide :
date_fin_remise_parrainage: Date calculée de fin de période de remise au format YYYY-MM-DDdate_debut_parrainage: Date de début de l'abonnement avec parrainage au format YYYY-MM-DDdate_fin_remise_parrainage_formatted: Date de fin de remise au format DD-MM-YYYYdate_debut_parrainage_formatted: Date de début au format DD-MM-YYYYjours_marge_parrainage: Nombre de jours de marge ajoutés (défaut : 2)periode_remise_mois: Durée de la période de remise en mois (12)
Tarification enrichie (v2.2.0)
La section parrainage_pricing inclut désormais des informations complètes sur la tarification parrainage :
remise_parrain_montant: Montant fixe configuré de la remise en euros (selon configuration produit)remise_parrain_unite: Unité monétaire ('EUR')prix_avant_remise: Prix standard avant application de la remise parrainage en eurosfrequence_paiement: Fréquence de facturation ('unique', 'mensuel', 'annuel')
Note : Ces clés ne sont présentes que si le produit a une configuration complète. Dans le cas contraire, les clés remise_parrain_status: 'pending' et remise_parrain_message indiquent que la remise sera appliquée selon la configuration produit.
Objet parrainage unifié restructuré (v2.2.0)
La section parrainage regroupe toutes les données de parrainage dans une structure logique et hiérarchisée :
Structure générale :
actif: Boolean indiquant si un parrainage est actif pour cette commandefilleul: Informations côté réception du parrainageparrain: Informations d'identification du parraindates: Données temporelles du système de parrainageproduit: Informations tarifaires générales du produitremise_parrain: Calculs de remise spécifiques pour le parrain
Section filleul :
code_parrain_saisi: Code parrain tapé par le filleul au checkoutavantage: Avantage que reçoit le filleul grâce au parrainage
Section parrain :
user_id: ID utilisateur WordPress du parrainsubscription_id: ID de l'abonnement du parrainemail: Email du parrainnom_complet: Nom complet du parrainprenom: Prénom du parrain (v2.0.6+)
Section dates :
debut_parrainage: Date de début du parrainage (YYYY-MM-DD)fin_remise_parrainage: Date de fin de période de remise (YYYY-MM-DD)debut_parrainage_formatted: Date début au format DD-MM-YYYYfin_remise_parrainage_formatted: Date fin au format DD-MM-YYYYjours_marge: Jours de marge ajoutés (défaut: 2)periode_remise_mois: Durée de remise en mois (défaut: 12)
Section produit :
prix_avant_remise: Prix standard du produit avant application de remises en eurosfrequence_paiement: Fréquence de facturation ('unique', 'mensuel', 'annuel')
Section remise_parrain :
montant: Montant fixe de la remise en euros (selon configuration produit)unite: Unité monétaire ('EUR')
Ou si le produit n'a pas de configuration complète :
status: 'pending'message: 'La remise sera appliquée selon la configuration produit'
Avantages v2.2.0 : Cette structure restructurée améliore la séparation des responsabilités avec une distinction claire entre les informations produit (tarification générale) et les informations de remise parrain (bénéfice spécifique). Cela facilite l'évolutivité et la maintenance du code.
Développement
Structure du Plugin
wc-tb-web-parrainage/
├── wc-tb-web-parrainage.php # Fichier principal
├── composer.json # Autoload PSR-4
├── src/
│ ├── Plugin.php # Classe principale
│ ├── Logger.php # Système de logs
│ ├── WebhookManager.php # Gestion webhooks
│ ├── ParrainageManager.php # Système parrainage
│ ├── CouponManager.php # Masquage codes promo
│ ├── SubscriptionPricingManager.php # Calcul dates tarification
│ ├── ParrainageStatsManager.php # Interface parrainage admin
│ ├── ParrainageDataProvider.php # Fournisseur données admin
│ ├── ParrainageExporter.php # Export données
│ ├── ParrainageValidator.php # Validation données
│ ├── MyAccountParrainageManager.php # Gestionnaire onglet client
│ ├── MyAccountDataProvider.php # Fournisseur données client
│ ├── MyAccountAccessValidator.php # Validateur accès client
│ │ # NOUVEAU v2.5.0 : Classes techniques fondamentales
│ ├── DiscountCalculator.php # Calculs de remises
│ ├── DiscountValidator.php # Validation éligibilité
│ ├── DiscountNotificationService.php # Notifications remises
│ │ # NOUVEAU v2.6.0 : Workflow asynchrone
│ └── AutomaticDiscountProcessor.php # Processeur workflow asynchrone
├── assets/
│ ├── admin.css # Styles administration
│ ├── admin.js # Scripts administration
│ ├── parrainage-admin.css # Styles interface parrainage admin
│ ├── parrainage-admin.js # Scripts interface parrainage admin
│ └── my-account-parrainage.css # Styles onglet client (Nouveau v1.3.0)
└── README.md
Hooks Disponibles
Hooks de Configuration
// Personnaliser les messages de parrainage
add_filter( 'tb_parrainage_messages_config', 'custom_parrainage_messages' );
function custom_parrainage_messages( $config ) {
$config[123] = array(
'description' => 'Message personnalisé...',
'message_validation' => 'Code valide ✓ - Avantage spécial',
'avantage' => 'Avantage spécial'
);
return $config;
}
Hooks Workflow Asynchrone v2.6.0
// Hook après calcul d'une remise (simulation v2.6.0)
add_action( 'tb_parrainage_discount_calculated', 'on_discount_calculated', 10, 2 );
function on_discount_calculated( $order_id, $discount_results ) {
// Actions personnalisées après calcul réussi
error_log( "Remise calculée pour commande $order_id" );
}
// Hook en cas d'échec définitif de traitement
add_action( 'tb_parrainage_processing_failed', 'on_processing_failed', 10, 2 );
function on_processing_failed( $order_id, $error_message ) {
// Notification administrateur ou logging spécialisé
wp_mail( 'admin@site.com', 'Échec remise parrainage', $error_message );
}
// Hook en cas d'échec CRON
add_action( 'tb_parrainage_cron_failure', 'on_cron_failure', 10, 2 );
function on_cron_failure( $order_id, $subscription_id ) {
// Alerte problème de configuration serveur
error_log( "CRON WordPress défaillant - Vérifier configuration serveur" );
}
Hooks de Retry et Monitoring
// Hook avant retry automatique
add_action( 'tb_parrainage_retry_discount', 'before_retry', 10, 4 );
function before_retry( $order_id, $subscription_id, $attempt_number, $previous_error ) {
// Actions avant nouvelle tentative
if ( $attempt_number >= 2 ) {
// Alerter après 2ème échec
error_log( "2ème échec remise parrainage: $previous_error" );
}
}
// Hook après chargement des services techniques
add_action( 'tb_parrainage_discount_services_loaded', 'on_services_loaded' );
function on_services_loaded( $plugin_instance ) {
// Accès aux services de calcul après initialisation
$calculator = $plugin_instance->get_discount_calculator();
$validator = $plugin_instance->get_discount_validator();
$processor = $plugin_instance->get_automatic_discount_processor();
}
Statuts de Workflow
Le système v2.6.0 utilise ces statuts dans les métadonnées des commandes :
pending: Marqué pour traitement différéscheduled: Programmé via CRON WordPresscalculated: Remise calculée avec succès (simulation)error: Échec définitif après retrycron_failed: Problème de programmation CRON
Métadonnées Workflow
// Accès aux métadonnées de workflow
$order = wc_get_order( $order_id );
$workflow_status = $order->get_meta( '_parrainage_workflow_status' );
$marked_date = $order->get_meta( '_parrainage_marked_date' );
$scheduled_time = $order->get_meta( '_parrainage_scheduled_time' );
$calculation_date = $order->get_meta( '_tb_parrainage_calculated' );
$calculated_discounts = $order->get_meta( '_parrainage_calculated_discounts' );
$final_error = $order->get_meta( '_parrainage_final_error' );
Classes Principales
TBWeb\WCParrainage\Plugin
Classe principale qui orchestre le plugin.
TBWeb\WCParrainage\Logger
Système de logs avec stockage en base de données.
TBWeb\WCParrainage\WebhookManager
Gestion des webhooks WooCommerce enrichis.
TBWeb\WCParrainage\ParrainageManager
Système complet de gestion des codes parrain.
TBWeb\WCParrainage\SubscriptionPricingManager
Calcul et gestion des dates de modification tarifaire pour les abonnements avec parrainage.
TBWeb\WCParrainage\CouponManager
Gestion du masquage conditionnel des codes promo.
TBWeb\WCParrainage\ParrainageStatsManager (Nouveau)
Orchestration de l'interface d'administration des données de parrainage.
TBWeb\WCParrainage\ParrainageDataProvider (Nouveau)
Récupération et traitement des données de parrainage depuis la base de données.
TBWeb\WCParrainage\ParrainageExporter (Nouveau)
Export des données de parrainage vers différents formats (CSV, Excel).
TBWeb\WCParrainage\ParrainageValidator (Nouveau)
Validation des données d'entrée et paramètres de l'interface de parrainage.
TBWeb\WCParrainage\MyAccountParrainageManager (Nouveau v1.3.0)
Gestionnaire principal de l'onglet "Mes parrainages" côté client avec endpoint WooCommerce.
TBWeb\WCParrainage\MyAccountDataProvider (Nouveau v1.3.0)
Récupération et formatage des données de parrainage pour l'affichage côté client.
TBWeb\WCParrainage\MyAccountAccessValidator (Nouveau v1.3.0)
Validation de l'accès aux fonctionnalités de parrainage pour les utilisateurs connectés.
Logs et Debugging
Consultation des Logs
Allez dans Réglages > TB-Web Parrainage > Onglet Logs pour :
- Consulter tous les logs en temps réel
- Filtrer par niveau (INFO, WARNING, ERROR, DEBUG)
- Rechercher dans les messages
- Vider les logs
Types de Logs
- webhook-subscriptions : Traitement des webhooks
- parrainage : Validation et enregistrement des codes parrain
- maintenance : Nettoyage et maintenance automatique
Debug WordPress
Si WP_DEBUG est activé, les logs sont aussi envoyés vers le système WordPress.
FAQ
Comment personnaliser les messages de parrainage ?
Utilisez le filtre tb_parrainage_messages_config (voir section Développement).
Les webhooks ne contiennent pas les métadonnées d'abonnement
Vérifiez que :
- WooCommerce Subscriptions est installé et actif
- L'option "Webhooks enrichis" est activée dans les paramètres
- La commande contient bien des abonnements
Le code parrain n'est pas validé
Vérifiez que :
- Le code correspond à un ID d'abonnement actif
- WooCommerce Subscriptions est installé
- L'utilisateur n'utilise pas son propre code
Problèmes de performance
Le plugin est optimisé pour la performance :
- Cache des validations AJAX
- Nettoyage automatique des logs anciens
- Requêtes optimisées
Support
Pour toute question ou problème :
- Consultez les logs dans l'interface d'administration
- Vérifiez la configuration des prérequis
- Contactez TB-Web pour le support
Licence
GPL v2 or later
Changelog
Version 2.20.5 (2025-01-16) - CORRECTION TEXTE EXPLICATIF REMISES
📝 Correction du Texte Explicatif
🎯 PROBLÈME RÉSOLU : INFORMATIONS INCORRECTES DANS L'INTERFACE CLIENT
Cette version corrige les erreurs factuelles dans le texte explicatif des remises parrain sur la page client /mon-compte/mes-parrainages/.
🔧 CORRECTIONS APPORTÉES
- Taux correct : Correction de 25% → 20% (taux réel)
- Base de calcul : Correction de "HT" → "TTC" (base réelle)
- Structure améliorée : Réorganisation de l'information avec sections claires
- Exemple concret : Ajout d'un calcul illustratif avec montants réels
- Lisibilité : Amélioration de la présentation avec listes imbriquées
📊 CONTENU CORRIGÉ
Avant v2.20.5 :
- ❌ "La remise de 25% s'applique sur le montant hors taxes (HT)"
- ❌ Informations peu structurées sans exemple
Après v2.20.5 :
- ✅ "Montant : 20% du prix TTC payé par votre filleul"
- ✅ Exemple concret : 59,99€ HT (71,99€ TTC) → 14,40€/mois d'économie
- ✅ Structure claire : Montant, Exemple, Application, Durée, Annulation
🎨 AMÉLIORATIONS UX
- Titre enrichi : "Comment fonctionne votre remise parrain"
- Sections thématiques : Chaque aspect clairement identifié
- Exemple pratique : Calcul concret pour meilleure compréhension
- Cohérence visuelle : Conservation du style existant
🔧 IMPACT TECHNIQUE
- Fichier modifié :
src/MyAccountParrainageManager.php(ligne 404-419) - Version commentaire : v2.0.2 → v2.0.3 pour traçabilité
- Aucun impact : Performance, sécurité ou fonctionnalités
- Compatibilité : Totale avec versions existantes
MISE À JOUR RECOMMANDÉE pour corriger les informations affichées aux utilisateurs.
Version 2.17.2 (15-01-2025 à 16h15) - FIX DÉFINITIF VISIBILITÉ CONTENU MODAL
🎉 PROBLÈME RÉSOLU DÉFINITIVEMENT : CONTENU MODAL 100% VISIBLE
Cette version corrige définitivement le problème de visibilité du contenu des modals en éliminant les causes racines d'encodage et d'affichage CSS.
🔧 CORRECTIONS TECHNIQUES MAJEURES
-
Élimination problèmes d'encodage :
- Suppression totale des emojis (📋, 🔍, 💡, ⚠️) qui causaient la corruption d'affichage
- Suppression de
escapeHtml()qui convertissait le HTML en entités non-affichables - Rendu direct du contenu sans transformation qui altère l'affichage
-
CSS de forçage total :
- Règles
!importantsur tous les éléments pour garantir la visibilité - Forçage JavaScript post-rendu qui applique
display: block; visibility: visible; opacity: 1sur chaque élément - Styles inline systématiques pour outrepasser tout conflit CSS
- Gestion adaptative des listes (
display: list-itempour les<li>)
- Règles
-
Temporisation optimisée :
- Timeout à 100ms au lieu de 50ms pour garantir le rendu AJAX
- Recalcul forcé avec
offsetHeightpour déclencher le re-layout - Log de vérification pour confirmer le nombre d'éléments traités
📊 IMPACT UTILISATEUR
- Avant v2.17.2 : Contenu généré mais invisible (problèmes encodage + CSS)
- Après v2.17.2 : Contenu 100% visible systématiquement avec structure complète
🎯 GARANTIE DE FONCTIONNEMENT
Sur /mon-compte/mes-parrainages/, chaque icône ? affiche maintenant :
- ✅ Titre principal : visible en premier
- ✅ Définition : paragraphe complet sans corruption
- ✅ Détails : liste à puces avec contenus structurés
- ✅ Interprétation : sections d'aide contextuelles
- ✅ Conseils : listes de recommandations
- ✅ Exemples/Formules : encadrés colorés avec contenus pratiques
Version 2.17.1 (15-01-2025 à 16h00) - CORRECTION AUTOMATIQUE CSS MODALS
🎉 PROBLÈME RÉSOLU : AFFICHAGE AUTOMATIQUE DU CONTENU COMPLET
Cette version corrige définitivement le problème d'affichage des modals en appliquant automatiquement les corrections CSS nécessaires après le rendu du contenu AJAX.
🔧 CORRECTION TECHNIQUE MAJEURE
-
Correction CSS automatique post-rendu :
- Timing parfait : Application des styles après le chargement AJAX
- Hauteur optimale :
minHeight: 400px,maxHeight: 800px - Overflow intelligent :
overflow: visible,overflowY: auto - Recalcul forcé :
offsetHeightpour garantir l'affichage - Debug intégré : Logs de vérification si mode debug activé
-
Fonctionnement garanti :
- ✅ Titre principal visible en premier
- ✅ Définition complète avec styles
- ✅ Sections structurées (Détails, Interprétation, Conseils)
- ✅ Exemples et formules dans des encadrés colorés
- ✅ Scroll automatique si contenu trop long
📊 IMPACT UTILISATEUR
- Avant v2.17.1 : Modals vides ou tronquées malgré le contenu présent
- Après v2.17.1 : Contenu complet systématiquement visible avec mise en forme parfaite
🎯 TEST DE VALIDATION
Sur /mon-compte/mes-parrainages/, toutes les icônes ? affichent maintenant :
- Titre + Définition + Détails + Conseils + Exemples
- Hauteur adaptative avec scroll si nécessaire
- Styles cohérents et professionnels
Version 2.17.0 (15-01-2025 à 15h45) - CORRECTION DÉFINITIVE RENDU MODALS
🎯 PROBLÈME RÉSOLU : CONTENU MODAL COMPLET ENFIN AFFICHÉ
Cette version corrige définitivement le problème des modals qui affichaient seulement la définition au lieu du contenu structuré complet avec détails, conseils et exemples.
🔧 CORRECTIONS TECHNIQUES CRITIQUES
-
Fonction
renderModalContent()entièrement corrigée :- Titre principal maintenant affiché en premier avec
content.title - Définition avec styles améliorés et espacement correct
- Contenu structuré systématiquement rendu après la définition
- Container avec padding pour une meilleure présentation
- Titre principal maintenant affiché en premier avec
-
Fonction
renderStructuredContent()enrichie :- Section Détails avec icône 📋 et styles modernes
- Section Interprétation avec icône 🔍 et background subtil
- Section Exemple avec encadré vert et icône 💡
- Section Conseils avec icône 💡 et liste stylisée
- Sections Formule/Précision avec encadrés colorés selon le type
🎨 AMÉLIORATIONS VISUELLES
/* Styles intégrés pour une présentation optimale */
- Padding container : 20px pour une respiration visuelle
- Police moderne : -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto
- Couleurs harmonieuses : #2c3e50 (titres), #34495e (sous-titres)
- Encadrés colorés : Vert (exemples), Bleu (formules), Jaune (précisions)
- Espacement cohérent : 15px entre sections, 10px pour sous-éléments
📊 PROBLÈME TECHNIQUE RÉSOLU
Avant v2.17.0 :
// PROBLÈME : Seule la définition était affichée
if (content.definition) {
html += '<div class="modal-definition"><p>définition...</p></div>';
}
// Les détails, conseils, exemples étaient ignorés dans renderStructuredContent()
Après v2.17.0 :
// SOLUTION : Titre + Définition + Contenu structuré complet
if (content.title) {
html += "<h3>titre</h3>";
}
if (content.definition) {
html += "<div>définition</div>";
}
html += this.renderStructuredContent(content); // Détails, conseils, exemples
🎯 RÉSULTAT UTILISATEUR FINAL
Les modals sur /mon-compte/mes-parrainages/ affichent maintenant :
- ✅ Titre complet : "Vos remises actives", "Votre économie mensuelle", etc.
- ✅ Définition claire : Explication de base de la métrique
- ✅ Détails exhaustifs : 3 points d'information détaillés
- ✅ Interprétation : Comment comprendre et utiliser cette information
- ✅ Exemples concrets : Cas pratiques avec chiffres réels
- ✅ Conseils pratiques : 2-3 conseils d'optimisation
🛡️ VALIDATION TECHNIQUE
Tests confirmés sur les 4 modals :
active_discounts: Affiche titre + définition + 3 détails + interprétation + exemple + 3 conseils ✅monthly_savings: Affiche titre + définition + formule + interprétation + exemple + 2 conseils ✅total_savings: Affiche titre + définition + 3 détails + interprétation + 2 conseils ✅next_billing: Affiche titre + définition + 3 détails + interprétation + exemple + précision + 2 conseils ✅
MISE À JOUR ESSENTIELLE - Cette version transforme les modals de simple popup de définition en véritables centres d'aide riches et informatifs.
Version 2.16.3 (22-08-2025 à 12h30) - TEMPLATE MODAL SYSTEM DÉFINITIVEMENT OPÉRATIONNEL
🎯 PROBLÈME RÉSOLU : TEMPLATE MODAL SYSTEM DÉFINITIVEMENT OPÉRATIONNEL
Cette version applique la solution technique complète identifiée dans l'analyse approfondie de bug.md, corrigeant les problèmes fondamentaux du Template Modal System et supprimant définitivement l'ancien système.
🔧 CORRECTIONS TECHNIQUES CRITIQUES
-
TemplateModalManager.php - Méthode
get_js_object_name()corrigée :// AVANT (INCORRECT) return 'tbModal' . ucfirst( $this->namespace ); // client_account → tbModalClient_account ❌ // APRÈS (CORRECT) $parts = explode('_', $this->namespace); $camelCase = implode('', array_map('ucfirst', $parts)); return 'tbModal' . $camelCase; // client_account → tbModalClientAccount ✅ -
Auto-initialisation JavaScript ajoutée :
- Nouveau fichier :
assets/js/template-modals-init.js - Auto-détection des objets de configuration
tbModal* - Initialisation automatique des instances Template Modal System
- Stockage global des instances pour usage ultérieur
- Nouveau fichier :
-
TemplateModalManager.php -
enqueue_modal_assets()enrichie :- Script d'auto-initialisation automatiquement chargé
- Dépendances correctes : template-modals-init.js dépend de template-modals.js
- Logs améliorés avec nom d'objet JavaScript généré
-
MyAccountParrainageManager.php - Ancien système SUPPRIMÉ :
- Plus de fallback vers client-help-modals.js/css
- Template Modal System EXCLUSIF
- render_help_icon() utilise uniquement le nouveau système
- Logs explicites "SEUL système actif"
-
Fichiers obsolètes SUPPRIMÉS définitivement :
- ❌
assets/js/client-help-modals.jsSUPPRIMÉ - ❌
assets/css/client-help-modals.cssSUPPRIMÉ
- ❌
🏗️ ARCHITECTURE TECHNIQUE FINALISÉE
// Auto-initialisation automatique
(function ($) {
$(document).ready(function () {
// Rechercher tous les objets tbModal*
for (let key in window) {
if (key.startsWith("tbModal") && key !== "TBTemplateModals") {
const config = window[key];
if (config && config.namespace) {
// Créer automatiquement l'instance
const manager = new window.TBTemplateModals(config);
// Stocker pour usage global
window[key + "Instance"] = manager;
}
}
}
});
})(jQuery);
📊 FLUX D'EXÉCUTION CORRIGÉ
- TemplateModalManager enqueue assets avec auto-init
- Localisation :
tbModalClientAccountobject créé avec bonne configuration - Auto-init.js détecte
tbModalClientAccountet crée l'instance - Instance stockée :
window.tbModalClientAccountInstance - Clics sur icônes gérés automatiquement par l'instance
🎨 VALIDATION TECHNIQUE
Tests de validation automatique :
// Console navigateur sur /mon-compte/mes-parrainages/
console.log("ObjetThis README is longer than the copy stored here. Read the rest on GitHub →