Zusätzliche Versandkosten für bestimmte Artikel

Hallo,

ich habe einen Hersteller der nur per Spedition liefert. Ich möchte eine Versandart anlegen die einerseits diese abweichenden Versandkosten berechnet oder bei Mischwarenkörben zu den normalen Versandkosten addiert.

Ich habe in den Docs bei „Versand- & Zahlungsarten - Individuelle Versandkosten“ 2 Varianten probiert, leider ohne Erfolg. Einmal mit eigenen Bedingungen das Beispiel „Komplexe Bedingung anhand von eines Freitextfeldes für Mischwarenkörbe“ - Habe die erweiterte SQL-Abfrage ergänzt, ein Freitextfeld angelegt, eine Versandart erstellt und meine Bedingung eingetragen. Die andere Variante war die „Eigene Berechnung - Versandkosten nach Artikel“ bei der ich ebenfalls ein Freitextfeld und die eigene Berechnung angelegt hab. Leider ändert sich in meinem Warenkorb nichts, es wird entwed immer der Standardversand angezeigt oder der Warenkorb läd garnicht. Vermutlich weil auch Fehler in der Docu vorhanden sind. Bin mir nicht sicher ob zB. das Gleichheitszeichen hier hingehört: SUM(IF(at.attr4=,2.95,at.attr4))

Meine Shopware Version ist 5.5.10. Wie kann ich  mein Problem am besten lösen?

mfg Michael

Dazu noch im Produkt ein Checkbox-Freitextfeld.

DHL und Mischkorb funktioniert. Wenn ich nur das Speditionsprodukt im Warenkorb hab, wird mir auch nur der Mischkorb Versand angeboten.

Was mache ich falsch?

Wir haben das programmieren lassen: Freitextfeld am Artikel.

Das Freitextfeld im Artikel hab ich angelegt.
Aber warum programmieren lassen wenn es shopware, zumindest theoretisch, auch so kann?

Ich hab den Fehler gefunden. Ich habe eine Checkbox als Freitextfeld angelegt. Wenn man diese Checkbox aktiviert dann bedeutet das der Artikel wird mit Spedition versandt.
Leider defaulted so eine Checkbox in der Datenbank zu ‘null’ anstatt zu 0. Somit gibt die SQL-Abfrage bei einem Mischkorb für MIN(attr) und MAX(attr) jeweils eine 1 zurück. Meiner Ansicht nach ein bug von Shopware. Habe jetzt das Freitextfeld zu einer Combobox gemacht und darf eben beim Artikel anlegen nie vergessen das Feld auszufüllen.

Lese ich leider jetzt erst. Die korrekte Abfrage bei einer Checkbox sieht z.B. so aus: MAX(at.attr4=“1”) as aufschlag

Musste ich auch erst rausfinden. :wink:

Danke für die Info. So steht es auch in den docs, zumindest in den deutschen, in den englischen steht noch MAX(attr1=‚true‘).

Auch hier ohne das „at.“

Hat aber für mich auch nicht funktioniert. Wie sieht die ganze Erweiterte Abfrage aus, also das MIN()?

Dann werd ich das evtl. so noch mal versuchen da ich lieber eine Checkbox hätte falls ich mal vergesse das Feld auszufüllen?

Das MIN hatte ich bei uns nicht gebraucht. Hintergrund: Es ging uns um einen Portoaufschlag für bestimmte Artikel – und dann je Artikel.

Diese Zusatz-Versandkosten haben wir dann auch als "Aufschlag-Versandregel definiert. Und sort sieht die “Eigene Berechnung” so aus: SUM(IF(at.attr4=“1”,3.9,0)*b.quantity*100)

Dein Fall ist etwas anders.

Warum das “at.” in der Doku fehlt, kann ich Dir nicht sagen. Wir haben hier noch 5.5.7, aber ich glaube nicht, dass sich da so viel in der 5.5.10 geändert hat. Und bisher war bei Attributen immer das “at.” notwendig.

Hier noch als Beispiel die Abfrage, die Pickware im der Doku hat, damit man eine Gutschein-Versandregel definieren kann: MIN(at.viison_coupon) = 1 AS allviisoncoupon

Die Logik dreht sich dabei quasi um. Für unseren Portaufschlag ging es ja darum einen fixen Wert mit der Anzahl der Artikel zu multiplizieren, die einen Haken bei Portoauschlag haben. Bei den Gutscheinen geht es darum festzustellen, ob die gesamte Bestellung ausschließlich aus Gutscheinen besteht.

Abfrage geht dann entsprechend über “allviisoncoupon” für den Gutschein-Versand und “!allviisoncoupon” für alle anderen Versandarten.

1 Like

Ich danke dir für deine Beispiele. Wie in deinem ersten steht es ja auch in der doku. Also mit MAX(at.attr4=“1”) as mischkorb.
Wenn ich das mit Semikolon schreib dann lädt nicht mal mehr mein Warenkorb. Wenn ich das mit Colon mach funktioniert es.

Leider gibt die Abfrage für MIN(at.attr4=‘1’) trotzdem 1 zurück wenn ich im Warenkorb einen Artikel mit DHL und einen mit Speditionsversand hab. Sollte aber eigentlich 0 sein und für MAX dann 1. Ansonsten triggert die Bedingung für den Mischversand nicht.

Wenn ich den DHL Artikel aufrufe und ohne Änderung speichere dann funktioniert es. Ich muss also alle Artikel noch mal aufrufen und speichern aber dann sollte es so passen.