在 WooCommerce 后端创建订单时设置客户 "exempt of vat"

Set customer "exempt of vat" when order is created in backend in WooCommerce

我想在 woocommerce 中添加一个操作,以便在后台创建订单时为特殊用户取消税费。

此代码适用于网站上的正常订购流程,但不适用于后端

add_action( 'woocommerce_checkout_update_order_review', 'remove_tax_from_user' );
add_action( 'woocommerce_before_cart_contents', 'remove_tax_from_user' );

function remove_tax_from_user( $post_data ) {
  global $woocommerce;
  $username = $woocommerce->customer->get_username();
  $user = get_user_by('login',$username);
  if($user)
  { 
    if( get_field('steuer_befreit', "user_{$user->ID}") ):
    $woocommerce->customer->set_is_vat_exempt( true );
    endif;
  }
}

In backend customer needs to be "exempt of Vat" before clicking on "Add order" .

您可以尝试使用在后台保存订单数据之前触发的钩子save_post_shop_order,这样:

add_action( 'save_post_shop_order', 'backend_remove_tax_from_user', 50, 3 );
function backend_remove_tax_from_user( $post_id, $post, $update ) {

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return $post_id; // Exit if it's an autosave

    if ( $post->post_status != 'publish' )
        return $post_id; // Exit if not 'publish' post status

    if ( ! current_user_can( 'edit_order', $post_id ) )
        return $post_id; // Exit if user is not allowed

    if( ! isset($_POST['customer_user']) ) return $post_id; // Exit

    if( $_POST['customer_user'] > 0 ){
        $customer_id = intval($_POST['customer_user']);
        if( get_field('steuer_befreit', "user_{$customer_id}") ){
            $wc_customer = new WC_Customer( $customer_id );
            $wc_customer->set_is_vat_exempt( true );
        }
    }
}

代码进入您活跃的子主题(或主题)的 function.php 文件。

但这行不通并且您将无法使用任何退出的挂钩来实现它。唯一的办法就是让第一个客户免征增值税,然后你可以为这个客户添加订单。