Shipping Cost by Zip Code — Frais de livraison par code postal

Shipping Cost by Zip Code est un module PrestaShop qui vous permet d’appliquer des frais de livraison précis en fonction du code postal du client. Vous créez des zones postales personnalisées (illimitées), vous y associez des codes postaux (unitaires ou par plages), puis vous définissez des tarifs par transporteur avec des tranches par poids ou par montant de panier.

Contrairement au calcul natif (zones/pays), cette approche est idéale lorsque les coûts varient fortement entre centre-ville, zones rurales, îles, montagne, DOM-TOM, etc. Le module n’ajoute pas de transporteurs : il ajuste les tarifs de vos transporteurs existants au moment du checkout, selon le code postal.

Points forts :

  • Zones postales illimitées (codes uniques et plages numériques)
  • Tarifs par transporteur + tranches illimitées (poids ou prix)
  • Livraison gratuite (par tranche, par zone ou dès un montant)
  • Import / export CSV pour configurer en masse
  • Système de priorité en cas de chevauchement de zones
  • Multistore, multilingue, sans override

Présentation

Par défaut, PrestaShop calcule les frais de livraison selon des zones géographiques et des pays, ce qui devient rapidement trop imprécis. Une boutique peut avoir besoin d’un tarif différent selon la distance, l’accessibilité ou le coût réel du transport, même dans un même pays.

Avec Shipping Cost by Zip Code, vous définissez des règles au niveau du code postal :

  1. Vous créez une zone postale (ex. “Paris Intra-muros”, “DOM-TOM”, “Zone montagne”).
  2. Vous ajoutez des codes postaux (liste) ou des plages (ex. 75001 → 75020).
  3. Vous paramétrez la tarification par transporteur avec une logique par poids ou montant.

Si aucune zone ne correspond au code postal, le comportement est configurable : appliquer les frais standards de PrestaShop, ou bloquer la livraison (transporteurs masqués).


Fonctionnalités

Gestion des zones de livraison par code postal

  • Création de zones postales illimitées
  • Codes postaux :
    • Unitaires (un code ou une liste)
    • Plages numériques (ex. 75001 à 75020)
  • Support de plusieurs pays dans une même zone
  • Activation / désactivation de zone
  • Option “Livraison désactivée” : masquer les transporteurs au checkout pour une zone donnée
  • Système de priorité pour gérer les chevauchements entre zones

Tarification avancée par transporteur

  • Tarifs par transporteur et par zone
  • Mode de calcul :
    • Poids (kg)
    • Prix (montant du panier)
  • Tranches illimitées (0–5, 5–10, etc.)
  • Frais fixes ou en pourcentage du panier
  • Livraison gratuite :
    • par tranche
    • par zone / transporteur
    • automatiquement à partir d’un montant de panier défini
  • Option “Tous les transporteurs” : appliquer une règle à tous les transporteurs en une seule configuration

Administration et productivité

  • Interface intégrée dans le back-office, menu Livraison
  • Liste des zones avec recherche / filtres / tri et réorganisation par position (drag & drop)
  • Éditeur “tout-en-un” : général + codes postaux + tarifs sur la même page
  • Import CSV en masse avec rapport d’erreurs
  • Export CSV complet de la configuration
  • Fichier CSV d’exemple fourni

Aspects techniques

  • Compatible PrestaShop 1.7.7, 8.x et 9.x
  • Compatible multistore
  • Support multilingue (noms de zones traduisibles)
  • Aucun override du core PrestaShop
  • Utilisation de id_carrier_reference (résistant aux modifications de transporteurs)
  • Requêtes optimisées + cache en mémoire (matching code postal → zone)

Prérequis

  • PrestaShop : 1.7.7.0 minimum (compatible 1.7.7 → 9.x)
  • PHP : 7.4+ (compatible 7.4 → 8.3)
  • MySQL : 5.6+ / MariaDB : 10.1+

Limitation importante : le module supporte uniquement les codes postaux numériques. Les pays à codes alphanumériques (ex. Royaume-Uni, Canada, Pays-Bas) ne sont pas pris en charge.


Installation

Méthode 1 — via le back-office (recommandé)

  1. Allez dans Modules > Gestionnaire de modules
  2. Cliquez sur Téléverser un module
  3. Sélectionnez wepresta_shipping_cost_by_zip.zip
  4. Attendez la fin de l’installation
  5. Cliquez sur Configurer

Méthode 2 — via FTP

  1. Décompressez l’archive ZIP
  2. Uploadez le dossier wepresta_shipping_cost_by_zip/ dans /modules/
  3. Dans le back-office : Modules > Gestionnaire de modules
  4. Recherchez le module et cliquez sur Installer
  5. Cliquez sur Configurer

Ce que fait l’installation

  • Crée 4 tables : wep_zip_zone, wep_zip_zone_lang, wep_zip_range, wep_zip_delivery
  • Enregistre les hooks nécessaires
  • Ajoute un onglet “Shipping by Zip Code” dans Livraison
  • Initialise une configuration par défaut

Note : le module ne crée aucun transporteur. Il modifie le tarif des transporteurs existants selon le code postal.


Configuration

Accès :

  • Modules > Gestionnaire de modules > Configurer
  • ou Livraison > Shipping by Zip Code

Paramètres globaux

  • Activer le module : active/désactive le calcul par code postal
  • Comportement par défaut (si aucune zone ne correspond) :
    • Utiliser les frais standard : PrestaShop applique ses tarifs natifs (recommandé pour démarrer)
    • Bloquer la livraison : les transporteurs n’apparaissent pas au checkout

Gestion des zones

Accès : Livraison > Shipping by Zip Code

Créer une zone

  1. Cliquez sur Ajouter une nouvelle zone
  2. Renseignez :
    • Nom de la zone (multilingue)
    • Actif (Oui/Non)
    • Livraison désactivée (Oui/Non)
  3. Cliquez sur Enregistrer

Ajouter des codes postaux

Dans l’éditeur de zone, section Codes postaux :

  1. Choisissez le pays
  2. Ajoutez :
    • Liste de codes (séparés par virgules) :
      • 75001, 75002, 75003
    • ou plage :
      • de 75001 à 75020
  3. Cliquez sur + Ajouter

Seuls les codes postaux numériques sont supportés.

Configurer les transporteurs et tarifs

Dans la section Transporteurs & tarification :

  1. Sélectionnez un transporteur (ou Tous les transporteurs)
  2. Choisissez le type :
    • Poids (kg) ou Prix (montant panier)
  3. Définissez la tranche :
    • borne min / borne max
  4. Renseignez le tarif
  5. Options :
    • Pourcentage (si activé, le prix est un % du panier)
    • Livraison gratuite
    • Gratuit à partir de (seuil de panier)
  6. Cliquez sur + Ajouter un tarif

Import / export CSV

Format du CSV

  • Séparateur : point-virgule ;
  • Encodage : UTF-8

Colonnes principales :

  • zone_name (obligatoire)
  • country_iso (obligatoire)
  • postal_code_from (obligatoire)
  • postal_code_to (optionnel : vide = code unique)
  • carrier_reference (obligatoire)
  • calculation_type : weight / price (obligatoire)
  • range_from, range_to, price (obligatoires)
  • is_percentage, is_free, free_from_amount (optionnels)

Importer

  1. Livraison > Shipping by Zip Code
  2. Importer CSV
  3. Sélectionnez le fichier
  4. Importez et consultez le rapport (lignes OK / mises à jour / erreurs)

Comportements utiles :

  • Une zone existante avec le même nom est réutilisée (pas de doublon)
  • Les plages existantes ne sont pas dupliquées
  • Un tarif existant identique est mis à jour

Exporter

  • Cliquez sur Exporter CSV
  • Le fichier téléchargé reprend le même format que l’import

Système de priorité

Chaque zone possède une position (triable). Si un code postal correspond à plusieurs zones, la zone avec la position la plus basse est prioritaire.

Ordre de résolution :

  1. Match exact (code postal individuel)
  2. Match par plage
  3. Si plusieurs matchs, la position départage

Multistore

Le module est compatible avec le multistore PrestaShop :

  • Les zones et tarifs sont visibles selon le contexte (toutes les boutiques / groupe / boutique)
  • Une zone est rattachée à la boutique active lors de sa création
  • Pour appliquer une configuration à plusieurs boutiques : dupliquez via CSV (export/import)

Comportement côté client

Au checkout, le module est transparent :

  1. Le client saisit son adresse (avec code postal)
  2. PrestaShop affiche les transporteurs
  3. Le module ajuste les frais selon la zone correspondante

Le client voit :

  • des frais adaptés à son code postal
  • éventuellement moins de transporteurs si une zone est “non livrable”
  • la livraison gratuite si configurée

Cas d’usage courants

DOM-TOM / îles / zones éloignées

Définissez une zone spécifique (ex. 97100 → 97490) avec des tarifs plus élevés que la métropole.

Livraison gratuite locale

Créez une zone “locale” (codes postaux proches) et activez la livraison gratuite, tout en gardant les frais standards pour le reste.

Bloquer la livraison en zone non desservie

Créez une zone “non livrable” et activez Livraison désactivée pour masquer les transporteurs concernés.

Frais au pourcentage

Pratique pour les paniers élevés : ex. 3% du montant, puis gratuit dès un certain seuil.


FAQ

Le module crée-t-il des transporteurs ?

Non. Il utilise vos transporteurs existants et ajuste le calcul des frais selon le code postal.

Que se passe-t-il si aucune zone ne correspond ?

Selon le paramètre global :

  • soit PrestaShop applique les frais standards
  • soit la livraison est bloquée (transporteurs invisibles)

Le module supporte-t-il les codes postaux alphanumériques (UK, CA) ?

Non, uniquement les codes postaux numériques.

Puis-je l’utiliser avec un One Page Checkout ?

Oui, le calcul se fait côté serveur via getOrderShippingCost(), compatible checkout standard et OPC.


Dépannage

Le module n’apparaît pas dans le menu Livraison

  • Vérifiez qu’il est installé et activé
  • Videz le cache : Paramètres avancés > Performances > Vider le cache
  • Vérifiez les permissions employés

Les frais ne changent pas au checkout

  • Module activé ?
  • Zone active pour le code postal du client ?
  • Tarifs configurés pour la zone + transporteur ?
  • Tranches couvrant le poids/prix du panier ?
  • Cache vidé ?

Le transporteur disparaît au checkout

  • Zone en mode Livraison désactivée
  • Comportement par défaut = Bloquer la livraison et aucune zone ne matche
  • Aucun tarif défini pour ce transporteur dans la zone

Changelog

Version 1.0.0

  • Zones postales illimitées
  • Codes postaux unitaires + plages
  • Tarifs par poids ou montant
  • Pourcentage du panier
  • Livraison gratuite (par tranche / seuil)
  • Blocage de livraison par zone
  • Priorités entre zones
  • Import / export CSV
  • Multistore + multilingue
  • Compatibilité PrestaShop 1.7.7 → 9.x

Support

  • Support via la page du module (PrestaShop Addons) ou votre espace client WePresta
  • Délai indicatif : 24–48h ouvrées

Avant contact, préparez :

  • version PrestaShop
  • version PHP
  • description précise du problème
  • captures d’écran
  • logs PrestaShop si disponibles

Licence

Licence Academic Free License (AFL 3.0).
Copyright © WePresta. Tous droits réservés.

Chargement...