Principales fonctionnalités et avantages du module
🌍 Validation de la TVA UE — chaîne de fournisseurs
- VIES REST API (Commission européenne) — service officiel de l’UE, gratuit, sans clés API, renvoie un numéro de consultation conforme à la réglementation
- VATcomply — proxy gratuit vers VIES, limite de 2 requêtes/s/IP, sans authentification
- VATLayer (APILayer) — API commerciale à haute disponibilité, nécessite une clé API, renvoie les données complètes de l’entreprise
- viesapi.eu — proxy VIES commercial polonais avec HTTP Basic Auth, temps de réponse rapides
- Chaîne configurable de 3 slots — choisissez le Fournisseur 1 (principal), le Fournisseur 2 (de secours), le Fournisseur 3 (dernier recours)
- Fallback automatique — si le premier fournisseur renvoie une erreur ou un timeout, le module essaie automatiquement le suivant
- Timeout et retry par fournisseur — configurez des limites de temps distinctes pour chaque fournisseur
- Cache TTL par fournisseur — différentes durées de validité du cache pour chaque API
- Protection contre les doublons — JavaScript bloque la sélection du même fournisseur dans 2 slots, validation côté serveur en PHP
🇵🇱 Validation du NIP polonais — registre GUS
- Intégration avec l’API GUS BIR1.1 — registre officiel gouvernemental REGON, clé gratuite depuis api.stat.gov.pl
- Vérification simple de la somme de contrôle du NIP — algorithme pondéré selon la spécification officielle du ministère des Finances
- Rejet des motifs invalides — tous les zéros, uniquement des uns, chiffres identiques — bloqués automatiquement
- Validation checksum = 10 — conformément à la spécification officielle du NIP, la valeur 10 est invalide
- Récupération des données de l’entreprise — nom, adresse, code postal, localité depuis le registre REGON
- Timeout et retry configurables — adaptation aux performances des serveurs GUS
💰 Exonération automatique de TVA (0 % reverse charge)
- Application automatique de 0 % de TVA pour les clients B2B vérifiés des pays de l’UE
- Pays source configurable — exclusion du 0 % pour les transactions nationales (conforme à la loi sur la TVA)
- Liste des pays à vérifier via VIES — choisissez les pays spécifiques soumis à validation
- Option "autoriser si la validation échoue" — ne bloquez pas l’inscription en cas de panne de VIES
- Intégration avec le moteur fiscal de PrestaShop via `TaxManagerInterface`
👥 Gestion automatique des groupes clients
- Attribution automatique d’un groupe après validation — par ex. ajouter automatiquement au groupe "B2B" ou "Exonérés de TVA"
- Conservation des groupes existants — le client ne perd aucun de ses groupes actuels
- Ajout idempotent — aucun doublon même en cas de validations répétées
- Validation Group::isLoadedObject — sécurité en cas de groupes supprimés
📧 Notifications e-mail
- E-mail à l’admin lors d’une nouvelle validation B2B — information immédiate sur un nouveau client professionnel
- E-mail en cas d’échec de revalidation — alerte de sécurité lorsque la TVA n’est plus valide
- Modèles multilingues (polonais, anglais) — modifiables dans l’éditeur standard de PS
- Adresse d’expéditeur configurable — par défaut l’e-mail de la boutique depuis les paramètres PS
🔄 Revalidation lors du changement de statut de commande
- Nouvelle vérification automatique de la TVA lors du passage de la commande à un statut sélectionné (par ex. "Paiement accepté")
- Protection de conformité — détection des situations où la TVA a expiré entre la commande et l’expédition
- Journal d’audit complet — chaque revalidation est enregistrée avec le numéro de consultation VIES
- Compatible multiboutique — utilise le contexte de la boutique de la commande, et non le sélecteur admin actuel
📊 Tableau de bord administrateur professionnel
- 5 sections du dashboard — chaîne de fournisseurs, statistiques de validation, validations récentes, télémétrie des fournisseurs, guide de démarrage rapide
- Visualisation de la chaîne — 3 slots avec icônes, noms, statut (actif/désactivé/pas de clé)
- 7 cartes KPI — total, valides, invalides, 7 derniers jours, VIES, GUS, entrées de cache
- Tableau des 10 dernières validations — numéro de TVA, source, résultat, entreprise, client, date
- Télémétrie des fournisseurs — taux de réussite par fournisseur, nombre de vérifications, dernier appel
- Cartes fournisseurs avec badges FREE/PAID — information claire sur les coûts
- Colorimétrie automatique — vert (OK), orange (warn), rouge (error)
🏪 Prise en charge complète du multistore
- Isolation du cache par boutique — colonne `id_shop` dans la table de cache, clé UNIQUE composite
- Isolation des logs par boutique — audit par entité juridique
- Configuration par boutique — différents fournisseurs, clés API, groupes clients pour chaque boutique
- Revalidation shop-aware — le hook utilise le contexte de la commande, pas celui de l’admin
- Définition automatique des valeurs par défaut pour toutes les boutiques lors de l’installation
⚡ Performance et optimisation
- Cache à deux niveaux — statique (en mémoire) + persistant (base de données)
- Cache négatif — pas de nouvelles requêtes DB pour les numéros non validés
- Application du TTL à la lecture — les anciennes entrées sont automatiquement ignorées
- Rendu lazy du dashboard — les statistiques sont calculées uniquement dans l’onglet Tableau de bord
- Requête SQL agrégée unique — 6 COUNT(*) → 1 SUM(CASE WHEN)
- Read replica pour toutes les lectures (`_PS_USE_SQL_SLAVE_`)
- Index dédiés — idx_date, idx_source, idx_shop
- Rétention des logs via CRON — nettoyage automatique après une période configurable (365 jours par défaut)
🔒 Sécurité
- Tokens CSRF sur tous les points d’entrée (front, admin, CRON)
- Comparaison timing-safe (`hash_equals`) pour la validation des tokens
- Sanitisation SQL complète — `pSQL()`, `(int)`, `bqSQL()` partout
- Échappement Smarty — `htmlall:UTF-8` pour toutes les variables dans les templates
- Vérification SSL — `CURLOPT_SSL_VERIFYPEER=true` dans tous les appels aux fournisseurs
- Liste blanche des fournisseurs — impossible d’enregistrer un fournisseur invalide dans la chaîne
- Protection _PS_VERSION_ dans chaque fichier PHP
- Annotation AdminSecurity dans le contrôleur admin Symfony
🛠️ Compatibilité et dépendances
- PrestaShop 1.7.0 – 9.x — compatibilité complète, protections versionnées
- PHP 7.0 – 8.5 — aucune syntaxe moderne sans protections
- MySQL 5.6+ / MariaDB 10.x+ — charset utf8mb4
- Zéro Composer / vendor — autoloader PSR-4 propriétaire (15 lignes de code)
- Système de traduction dual — trans() + fallback l() fonctionne sur toutes les versions de PS
- Traductions polonaises complètes — plus de 200 entrées dans pl.php et les fichiers XLF
- Support dual theme — thèmes admin legacy (Smarty) et modern (Symfony)
👨💼 Panneau d’administration — 10 onglets
- Tableau de bord — dashboard avec 5 sections, onglet par défaut
- Paramètres — options générales de validation, contrôle ISO, auto-group, cache TTL, revalidation
- Paramètres TVA UE — activation de VIES, liste des pays, taux 0 %, autoriser en cas d’échec, pays source
- Chaîne de fournisseurs — 3 sélecteurs avec JavaScript bloquant les doublons
- VIES REST — timeout, cache TTL, retry (sans clés)
- VATcomply — timeout, cache TTL, retry (sans clés)
- VATLayer — clé API, timeout, cache TTL, retry
- viesapi.eu — identifiant, clé d’accès, timeout, cache TTL, retry
- Configuration GUS — activation, pays, clé utilisateur, autoriser en cas d’échec, timeout, cache TTL, retry
- Outils — URL CRON pour le nettoyage du cache et des logs
🎯 À qui s’adresse ce module ?
- Boutiques PrestaShop vendant aux entreprises (B2B) dans l’Union européenne
- Vendeurs émettant des factures en autoliquidation (reverse charge)
- Boutiques desservant le marché polonais nécessitant une vérification du NIP dans le GUS
- Plateformes multistore avec différentes entités juridiques par boutique
- Vendeurs ayant besoin d’un audit de validation TVA conforme à la réglementation fiscale
- Boutiques avec un volume élevé de transactions B2B nécessitant du cache et une haute disponibilité