Versandkosten die 1000ste

Hallo ich brauche leider Hilfe bei den Versandarten weil es immer noch nicht klappt.

  • Artikel mit Versandkostenfrei Haken

  • Artikel ohne Versandkostenfrei Haken

  • Standard Versand, ab 50Euro Warenkorb Versandkostenfrei vorher zzgl 9 Euro Versandkosten

  • Film Versand ab 8,90Euro Versandkostenfrei vorher zzgl 2 Euro Versandkosten (Alles Artikel in Kategorie und Subkategorie von Film) ansonsten 2 Euro Versandkosten

  • Abholung vor Ort immer Versandkostenfrei

Bisher hatte ich in Eigenschaften dazu die , MIN(d.shippingfree) = 1 as allshippingfree, MIN((SELECT 1 FROM s_articles_categories WHERE articleID=a.id AND categoryID=23)) AS is_film
hat aber nichts gebracht. Es ist zum verzweifeln.

Bitte keine Link auf diese !allshippingfree-Anleitung, die kann ich mittlerweile im Traum zitieren.

Danke und Gruss

Yep, das kann ziemlich “mind-boggling” werden, die Gehirnknoten bei der Konfiguration kenne ich gut, hab auch mehrere Anläufe benötigt bis es passte, und die Doku ist da teilweise etwas undurchsichtig.

Daher versuche ich das mal anhand eines (stark vereinfachten) Beispiels zu erklären:

Die erste Entscheidung ist, ob Du mehrere Versandarten nutzen möchtest oder nur die Preise ein und derselben Versandart dynamisch berechnen musst. Oder eine Kombination von beiden Ansätzen (was bei uns der Fall ist). Bei uns sind es z.B. schon mal 3 unterschiedliche Versandarten: normales Paket, Gefahrgutversand 1.4S und Gefahrgutversand 1.4G (der 1.4S inkludiert). Paket und 1.4G werden nach Gewicht ermittelt, 1.4S hingegen über den Warenwert (da die Artikel sehr leicht sind und dann eher das Volumen ausschlaggebend ist).

Bei sortenreinen Warenkörben ist es ja noch relativ einfach, die Komplexität kommt vor allem über gemischte Warenkörbe. Ich empfehle Dir, hier ein gutes altes Tool aus der Prozessmodellierung zu verwenden: Decision Tables. Was soll das Ergebnis sein (sprich: welche Versandart und zu welchem Preis), wenn - um Deine Beispiele zu nehmen - ein Versandkostenfrei, ein Film und ein normaler Artikel im WK liegen.
Das spielst Du nun für jede mögliche Kombination durch (eine Zeile pro Kombination).

Dann geht es darum, diese Regeln umzusetzen. Zunächst kümmerst Du Dich um die Selektion der richtigen Versandart. Unsere Artikel haben z.B. ein Freitextfeld mit der Gefahrgutklasse, somit wird zunächst einmal über erweiterte SQL Abfragen des Versandkostenmoduls ermittelt, ob im WK mindestens ein Artikel mit dieser Klasse liegt, z.B. MAX(IF((at.artikel_gefahrgutklasse="1.4S"), 1,0)) as hat_14s und MAX(IF((at.artikel_gefahrgutklasse="1.4G"), 1,0)) as hat_14g. Gleichermaßen verfährst Du mit allen anderen relevanten Kriterien.

Nun trägst Du bei jeder Versandart entsprechend deiner Tabelle ein, wann diese verfügbar sein darf. Beliebte Fehler sind hier schon, die Freischaltung für Zahlungsmethoden oder Länder zu vergessen. Danach gehst Du auf den Reiter “Erweiterte Einstellungen” und schreibst in das Feld “eigene Bedingung” die gewünschte Formel. Beispiel für meine 1.4S Versandard: hat_14s AND !hat_14g, also nur anbieten, wenn mindestens ein Artikel 1.4S, aber keiner (! = NOT) 1.4G hat. Bei 1.4G hingegen wird nur eingetragen: hat_14g - ob 1.4S vorhanden ist dann nämlich egal. Und beim normalen Paketversand dürfen beide nicht gesetzt sein, hier wäre die Formel also !hat_14s AND !hat_14g. Die Formeln müssen also so gewählt werden, dass bei jeder Kombi genau eine Versandart übrig bleibt (außer es ist gewollt, dem Kunden mehrere zur Auswahl anzubieten).

Das ist schon mal das A und O. Jetzt geht es noch an den Preis der jeweiligen Versandart. Entweder machst Du das über die vorgesehene Staffeln (nach Gewicht oder Warenkorbwert), oder du trägst unter “Eigene Berechnung” eine Formel ein, welche den Wert basierend auf diversen Parametern - analog zu oben - ermittelt. Das Ergebnis muss hier natürlich kein Boolean sein, sondern der zu verwendende Betragswert.

Hoffe das hilft Dir schon mal weiter, und auch dem ein oder anderen Mitleser - das Thema wird ja ständig gefragt. Bin gespannt auf Deine Fragen!

LG Phil

1 „Gefällt mir“

Vielen Dank für die Ausführliche Beschreibung.

Wie verhält sich die Erweiterte SQL in Einstellung > Versandkostenmodul zu den Einstellungen in der Versandart?
Wenn ich eine Kategorie sperre oder die KategorieID ausgeben lasse, überschneidet sich das nicht?

MIN(d.shippingfree) = 1 as allshippingfree, MIN((SELECT 1 FROM s_articles_categories WHERE articleID=a.id AND (categoryID=23 OR categoryID=129)) AS is_film

dann brauch ich doch dann keine Kategorie mehr sperren oder?

Standart 	 	 | Preis: 9CHF	| !allshippingfree		| Versandkostenfrei: unterstützen && ab 50CHF	| Kategorie sperren: nein
Film und Musik 	 | Preis: 2CHF	| !allshippingfree	 	| Versandkostenfrei: unterstützen && ab 8,90CHF	| Kategorie sperren: ja ausser 23,129
Versandkostenfrei| Preis: 0CHF	| allshippingfree 		| Versandkostenfrei: unterstützen		 	| Kategorie sperren: nein
Abholung vor ORT | Preis: 0CHF										 	 		 	 	| Kategorie sperren: nein
Standart 	 	 | Preis: 9CHF	| !allshippingfree		| Versandkostenfrei: unterstützen && ab 50CHF	| Kategorie sperren: nein
Film und Musik 	 | Preis: 2CHF	| !allshippingfree AND is_film	 	| Versandkostenfrei: unterstützen && ab 8,90CHF	| Kategorie sperren: ja ausser 23,129
Versandkostenfrei| Preis: 0CHF	| allshippingfree 		| Versandkostenfrei: unterstützen		 	| Kategorie sperren: nein
Abholung vor ORT | Preis: 0CHF										 	 		 	 	| Kategorie sperren: nein

Egal was, das Modul speichert es noch nicht einmal ab.

Naja, die erweiterte SQL befüllt die Variablen, auf die Du dann in den erweiterten Einstellungen der Versandart zugreifst. Denke da erzähle ich Dir nix neues :wink:

Dein Kategoriemix hört sich so an wie versandkostenberechnung-nach-kategorie - hast Du es schon mal damit versucht?

LG Phil