Shipping Cost by Zip Code — Costes de envío por código postal

Shipping Cost by Zip Code es un módulo para PrestaShop que permite aplicar costes de envío precisos en función del código postal del cliente. Puedes crear zonas postales personalizadas (ilimitadas), asociar códigos postales (valores únicos o rangos numéricos) y definir tarifas por transportista con tramos por peso o tramos por importe del carrito.

A diferencia del cálculo nativo por zonas/países, esta solución es ideal cuando los costes varían mucho entre centro urbano, zonas rurales, islas, montaña, territorios de ultramar, etc. El módulo no añade transportistas: ajusta las tarifas de tus transportistas existentes durante el checkout, según el código postal.

Puntos fuertes:

  • Zonas postales ilimitadas (códigos únicos y rangos numéricos)
  • Tarifas por transportista + tramos ilimitados (por peso o por total del carrito)
  • Envío gratis (por tramo, por zona o a partir de un umbral)
  • Importación / exportación CSV para configuración masiva
  • Sistema de prioridad cuando hay solapamiento de zonas
  • Multitienda, multilingüe, sin overrides

Visión general

Por defecto, PrestaShop calcula los costes de envío según zonas geográficas y países, lo cual suele ser demasiado impreciso. Una tienda puede necesitar tarifas distintas según distancia, accesibilidad o el coste real del transporte, incluso dentro del mismo país.

Con Shipping Cost by Zip Code configuras reglas a nivel de código postal:

  1. Creas una zona postal (p. ej. “Centro ciudad”, “Zona montaña”, “Islas/ultramar”).
  2. Añades códigos postales (lista) o rangos (p. ej. 75001 → 75020).
  3. Configuras la tarificación por transportista con lógica por peso o por importe.

Si ninguna zona coincide con el código postal, el comportamiento es configurable: aplicar tarifas estándar de PrestaShop o bloquear el envío (transportistas ocultos).


Funcionalidades

Zonas de entrega por código postal

  • Creación de zonas postales ilimitadas
  • Formatos de código postal:
    • Códigos individuales (un código o una lista)
    • Rangos numéricos (p. ej. 75001–75020)
  • Varios países pueden gestionarse en la misma zona
  • Activar / desactivar zonas
  • Opción “Envío desactivado”: oculta transportistas en el checkout para una zona concreta
  • Sistema de prioridades para gestionar zonas solapadas

Tarifas avanzadas por transportista

  • Tarifas por transportista y por zona
  • Modo de cálculo:
    • Peso (kg)
    • Precio (total del carrito)
  • Tramos ilimitados (0–5, 5–10, etc.)
  • Importes fijos o tarifas porcentaje
  • Envío gratis:
    • por tramo
    • por zona / transportista
    • automáticamente a partir de un umbral de carrito
  • Opción “Todos los transportistas”: aplicar una regla a todos los transportistas de una vez

Productividad en back office

  • Interfaz integrada en el back office en Envío
  • Listado de zonas con búsqueda / filtros / ordenación y posición (drag & drop)
  • Editor “todo-en-uno”: ajustes generales + códigos postales + tarifas en la misma página
  • Importación CSV con informe de errores
  • Exportación CSV de la configuración completa
  • Archivo CSV de ejemplo incluido

Enfoque técnico

  • Compatible con PrestaShop 1.7.7, 8.x y 9.x
  • Compatible con multitienda
  • Soporte multilingüe (nombres de zonas traducibles)
  • Sin overrides del core de PrestaShop
  • Uso de id_carrier_reference (resistente a cambios en transportistas)
  • Consultas optimizadas + caché en memoria (matching código postal → zona)

Requisitos

  • PrestaShop: mínimo 1.7.7.0 (compatible 1.7.7 → 9.x)

Limitación importante: solo se admiten códigos postales numéricos. Países con códigos postales alfanuméricos (p. ej. Reino Unido, Canadá, Países Bajos) no están soportados.


Instalación

Método 1 — desde el Back Office (recomendado)

  1. Ve a Módulos > Gestor de módulos
  2. Haz clic en Subir un módulo
  3. Selecciona wepresta_shipping_cost_by_zip.zip
  4. Espera a que finalice la instalación
  5. Haz clic en Configurar

Método 2 — por FTP

  1. Descomprime el archivo
  2. Sube la carpeta wepresta_shipping_cost_by_zip/ a /modules/
  3. En el back office: Módulos > Gestor de módulos
  4. Busca el módulo y haz clic en Instalar
  5. Haz clic en Configurar

Qué hace la instalación

  • Crea 4 tablas: wep_zip_zone, wep_zip_zone_lang, wep_zip_range, wep_zip_delivery
  • Registra los hooks necesarios
  • Añade una pestaña “Shipping by Zip Code” en Envío
  • Inicializa una configuración por defecto

Nota: el módulo no crea transportistas. Ajusta los costes de los transportistas existentes según el código postal.


Configuración

Acceso:

  • Módulos > Gestor de módulos > Configurar
  • o Envío > Shipping by Zip Code

Ajustes globales

  • Activar módulo: activa/desactiva el cálculo por código postal
  • Comportamiento por defecto (si no hay coincidencia de zona):
    • Usar tarifas estándar: PrestaShop aplica sus tarifas nativas (recomendado para empezar)
    • Bloquear envío: los transportistas no se muestran en el checkout

Gestión de zonas

Acceso: Envío > Shipping by Zip Code

Crear una zona

  1. Haz clic en Añadir nueva zona
  2. Rellena:
    • Nombre de zona (multilingüe)
    • Activa (Sí/No)
    • Envío desactivado (Sí/No)
  3. Haz clic en Guardar

Añadir códigos postales

En el editor de la zona, sección Códigos postales:

  1. Selecciona el país
  2. Añade:
    • Lista de códigos postales (separados por comas):
      • 75001, 75002, 75003
    • o un rango:
      • de 75001 a 75020
  3. Haz clic en + Añadir

Solo se admiten códigos postales numéricos.

Configurar transportistas y tarifas

En la sección Transportistas y tarifas:

  1. Selecciona un transportista (o Todos los transportistas)
  2. Elige el tipo:
    • Peso (kg) o Precio (total del carrito)
  3. Define el tramo:
    • mínimo / máximo
  4. Indica el coste
  5. Opciones:
    • Porcentaje (si se activa, el coste es un % del carrito)
    • Envío gratis
    • Gratis a partir de (umbral del carrito)
  6. Haz clic en + Añadir regla de tarifa

Importación / exportación CSV

Formato CSV

  • Separador: punto y coma ;
  • Codificación: UTF-8

Columnas principales:

  • zone_name (obligatorio)
  • country_iso (obligatorio)
  • postal_code_from (obligatorio)
  • postal_code_to (opcional: vacío = código único)
  • carrier_reference (obligatorio)
  • calculation_type: weight / price (obligatorio)
  • range_from, range_to, price (obligatorios)
  • is_percentage, is_free, free_from_amount (opcionales)

Importar

  1. Envío > Shipping by Zip Code
  2. Importar CSV
  3. Selecciona el archivo
  4. Importa y revisa el informe (OK / actualizados / errores)

Comportamientos útiles:

  • Si existe una zona con el mismo nombre, se reutiliza (sin duplicados)
  • Los rangos existentes no se duplican
  • Una regla idéntica se actualiza

Exportar

  • Haz clic en Exportar CSV
  • El archivo descargado utiliza el mismo formato del import

Sistema de prioridades

Cada zona tiene una posición (ordenable). Si un código postal coincide con varias zonas, se utiliza la zona con la posición más baja.

Orden de coincidencia:

  1. Coincidencia exacta (código postal individual)
  2. Coincidencia por rango
  3. Si hay varias coincidencias, decide la posición de la zona

Multitienda

El módulo es compatible con multitienda:

  • Zonas y tarifas se muestran según el contexto (todas las tiendas / grupo / tienda)
  • Una zona se asocia al contexto de tienda activo cuando se crea
  • Para aplicar la misma configuración a varias tiendas: exporta/importa por CSV

Comportamiento del cliente

En el checkout, el módulo es transparente:

  1. El cliente introduce la dirección (con código postal)
  2. PrestaShop muestra los transportistas
  3. El módulo ajusta los costes según la zona coincidente

El cliente verá:

  • costes adaptados a su código postal
  • posiblemente menos transportistas si una zona es “no entregable”
  • envío gratis si está configurado

Casos de uso habituales

Ultramar / islas / zonas remotas

Crea una zona específica (p. ej. 97100 → 97490) con tarifas más altas que la zona principal.

Envío gratis local

Crea una zona “local” (códigos postales cercanos) con envío gratis, manteniendo tarifas estándar en el resto.

Bloquear envío en zonas no servidas

Crea una zona “no entregable” y activa Envío desactivado para ocultar transportistas.

Costes en porcentaje

Útil para carritos de alto valor: p. ej. 3% del total, y gratis por encima de un umbral.


FAQ

¿El módulo crea transportistas?

No. Utiliza tus transportistas existentes y ajusta el cálculo de costes según el código postal.

¿Qué pasa si no coincide ninguna zona?

Según la configuración global:

  • PrestaShop aplica las tarifas estándar
  • o el envío se bloquea (transportistas ocultos)

¿Soporta códigos postales alfanuméricos (UK, CA)?

No, solo códigos postales numéricos.

¿Puedo usarlo con One Page Checkout?

Sí. El coste se calcula del lado servidor mediante getOrderShippingCost(), compatible con checkout estándar y OPC.


Resolución de problemas

El módulo no aparece en el menú de Envío

  • Comprueba que está instalado y activado
  • Vacía la caché: Parámetros avanzados > Rendimiento > Vaciar caché
  • Revisa permisos de empleados

Los costes no cambian en el checkout

  • ¿Módulo activado?
  • ¿Zona coincidente y activa para ese código postal?
  • ¿Reglas configuradas para esa zona + transportista?
  • ¿Tramos que cubren el peso/importe del carrito?
  • ¿Caché vaciada?

Un transportista desaparece en el checkout

  • La zona tiene Envío desactivado
  • Comportamiento por defecto = Bloquear envío y no hay coincidencia
  • No existe una regla para ese transportista en la zona encontrada

Changelog

Versión 1.0.0

  • Zonas postales ilimitadas
  • Códigos postales individuales + rangos numéricos
  • Tarifas por peso o por importe
  • Porcentaje sobre el total del carrito
  • Envío gratis (por tramo / umbral)
  • Bloqueo de envío por zona
  • Prioridades entre zonas
  • Importación / exportación CSV
  • Multitienda + multilingüe
  • Compatibilidad PrestaShop 1.7.7 → 9.x

Soporte

  • Soporte desde la página del módulo (PrestaShop Addons) o tu área de cliente WePresta
  • Tiempo de respuesta habitual: 24–48 horas laborables

Antes de contactar con soporte, prepara:

  • versión de PrestaShop
  • versión de PHP
  • descripción clara del problema
  • capturas de pantalla
  • logs de PrestaShop si están disponibles

Licencia

Academic Free License (AFL 3.0).
Copyright © WePresta. Todos los derechos reservados.

Cargando...