¿Cómo configurar los límites de envío de un transportista?
La logística para eCommerce es clave tanto desde el punto de vista del usuario y su experiencia de compra, como en la gestión interna de la empresa.
En PrestaShop puedes elegir diferentes módulos de envío y logística que te facilitan mucho tus gestiones.
Entre ellas, la administración de los gastos de envío y la elección del transportista, los cuales son fundamentales porque pueden repercutir directamente en tus márgenes de venta.
La gestión logística de tu tienda Online es un entorno muy amplio, por lo que hoy nos centraremos en los transportistas y veremos cómo limitar los envíos por zona geográfica o proveedor de servicios.
¿Cómo configurar el límite en los envíos?
A la hora de gestionar los envíos te puedes encontrar con varias circunstancias. Por ejemplo:
» Hay zonas que conllevan costes adicionales en el reparto. En este caso, es probable que tengas que repercutir el coste al cliente.
» El transportista no reparte en esa franja geográfica.
» Quieres excluir una zona.
» Tienes un transportista que es más barato en ese territorio.
Cualquiera de estas circunstancias, entre otras, las puedes configurar, y es lo que vamos a ver ahora.
Vamos a basarnos en el módulo de envíos de PrestaShop que se puede descargar desde https://validator.prestashop.com/generator para aplicar un sobrecoste a zonas concretas o hacer que no esté disponible alguna región concreta.
Aquí podéis ver un vídeo paso a paso:
Descarga e instalación del módulo base de transportistas
Solo necesitamos hacer dos pasos para obtener el módulo base.
PASO 1: descárgate el módulo base
Vamos a la siguiente URL que puede que ya te resulte familiar. Si no la conoces, este enlace te lleva a un generador de módulos que te da la estructura básica para desarrollarlo:
https://validator.prestashop.com/generator
Aquí elegimos “Shipping module”.
Después rellenamos todos los datos que nos pide.
Una vez lo hemos descargado podemos borrar todas las carpetas y quedarnos solo con el archivo principal, que se llamará igual que el nombre del módulo que hayamos escrito en el formulario anterior. El resto de archivos, como digo, no los usaremos hoy y los podemos borrar:
PASO 2: instalación del módulo
Antes de instalar el módulo podemos revisar la función createCarrier(). Aquí podremos cambiar el nombre del transportista, url de seguimiento, velocidad…
protected function createCarrier()
{
$carrier = new Carrier();
$carrier->name = 'Integrator Carrier A';
$carrier->active = true;
$carrier->is_module = 1;
$carrier->need_range = 1;
$carrier->range_behavior = 0;
$carrier->shipping_external = 1;
$carrier->shipping_handling = 0;
$carrier->shipping_method = 0;
$carrier->grade = 1;
$carrier->url = "https://www.prestashop.com";
$carrier->delay = [
Language::getIdByIso('ES') => 'Lento',
];
Una vez hemos personalizado el nombre a nuestro gusto, podemos subir la carpeta de nuestro módulo a nuestra tienda PrestaShop dentro de la carpeta "modules", o bien comprimirlo en Zip y subirlo desde el backoffice.
A continuación, debemos activar el módulo.
¿Qué podemos limitar?
Antes de ponernos a configurar los límites del transportista, necesitamos saber qué podemos limitar.
Para ello necesitamos conocer qué valores comprende este módulo y por tanto, qué valores podemos leer y usar para limitar los envíos.
Esta plantilla nos da todas las funciones que podemos usar para personalizar un transportista. Nosotros nos centramos en getOrderShippingCost() que es donde calculamos los costes de envío.
Primero, para saber qué parámetros tenemos disponibles en esta función, realizamos un dump de estos parámetros: dump($params);
De todo lo que llega nos fijamos en id_address_delivery. Esto nos devuelve una id. Seguramente, esta id contenga todos los detalles de la dirección del cliente.
Para saber exactamente qué contiene, vamos a realizar otro dump.
Para ello vamos a generar una variable nueva que va a contener la dirección y al que le paso un parámetro que, en este caso, no es otro que el id_address_delivery:
$addressDelivery=new Address((int)$params->id_address_delivery);
dump($addressDelivery);
Le añadimos un return false y quitamos el primer dump. Ahora si obtenemos toda la información que contiene ese id_address_delivery:
Como veis tengo muchos datos que podré leer y usar para limitar envíos.
Precio distinto por código postal
Uno de los parámetros que vemos y que os he señalado es código postal. Es el que vamos a usar para aumentar el precio del envío según código postal.
Comentamos el dump y el return false que hemos añadido anteriormente para ver el precio base del envío y así, asegurarnos que lo que vamos a aplicar funciona.
Una vez vemos el precio base, ya podemos “jugar”. Como he comentado vamos a basarnos en primer lugar en el código postal.
Generaremos un condicional para que ese código postal concreto tenga un sobrecoste:
if($adressDelivery->postcode===’28003’)´{
$shipping_cost+=2.5
}
De esta manera, ese código postal tendrá un coste de 2,5 € más. Podemos concatenar tantos códigos postales como necesitemos a este condicional.
No enviar a zonas concretas
Ahora, por ejemplo, en vez de código postal vamos a decir que para una región concreta este transportista no va a enviar. En el dump anterior vemos id_state:0 así que cambios nuestro condicional:
if($adressDelivery->id_state===’0’)´{
return false;
}
De este modo, para esa región vamos a anular este transportista.
Posibles Mejoras
Tanto el código postal como el id_zone lo estamos añadiendo a mano.
Sería genial que en vez de hacerlo manualmente ampliáramos nuestro módulo con unos controladores en el backoffice, donde poder decirle de manera visual a qué zonas no queremos enviar. Y en vez de leer una variable que hemos puesto a mano, leamos un valor de la base de datos que contenga la zona.
De igual manera, podemos hacer que el código postal y el precio lo lea de la base de datos en función del valor que haya puesto el usuario.
Si os animáis a aplicar estas mejoras, ¡escribidme por LinkedIn para verlo juntos!
Formaciones PrestaShop
Si todo lo que hemos visto hoy te ha gustado, pero no has sabido aplicarlo, te dejo los enlaces a las formaciones PrestaShop para que puedas programar tus propios módulos. Yo doy las formaciones en Español:
- » Desarrollo del Back-End de Prestashop 1.7
- » Integrar en PrestaShop 1.7 - En línea
- » Desarrollo usando Symfony - En línea
- » Desarrollo del Front End de Prestashop 1.7 - En línea
¡Nos vemos dentro!