Frage zur Syntax für individuelle Versandkosten (eigene Bedingungen / eigene Berechnungen)

Hallo liebe Community,

ich habe bereits das Dokument zu individuellen Versandkosten gelesen.https://docs.shopware.com/de/shopware-5-de/versand-und-zahlungsarten/individuelle-versandkosten

Leider scheine ich hier noch etwas nicht ganz zu verstehen. Alle meine Versuche eine eigene Bedingung zu formulieren endeten in einer PDOException, was mich zum Schluß führt, dass ich die Abfrage grundsätzlich falsch formuliere.

Ich habe zunächst Versandkostenberechnung nach Artikelanzahl aktiviert und eine Staffeln 0-1 -> 5.50 und 2-beliebig -> 0 defniert. Soweit so gut, das funktioniert auch. Nun hat der Shop allerdings ein paar Extralocken. Wenn man Artikel ohne Bestand in den Warenkorb legt, wird ein weiterer Artikel im Modus 4 mit der articleID = 0 hinzugefügt. Dieser stellt lediglich einen Aufschlag für Fremdlagerlieferung dar. Ich vermute dass dieser zur Menge der Artikel im Warenkorb dazuzählt und daher einzelne Artikel ohne Lagerbestand auch keine Versandkosten verursachen obwohl sie es sollten.

Wie muß die Bedingung formuliert sein? Soll der Ausdruck zu einem Wahrheitswert auswertbar sein oder was ist hier das Ziel?

Sowas wie 

CASE WHEN COUNT(b.articleID !=0) THEN 1 ELSE 0 END

 führt lediglich zu Exceptions…

 

Würde mich über Tipps oder ne Erklärung wie das funktioniert sehr freuen.

Liebe Grüße

Oliver

Hallo,

grundsätzlich ist die SQL Syntax oben falsch. Erst zählen und dann das Ergebnis auswerten.

CASE WHEN COUNT(b.articleID) !=0 THEN 1 ELSE 0 END

Spring mal im Dokument an die Stelle :" Vergleichen der Artikelanzahl im Warenkorb mit Artikeln mit bestimmten Attributen"

in den Grundeinstellungen - > Versandkostenmodul folgendes ergänzen:

, COUNT(a.id) as item_count

Dann kannst du die Variable in der Versandkostenverwaltung unter den eigenen Bedingungen auswerten:

IF(item_count = 1, 1, 0)
oder
IF(item_count > 1, 1, 0)

 

 

Danke das hat mir schon mal geholfen. Ich hatte leider auch die SQL Abfrage an die falsche stelle geschrieben.(in die Bedingung statt es an die erweiterte SQL Abfrage anzuhängen)

Es gibt jetzt zumindest keine Exceptions mehr.

Muß ich jetzt noch bei “Versandkosten Berechnung nach” etwas bestimmtest einstellen oder reicht es Artikelanzahl auszuwählen und eine Staffel anzulegen? 

Aktuell hab ich folgendes eingestellt. Es scheint mir so als ob die Versandkosten nur von der Staffel abhängen und die Bedingung ignoriert wird.

COUNT(b.articleID) !=0 as item_count

in der SQL Abfrage angehängt mit einem Komma getrennt. (Hier hab ich das Gefühl die Abfrage ist falsch. Ich will doch die items im basket zählen, deren articleID != 0 ist. Die Abfrage heißt für mich item_count = true, wenn mehr als ein article da ist und ansonsten false)

und in der Bedingung in der Versandkostenverwaltung steht:

IF(item_count = 1, 1, 0)

Hallo,

folge mal dem Link:

Dann würde ich „Versandkostenberechnung nach“ auf „eigene Brechnung“ umstellen. Tests mit der „Anzahl der Artikel“ haben bei mir kein brauchbares Ergebnis gebracht, dann hätte man auch kein eigenes SQL hinterlegen müssen.