# Individuelle Versandkostenberechnung: Eigene Bedingung verhält sich merkwürdig

**URL:** <https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736>\
**Category:** Sonstiges\
**Created:** [5. Juli 2017 um 17:52 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736 "2017-07-05T17:52:41Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gizmodo](https://avatars.discourse-cdn.com/v4/letter/g/b3f665/32.png) [@Gizmodo](https://forum.shopware.com/u/Gizmodo)\
**Post date:** [5. Juli 2017 um 17:52 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/1 "2017-07-05T17:52:41Z")

</div>

Moin

In dem Versandkosten-Modul habe ich als erweiterte SQL-Abfrage folgendes stehen:

_MAX(d.length) AS max\_length, MAX(d.width) AS max\_width, MAX(d.height) AS max\_height, SUM(d.weight\*b.quantity) AS total\_weight_

&nbsp;

Als eigene Bedingung damit ein Versandart zur Auswahl steht, habe ich zu Testzwecken folgendes eingetragen:

_IF(max\_length=200 AND max\_height=80,1,0)_

&nbsp;

Mein Artikel den ich in meinem Warenkorb habe, hat genau diese Maße! Deswegen wird hier 1 bzw. true zurückgegeben bzw. die Versandart steht dem Kunden zur Verfügung. So weit so gut!

&nbsp;

Nun hab ich die Bedingung noch wie folgt ergänzt:

_IF(max\_length=200 AND max\_height=80 AND max\_length\>max\_height,1,0)_

&nbsp;

Ich würde nun erwarten, dass die Versandart immer noch zur Verfügung stehen sollte. Tut sie aber nicht! Die Bedingung ist aber eindeutigerweise T R U E oder hab ich irgendwas übersehen??

&nbsp;

Gruß

Martin

---

<div class="post-metadata">

**Author:** ![Gizmodo](https://avatars.discourse-cdn.com/v4/letter/g/b3f665/32.png) [@Gizmodo](https://forum.shopware.com/u/Gizmodo)\
**Post date:** [10. Juli 2017 um 10:19 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/2 "2017-07-10T10:19:04Z")

</div>

Hat keiner ne idee warum&nbsp;\_IF(max\_length\>max\_height,1,0)&nbsp;\_in shopware false zurückgibt, obwohl die Artikel-Länge mit 200 und die Artikel-Höhe mit 80 angegeben sind?

Das scheint mir ein schwerwiegender Fehler zu sein, der es mir grade wirklich schwer macht individuelle Berechnungen für&nbsp;Versandarten festzulegen…

Bin über jede Hilfe dankbar!

---

<div class="post-metadata">

**Author:** ![MSatler](https://avatars.discourse-cdn.com/v4/letter/m/e79b87/32.png) [@MSatler](https://forum.shopware.com/u/MSatler)\
**Post date:** [10. Juli 2017 um 10:55 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/3 "2017-07-10T10:55:21Z")

</div>

Hi,

vielleicht liegt es daran?

> Ab Shopware 4 gilt zu beachten, dass ein Boolean Feld nicht 0 oder 1 liefert sondern true oder false.

Quelle:

[http://community.shopware.com/Individuelle-Versandkosten-Bedingungen-und-Berechnungen\_detail\_1933.html](http://community.shopware.com/Individuelle-Versandkosten-Bedingungen-und-Berechnungen%5C_detail%5C_1933.html)

---

<div class="post-metadata">

**Author:** ![Gizmodo](https://avatars.discourse-cdn.com/v4/letter/g/b3f665/32.png) [@Gizmodo](https://forum.shopware.com/u/Gizmodo)\
**Post date:** [10. Juli 2017 um 11:17 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/4 "2017-07-10T11:17:56Z")

</div>

leider nicht!

Um zu prüfen wie sich das System verhält habe ich nur 1 und true eingegeben, mit dem Ergebnis, dass die Versandart mit true als auch mit 1 als aktiv gilt, während false und 0 Beide dazu führten, dass die Versandart nicht aktiv ist. Also so wie erwartet.

Ich habe&nbsp;_IF(max\_length\>max\_height,true,false)_ probiert und&nbsp;\_IF(max\_length\>max\_height,1,0)&nbsp;\_sowie nur&nbsp;_max\_length\>max\_height_&nbsp;mit dem Ergebnis, dass die Versandart nicht zur Verfügung steht. Benutze ich nun den gegenteiligen Operator mit&nbsp;_max\_length\<max\_height\> steht die Versandart zur Verfügung.\</max\_height\>_

Selbst mit&nbsp;_IF(max\_length=200 AND max\_height=80 AND max\_length\<max\_height\> steht sie zur Verfügung! Das macht überhaupt keinen Sinn!!\</max\_height\>_

&nbsp;

Kann sich das mal bitte jemand von shopware anschauen? Das muss ja ein schwerwiegender Fehler im System sein!

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [10. Juli 2017 um 11:46 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/5 "2017-07-10T11:46:30Z")

</div>

Das IF brauchst du eigentlich nicht bei der eigenen Bedingung. Ich habe jetzt einfach “max\_length\>max\_height” in das Feld geschrieben und das läuft fehlerfrei. Sobald die Länge größer wird als die Höhe, sperrt er die Versandart.

Generell ist das hier ein Community Forum, d.h. du hilfst anderen und andere helfen dir. Wenn du gerne eine Antwort von Shopware willst, musst du dich über einen aktiven Wartungsvertrag bei unserem Support melden.

---

<div class="post-metadata">

**Author:** ![Gizmodo](https://avatars.discourse-cdn.com/v4/letter/g/b3f665/32.png) [@Gizmodo](https://forum.shopware.com/u/Gizmodo)\
**Post date:** [10. Juli 2017 um 11:54 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/6 "2017-07-10T11:54:43Z")

</div>

Das scheint wirklich ein Fehler von Shopware zu sein!

Vergleicht man 2 Stellige Maße miteinander z.B. Höhe 80 und Länge 90 stimmte die Bedingung&nbsp;\_max\_length\>max\_height &nbsp;--\>&nbsp;\_Ergebnis ist wie erwartet true

Vergleicht man nun aber einen 2 Stelligen Wert mit einem 3 Stelligen Wert, z.B. Höhe 80 und&nbsp;Länge 100 gibt die selbe Bedingung false zurück!

&nbsp;

Hab dazu nun ein Ticket erstellt:&nbsp;[Shopware Issuetracker](https://issues.shopware.com/issues/SW-19252)

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [10. Juli 2017 um 12:41 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/7 "2017-07-10T12:41:45Z")

</div>

Das ist ja eine Standard WHERE-Abfrage in MySQL. Das sind in der Datenbank beides Varchar-Felder. Der Vergleich ist halt ein Textvergleich, also erstmal Standardverhalten von MySQL. Wenn du einen Zahlenwert vergleichen willst, müsstest du also erstmal „Zahlen“ daraus machen. Könnte so funktionieren:

CAST(max\_length AS SIGNED)\>CAST(max\_height AS SIGNED)

---

<div class="post-metadata">

**Author:** ![Gizmodo](https://avatars.discourse-cdn.com/v4/letter/g/b3f665/32.png) [@Gizmodo](https://forum.shopware.com/u/Gizmodo)\
**Post date:** [11. Juli 2017 um 15:35 UTC](https://forum.shopware.com/t/individuelle-versandkostenberechnung-eigene-bedingung-verhalt-sich-merkwurdig/46736/8 "2017-07-11T15:35:08Z")

</div>

Ja vielen Dank! Daran scheints gelegen zu haben.  
Mich wundert nur, dass sich der selbe/ähnliche Vergleich in dem Feld “Eigene Berechnung” anders zu verhalten scheint:  
Die Bedingung _IF(MAX(d.length)\>MAX(d.height),1,0)_ gibt da mit dem selben Produkt 1 zurück. Dort kann man also die MAX-Werte problemlos vergleichen.&nbsp;  
Ne Idee woran das liegt?

Schade finde ich auch, dass man dann als Erweiterte SQL-Abfrage nicht folgendes schreiben kann:  
_CAST(MAX(d.length)AS SIGNED) AS max\_length, CAST(MAX(d.width)AS SIGNED) AS max\_width, CAST(MAX(d.height)AS SIGNED) AS max\_height_  
Um damit dann den Vergleich durchführen zu können: _max\_length\>max\_height_  
Das scheint nicht zu funktionieren. Woran liegt das?

Ich finde dass auf solche Fälle mit dem Casting in der Doku hinweisen werden sollte! Die Beschreibung zu den Bedingungen finde ich sowieso ein wenig dürftig.  
Aktuell steht da auch nur eine begrenzte Anzahl an Befehlen drin “Benötigte Befehle”, die benutzt werden können. Dass man sämtliche SQL Befehle benutzen kann wird dort nicht wirklich kommuniziert finde ich. Und aussagekräftigere Beispiele wären wünschenswert 🙂
