根据供应商的产品更改运输税

时间:2019-09-18 09:47:15

标签: wordpress woocommerce

我正在尝试根据供应商的产品添加税收功能,并且供应商允许使用不同的收货地址。

我添加了供卖方选择特定税收地点的功能,并使用此代码在结帐时获得税收,但无法在订单完成后更新税收。我正在使用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);

任何人都可以帮助我如何根据供应商允许的产品加税。

0 个答案:

没有答案