GELÖST Versandkosten über Attribut funktionieren n. richtig

Hallo, so ich poste dann nochmal die komplette Fehlerbeschreibung:

ich möchte meine Versandkosten nach der Größe der Artikel berechnen lassen.
Ich habe mich am entsprechenden Tutorial orientiert, dieses aber etwas abgeändert:

  • 5 Attribute bei den Artikeln angelegt (für jede Lieferzone eines):
    attr10 - Versandkosten Deutschland
    attr11 - Versandkosten EU
    attr12 - Versandkosten Europa ohne EU
    attr13 - Versandkosten Welt I
    attr14 - Versandkosten Welt II

  • Im Modul Premiumversandkosten folgende SQL-Abfrage:

    MAX(a.topseller) AS has_topseller, MAX(at.attr3) AS has_comment, MAX(b.esdarticle) AS has_esd, MAX(at.attr10=1) AS shipde, MAX(at.attr11=1) AS shipeu1, MAX(at.attr12=1) AS shipeu2, MAX(at.attr13=1) AS shipwelt1, MAX(at.attr14=1) AS shipwelt2
  • für jede Lieferzone eine Versandart angelegt

  • bei jeder Versandart “Eigene Versandkostenberechnung” mit folgendem Code: MAX(at.attrXX) XX natürlich jeweils 10,11,12,13 oder 14

  • 3 Testartikel für die drei verschiedenen Artikelgrößen angelegt und dort jeweils
    jedes Attribut mit Versandkosten gefüllt:
    [attr10; attr11; attr12; attr13; attr14]

    Testartikel Großbrief: 3.05; 5.50; 5.50; 5.50; 5.50
    Testartikel Maxibrief: 3.80; 9.05; 9.05; 9.05; 9.05
    Testartikel Paket: 5.90; 15.00; 28.00; 34.00; 40.00

So, nun endlich zum Problem: :wink:

Die Berechnung funktioniert, wenn ich als Lieferland Deutschland nehme - je nach dem welche Artikel im Warenkorb sind, wird immer der höchste verfügbare Versandkostenbetrag der jeweiligen Artikel im WK berechnet.

Wähle ich ein anderes Land, funktioniert das nur solange, bis ich einen Paketartikel mit anderen Artikeln kombiniere. Dann wird mal Maxibrief, mal Großbrief berechnet.

Nach vielen stundenlangen Test habe ich den Fehler kaum eingrenzen können, aber zwei Sachen sind mir aufgefallen:

  1. Der Fehler tritt erst auf, sobal ich den Testartikel “Großbrief” in den Warenkorb lege in Kombination mit Testartikel “Paket”. Großbrief+Maxibrief funktioniert dagegen, Maxibrief+Paket auch.
    Die Artikel und alle anderen Einstellungen habe ich aber schon zigmal geprüft und tlw. auch neu eingestellt, um dort Fehlerquellen auszuschließen.

  2. Es macht fast den Anschein (kann aber nicht sein) als wenn in die Berechnung nur die erste Stelle des 3-4stelligen Attributs (sprich Versandkostenpreises) einfließt. Zumindest kann ich so das Verhalten eindeutig nach “meinen Wünschen” beeinflussen: Ändere ich die Versandkosten auf 1,2,3,… aufsteigen, geht es. Z.B. hat der Großbrief die Kosten 8 und Paket 9, geht es. Ändere ich das Paket dann aber auf 10, wird wieder der Preis vom Großbrief genommen. Daher der “Anschein” als wenn er nur die erste Stelle zur Berechnug heranzieht (8<9, 8>1[0]).

Ist etwas an den SQL-Befehlen falsch, oder woran kann dieses liegen?
Ich finde einfach nicht den geringsten Ansatz, woran es liegen kann.

Viele Grüße
Heiko

So, hier (editierter Beitrag oben) jetzt die komplette Fehlerbeschreibung, soweit ich sie um diese Zeit noch in halbwegs vernünftige Worte fassen konnte…

So, noch ein Nachtrag: Ändere ich die Versandkosten beim Testartikel “Großbrief” auf einen Wert bis max. 4.99 geht es immer in jeder Konstelation bei jedem Land. Sobald der Wert <=5 ist, geht es nicht mehr!

So, Fehler gefunden: die Anzahl der Stellen der verschiedenen Attribute muss immer gleich sein. Also: Testartikel Großbrief: 03.05; 05.50; 05.50; 05.50; 05.50 Testartikel Maxibrief: 03.80; 09.05; 09.05; 09.05; 09.05 Testartikel Paket: 05.90; 15.00; 28.00; 34.00; 40.00 Knapp 9 Stunden Fehlersuche, hunderte Test in allen möglich Konstellationen, Änderungen der SQL-Einträge, Neuanlage der Versandkosten und Testartikel, Teständerungen in der Datenbank, völlige genervtheit, googlen ohne Ende - nur um einen Ansatz zu finden. Dazu reproduzierbares und auch nicht reproduzierbares (zufälliges) Verhalten des Shops, das einem aber nicht weiterhilft. Und dann durch Zufall beim erneuten Testen, bei welchen Preisen es auftritt, zufällig drauf gestoßen - auf eine eigentlich totale Kleinigkeit, auf die man (wenn man lerning-by-doing praktiziert) wohl nur durch einen großen Zufall stößt :wtf: