Ich bestätige das Verhalten.
Es scheint an der Methode
xtcCheckDiscount() in der
xtcPrice-Klasse zu liegen:
function xtcCheckDiscount
($pID) { if ($this->cStatus['customers_status_discount'] != '0.00') { $discount_query = xtDBquery
("SELECT products_discount_allowed
FROM ".TABLE_PRODUCTS
."
WHERE products_id = '".(int
)$pID."'"); $discount = xtc_db_fetch_array
($discount_query, true); if ((isset($discount['products_discount_allowed']) && $this->cStatus['customers_status_discount'] < $discount['products_discount_allowed'] ) || $discount['products_discount_allowed'] == '0.00' ) { return $this->cStatus['customers_status_discount']; } } return false; } Die if-Konstruktion ist logisch verkehrt aufgebaut.
- Wenn der KG-Rabatt kleiner als der Produkt-Rabatt ist wird der KG-Rabatt zurückgegeben.
Das ist etwas was auch in der Vorgängerversion bereits so war und was imho <= , also "kleiner-gleich", heißen müsste.
Das ist aber ein Nebenthema, welches man jedoch gleich mitfixen sollte. - ...oder der Produkt-Rabatt == '0.00' ist der eigtl. Fehler, denn das bewirkt, daß alle Artikel die keinen Produkt-Rabatt eingestellt haben den KG-Rabatt ausgeben.
Bei der Kontrolle fiel mir ein weiterer Fehler auf, wenn ich mich nicht irre.
In der Methode
getGraduated() in der
product-Klasse, wo die oben besprochene Methode
xtcCheckDiscount() benutzt wird, gibt es diese Zeile:
$Pprice = $xtPrice->xtcFormat($staffel[$i]['price'] - $staffel[$i]['price'] / 100 * $discount, false, $this->data['products_tax_class_id']);
Ich denke da fehlen Klammern, wegen "Punkt vor Strichrechnung", und es müsste so aussehen:
$Pprice = $xtPrice->xtcFormat($staffel[$i]['price'] - (($staffel[$i]['price'] / 100) * $discount, false, $this->data['products_tax_class_id']));
Kann das bitte mal jemand verifizieren ?
Gruß,
noRiddle