Hallo Allerseits!
Ich möchte hier meine Lösung für ein Problem vorstellen, welches hier im Forum immer mal wieder auftaucht:
Es geht darum welcher Steuersatz auf die Versandkosten angewandt wird bei einem Warenkorb mit gemischten Steuersätzen. Die bei modified enthaltenen Module können ja nur einen fixen Steuersatz anwenden.
Ich habe hierfür das Tabellarische-Versandkosten-Modul (table.php) als Ausgangsbasis genommen, dupliziert und modifiziert.
- Die Auswahl des Steuersatzes wurde entfernt.
- Dafür habe ich eine neue Funktion eingeführt:
function get_dominant_tax_id
() { global $xtPrice; $cart = $_SESSION['cart']; $cart->calculate(); $dominant_tax_id = -1; $dominant_net_value = 0; foreach ($cart->tax as $key => $val) { // calculate the net product price from the tax value if(isset($xtPrice->TAX[$key]) && $xtPrice->TAX[$key] > 0.0) { $net_product_price = ($val['value'] * 100.0) / $xtPrice->TAX[$key]; if($net_product_price >= $dominant_net_value) { $dominant_net_value = $net_product_price; $dominant_tax_id = $key; } } } return $dominant_tax_id; } Diese berechnet aus jedem Steuersatz des Warenkorbs den Nettobetrag und wählt dann den Steuersatz des größten Nettobetrags für die Versandkosten.
Damit zum Schluß unabhängig davon welcher Steuersatz angewendet wird immer die selben Versandkosten verrechnet werden, werden die Versandkosten im Backend als Bruttobetrag definiert. Deswegen muss noch der Nettopreis aus diesen Versandkosten anhand des gewählten Steuersatzes berechnet werden:
// subtract the tax because the amounts defined are meant to be gross prices - otherwise the tax ($this->tax_class) will be added ontop of the gross price
$shipping = $shipping / ((100 + $tax_rate) / 100);
Den gesamten Code habe ich angehängt. Es benötigt keine Core Änderungen aber die Funktion get_dominant_tax_id() arbeitet natürlich auf den "Innereien" der shopping_cart-Klasse und könnte daher in Zukunft mal Probleme bereiten sollte sich da was am internen Aufbau ändern.
Ich bin noch relativ neu bei modified und in keinster Weise php-Experte würde mich daher über Kritik, Verbesserungsvorschläge und / oder Bugfixes freuen!
Danke,
Estrich
Linkback: https://www.modified-shop.org/forum/index.php?topic=43090.0