2017-09-04 142 views
2

我最近嘗試使用掛鉤修改所有運費,以應用折扣。在「woocommerce_package_rates」掛鉤中自定義稅額

這裏是我的代碼:

add_filter('woocommerce_package_rates', 'woocommerce_package_rates'); 
function woocommerce_package_rates($rates) { 
    $user_id = get_current_user_id(); 
    if (! wc_memberships_is_user_active_member($user_id, 'silver')) { return $rates; } 
    $discount_amount = 30; // 30% 

    foreach($rates as $key => $rate) { 
     $rates[$key]->cost = $rates[$key]->cost - ($rates[$key]->cost * ($discount_amount/100)); 
    } 

    return $rates; 
} 

但一個步驟是稅收!我錯了稅。
例如我的運費爲3$。有了折扣,現在是2,10$

我爲2$和shipping 2.10$買了一件物品。 我得到了1美元的稅款(因爲3美元的運費,看起來像他沒有采取變化),通常是0.82$

我需要什麼才能獲得正確的計稅?

回答

3

更新:相關的稅收成本計算的運送方式

有你的代碼的一些小錯誤,你已經錯過了稅計算折扣。我已經重新審視你的代碼一點,你應該試試這個:

add_filter('woocommerce_package_rates', 'conditional_shipping_discount', 10, 2); 
function conditional_shipping_discount($rates, $packages) { 

    $user_id = get_current_user_id(); 
    if (! wc_memberships_is_user_active_member($user_id, 'silver')) return $rates; 

    $percent = 30; // 30% 
    $discount = 1 - ($percent/100); 

    foreach($rates as $rate_key => $rate_values) { 
     // Get original cost 
     $original_cost = $rates[$rate_id]->cost; 
     // Calculate the discounted rate cost 
     $new_cost = $original_cost * $discount; 
     // Set the discounted rate cost 
     $rates[$rate_key]->cost = number_format(new_cost, 2); 
     // calculate the conversion rate (for taxes) 
     $conversion_rate = $new_cost/$original_cost; 

     // Taxes rate cost (if enabled) 
     $taxes = array(); 
     foreach ($rates[$rate_key]->taxes as $key => $tax){ 
      if($tax > 0){ // set the new tax cost 
       // set the new line tax cost in the taxes array 
       $taxes[$key] = number_format($tax * $conversion_rate, 2); 
      } 
     } 
     // Set the new taxes costs 
     $rates[$rate_key]->taxes = $taxes 
    } 
    return $rates; 
} 

代碼放在您的活動子主題(或主題)的function.php文件或也以任何插件文件。

該代碼測試和工程。

你應該需要刷新航運緩存:
1)首先這個代碼已經保存在您的function.php文件。
2)在運輸設置中,輸入運輸區域並禁用運輸方式和「保存」。然後重新啓用運輸方式和「保存」。 你完成了。

+0

哦,不錯!非常感謝@LoicTheAztec!完美地我所需要的 – Efbi

+0

我不明白,我用你的答案,這次稅收計算不起作用。也許這個代碼與某些東西有衝突? – Efbi

+0

@Efbi我已經更新了代碼周圍的稅計算 – LoicTheAztec