3 formas de cambiar el IVA en prestashop o de no repercutir la subida a los clientes

Dentro de un par de días cambiaremos el IVA del 18% al 21% y todos los que tenemos tiendas online tendremos que cambiarlo a las 00:00 no vaya a ser que nos entre alguna venta y nos la líe. Os voy a contar 3 formas distintas de cambiar el IVA de vuestra tienda.

1.- Desde el admin de Prestashop
Hay que ir a la pestaña de pagos -> Impuestos y editando el impuesto correspondiente se cambia. ¡Acordaros de cambiar el texto en todos los idiomas que tenéis activado!

2.- Desde Mysql
Para usar esta opción hay que saber usuario y contraseña de mysql y el prefijo de las tablas. Como prefijo he utilizo el que pone por defecto prestashop ps_
Desde mysql, phpmyadmin o similar ejecutar las siguientes ordenes

USE nombre_db;
UPDATE ps_tax_lang SET name=REPLACE(name,'18','21') WHERE id_tax=(SELECT id_tax FROM ps_tax WHERE rate=18);
UPDATE ps_tax SET rate=21 WHERE rate=18;

Desde bash los mas cómodo es hacer algo así:

mysql -u usuario_db -pclave_db base_de_datos_prestashop -e "update ps_tax_lang set name=replace(name,'18','21') where id_tax=(select id_tax from ps_tax where rate=18);"
mysql -u usuario_db -pclave_db base_de_datos_prestashop -e "update ps_tax set rate=21 where rate=18;"
También lo puedes automatizar en el cron y olvidarte del cambio.

3.- Con un pequeño script en php que puedes automatizar o ejecutar desde cualquier equipo.
Para poder utilizarlo debes de conocer los mismos datos que en la opción anterior y configurar el script con ellos.
<?php
	$host		=	'localhost';
	$user		=	'usuario';
	$pass		=	'password';	
	$database	=	'db_prestashop';
        $prefijo        =       'ps_';
 
        $sql1 = "update ".$prefijo."tax_lang set name=replace(name,'18','21') where id_tax=(select id_tax from ".$prefijo."tax where rate=18);";
        $sql2 = "update ".$prefijo."tax set rate=21 where rate=18;";
 
	$connect = @mysql_connect ( $host, $user, $pass ) ;
	echo "<h1>Proceso de cambio de IVA en la base de datos de prestashop</h1>";
	if ( $connect )
	{
			mysql_select_db ( $database );
			if ( @mysql_query ($sql1) )
			{
				echo '<p>Paso 1 OK</p>';
			}
			else {
				die ( mysql_error() );
			}
 
			if ( @mysql_query ($sql2) )
			{
				echo '<p>Paso 2 OK</p>';
			}
			else {
				die ( mysql_error() );
			}
 
	}
	else {
		trigger_error ( mysql_error(), E_USER_ERROR );
	}
?>

Si lo que quieres hacer es no repercutir la subida a tus clientes lo que hay que hacer es reducir el precio de los productos. La forma mas sencilla de reducir el precio de todos los productos es a través de una consulta SQL:

UPDATE ps_product SET price=price*0.975206611570248;

Espero que os sea útil.