Hay una buena función de WooCommerce que puede usar para eximir a alguien de los cálculos de impuestos/IVA. Podría, por ejemplo, habilitar la exención una vez que ingresen un número de impuestos/IVA, o tal vez si especifican un código postal dado.
Tal función se llama set_is_vat_exempt ()y junto con un pequeño truco para «obtener» un campo de pago sobre la marcha, el fragmento es bastante simple de construir y probar. ¡Disfrutar!
Php Snippet: eliminar impuestos @ wooCommerce checkout si existe el valor de campo
Explicación del código:
- Gancho:
- La primera línea usa
add_action
para enganchar la funcióntddesign_taxexempt_checkout_based_on_zip
a la acciónwoocommerce_checkout_update_order_review
. - Esto significa que la función se ejecutará cada vez que la revisión del pago se actualice durante el proceso de pago.
- La primera línea usa
- Función
tddesign_taxexempt_checkout_based_on_zip
:- Esta función toma un argumento
$post_data
que es una matriz que contiene los datos enviados durante la actualización de pago.
- Esta función toma un argumento
- Restablecer la exención del IVA:
- Dentro de la función, la línea
WC()->customer->set_is_vat_exempt( false );
restablece el estado de exención de IVA del cliente alfalse
inicialmente.
- Dentro de la función, la línea
- Datos de pago de análisis:
- La línea
parse_str( $post_data, $output );
analiza el$post_data
en una matriz asociativa llamada$output
. Cada llave en el$output
la matriz representa un nombre de campo del formulario de pago (por ejemplo,billing_postcode
).
- La línea
- Verifique el código postal de facturación:
- El
if
verificación de la declaración si el valor delbilling_postcode
clave en el$output
La matriz coincide con el código específico'32444'
.
- El
- Establezca la exención del IVA (si se combina):
- Si el código postal coincide, la línea
WC()->customer->set_is_vat_exempt( true );
Establece el estado de exención de IVA del cliente entrue
. Esto afectará potencialmente el cálculo de los impuestos durante el pago.
- Si el código postal coincide, la línea
En resumen, este fragmento de código verifica el código postal de facturación ingresado durante el pago. Si coincide con el código especificado, el cliente está marcado como el IVA exento, lo que puede afectar el total de pago final.
/** n*@snippet Remove Tax if Field Value - WooCommerce Checkout n*@how-to https://tdestudiodesign.com/tutoriales n*@author Tomás Lucas D´Amario, TD Estudio Design, BusinessBloomer.com n*@testedwith WooCommerce 8 n*@community https://tdestudiodesign.com/club */ add_action( 'woocommerce_checkout_update_order_review', 'tddesign_taxexempt_checkout_based_on_zip' ); function tddesign_taxexempt_checkout_based_on_zip( $post_data ) { WC()->customer->set_is_vat_exempt( false ); parse_str( $post_data, $output ); if ( $output['billing_postcode'] === '32444' ) WC()->customer->set_is_vat_exempt( true ); }