2017-01-09 2 views
0

Ich habe einen WooCommerce Speicher mit mehreren Benutzern (B2C & B2B) eingerichtet. Einige von ihnen werden automatisch von der Steuer befreit und nur Steuern aus dem Warenkorb/Kasse verschwinden. Ich habe ein dynamisches Pricing-Plugin verwendet, um verschiedenen Rollen unterschiedliche Preise zu bieten, aber es gibt keine Optionen für Steuervariationen.Rollenbasierte Steuer in WooCommerce/Wagenseite

Ich fand diese Antwort und versuchte es an Ort und Stelle zu setzen Role based taxes in woocommerce aber wie @ Jplus2 sagt, @ Dryan144 Lösung ist nicht gut, weil es nur während der Kasse und nicht auf dem Warenkorb angewendet wird. Ich versuchte, die Art und Weise, um herauszufinden, es zu tun, aber ich immer noch my 'cart' page aufzufrischen Steuern auf 0 anzuzeigen (wie sie im Preis für „Gast“ enthalten ist, oder „Kunde“, jede Hilfe der Aktion, wenn meine Wagenseite starten ? genannt wird

tat ich folgendes:.

add_filter('woocommerce_before_cart_contents', 'prevent_wholesaler_taxes'); 
add_filter('woocommerce_before_shipping_calculator', 'prevent_wholesaler_taxes'); 
add_filter('woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes'); 

function prevent_wholesaler_taxes() { 
    global $woocommerce; 
    if (is_user_logged_in() && !(current_user_can('customer'))){ 
       $woocommerce->customer->set_is_vat_exempt(false); 
     } else { 
       $woocommerce->customer->set_is_vat_exempt(true); 
     } 
} //end prevent_wholesaler_taxes 

es ist manchmal sofort funktioniert, aber die meiste Zeit zu es erst nach nach einer Aktualisierung meines Wagen arbeiten, die nicht gut ist Versuchen hinzufügen https://eshoes.com.au/product/test-shoes08/ zu der Wagen dann -> Ihr Warenkorb im

Jede Hilfe wäre greately geschätzt;)

Prost

Antwort

0

Diese Lösung funktioniert perfekt, statt set_is_vat_exempt der Verwendung von() ich einfach verwendet $ netto) class = 'Nullsatz':

add_filter('woocommerce_before_cart_contents', 'wc_diff_rate_for_user', 1, 2); 
add_filter('woocommerce_before_shipping_calculator', 'wc_diff_rate_for_user', 1, 2); 
add_filter('woocommerce_before_checkout_billing_form', 'wc_diff_rate_for_user', 1, 2); 
add_filter('woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2); 
function wc_diff_rate_for_user($tax_class) { 

    if (!is_user_logged_in() || current_user_can('customer')) { 
     $tax_class = 'Zero Rate'; 
    } 
    return $tax_class; 
}