在 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 文件。
但这行不通并且您将无法使用任何退出的挂钩来实现它。唯一的办法就是让第一个客户免征增值税,然后你可以为这个客户添加订单。
我想在 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 文件。
但这行不通并且您将无法使用任何退出的挂钩来实现它。唯一的办法就是让第一个客户免征增值税,然后你可以为这个客户添加订单。