Antwort #9 am: 24. Oktober 2012, 17:59:31
Hallo Hannes,
vielen Dank für deinen Code.
Das Problem mit der $total ist, bei Nettokunden ist der Wert netto und bei Bruttokunden ist der Wert brutto.
Die Versandfreigrenze ist in der Admin aber netto eingegeben, einen Steuersatz kann man dort nicht angeben.
Ich habe deshalb nur die Lösung gesehen mit den Nettowerten die Versandfreigrenze zu vergleichen, damit ich nicht je nach Kundengruppe eine andere Berechnung aufstellen muss.
Der Nettowert muss auch der reine Warenwert sein ohne Rabatte.
Hatte deshalb gestern in der includes\classes\shopping_cart.php die Funktion calculate() auszugsweise dupliziert und auf Netto umgeschrieben. Dazu muss nur der Parameter $product['products_tax_class_id'] mit 0 ersetzt werden, damit die Berechnung sicher richtig ist und ich nicht mehrere If-Abfragen benötige.
Ich werde das noch einmal prüfen, ob ich alles bedacht habe und auch deine Lösung testen. Evtl. ist es damit einfacher.
Hier noch die Funktion:
// BOF - Netto-Warenwert berechnen function calculate_netto
() { global $xtPrice; $this->total_netto = 0; $this->weight = 0; $this->tax = array (); if (!is_array($this->contents)) { return 0; } reset($this->contents); while (list ($products_id,) = each($this->contents)) { $qty = $this->contents[$products_id]['qty']; // products price $product_query = xtc_db_query
("select products_id, products_price, products_discount_allowed, products_tax_class_id, products_weight from ".TABLE_PRODUCTS
." where products_id='".xtc_get_prid
($products_id)."'"); if ($product = xtc_db_fetch_array
($product_query)) { $products_price = $xtPrice->xtcGetPrice($product['products_id'], $format = false, $qty, 0, $product['products_price']); $this->total_netto += $products_price * $qty; $this->weight += ($qty * $product['products_weight']); // attributes price $attribute_price = 0; if (isset ($this->contents[$products_id]['attributes'])) { reset($this->contents[$products_id]['attributes']); while (list ($option, $value) = each($this->contents[$products_id]['attributes'])) { $values = $xtPrice->xtcGetOptionPrice($product['products_id'], $option, $value); $this->weight += $values['weight'] * $qty; $this->total += $values['price'] * $qty; $attribute_price += $values['price']; } } } } } // EOF - Netto-Warenwert berechnen