# Unterschiedliche Versandkosten nach Warengruppen im Warenkorb - Höchster Preis

**URL:** <https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251>\
**Category:** Administration\
**Created:** [3. Januar 2018 um 13:40 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251 "2018-01-03T13:40:14Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kahmoonb](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kahmoonb/32/19231_2.png) [@Kahmoonb](https://forum.shopware.com/u/Kahmoonb)\
**Post date:** [3. Januar 2018 um 13:40 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/1 "2018-01-03T13:40:14Z")

</div>

Hallo zusammen,

im geplanten Shop werden 3 unterschiedliche Warengruppen verkauft, die alle Ihren eigenen Versand haben.

- Felgen (ab 11€ pro Artikel)
- Motorräder (255€ Spedition pro Artikel)
- MTB Zubehör (4,95€ pauschal)

&nbsp;

Ich habe hier jetzt 3 Versandarten (Typ Standard) angelegt und über Kategorieausschluß eingestellt was am Ende im Warenkorb angezeigt wird. Das klappt soweit ganz gut. Wenn jetzt aber ein MTB Artikel und eine Felge im Warenkorb ist, wird Versand 4,95 angezeigt.

Wo sage ich denn das immer die höchsten Versandkosten verwendet werden sollen? Habe ich in den Grundeinstellungen etwas übersehen oder ist der Lösungsansatz falsch?

&nbsp;

VG  
Frank

---

<div class="post-metadata">

**Author:** ![NLukowski](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@NLukowski](https://forum.shopware.com/u/NLukowski)\
**Post date:** [3. Januar 2018 um 14:02 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/2 "2018-01-03T14:02:07Z")

</div>

Über den Kategorieausschluss ist dies nicht umzusetzen, allerdings kannst du es mit den individuellen Versandkosten lösen.  
Hier wäre es sinnvoll für die verschiedenen Artikeltypen Freitextfelder zu erstellen vom Typ Checkbox also eines für Zubehör, Motorrad und Felden.  
Damit mit der Aufwand nicht so hoch ist kannst du die Mehrfachänderung nutzen um die Freitextfelder für die Artikel mit Werten zu befüllen.  
Für die verschiedenen Kategorien setzt du beim passenden Boolean-Feld den Wert 1 bzw. true.  
Im Anschluss kannst du dann die von dir gewünschte Bedingung festlegen.&nbsp;

Am besten schaust du dir einmal folgende Doku-Artikel an:

> **[Shopware Dokumentation](https://docs.shopware.com/de)**

[http://community.shopware.com/Mehrfachänderung-Multi-Edit\_detail\_1401.html](http://community.shopware.com/Mehrfach%C3%A4nderung-Multi-Edit_detail_1401.html)

---

<div class="post-metadata">

**Author:** ![Kahmoonb](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kahmoonb/32/19231_2.png) [@Kahmoonb](https://forum.shopware.com/u/Kahmoonb)\
**Post date:** [3. Januar 2018 um 15:12 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/3 "2018-01-03T15:12:29Z")

</div>

OK, den ersten Schritt habe ich hinbekommen. Danke

Drei Freitextfelder im Artikel angelegt und alle Werte via Mehrfachbearbeitung zugewiesen

- Attr20 Motorräder
- Attr19 Felgen
- Attr18 Normale Artikel

&nbsp;

Aber bei der Anleitung für die individuellen Versandkosten steige ich nicht ganz durch. Dort werden SQL Abfragen angegeben. Aber wo gebe ich das SQL bei den Versandkosten an? Bei eigene Bedingung erzeugt das einen Fehler im Frontend.

&nbsp;

**Edit:**

Also ich bin der Sache ein wenig näher gekommen. Ich weiss jetzt wo das SQL rein muss und wo ich die Abfrage mache. So kann ich schon mal die Versandart für die jeweiligen Freitextfelder zuweisen/abfragen.

```
MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, Min(attr18='1') as artikel_sonstiges, Min(attr19='1') as artikel_felge, Min(attr20='1') as artikel_motorrad

```

Sprich in den Versandkosten für Felgen frage ich ab: Eigene Bedingung: artikel\_felge

&nbsp;

Das mit dem Mischkorb schaffe ich aber trotzdem noch nicht.Laut der Doku soll es dann ja möglich sein das beide Versandkosten aufgeführt werden. Muss ich dann hierfür extra Aufschlagversandkosten anlegen die mit einer Bedingung greifen?

VG

---

<div class="post-metadata">

**Author:** ![Kahmoonb](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kahmoonb/32/19231_2.png) [@Kahmoonb](https://forum.shopware.com/u/Kahmoonb)\
**Post date:** [4. Januar 2018 um 23:43 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/4 "2018-01-04T23:43:14Z")

</div>

Ich muss hier leider noch mal nachfragen…ich komme nicht weiter. Im Beispiel für Mischkörbe wird nur mit einem Attribut gearbeitet. Wie kann ich denn einen Mischkorb mit 3 Attributen abfragen?

&nbsp;

**Standard**

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

```

**&nbsp;Angepasst**

```
MAX(a.topseller) as has_topseller, MAX(at.attr3) as has_comment, MAX(b.esdarticle) as has_esd, Min(attr18='1') as artikel_sonstiges, Min(attr19='1') as artikel_felge, Min(attr20='1') as artikel_motorrad, MAX(attr20='1') as mischkorb

```

&nbsp;

Und sehe ich das richtig. sobald diese Abfrage passt, muss ich Aufschlagversandarten/Kombinationen anlegen die auf die Werte abfragen?

&nbsp;

VG  
Frank

---

<div class="post-metadata">

**Author:** ![Kahmoonb](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kahmoonb/32/19231_2.png) [@Kahmoonb](https://forum.shopware.com/u/Kahmoonb)\
**Post date:** [5. Januar 2018 um 02:09 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/5 "2018-01-05T02:09:48Z")

</div>

So…2,5 Stunden Try & Error sind vergangen…ohne Ergebnis. Ich kotze… 😃 ![Gasp](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/11de454286d9e6eb62eece226c8fe8ae7ec6b1be.png "Gasp") ![Thumb-down](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/08ee70594855dd44287b011742fe7f1252e05ce0.png "Thumb-down")

Ich glaube inzwischen das dieser Part hier für mich relevant ist, denn ich brauche ja die Anzahl der Artikel mit einem bestimmten Attribut und muss dann \* Versandkosten rechnen [http://community.shopware.com/Individuelle-Versandkosten-Bedingungen-und-Berechnungen\_detail\_1933.html?\_ga=2.212645908.1854534694.1514809267-578159177.1512496585#Vergleichen\_der\_Artikelanzahl\_im\_Warenkorb\_mit\_Artikeln\_mit\_bestimmten\_Attributen](http://community.shopware.com/Individuelle-Versandkosten-Bedingungen-und-Berechnungen%5C_detail%5C_1933.html?%5C_ga=2.212645908.1854534694.1514809267-578159177.1512496585#Vergleichen%5C_der%5C_Artikelanzahl%5C_im%5C_Warenkorb%5C_mit%5C_Artikeln%5C_mit%5C_bestimmten%5C_Attributen)

Allerdings verstehe ich die Anleitung einfach nicht…ich bin eigentlich nicht doof was sowas betrifft aber das macht irgendwie keinen Sinn.

&nbsp;

Ich habe diese Query in den Grundeinstellungen laut Anleitung (Abfrage auf Freitextfeld)

```
COUNT(a.id) as item_count, MAX(at.attr18='1') as lager1, MAX(at.attr18='2') as lager2

```

Kann mir mal jemand bitte diese Query erklären???

&nbsp;

Und unterhalb steht:

> Eine mögliche Berechnung der Versandkosten könnte dann lauten:
> 
> _// Alle Artikel besitzen lager1_ IF(item\_count=lager1,1,0) &nbsp; _// Alle Artikel besitzen lager1 oder lager2_ IF(item\_count=(lager1+lager2),1,0)

Wo bitte trage ich dieses IF ein? Doch eigentlich bei „Eigene Bedingung“…nur wie bekomme ich dann den Wert der Anzahl Artikel lagerX in die Berechnung darunter? Für was stehen die Werte 1 und 0 nach lagerX? Und wieso wird lager2 auf den Wert 2 geprüft?

@NLukowski‍&nbsp; kannst du mir noch mal weiterhelfen?

&nbsp;

Vg

Frank

---

<div class="post-metadata">

**Author:** ![Kahmoonb](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/kahmoonb/32/19231_2.png) [@Kahmoonb](https://forum.shopware.com/u/Kahmoonb)\
**Post date:** [5. Januar 2018 um 09:28 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/6 "2018-01-05T09:28:25Z")

</div>

Also…heute früh hatte ich eine Eingebung :D. Vielleicht helfen meine Selbstgespräche jemand mit dem selben Problem.

Artikel haben drei Attribute (siehe oben)

**Versandarten**

- Versandart Standardversand Basis (Kosten 0€)
- Versandart Aufschlag für normale Artikel (4,95 € pauschal)
- Versandart Aufschlag für Felgen mit eigener Berechnung SUM(IF(at.attr19=‘1’,&nbsp; b.quantity\*11,0)
- Versandart Aufschlag für Motorräder mit eigener Berechnung SUM(IF(at.attr20=‘1’,&nbsp; b.quantity\*270,0)

Bei den letzten beiden Versandartarten werden die Versandkosten mal Artikelanzahl genommen.

Wird jetzt in Mischkörben die Anzahl eines Artikels geändert, werden die Versandkosten korrekt nach der Warengruppe dazugerechnet. Bisher wurde immer die Gesamtzahl der Artikel im Warenkorb herangezogen und hat für falsche Besträge gesorgt, was natürlich Quatsch ist.

VG Frank

---

<div class="post-metadata">

**Author:** ![NLukowski](https://avatars.discourse-cdn.com/v4/letter/n/b5a626/32.png) [@NLukowski](https://forum.shopware.com/u/NLukowski)\
**Post date:** [5. Januar 2018 um 09:52 UTC](https://forum.shopware.com/t/unterschiedliche-versandkosten-nach-warengruppen-im-warenkorb-hochster-preis/50251/7 "2018-01-05T09:52:07Z")

</div>

**Kommen wir erst einmal zu den SQL-Abfragen:**

COUNT(a.id) as item\_count&nbsp; &nbsp;&nbsp; **← Hier zählst du die Anzahl der Artikel und setzt Sie in die Variable „item\_count“.**

MAX(at.attr18=‚1‘) as lager1&nbsp; &nbsp; **← Hier speicherst du den maximalen Wert in der Variable „lager1“, welcher in Attribut18 steht, wenn der Wert „1“ beträgt.**

MAX(at.attr18=‚2‘) as lager2&nbsp; &nbsp; **←&nbsp;Hier speicherst du den maximalen Wert in der Variable „lager2“, welcher in Attribut18 steht, wenn der Wert „2“ beträgt.**

Diese Abfrage an sich würde für den im ersten Beitrag beschriebenen Fall allerdings nicht viel Sinn machen,  
da du ja drei Kategorien hast und du aus diesem Grund schauen möchtest aus welcher Kategorie ein Artikel enthalten ist.&nbsp;  
Also nutzen wir als Freitextfeld für die Artikel am besten ein Boolean, weil es ja nur 2 Fälle gibt, entweder er ist in der Kategorie also „true/1“ oder nicht „false/0“.

> **Boolean-Freitextfelder**  
> Bitte beachten Sie, dass sich die Abfrage verändern kann, je nachdem welche Shopware-Version eingesetzt wird. In den aktuellen 5.2 Versionen entspricht true =„1“ und false =„0“, in älteren Versionen kann es nötig sein direkt nach =„true“ oder =„false“ abzufragen.

**Also müsste deine Abfrage circa so aussehen:**

```
MAX(at.attr1="1") as felgen, MAX(at.attr2="1") as motorraeder, MAX(at.attr3="1") as zubehoer

```

**Nachdem du mit diesen SQL-Abfragen die benötigten Variablen ermittelt hast kannst du die nun für deine Bedigung nutzen in Form eines IF.&nbsp;**

> **IF(Bedingung,Ja,Nein) -\>** Eine einfache Wenn-Dann-Sonst-Verzweigung, z.B. IF(d.weight\>5,1,0) Wenn das Gewicht größer als 5 ist wird eine 1 zurückgegeben ansonsten eine 0.

Jetzt liegt es natürlich an dir, wie deine Bedigung aussehen soll. Ohne zu wissen, was bei welchem Fall eintreten soll, kann man hier nicht wirklich sagen wie die Bedingung bei dir aussehen muss.&nbsp;
