2013-07-25 4 views
6

Sto tentando di creare un negozio woocommerce in modo che gli utenti che hanno un ruolo di grossista o designer siano automaticamente esentati dalle imposte e solo che le tasse scompaiano dal carrello/checkout. Ho utilizzato il plug-in dei prezzi dinamici per fornire prezzi diversi a ruoli diversi ma non ci sono opzioni per le variazioni delle imposte.Le tasse basate sul ruolo in woocommerce

Qualcuno ha postato questo codice:

// Place the following code in your theme's functions.php file and replace tax_exempt_role with the name of the role to apply to 
add_action('init', 'woocommerce_customer_tax_exempt'); 
function woocommerce_customer_tax_exempt() { 
    global $woocommerce; 
    if (is_user_logged_in()) { 
     $tax_exempt = current_user_can('tax_exempt_role'); 
     $woocommerce->customer->set_is_vat_exempt($tax_exempt); 
    } 
} 

Questo sembra funzionare sul front-end, ma rompe il backend. dopo averlo aggiunto a functions.php quando tornerò nell'area di amministrazione e vedremo: http://i.imgur.com/nNHMSAZ.png (è solo la nuova pagina di errore di Chrome?)

L'altra cosa che non riuscivo a capire è come aggiungere 2 ruoli invece di uno solo.

Grazie

risposta

8

Di seguito ha lavorato per me per il ruolo utente "grossista". Aggiunto a functions.php.

add_filter('woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes'); 

function prevent_wholesaler_taxes() { 

    global $woocommerce; 

    if(current_user_can('wholesaler')) { 

       $woocommerce->customer->set_is_vat_exempt(true); 

     } else { 

       $woocommerce->customer->set_is_vat_exempt(false); 
     } 
} //end prevent_wholesaler_taxes 

Per aggiungere più ruoli utente, basta aggiungere alla funzione current_user_can();. Penso che questo potrebbe funzionare:

if(current_user_can('wholesaler')||current_user_can('another_user_role')) 
2

Ho notato che quando si usa 'woocommerce_before_checkout_billing_form', è necessario aggiornare o aggiornare la pagina di checkout prima, allora dovete aggiornare la pagina della spesa per esso abbia effetto.

Utilizzare questi ganci d'azione, 'woocommerce_before_cart_contents' e 'woocommerce_before_shipping_calculator' per l'esenzione fiscale per entrare in vigore senza aggiornare la pagina di checkout prima.

Nota: utilizzare lo stesso codice funzione di richiamata come sopra.

+0

Questo è corretto se le persone compilano il modulo da cima a fondo, ma il problema è che il campo personalizzato che abbiamo inserito non innescherà la chiamata AJAX per ricalcolare i totali del carrello nello stesso modo in cui l'inserimento degli indirizzi lo farà. E (sorprendentemente) non sembra che il clic "Place Order" definitivo attiverà un ricalcolo sia. Affidarsi agli utenti che procedono logicamente verso il basso della pagina è un po 'rischioso. – richplane