Hallo Zusammen!
Ich weiß, das Thema hat es hier schon zu Hauf gegeben, doch ich verstehe es einfach nicht, mache irgend etwas falsch, oder das was ich will funktioniert einfach nicht. Die Themen hier im Forum bin ich soweit alle durchgegangen, doch wie es scheint stehe ich noch immer auf dem Schlauch.
Meine Versuche bisher erfolgten alle in der aktuellen Version des Shops v3.0.2 rev 15701. Diese habe ich sowohl in einer quasi nackten Testumgebung gemacht, bei welcher keinerlei zusätzliche Module installiert wurden, als auch in einer Version an der ich nun schon einige Tage arbeite. Und auch im öffentlichen Demoshop hier konnte ich das Problem reproduzieren.
Zur Schilderung des Problems:
Ich habe einen Artikel A mit dem Grundpreis 9,95 €.
Artikel A hat vier Attribute:
- Version 1 - plus 0 € = 9,95 €
- Version 2 - plus 10 € = 19,95 €
- Version 3 - plus 20 € = 29,95 €
- Version 14 - plus 30 € = 39,95 €
Soweit alles klein Problem.
Sobald nun aber Staffelpreise ins Spiel kommen setzt mein Verständnis aus.
Bei dem Artikel habe ich im Feld "Gast" den gleichen Basispreis von 9,95 € eingetragen. Unter Staffelpreise habe ich nun die Stückzahl 5 eingetragen, und den
reduzierten Staffelpreis um 25% von 7,46 €.
Wenn ich nun im Frontend testweise 5 Stück des Artikels A in der Basisausführung (also Version 1 der Attribute ohne Aufpreis) in den Warenkorb lege erhalte ich den richtigen reduzierten Preis von 7,46 € angezeigt. Soweit alles gut.
Nun rufe ich den Artikel A noch einmal auf und sehe hier schon bei der Anzeige der Preise zu den einzelnen Attributen das Problem:
- Version 1 - 7,46 € - RICHTIG
- Version 2 - 17,46 € - FALSCH
- Version 3 - 27,46 € - FALSCH
- Version 4 - 37,46 € - FALSCH
Was passiert ist, dass der Basispreis-Staffelpreis ab 5 Stück zu je 7,46 € für Version 1 natürlich als Grundlage dient. Auf diesen Basispreis wird dann zur Berechnung des Staffelpreises der Version 2 der Preisaufschlag von 10 € gewählt, wie es in den Attributen ja auch definiert ist. Das ergibt dann die 17,46 €. Richtig sein müsste aber 14,96 € (75% des Basispreis-Staffelpreises),
Gleiches passiert mit den Staffelpreisen für Version 3 - dies ergibt laut Shop 27,46 € (Basispreis-Staffelpreis plus Aufschlag von 20 € laut Attributdefinition. Richtig wäre hier 22,46 € (75% des Basispreis-Staffelpreises).
Die Staffelpreisen für Version 3 werden natürlich genau so berechnet - dies ergibt laut Shop 37,96 € (Basispreis-Staffelpreis plus Aufschlag von 30 € laut Attributdefinition. Richtig wäre hier 29,96 € (75% des Basispreis-Staffelpreises).
Das Problem liegt meiner Meinung nach daran, dass ich den Staffelpreis nur als festen Wert eintragen kann. Wenn es möglich wäre wie bei den Sonderangeboten einen prozentualen Wert einzutragen, wäre mir glaube ich geholfen. Also anstatt "7.46" als Staffelpreis "einfach" nur "25%" eintragen, wie eben bei den Sonderangeboten auch möglich.Dann hatte ich mir einige Dateien angeschaut und in der Datei "admin/includes/classes/categorie.php" fand ich dort zu dem Sonderpreis folgenden Eintrag:
if (substr($products_data['specials_price'], -1) != '%') { $products_data['specials_price'] = $this->priceCheck($products_data['specials_price'], $tax_rate); } else { $products_data['specials_price'] = trim(str_replace('%', '', $products_data['specials_price'])); $products_data['specials_price'] = ($products_data['products_price'] - (($products_data['specials_price'] / 100) * $products_data['products_price'])); } Ich meiner hier wird definiert wie mit dem Wert aus dem Feld "Angebotspreis" umgegangen werden soll, wenn dort ein "%"-Zeichen enthalten ist. Das müsste sich doch auch auf die Staffelpreise anwenden lassen? Dazu finde ich in gleicher Datei folgenden Abschnitt:
function calculate_attribute_prices($products_data,$products_id) {
$products_tax_rate_old = xtc_get_tax_rate($products_data['products_tax_class_id_old']);
$attributes_query = xtc_db_query("SELECT *
FROM ".TABLE_PRODUCTS_ATTRIBUTES."
WHERE products_id = '".$products_id."'
AND options_values_price > 0");
if (xtc_db_num_rows($attributes_query) > 0) {
while ($attributes = xtc_db_fetch_array($attributes_query)) {
$values_price_brutto = $attributes['options_values_price'] * (1 + ($products_tax_rate_old / 100));
$values_price_netto = $this->priceCheck($values_price_brutto, $products_tax_rate);
xtc_db_query("UPDATE ".TABLE_PRODUCTS_ATTRIBUTES."
SET options_values_price = '".xtc_db_input($values_price_netto)."'
WHERE products_attributes_id = '".$attributes['products_attributes_id']."'");
}
}
}
Ich bekomme hier aber nicht raus, was wie zu ändern wäre. Vielleicht ist dieser Ansatz aber auch komplett falsch?
Ich habe es auch schon mit der Variante "=" aus dem MODUL: XTC ATTRIBUTE PRICE & WEIGHT PREFIX
https://www.modified-shop.org/forum/index.php?topic=2106.0 probiert, auch dies führt zu falschen Staffelpreisen.
Nun soweit die Problematik. Für erleuchtende Hinweise zu dem Thema wäre ich überaus dankbar, da mich das Thema nun schon seit gut zwei Tagen permanent beschäftigt hat und kein Lösungsansatz aus dem Forum für mich funktioniert hat.
Bei Fragen zum Thema stehe ich gerne parat.
In diesem Sinne, beste Grüße!
Linkback: https://www.modified-shop.org/forum/index.php?topic=43429.0