Hola @martaadmin y @ignacio_es,
@ignacio_es tiene razón, las reglas de impuestos de PrestaShop 1.7.7.4, por defecto, no permiten aplicar tasas de IVA condicionales basadas directamente en el grupo de clientes desde el Back Office. Se basan en la zona geográfica y el producto.
La solución más limpia sin recurrir a módulos de terceros pasa por una pequeña sobrescritura (override) en la clase Tax para interceptar el cálculo de la tasa de impuestos y ajustarlo según el grupo del cliente.
Aquí tienes los pasos que puedes seguir:
- Crea un Grupo de Clientes: Ve a Clientes -> Grupos de Clientes y crea un nuevo grupo, por ejemplo, 'Clientes Exentos de IVA'. Anota su ID (lo verás en la URL cuando edites el grupo, algo como
id_group=X).
- Crea el archivo override: En tu instalación, ve a la carpeta
/override/classes/ y crea un archivo llamado Tax.php.
- Añade el código: Dentro de ese
Tax.php, sobrescribe el método estático getProductTaxRate. Aquí te dejo el fragmento de código que necesitas:
$customer = Context::getContext()->customer;
if (Validate::isLoadedObject($customer)) {
// Sustituye X por el ID de tu grupo 'Exentos de IVA'
if (in_array(X, $customer->getGroups())) {
return 0;
}
}
return parent::getProductTaxRate($id_product, $id_address);
- Limpia la caché: Después de subir el archivo, ve a Parámetros Avanzados -> Rendimiento y haz clic en 'Borrar la caché'. Esto reconstruirá el mapa de overrides.
Con esto, cada vez que PrestaShop calcule el IVA para un producto, primero verificará si el cliente actual pertenece al grupo 'Clientes Exentos de IVA' y, si es así, aplicará un 0% de IVA, ignorando las reglas de impuestos geográficas para ese cliente.