Multi IVA con Drupal Commerce
admin — Mar, 10/04/2012 - 10:39
Si tenéis una tienda en la que todos los productos sólo tienen un IVA la configuración será realmente fácil en Drupal Commerce. Tan sólo tenéis que crear un impuesto tipo VAT y listo. Se aplicará para todos los productos y se especificará en en el checkout. Además podréis elegir si ponéis el precio con IVA en el producto o si lo hacéis sin IVA y Drupal Commerce lo ha de añadir al mostrarlo.
En cambio si queremos tener productos que tenga diferentes IVA's la cosa no es tan sencilla aunque en 10 minutos lo tendremos hecho. Seguramente hay diferentes formas de hacerlo pero yo lo he hecho así:
Actualización
Lo había puesto usando una categoría y el módulo Commerce Extra Rules Conditions con la condición "Line item product has term" pero gracias a Pedro Cambra me ha enseñado una mejor opción que es la que voy a explicar ahora.
Primero de todo hemos de asignarle al "product" un campo tipo select texto o entero que pueda tener nuestros posibles valores del iva.
Luego los IVA's necesarios en la configuración de taxes de Drupal Commerce, en mi caso he creado los tres, 18%, 8% y 4%. Con esto conseguimos que todos los productos tengan todos los IVA's así que hemos de hacer algo para aplicar los IVA's selectivamente. Para eso vamos a "configure component" en la configuración de uno de ellos. Allí hemos de poner una condición para que sólo se aplique a los productos que nosotros queramos.
Lo primero de todo es añadir la condición "Entity has field", en data selector poner "commerce-line-item" y en campo "commerce_product".
Luego volvemos a añadir "Entity has field", en data selector "commerce-line-item:commerce-product" y en el campo "field_iva".
Ahora ya podemos comprar el campo iva con el IVA que queremos aplicar en esta regla. Pongamos que es la regla del iva del 18%. Añadimos una nueva condición de "Data comparison" y como "data to compare" "buscamos commerce-line-item:commerce-product:field-iva". Lo puedes poner así directamente o irlo buscando poniendo primero commerce-line-item esperando al autocompletado hasta que salga commerce-product y luego lo mismo para field-iva (en mi caso he llamado así al campo pero tú lo puedes haber llamado diferente)
Ahora sólo falta hacer lo mismo con los otros IVA's y asignamos a cada producto el valor su iva en el campo iva.
Muy bueno el post. He llegado
Alfonso Heredia (no verificado) — Dom, 22/04/2012 - 20:11Muy bueno el post. He llegado a el por recomendación de Pedro y la verdad que me ha sido de gran utilidad.
Como apunte, si lo que quieres es aplicar un iva u otro dependiendo del tipo de producto (product type) se podría hacer de una manera muy similar.
Lo primero de todo es añadir la condición "Entity has field", en data selector poner "commerce-line-item" y en campo "commerce_product" y luego añadimos una nueva condición de "Data comparison" y como "data to compare" "commerce-line-item:commerce-product:type" y en el valor ponemos el tipo de producto al que le queremos aplicar el iva.
Un salud y muchas gracias
Sí, tienes razón en que es
admin — Mar, 24/04/2012 - 10:03Sí, tienes razón en que es otra opción y seguramente cada tipo de producto tendrá un iva único.
Un saludo Alfonso.
Genial el post, Carlos. Como
Juan J (no verificado) — Jue, 03/05/2012 - 13:58Genial el post, Carlos.
Como veo que dominas te hago una pregunta.
Utilizo el Ubercart para mi drupal 6 (ya se que debo migrar a una versión superior) y me gustaría que se le aplicara iva o no en funición del pais de residencia. Es decir, le aplico el iva al producto solo si el país de residencia del usuario pertenece la Unión Europea.
Ejemplo: Si el pedido viene de china, no le aplicamos el iva.
Como lo puedo hacer???
Muchas gracias
Hola Juan, En Ubercart está
admin — Vie, 04/05/2012 - 13:34Hola Juan,
En Ubercart está un poco más chungo y es algo que nunca he tenido que hacer. Sí tuvimos que tener multiiva, igual como lo he contado para drupal commerce pero para ubercart pero siempre se le aplicaba.
Te podrías mirar el uc_taxonomy_tax para usarlo de base para lo que quieres.
O es posible que puedes hacerlo con conditional actions.