Eigene Versandbedingungen auf Basis ein Freitextfeld Varchar statt Checkbox mit Versandkosten-Modul

Hallo Liebes Shopware-Forum,

ich hänge aktuell an einem Problem mit dem Versandkosten-Modul. 

Ausgangssituation:  Gefahrgut-Produkte und Mischwarenkörbe benötigen eine eigene Versandart.

Ich habe auf Basis der Dokumentation ein Checkbox-Freitextfeld mit dem Namen ‚gefahrgut‘ erstellt und in der SQL-Abfrage des Versandkosten-Moduls eine Abfrage erstellt und diese Bedingung dafür in der Versandart hinterlegt. Das hat alles einwandfrei funktioniert. Sobald die Checkbox ausgewählt war, wurde das Produkt als Gefahrgut gekennzeichnet und sobald der Warenkorb eines oder mehrere dieser Produkte beinhaltet, wurde auch die entsprechende Versandart ausgegeben.

Folgende Abfrage habe ich in das Modul geschrieben:

MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, Min(gefahrgut='1') as gefahrgut, Max(gefahrgut='1') as mischkorb

In der Versandart steht folgende Bedingung:

gefahrgut && mischkorb

Neue Bedingung:  Statt Checkbox nun ein Varchar-Freitextfeld mit Wert übertragen aus SAP

Nun kommt allerdings die o.g. Bedingung dazu. Das Varchar-Freitextfeld mit gleichem Namen wird über einen Import mit Daten befüllt. Sobald dieses Feld einen Wert hat, soll das Produkt als Gefahrgut gekennzeichnet werden und die entsprechende Versandart ausgegeben werden.

Umsetzung:

Ich habe probiert, die neue Anforderung über Anfragen verschiedener Art umzusetzen, leider ohne Erfolg. Es werden weiterhin die Versandarten ausgegeben, welche für den Versand von normalen Produkten vorgesehen sind.

Folgende Variationen habe ich, nach Recherche im Forum und Doku, genutzt:

MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, Min(gefahrgut='1') as gefahrgut, Max(gefahrgut='1') as mischkorb

MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, MAX(at.gefahrgut=“true”) as gefahrgut 

MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, MAX(at.gefahrgut) as gefahrgut

MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, MAX(at.gefahrgut="true") as "gefahrgut"

Die Bedingung in den Versandarten habe ich nicht verändert. Ist es mit Varchar-Feldern überhaupt so möglich? Oder muss ich eine Checkbox nutzen?

Ich stehe wohl ein wenig auf dem Schlauch, leider finde ich keine Möglichkeit es zu lösen und habe auch keine Idee, warum es nicht funktioniert.
Ich würde mich über einen Schubs in die richtige Richtung freuen.

Hallo jullau,

wenn Du immer die Versandart Gefahrgut anbieten möchtest, sobald ein Gefahrgutartikel im Warenkorb ist, dann brauchst Du ja die mischkorbabfrage garnicht.

Via SQL CASE kannst Du für das Varchar Feld recht einfach zwischen nulll und nicht null unterscheiden:

MAX(CASE WHEN at.gefahrgut IS NULL THEN 0 ELSE 1 END) as gefahrgut