2017-09-04 4 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$と送料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

Ohh nice one!ありがとう@LoicTheAztec! Perfecly私が必要としたもの – Efbi

+0

私は理解していない、私はあなたの答えを使用し、税金計算が動作しない今回は。多分このコードは何かと矛盾しているでしょうか? – Efbi

+0

@Efbi税計算のコードを更新しました – LoicTheAztec

関連する問題