Configurar Prestashop para envíos por peso y precio

Prestashop es uno de los grandes en sistemas ecommerce, sus funcionalidades integradas en el núcleo son mucho más potentes y centradas en el negocio de una tienda online que plataformas como Woocomerce que deben ir dotándosele de ciertos plugin para mejorar sus funcionalidades.

Uno de nuestros clientes, un supermercado online, precisaba de una oferta de portes gratis si superabas los 69€ de peso, con la limitación de algunos productos que tenían un gran peso, imaginad productos de 6 Kg con poco margen de venta, si regalamos los portes puede suponer para el comercio una perdida considerable.

Desde la versión 1.4 de Prestashop las reglas de portes y transportistas han sido bastante potentes, pero siempre han contado con la limitación de no poder conjugar reglas de transporte que una precio y peso.

Configurar costes de envío en Prestashop

En Prestashop las reglas de envió van por zonas, por lo que primeramente debemos diferenciar que zonas de envió tenemos, normalmente el transportistas o agencia de transporte es quien debe darnos esta información.
Para ello en la versión de Prestashop 1.7 nos vamos a Internacional -> Ubicación Geográficas - > Zonas

Configuración de las provincias Prestashop 1.7

Una vez tenemos definida las zonas que tienen costes de envió, debemos colocar las provincias o países que forman parte de cada una de las zonas creadas.

Para ello nos vamos a la pestaña Estados, podemos buscar dentro del nombre y elegir a qué zona pertenecen cada uno de ellos.

Parece algo complicado, pero en la instalación por defecto prácticamente viene configurado.

En la mayoría de las tiendas online nosotros solo debemos configurar la zona provincial de la tienda donde los portes, por cercanía, son algo diferentes al resto de la provincial.

Configuración de las zonas en Prestashop 1.7

Una vez tenemos las zonas y la composición de países y ciudades que la componen debemos configurar que precio de envió y peso tiene cada zona.
Para realizarlo entramos en Transporte -> transportista.
Creamos un nuevo transportista

Crear el transportista Prestashop 1.7

El tiempo de transito es un parámetro de información que aparecerá durante el proceso de compra y que dará una estimación del tiempo de entrega de por ejemplo 24/48 horas.

Le damos a siguiente donde nos aparecerán las zonas y rangos de pesos.

Configuración rangos de pesos Prestashop 1.7

Podemos añadir tantos rangos como sean necesarios para configurar correctamente los envíos.

Ahora debemos configurar si nuestro transportista tiene algún tipo de limitación de altura, profundidad o peso o qué roles de nuestra tienda podrán usarlo.

Imaginad que tenemos una tienda B2B y B2C y queremos tener distintos tipos de transporte.

Información del transportista en Prestashop 1.7

Esta sería una forma muy sencilla para poder parametrizarlo.

Por último, tendremos un resumen de las reglas creadas y la opción para activar o desactivarlo.

Configuración del transporte Prestashop 1.7

Bien ya tenemos nuestro transportista configurado en nuestra tienda online, pero Prestashop admite aún más parametrizaciones como gastos adicionales de transporte o reglas de portes gratis por importe o por peso.

Para ello nos iríamos a Transporte -> Preferencias

Configuración del transporte Prestashop 1.7

Como veis aquí hemos añadido portes gratis a partir de 60€ pero queremos limitar el peso como máximo a 25 Kg. Para ello vamos a modificar el Core de Prestashop en la clase Cart. Php y conseguir así no perder dinero con la venta de los productos más pesados.

Nuestras modificaciones no queremos que impidan actualizaciones de seguridad o actualizaciones de parches para Prestashop, queremos que sean actualizables y compatibles con futuras versiones. La ventaja de utilizar Prestashop 1.7 es que permite hacer override de estas clases sin perder seguridad ni fiabilidad de su tienda online.

Para ello en la carpeta override de la raíz de Prestashop creamos la carpeta “clases” y dentro un archivo llamado cart. Php

 
class Cart extends CartCore

{

}
 
   


Bien la función que tenemos que hacer override dentro de Prestashop es:

getPackageShippingCost


Para ello mejor copiarla de la clase original y modificaremos sobre la línea 200

  if (isset($configuración['PS_SHIPPING_FREE_PRICE'])) {

            $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency));

        }
 
   


Por:

    if (isset($configuration['PS_SHIPPING_FREE_PRICE']) && $this->getTotalWeight($product_list) < 25 ) {

            $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency));

        }
   
   

Como veis dentro de la comparativa de portes gratis hemos añadido la comparativa: si el peso total del carrito que se calcula con esta función:

                           $this->getTotalWeight($product_list)

es inferior a 25. 

Ahora debemos borrar nuestra cache para que nuestro cambio quede reflejado en la tienda online.

Vamos a Parámetros Avanzados -> Rendimiento - > Borrar cache 

Borrar caché Prestashop 1.7

Cómo habéis visto configurar los portes en función del peso y del precio de los productos es sencillo en Prestashop. Si tenéis una tienda online debéis tener en cuenta este tipo de detalles para que las ventas no supongan una pérdida para el negocio ya que muchas veces los envíos terminan siendo más costosos que la venta que se ha producido.

En digitalDot tenemos una amplia experiencia en el diseño y desarrollo de tiendas online, si tenéis alguna duda sobre la configuración de vuestra tienda o necesitáis asesoramiento para crear una no dudéis en contactar con nosotros.