Panier multi-site, multi-devise, multi-langue
- Rôle
- Développeur Full Stack
- Durée
- ~1 mois
- Année
- 2022
Faites glisser horizontalement
Contexte
Dans le cadre de la migration vers l'instance Laravel, l'ensemble du système de panier était à concevoir et à développer from scratch. L'ancien panier legacy a été étudié pour identifier les comportements existants et les connexions aux tables de la base de données, mais l'implémentation est entièrement nouvelle. Le panier couvre trois surfaces : une pop-in de confirmation qui s'ouvre automatiquement à chaque ajout au panier (présentant le produit ajouté avec les compléments et la montée en gamme), une pop-in latérale listant l'ensemble du panier accessible depuis l'icône panier, et le step « Cart » intégré au wizard de la page de paiement. Il est développé en Livewire, Alpine.js et Laravel.
Problème
La nouvelle instance Laravel ne disposait d'aucun système de panier. Il fallait concevoir et implémenter de zéro un panier couvrant l'ensemble des marchés (FR, DE, ES, IT, NL, UK) avec toutes les spécificités de la plateforme : multi-site, multi-devise (EUR, GBP), gestion des produits à intervalles de quantité, affichage TTC/HT selon le profil client, substitution automatique de références, renouvellements automatisés, produits complémentaires et montée en gamme. Après mise en production, un bug a également été identifié : la commande issue d'un devis pro et la commande standard s'écrasaient mutuellement en session.
Solution
Architecture générale
Le panier est présent sur trois surfaces : une pop-in de confirmation s'ouvrant à chaque ajout, une pop-in latérale listant l'ensemble du panier, et le step « Cart » du wizard de paiement. L'ensemble est géré via des composants Livewire et Alpine.js.
Panier multi-site et multi-devise
Chaque site dispose de son propre panier conservé indépendamment en session. Passer du site FR au site UK affiche le panier GB sans toucher au panier FR. Les prix sont définis par site dans le BO, sans conversion en temps réel, ce qui garantit la cohérence des devises par marché.
Affichage TTC / HT
Le choix est stocké en session et s'applique à l'ensemble du site. Le client peut basculer manuellement. Sur certaines pages de logiciels pro (ex. EBP), la bascule vers le prix HT est automatique.
Produits à intervalles de quantité
Quand un produit est vendu par tranches (ex. 5-14 postes, 15-24 postes), chaque tranche correspond à une référence distincte. Lorsque le client modifie la quantité dans le panier, le système recalcule automatiquement la tranche applicable et substitue la référence en conséquence. La ligne du panier est mise à jour dynamiquement – le client ne voit jamais plusieurs lignes pour le même produit.
Référence de renvoi
Quand une référence A est configurée dans le BO avec une référence de renvoi B (relation 1-1), l'ajout de A au panier déclenche silencieusement une substitution vers B. Si B n'est pas disponible, un message générique est affiché sans exposer la raison précise au client.
Renouvellements automatiques
Un middleware détecte les URLs de renouvellement, parse les références produit présentes en paramètres GET, les ajoute automatiquement au panier et redirige directement vers la caisse au step 1 (le step « Cart » du wizard de paiement), sans étape intermédiaire.
Pop-in de confirmation, montée en gamme et produits complémentaires
À chaque ajout, la pop-in de confirmation présente le produit ajouté, les produits complémentaires associés (configurés dans config/catalogue.php) et une proposition de montée en gamme si définie en BDD via le BO. Le client peut accepter la montée en gamme via un bouton « Remplacer » qui retire le produit original et le substitue dans le panier.
Coexistence devis pro et commande normale
Identifié après mise en production, un bug provoquait l'écrasement mutuel entre la commande d'un devis pro et la commande standard. Le correctif introduit deux listes de produits distinctes en session. La reconnaissance d'une commande devis se fait via l'API (colonne quote.Commande_ID). Le switch entre les deux contextes est automatique : l'ajout d'un produit au panier bascule sur le contexte normal sans effacer le panier devis, et inversement. Les deux coexistent en session sans jamais s'écraser.
Résultat
Le panier est opérationnel sur l'ensemble des marchés de la plateforme. Il couvre la totalité des comportements de l'ancien système tout en apportant des fonctionnalités nouvelles : switch automatique de référence sur les produits à intervalles, conservation indépendante du panier par site et par devise, montée en gamme et produits complémentaires pilotables depuis le BO, renouvellements entièrement automatisés. Le bug de coexistence devis/commande est résolu, les deux contextes coexistent sans interférence.
Un projet Laravel en tête ?
Réponse sous 24 h. Missions en régie ou au forfait.
- Île-de-France Sur site ou hybride
- Partout en France Présentiel ponctuel à négocier — ex. Lyon, 2 jours par mois
- International Full remote