Woocommerce – Berechnen Sie die Steuer basierend auf der Versandart

Lesezeit: 2 Minuten

Benutzer-Avatar
j8d

Wie kann ich unterschiedliche Steuersätze berechnen, basierend auf der Versandmethode, die ein Kunde an der Kasse in Woocommerce auswählt? Mein Geschäft hat eine Versandoption, mit der internationale Kunden die hier in Thailand erhobene Mehrwertsteuer von 7 % vermeiden können.

So deaktivieren Sie Steuern, wenn lokale Abholung gemäß der Woocommerce-Dokumentation als Versandoption ausgewählt ist:

add_filter( 'woocommerce_apply_base_tax_for_local_pickup', '__return_false' );

Aber wie deaktiviere ich Steuern für eine benutzerdefinierte Versandoption?

Bearbeiten: Ich habe begonnen, eine Lösung auszuarbeiten, aber ich könnte etwas Hilfe bei Zeile 2 gebrauchen. dh Wie erhalte ich die aktuelle Versandart?

function remove_tax_for_fob( $cart ) {
    $ok_remove = get_shipping_method( 'FOB' );
    if ($ok_remove){ 
        $cart->remove_taxes();
}
return $cart;
} 
add_action( 'woocommerce_calculate_totals', 'remove_tax_for_fob' );

  • Dokumentation besagt, dass in der calculate_shipping Methode Ihrer benutzerdefinierten Versandoption, die Sie festlegen können 'taxes' => false . Bevor Sie also den Steuersatz festlegen, überprüfen Sie, ob der Kunde international ist, und fügen Sie dann die Steuer nach Bedarf hinzu.

    – Anand Schah

    2. Oktober 2015 um 8:11 Uhr

  • @AnandShah Ich habe verstanden, dass die Einstellung von ‘Steuern’ => ‘false’ hier nur Steuern von der Versandkostenberechnung ausschließt, nicht, dass sie Steuern vom Bestellbetrag ausschließt. Irre ich mich? Das wäre toll wenn ja!

    – j8d

    2. Oktober 2015 um 8:41 Uhr

  • Du hast Recht, sorry, ich habe die Anforderung falsch verstanden. Ob also Steuern auf die gesamte Bestellung erhoben werden oder nicht, hängt von der Versandart ab, die der Kunde wählt?

    – Anand Schah

    2. Oktober 2015 um 9:31 Uhr


  • WC()->customer->is_vat_exempt = true Wenn die benutzerdefinierte Versandoption ausgewählt ist, wird die Steuer auf 0 gesetzt

    – Anand Schah

    2. Oktober 2015 um 10:25 Uhr


  • Ja, als ich den Code der Cart-Klasse durchgegangen bin, habe ich diese Methode auch gefunden, konnte sie aber nicht zum Laufen bringen. Wenn Sie es schaffen, es zum Laufen zu bringen, teilen Sie bitte Ihre Lösung mit

    – Anand Schah

    2. Oktober 2015 um 14:39 Uhr

Hier ist die Lösung. Danke für deine Hilfe, Anand Shah!

/* Remove tax from cart for FOB orders */
function remove_tax_for_fob( $cart ) {
    $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping = $chosen_methods[0]; 
    if($chosen_shipping =='FOB') {
        $cart->remove_taxes();
    }
    return $cart;
}
add_action( 'woocommerce_calculate_totals', 'remove_tax_for_fob' );

Versuchen Sie Folgendes, muss jedoch etwas poliert werden

add_action( 'woocommerce_review_order_before_submit','custom_review_order_before_submit');

function custom_review_order_before_submit() {

    $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping = $chosen_methods[0]; 

    if( "FOB" == $chosen_shipping ) {

        WC()->customer->is_vat_exempt = true;

    } else {

        WC()->customer->is_vat_exempt = false;

    }    

}

1019790cookie-checkWoocommerce – Berechnen Sie die Steuer basierend auf der Versandart

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy