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.
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
Una vez tenemos definida las zonas que tienen costes de envío, 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.
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
El tiempo de tránsito 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.
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.
Esta sería una forma muy sencilla para poder parametrizar.
Por último, tendremos un resumen de las reglas creadas y la opción para activar o desactivarlo.
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
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:
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
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.