我正在尝试根据供应商的产品添加税收功能,并且供应商允许使用不同的收货地址。
我添加了供卖方选择特定税收地点的功能,并使用此代码在结帐时获得税收,但无法在订单完成后更新税收。我正在使用Dokan多供应商插件。
仅想对供应商允许的送货地址加税。
function filter_woocommerce_calc_tax( $taxes, $price, $rates, $price_includes_tax, $suppress_rounding) {
global $woocommerce;
global $wpdb;
$subTotal=$woocommerce->cart->subtotal;
$table = $wpdb->prefix.'tax_state_by_vendor';
$cart = WC()->cart->get_cart();
$reqTaxStat=0;
$reqTaxStat = $wpdb->get_row("select tax_rate_id from wpyp_woocommerce_tax_rates WHERE tax_rate_country = '".$_REQUEST['s_country']."' and tax_rate_state = '". $_REQUEST['s_state']."'");
$Qunatity=1;
$productDetails = array();
$i = 0;
foreach( $cart as $key => $cart_item ){
$Qunatity += $cart_item['quantity'];
$post_obj = get_post( $cart_item['product_id'] ); // The WP_Post object
$productDetails[$i]['product_id'] = $cart_item['product_id'];
$productDetails[$i]['vendor_id'] = $post_obj->post_author;
$taxes = $wpdb->get_row("select tax_id from $table WHERE vendor_id = ".$post_obj->post_author);
$productDetails[$i]['vendor_tax_states'] = $taxes->tax_id;
$taxDetails = $wpdb->get_results("select wrt.tax_rate,wrt.tax_rate_country,wrt.tax_rate_state from wpyp_tax_state_by_vendor tv left join wpyp_woocommerce_tax_rates wrt on find_in_set(wrt.tax_rate_id, tv.tax_id) > 0
WHERE tv.vendor_id = ".$post_obj->post_author);
$productDetails[$i]['vendor_tax_details'] = array();
foreach($taxDetails as $tkeys => $tval){
$productDetails[$i]['vendor_tax_details'][$tkeys]['tax_price'] = $tval->tax_rate;
$productDetails[$i]['vendor_tax_details'][$tkeys]['tax_country'] = $tval->tax_rate_country;
$productDetails[$i]['vendor_tax_details'][$tkeys]['tax_state'] = $tval->tax_rate_state;
}
$productDetails[$i]['product_total_rpice'] = get_post_meta($cart_item['product_id'] , '_price', true);
$i++;
}
$totalTax = 0;
if(!empty($productDetails)){
foreach($productDetails as $pkey => $pval){
foreach($pval['vendor_tax_details'] as $taxD){
if(($_REQUEST['s_country'] == $taxD['tax_country']) && ($_REQUEST['s_state'] == $taxD['tax_state'])){
$totalTax += $pval['product_total_rpice'] * $taxD['tax_price'] / 100;
}
}
}
}
if(isset($totalTax)){
// echo $Qunatity;
// print_r(array($reqTaxStat->tax_rate_id => $totalTax));die;
return array($reqTaxStat->tax_rate_id => $totalTax * 100 / count($cart));
}
return taxes;
}
add_filter( 'woocommerce_calc_tax', 'filter_woocommerce_calc_tax', 10, 5);
任何人都可以帮助我如何根据供应商允许的产品加税。