仅在前端隐藏 WooCommerce 中特定用户的增值税

问题描述 投票:0回答:1

我使用以下方法对前端的非专业用户隐藏增值税。我的问题是,当下订单时,增值税保持为零,导致计算不正确。产品的创建价格不含增值税。对于非专业用户,产品价格应为不含增值税加增值税的价格,得出最终含增值税价格。

但是,我不能使用“excl”和“incl”,因为我在不同阶段有特殊的价格显示:购物车、结账和订单。有没有办法只在前端为特定用户隐藏增值税?

function zero_rate_for_custom_user_role( $tax_class, $product ) {
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        $is_pro_user = 'yes' == get_user_meta( $current_user->ID, 'professionnel', true );
        if ( !$is_pro_user ) {
            $tax_class = 'zero-rate';
        }
    }else{
        $tax_class = 'zero-rate';
    }
    
    return $tax_class;
}

add_filter('woocommerce_product_get_tax_class','zero_rate_for_custom_user_role', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'zero_rate_for_custom_user_role', 10, 2 );
php wordpress woocommerce hook rate
1个回答
0
投票

WC_Customer
类具有
is_vat_exempt
属性,这对于免除用户税很有用。

您可以尝试使用以下代码将非专业用户设置为“免增值税”:

add_action( 'template_redirect', 'set_non_professional_users_vat_exempt' );
function set_non_professional_users_vat_exempt(){
    $professional = get_user_meta( get_current_user_id(), 'professionnel', true );
    // Set defined user role(s) "Vat exempt" if it isn't set yet
    if ( $professional !== 'yes' && ! WC()->customer->is_vat_exempt() ) {
        WC()->customer->set_is_vat_exempt( true );
    } elseif ( $professional === 'yes' && WC()->customer->is_vat_exempt() ) {
        WC()->customer->set_is_vat_exempt( false );
    }
}

代码位于主题的functions.php 文件中(或插件中)。它可以工作。


或者您也可以尝试以下操作,更改产品“tax_status”属性:

add_filter('woocommerce_product_get_tax_status','alter_product_tax_status_depending_on_user_metadata', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_status', 'alter_product_tax_status_depending_on_user_metadata', 10, 2 );
function alter_product_tax_status_depending_on_user_metadata( $tax_status, $product ) {
    if ( get_user_meta( get_current_user_id(), 'professionnel', true ) !== 'yes' ) {
        return 'none';
    }
    return $tax_status;
}

代码位于主题的functions.php 文件中(或插件中)。它可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.