Benutzerdefinierte WooCommerce-Versandkosten für die erforderliche Mindestzwischensumme mit Steuerberechnungen
Lesezeit: 2 Minuten
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.
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
.
7578900cookie-checkBenutzerdefinierte WooCommerce-Versandkosten für die erforderliche Mindestzwischensumme mit Steuerberechnungenyes