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?