Benutzerdefinierte WooCommerce-Versandkosten für die erforderliche Mindestzwischensumme mit Steuerberechnungen

Lesezeit: 2 Minuten

Benutzerdefinierte WooCommerce Versandkosten fur die erforderliche Mindestzwischensumme mit Steuerberechnungen
Alessandro Bergagna

Ich habe einige Versandmethoden mit aktivierter steuerpflichtiger Option in WooCommerce eingestellt. Ich verwende diesen Code, um unterschiedliche Versandkosten festzulegen, wenn ich mehr als X ausgebe:

// Extra discount on shipping for orders of values of above 150 or 100.
function custom_adjust_shipping_rate( $rates ) {
    $cart_subtotal = WC()->cart->subtotal;

    // Check if the subtotal is greater than value specified
    if ( $cart_subtotal >= 29.99 ) {

        // Loop through each shipping rate
        foreach ( $rates as $rate ) {

            // Store the previous cost in $cost
            $cost = $rate->cost;

            // Adjust the cost as needed
            // original shipping greater than 6 discount by 5 
            if ( $cost == 7.38 ) {
                // discount rate by 5
                $rate->cost = $cost - 2.54;
            }
            // Optional discount for other shipping rates 
            if ( $cost == 4.10 ) {
                $rate->cost = $cost - 5;
            }
        }
    }
    return $rates;
}
add_filter( 'woocommerce_package_rates', 'custom_adjust_shipping_rate', 10 );

Aber das Problem sind die Steuerberechnungen. Mein Code verarbeitet keine Steuern.

Wie kann ich Steuern von benutzerdefinierten Versandkosten anpassen?

Wie aktiviere ich Steuern in Kostenberechnungen?

Jeder Rat ist willkommen.

1643908148 274 Benutzerdefinierte WooCommerce Versandkosten fur die erforderliche Mindestzwischensumme mit Steuerberechnungen
LoicTheAztec

Verwenden Sie stattdessen den folgenden überarbeiteten Code, um Versandsteuerberechnungen in Ihrem Code zu aktivieren:

add_filter( 'woocommerce_package_rates', 'adjust_shipping_rates_cost', 10, 2 );
function adjust_shipping_rates_cost( $rates, $package ) {
    $min_subtotal  = 30; // Set min subtotal
    $cart_subtotal = 0; // Initializing
        
    // Loop through cart items to get items total for the current shipping package 
    foreach( $package['contents'] as $item ) {
        $cart_subtotal += $item['line_subtotal'] + $item['line_subtotal_tax'];
        // $cart_subtotal += $item['line_subtotal']; // Or without taxes
    }

    // Check if the subtotal is greater than specified value
    if ( $cart_subtotal < $min_subtotal ) {
        return $rates; // Exit
    }

    // Loop through shipping rates
    foreach ( $rates as $rate_key => $rate ) {
        $has_taxes = false; // Initializing
        $taxes     = array(); // Initializing
        $new_cost = $initial_cost = $rate->cost; // grab initial cost

        if ( $initial_cost == 7.38 ) {
            $new_cost -= 2.54;
        } elseif ( $initial_cost == 4.10 ) {
            $new_cost -= 5;
        }
        $rates[$rate_key]->cost = $new_cost; // Set new rate cost

        // Loop through taxes array (change taxes rate cost if enabled)
        foreach ($rate->taxes as $key => $tax){
            if( $tax > 0 ){
                // Get the tax rate conversion
                $tax_rate    = $tax / $initial_cost;

                // Set the new tax cost in the array
                $taxes[$key] = $new_cost * $tax_rate;
                $has_taxes   = true; // Enabling tax changes
            }
        }
        // set array of shipping tax cost
        if( $has_taxes ) {
            $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

Der Code wird in die Datei functions.php des aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Es sollte funktionieren.

Vergessen Sie nicht, Ihren Warenkorb zu leeren, um die zwischengespeicherten Versanddaten zu aktualisieren.

  • Hallo, es funktioniert nicht… Wenn ich diesen Code hinzufüge, sind die Versandkosten für Bestellungen >30€ gleich

    – Alessandro Bergagna

    15. März 21 um 17:47 Uhr

  • Ok, ich habe zum Beispiel zwei Versand-IDs: 1) Standardversand (ID 6), 5,90€ (inkl. MwSt.) für Bestellungen <30€, kostenlos für Bestellungen >=30€. 2) Nachnahme (ID 5), 9€ (inkl. MwSt.) für Bestellungen <30€, 5,90€ (inkl. MwSt.) für Bestellungen >=30€. Wo muss ich die Versandkosten-ID einstellen? Danke sehr

    – Alessandro Bergagna

    15. März 21 um 20:36 Uhr


  • Hallo, warum funktioniert es nicht, wenn ich in $initial_cost einen Wert von 7,384 (und nicht 7,38) hinzufüge?

    – Alessandro Bergagna

    31. Mai 21 um 14:43 Uhr

.

757890cookie-checkBenutzerdefinierte WooCommerce-Versandkosten für die erforderliche Mindestzwischensumme mit Steuerberechnungen

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

Privacy policy