Syntax-Problem bei CASE-Berechnung für Sperrgut-Versand

Hallo,

ich habe folgendes Problem mit einer Berechnung:

CASE

    WHEN (b.quantity) < 2 && (sperrgut) = 1 SUM(b.quantity * 1000 * 9.9)

    WHEN (b.quantity) < 5 && (sperrgut) = 1 SUM(b.quantity * 1000 * 19.8)

    ELSE SUM(b.quantity * 1000 * 49,50)

END

Hintergrund: Unter 3 Artikel mit Attribut “Sperrgut” sollen pauschal mit 9,90 Euro berechnet werden. Unter 5 Artikel mit Attribut “Sperrgut” mit 19,80 Euro und ab 5 Artikeln mit 49,50 Euro pro Artikel. Die Multiplikation mal 1000 dient nur um das automatische Runden zu umgehen (in der Versandart ist der Faktor 0,1 angegeben). 

Weiß jemand wo der Fehler liegt? Ich bin sicher, dass es ein Syntax-Fehler ist und die Doku zu CASE-Abfragen ist leider sehr mager.

vielen Dank!

Dir fehlt das THEN

Komplexe Verzweigung, z.B. CASE WHEN a.supplierid = 4 THEN 1 WHEN a.supplierid = 5 THEN 2 else 3 END Gibt für den Hersteller 4 1, für den Hersteller 5 2 und für alle anderen 3 zurück. 

Mach ich gleich sofort. Eine Frage habe ich allerdings noch. Ist hier eine Case Abfrage überhaupt nötig? Ließe sich das nicht auch über IF lösen? Also:

IF(b.quantity<2,SUM(9.9 * 1000),IF(b.quantity>2 AND b.quantity<5,SUM(19.8 * 1000),IF(b.quantity<5,SUM(49.9 * 1000)))

Rein theoretisch kannst du das auch über eine IF abdecken.

Schau mal hier rein: https://forum.shopware.com/discussion/21894/versandkosten-eigene-berechnung-mit-if-else-bzw-case-when

Vielen Dank! Ich denke, ich habe eine funktionierende Lösung gefunden:

 

IF(b.quantity>2 AND b.quantity<5,SUM(19.8 * 1000),SUM(9.9 * 1000))

Ab einer Artikelanzahl von 4 soll nun diese Versandart (Sperrgut) gesperrt werden und stattdessen eine andere greifen (Spedition). Nur wie mach ich das? Ich weiß, dass ich über „!sperrgut“ die Versandart sperre, aber nicht, wie ich den Fallback auf die andere Versandart einrichte.

Eine weitere Möglichkeit, wäre die Versandart Spedition aktiv zu schalten, wenn mehr als 4 Artikel des Attributs „Sperrgut“ im Warenkorb liegen.

Du muss die Versandart spedition ab 4 Artikel freischalten. In den Bedingungen (erweiterte Einstellung Versandkosten) hast du viele Konfigurationsmöglichkeiten, mit denen du arbeiten kannst. Schau mal hier rein: https://forum.shopware.com/discussion/45252/versandkostenberechnung-ueber-attribut-mischwarenkorb

@anfuet schrieb:

Du muss die Versandart spedition ab 4 Artikel freischalten. In den Bedingungen (erweiterte Einstellung Versandkosten) hast du viele Konfigurationsmöglichkeiten, mit denen du arbeiten kannst. Schau mal hier rein: https://forum.shopware.com/discussion/45252/versandkostenberechnung-ueber-attribut-mischwarenkorb

Vielen Dank. Eine einfache IF-Abfrage in der Versandart “Spedition” würde schon reichen. Versandart Spedition soll also greifen, wenn das Attribut Sperrgut vorhanden ist und mindestens 4 Artikel mit diesem Attribut im Warenkorb sind. Leider kriege ich die Syntax absolut nicht zusammen. Habe schon einiges versucht, wie z.B.

IF(SUM(sperrgut*b.quantity)>4)