Versandkosten

Hallo zusammen,

manchmal sieht man leider den berühmten Wald vor lauter Bäumen nicht mehr. Eventuell habt ihr eine Idee!

Habe für verschiedene Hersteller bei den Artikel Arttributfelder  - > individuelle Versandkosten hinterlegt.

Bsp.

Hersteller 1 => attr4 = 3.94 €

Hersteller 2 => attr5 = 6.90 €

Hersteller 3 => attr6 = 9.90 €

Hersteller 8 => attr7 = 23.20 €

Bisher, und das kann anderen evtl. auch helfen, habe ich dann folgende Konstellation (1) gehabt:

Wenn Hersteller 8(alle ihm zugeordneten Artikel) unter 119.01 € dann 23,20 € Aufschlag + alle anderen Artikel der Hersteller, die im Warenkorb sind.

Formel, die das prima umsetzt:

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))<119.01,

MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7),

MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6))

 

Nun haben wir einen weiteren Hersteller dazu bekommen mit:

Hersteller 5 => attr8 = 6.00

Neue Konstellation(2):

Wenn Hersteller 8 unter 119.01 € dann 23,20 € Aufschlag , wenn Hersteller 5 unter 100 € dann 6 € Aufschlag + alle anderen Artikel der Hersteller, die im Warenkorb sind.

Diese Formel funktioniert eigentlich prima:

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))<119.01 AND SUM(IF(a.supplierID=5,b.price*b.quantity,0))<100, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7)+MAX(at.attr8),

IF(SUM(IF(a.supplierID=5,b.price*b.quantity,0))<100, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr8),

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))<119.01, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7),

MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)

)

)

)

Das Problem: Mein Else Statement mit MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6) tritt leider nie ein. Immer wenn ich ausschließlich Artikel von Hersteller 1, 2, 3 im Warenkorb habe, kommt 0 € Versandkosten, d.h. ich muss immer mind. einen Artikel von Supplier 5 oder 8 im Warenkorb haben, damit die Formel funktioniert.

Stimmt da was an der Syntax nicht oder warum tritt die Else Bedingung nicht ein? Komme da einfach nicht weiter, hoffe jemand erbarmt sich.

Oder ist das ganze Konstrukt zu sehr von hinten durch die Brust ins Auge? Und anders wäre es viel einfacher lösbar. Jeder Tipp wäre Klasse!

…mmh…irgendwie irre Wearing-Sunglasses, aber so geht es -->

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))<119.01 AND SUM(IF(a.supplierID=5,b.price*b.quantity,0))<100, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7)+MAX(at.attr8),

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))<119.01, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7),

IF(SUM(IF(a.supplierID=5,b.price*b.quantity,0))<100, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr8),

IF(SUM(IF(a.supplierID=8,b.price*b.quantity,0))>119.01, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6),

IF(SUM(IF(a.supplierID=5,b.price*b.quantity,0))>100, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6),

MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6))))))

Hallo!

Ich hab da ein ähnliches Problem, auch schon in einem Beitrag angesprochen, aber noch keine Lösung gefunden:
https://forum.shopware.com/discussion/43928/versandkosten-berechnen-nach-stueck-und-gewicht/p1

Nachdem du da offenbar bei den Berechnungen besser bist als wir: Hast du da einen heißen Tipp für unser Problem?

Vielen Dank
Andreas

sorry, aber ich gebe das auch nochmal zum Besten:

Wenn zwei Hersteller supplier 1 und 36 unter 119 Euro Brutto 23,20(supplier1) und 6,00(supplier36) Versandkosten verlangen und supplier 27 unter 297,50 10,59 Versandkosten verlangt und die Artikel der Hersteller 4, 5, 6 verschiedene Versandkosten haben, dann funtkioniert das hier…man kann das ziemlich exzessiv betreiben, wenn man will ;)))

IF(SUM(IF(a.supplierID=1 OR a.supplierID=36,b.price*b.quantity,0))<119 AND SUM(IF(a.supplierID=27,b.price*b.quantity,0))<297.50, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7)+MAX(at.attr9)+MAX(at.attr10),

IF(SUM(IF(a.supplierID=36,b.price*b.quantity,0))<119 AND SUM(IF(a.supplierID=27,b.price*b.quantity,0))<297.50, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr9)+MAX(at.attr10),

IF(SUM(IF(a.supplierID=1,b.price*b.quantity,0))<119 AND SUM(IF(a.supplierID=27,b.price*b.quantity,0))<297.50, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7)+MAX(at.attr10),

IF(SUM(IF(a.supplierID=1 OR a.supplierID=36,b.price*b.quantity,0))<119, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7)+MAX(at.attr9),

IF(SUM(IF(a.supplierID=36,b.price*b.quantity,0))<119, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr9),

IF(SUM(IF(a.supplierID=1,b.price*b.quantity,0))<119, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr7),

IF(SUM(IF(a.supplierID=27,b.price*b.quantity,0))<297.50, MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6)+MAX(at.attr10),

MAX(at.attr4)+MAX(at.attr5)+MAX(at.attr6))))))))