Miércoles, 30 Noviembre 2011 18:45

Virtuemart: Portes gratuitos a partir de un importe solo para algunos países

Escrito por 
CMS:  Joomla! |  Versión:  1.5.x |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  10 minutos


portes gratuitos por paises virtuemartEn Virtuemart disponemos de la opción de realizar un envío gratuito sin cobrar los portes de envío cuando se supera una cierta cantidad en el importe total de la compra. Para ello, deberemos ir a la administración de Virtuemart e indicar la cantidad mínima para envío gratuito en el campo Mínima cantidad para envío gratuito.

Este importe mínimo a partir del cual se aplican los portes gratuitos es independiente del país donde se realice el envío de los productos comprados en la tienda online. Es posible que nos interese que estos portes gratuitos solo se apliquen cuando el envío se realiza a un determinado país o conjunto de países, ya que los portes de los envío al extranjero puede que sean muy altos.

Para hacer esto deberemos realizar unas modificaciones en el código de Virtuemart. Deberemos editar el archivo administrator/components/com_virtuemart/classes/ps_checkout.php y localizar el siguiente código (en la línea 58 para Virtuemart 1.1.9):

if( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping) {

Justo encima deberemos de colocar el siguiente código:

$db = new ps_DB;
$q = "SELECT country from #__{vm}_user_info WHERE user_info_id = '" . $vars["ship_to_info_id"] . "'";
$db->query($q);

A continuación, deberemos modificar la línea que habíamos indicado antes (con el condicional if) y sustituirla por lo siguiente:

if( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping && $db->f("country") == "ESP") {

En este caso le hemos agregado la condición de que el envío sea a España para aplicar los portes gratuitos. Para ello, le hemos indicado el código ESP, que corresponde al país España. En el caso de que queramos poner los portes gratuitos para otro país podemos localizar el código a poner en la administración de Virtuemart dentro del apartado Administración->listar Países. En el listado de países que se muestra deberemos coger el código de 3 dígitos (AUS para Austria, PRT para Portugal, etc.) para usarlo en el código anterior. Si, por ejemplo, queremos que los portes gratuitos a partir de un importe de compra se apliquen solo para Portugal, el código a introducir sería:

if( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping && $db->f("country") == "PRT") {

Si queremos que los portes gratuitos se apliquen a más de un país, también lo podremos hacer. Si, por ejemplo, queremos que se apliquen a España y Portugal el código del condicional será:

if( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping && ($db->f("country") == "ESP" || $db->f("country") == "PRT")) {

Hemos preparado un vídeo tutorial donde se explica con más detalle cómo aplicar estos cambios.


¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop