Berechnung Versandkosten bei Sperrgut

Aktuell verzweifel ich an individuellen Versandkosten. Hierzu habe ich „Sperrgut“ als extra Versandart angelegt und mit einem Freitext attr4 verbunden. Also, alle Arikel mit attr4 sind Sperrgut.

Nun ist es so, ich habe einen Standardversand von 5,90 und einen Sperrgutversand von 9,90

Jetzt soll, sobald sich im Warenkorb ein Sperrgut-Artikel befindet, die Versandkosten vom Sperrgut-Artikel angezeigt werden. Bei den erweiterten SQL-Einstellungen habe ich „Min(at.attr4) as attribut, Max(at.attr4) as mischkorb“ eingetragen. Bei eigenen Bedingungen (Versandkosten) haben ich „attribut“ eingetragen und bei eigene Berechnung „SUM(at.attr4)“.

Funktioniert irgendwie alles nicht, denn:

  • lege ich zuerst einen Standardartikel in den Warenkorb wird 5,90 angezeit
  • lege ich jetzt zusätzlich einen Sperrgutartikel in den Warenkorb bleibt die Anzeige bei 5,90
  • soll aber dann auf 9,90 wechseln

Wie bekome ich das hin, dass sobald ein Sperrgutartikel im Warenkorb liegt, die Versandkosten auf 9,90 springen - also auf den Wert vom Sperrgutartikel?

 

Also die Bedigung „attribut“ und „sperrgut“ machen nicht viel Sinn, da der Max/MIn ja nur einen Wert zurückgibt. Wenn müsstest du also auf den Wert prüfen (sowas wie „attribut > 1“). Die Bedingung „attribut“ ist ja immer true, sobald in attr4 was drinsteht.

Generell würde ich immer ohne eigene Bedingungen arbeiten und alles über IF-Verzweigungen in einer Versandart abbilden, dann sparst du dir auch Ausnahmen für Mischversand. Wenn nun in attr4 für jeden Artikel die Versandkosten stehen, kannst du ja sowas machen:

SUM(IF(at.attr4 = 1, 9,90, 5,90 ))

Das wäre dann, wenn attr4 eine Checkbox ist (Sperrgut ja/nein).

Oder sowas IF(MAX(at.attr4) = 1, 9.90, 5,90)

Müsste man jetzt schauen, was genau du erreichen willst.

Bin mir jetzt nicht mehr ganz sicher wie ich es damals gemacht habe, bei Sperrgutversand müsste es meiner Meinung nach nicht “attribut” sein sonder “mischkorb” sein. Und in der Standardlieferung “!mischkorb”.

Vielleicht hilft dir das schon weiter

Ich hab das über Gewicht in meinem Shops gemacht. Klappt super. Die versandart habe ich Spedition und Sperrgut genannt.

Müsste man jetzt schauen, was genau du erreichen willst.

Nach einer Nacht darüber schlafen, glaube ich eine Lösung gefunden zu haben. 

Was ist gegeben?

  • im Shop gibt es einen Standardversand von 5,90
  • einzelne Artikel können jedoch Versandkostenfrei versendet werden
  • einzelne Artikel können individuelle Versandkosten (Sperrgut) haben, Einstellung über Freitextfeld attr4

Was will ich?

Sobald ein Artikel mit attr4 im Warenkorb liegt, soll dieser Wert als Versandkosten angezeigt werden. Egal ob alle anderen Artikel einen Standardversand oder gar Versandkostenfrei sind. Die Versandkosten bei Sperrgut sollen sich nicht auf die Stückzahl beziehen. Sind mehere Artikel mit Sperrgut vorhanden, soll der maximal Wert ermitelt und berechnet werden.

Wie umsetzen?

Natürlich als erstes ein Freitextfeld für Sperrgut (attr4) als Typ Dezimalzahl anlegen, um hier individuelle Preise eingeben zu können. Im Versandkosten-Modul zusätzlich diese Zeile eintragen:

, MAX(at.attr4) AS sperrgut

Neuen Eintrag “Sperrgut” bei Versandkosten anlegen und auf erste Position bringen (vermutlich gar nicht nötig). In den Einstellungen auf “Eigene Berechnung” und “Standard Versandart” einstellen. In den erweiterten Einstellungen dann bei eigene Bedingungen “sperrgut” eintragen. Bei eigenen Berechnungen diese Zeile eintragen:

MAX(at.attr4)

Nun kommt das wichtigste:

Bei allen anderen Versandarten bei Einstellung “Eigene Bedingungen” diese Zeile eintragen:

!sperrgut

Fazit:

Sobald ein Artikel im Warenkorb liegt, der individuelle Versandkosten hat, werden die Kosten aus dem Freitextfeld genommen. Mittels MAX (derzeit noch nicht getestet) soll zudem der maximale Wert genommen werden, falls im Warenkorb mehrere Artikel mit individuellen Versandkosten liegen.

 

2 Likes

@R4M schrieb:

Müsste man jetzt schauen, was genau du erreichen willst.

Nach einer Nacht darüber schlafen, glaube ich eine Lösung gefunden zu haben. 

Was ist gegeben?

  • im Shop gibt es einen Standardversand von 5,90
  • einzelne Artikel können jedoch Versandkostenfrei versendet werden
  • einzelne Artikel können individuelle Versandkosten (Sperrgut) haben, Einstellung über Freitextfeld attr4

Was will ich?

Sobald ein Artikel mit attr4 im Warenkorb liegt, soll dieser Wert als Versandkosten angezeigt werden. Egal ob alle anderen Artikel einen Standardversand oder gar Versandkostenfrei sind. Die Versandkosten bei Sperrgut sollen sich nicht auf die Stückzahl beziehen. Sind mehere Artikel mit Sperrgut vorhanden, soll der maximal Wert ermitelt und berechnet werden.

Wie umsetzen?

Natürlich als erstes ein Freitextfeld für Sperrgut (attr4) als Typ Dezimalzahl anlegen, um hier individuelle Preise eingeben zu können. Im Versandkosten-Modul zusätzlich diese Zeile eintragen:

, MAX(at.attr4) AS sperrgut

 

In welches Feld muss ich den Wert im Versandkosten Modul eintragen?

 

Zunächst unter  Einstellungen -> Grundeinstellungen -> Storefront -> Versandkosten-Modul  die „Erweiterte SQL Abfrage“ um das Freitextfeld ergänzen, wie R4M es beschrieben hat.

Danach kannst du den Begriff sperrgut für die eigene Bedingung deiner Versandart nutzen.

LG Andre

Danke für die Anleitung.
Allerdings wird mir, wenn ich einen Wert von z.B. 4,90 (4Komma90) angebe, der im Warenkorb angegebene Wert gerundet (hier auf 5,00).
Wie kann man das unterbinden?

Vielen Dank im Voraus
brandi

keine ahnung. den fall hatte ich noch nicht in meinen 3 shopware shops. bin aber kein programmierer muss ich dazu sagen.