Hola @danielaonline48, @inmasevilla, @manuel24.
Tenéis razón, PrestaShop 1.7 está muy enfocado en reglas de impuestos geográficas. Para aplicar un IVA del 0% a grupos de clientes específicos de forma global (a todos sus productos) sin un módulo, la solución más limpia pasa por una pequeña modificación del comportamiento de la clase Tax.
Aquí os explico cómo podrías hacerlo:
Crea tus grupos de clientes exentos: Si aún no los tienes, ve a Parámetros de la tienda > Clientes > Grupos de clientes y crea los grupos específicos (por ejemplo, 'Clientes Exentos IVA Escuelas', 'Clientes Exentos IVA ONG', 'Clientes Exportación'). Anota los ID de estos grupos (los verás en la URL al editarlos, por ejemplo, id_group=3).
Crea un override para la clase Tax: Necesitarás crear un archivo en override/classes/Tax.php con el siguiente contenido. Si ya existe, añade la lógica dentro de la clase existente. Asegúrate de que tu id_group predeterminado para los clientes exentos esté en la lista $exemptGroups.
class Tax extends TaxCore
{
/**
* Get tax rate
*
* @param int $id_tax_rules_group
* @param int|Address $id_address
* @return float Tax rate
*/
public static function getTaxRate($id_tax_rules_group, $id_address = null)
- Sustituye los comentarios: Dentro del array
$exemptGroups, reemplaza ID_DE_TU_GRUPO_ESCUELAS, etc., con los IDs reales de los grupos que creaste en el paso 1. Puedes obtener estos IDs yendo a la página de edición de cada grupo en el Back Office y mirando el parámetro id_group en la URL del navegador.
Una vez hecho esto, PrestaShop automáticamente detectará que para los clientes en esos grupos, la tasa de IVA aplicada será del 0%, sin importar las reglas de impuestos geográficas configuradas para el producto. Esto es una solución robusta que intercepta la llamada al cálculo de impuestos a nivel de sistema.