Wenden Sie einen Rabatt auf den Gesamtinhalt des Einkaufswagens ohne Steuern in WooCommerce an

Lesezeit: 3 Minuten

Wenden Sie einen Rabatt auf den Gesamtinhalt des Einkaufswagens ohne
Seb G

Ich muss einen Rabatt auf die Zwischensumme des Warenkorbs anwenden, bevor die Steuer berechnet wird, wenn ein Benutzer zum ersten Mal bestellt. Die Steuer wird in WooCommerce jedoch pro Artikel berechnet und anschließend zur Zwischensumme hinzugefügt. Also muss ich den Rabatt auf die Artikel im Warenkorb anwenden, bevor WooCommerce die Steuer darauf berechnet. Auf diese Weise basiert die Steuer auf den ermäßigten Preisen und nicht auf den ursprünglichen Preisen.

Hier ist, was ich habe:

function first_order_add_five_percent_discount($cart_object) {

    if ( is_user_logged_in() ) {
        //current user id
        $currentUser_id = get_current_user_id();
        //amount of orders by current user
        $orderAmount = wc_get_customer_order_count( $currentUser_id ); 

        //if user has 0 orders...
        if ($orderAmount == 0) {
            //for each item in cart
            foreach ( $cart_object->get_cart() as $item_values ) {

                //$item_id = $item_values['data']->id; // Product ID
                $item_qty = $item_values['quantity']; // Item quantity
                $original_price = $item_values['data']->price; // Product original price
                echo $original_price . "<br>";
                $totalPrice = $original_price * $item_qty;
                $discountedPrice = $totalPrice * .05;
                $newPrice = $original_price - $discountedPrice;
                echo $totalPrice . "<br>";
                echo $discountedPrice . "<br>";
                echo $newPrice . "<br>";
                $item_values['data']->set_price($newPrice);

            }

        } else {
            //do nothing
        }
    }
}

add_action( 'woocommerce_before_calculate_totals', 'first_order_add_five_percent_discount' );

Dies gibt die richtigen Zahlen wieder, die ich brauche, aber jetzt muss ich diese Preise auf den Warenkorb anwenden. Im Moment ändern sich die Preise im Warenkorb nicht.

Wie kann ich die neuen Preise aus den Berechnungen dieser Funktion auf den Warenkorb anwenden?

Wenden Sie einen Rabatt auf den Gesamtinhalt des Einkaufswagens ohne
LoicTheAztec

AKTUALISIEREN: Verwenden eine negative Gebühr ist nicht der beste Weg und wird von Woocommerce nicht empfohlen.

###Beachten Sie, dass die Steuern immer erhoben werden.

Versuchen Sie stattdessen:

  • Progressiver prozentualer Rabatt für die Artikelmenge im Warenkorb in Woocommerce 3
  • Warenkorbartikelrabatt basierend auf der Menge in Woocommerce 3
  • Wenden Sie automatisch einen Gutschein an, der auf der Anzahl bestimmter Einkaufswagenartikel in Woocommerce basiert

Es gibt einen viel einfacheren Weg, eine negative Gebühr zu verwenden, also Rabatt. Es verwendet die WC_Cart Methode add_fee() wo Sie die Steuer deaktivieren können:

add_action( 'woocommerce_cart_calculate_fees','new_customers_discount', 10, 1 );
function new_customers_discount( $wc_cart ) {
    if ( is_admin() && ! defined('DOING_AJAX') ) return; // We exit

    // Only for logged in users
    if ( ! is_user_logged_in() ) return; // We exit
    
    // Only for new customers without orders
    if ( wc_get_customer_order_count( get_current_user_id() ) != 0 ) return;  // We exit
    
    // discount percentage
    $percent = 5;

    // Calculation
    $discount = $wc_cart->cart_contents_total * $percent / 100;

    $wc_cart->add_fee( __( 'Discount', 'woocommerce')." ($percent%)", -$discount );
}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Getestet und funktioniert. Sie erhalten so etwas:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen können, wird der Rabatt auf den Gesamtinhalt des Warenkorbs ohne Mehrwertsteuer gewährt. Steuer

  • Entschuldigen Sie die späte Antwort, ich arbeitete an einem anderen seltsamen Steuerproblem. Aber ja, das ist richtig! Die Steuer wird berechnet, nachdem der Rabatt angewendet wurde, perfekt, danke.

    – Seb G

    15. Dezember 2017 um 16:27 Uhr

924940cookie-checkWenden Sie einen Rabatt auf den Gesamtinhalt des Einkaufswagens ohne Steuern in WooCommerce an

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

Privacy policy