在Woocommerce结帐中,如果billing_company
不为空,我试图取消税收:
这是我的代码
add_action( 'woocommerce_checkout_update_order_review', 'bbloomer_taxexempt_checkout_based_on_zip' );
function bbloomer_taxexempt_checkout_based_on_zip( $post_data ) {
global $woocommerce;
$woocommerce->customer->set_is_vat_exempt( false );
$Pay_options=$_POST['Pay_options'];
parse_str($post_data);
global $woocommerce;
if ( $billing_company != null) $woocommerce->customer->set_is_vat_exempt( true );
}
在IF
语句中,我还需要检查billing_country
是否为“克罗地亚”。
我该如何实现?
答案 0 :(得分:0)
由于#billing_company发生更改,因此无法执行任何操作来更新结帐。所以您需要使用JavaScript
add_action('woocommerce_after_checkout_form',function($checkout){
?>
<script type="text/javascript">
jQuery(function($){
$(document).on('change','#billing_company',function(){
$(document.body).trigger("update_checkout");
});
});
</script>
<?php
});
在php中,您可以使用代码,并使用用户:$ billing_country =='HR'检查克罗地亚国家/地区
add_action( 'woocommerce_checkout_update_order_review', 'bbloomer_taxexempt_checkout_based_on_zip' );
function bbloomer_taxexempt_checkout_based_on_zip( $post_data ) {
global $woocommerce;
$woocommerce->customer->set_is_vat_exempt( false );
$Pay_options=$_POST['Pay_options'];
parse_str($post_data);
if ( $billing_company != null)
$woocommerce->customer->set_is_vat_exempt( true );
if($billing_country == 'HR'){ // Croatia
// Do what you need, for example set TAX
$woocommerce->customer->set_is_vat_exempt( false );
}
}
答案 1 :(得分:0)
您可以使用以下(无需使用任何其他的javascript或jQuery代码)使计费公司的结帐字段更新结帐(不使用任何其他的javascript或jQuery代码),并检查国家/地区的“ HR” (克罗地亚):
add_filter( 'woocommerce_checkout_fields' , 'billing_company_trigger_update_checkout_on_change', 10, 1 );
function billing_company_trigger_update_checkout_on_change( $fields ) {
$fields['billing']['billing_company']['class'][] = 'update_totals_on_change';
return $fields;
}
add_action( 'woocommerce_checkout_update_order_review', 'checkout_vat_exempt_based_on_billing_company', 10, 1 );
function checkout_vat_exempt_based_on_billing_company( $post_data ) {
parse_str($post_data);
$customer = WC()->customer;
// When billing company is filled and country is Croatia: Exempt taxes
if ( ! empty($billing_company) && $billing_country === 'HR' && ! $customer->is_vat_exempt() ) {
$customer->set_is_vat_exempt( true );
}
elseif ( $customer->is_vat_exempt() ){
$customer->set_is_vat_exempt( false );
}
}
代码进入您的活动子主题(或活动主题)的functions.php文件中。经过测试并可以正常工作。
注意:一段时间以来,
global $woocommerce
和$woocommerce
仅被WC()
取代
答案 2 :(得分:0)
我认为以上答案仅在结帐页面上更新购物车时才免税。订单确认书上仍会含税,等等。这是在各处清除税款的方法:
// from https://elliottrichmond.co.uk/woocommerce-how-to-make-a-user-exempt-from-tax-charges/
function wooc_user_tax_exempt_callback($wc_tax_enabled) {
$cart = WC()->cart;
$customer = WC()->customer;
parse_str($post_data);
// When billing company is filled and country is Croatia: Exempt taxes
if ( ! empty($billing_company) && $billing_country === 'HR' && ! $customer->is_vat_exempt() ) {
$wc_tax_enabled = false;
}
return $wc_tax_enabled;
}
add_filter( 'wc_tax_enabled', 'wooc_user_tax_exempt_callback', 10, 1);