Zum Hauptinhalt springen

Formel-Beispiele

Fertige Vorlagen zum Kopieren. Jede Formel muss eine Zahl ergeben – das Ergebnis sind die Versandkosten in der aktiven Währung. Welche Daten dir zur Verfügung stehen, zeigt die Seite Verfügbare Variablen.

Grundlagen​

Fester Versandpreis​

4.90

Kostenloser Versand​

0

Rechnen in der Formel​

Innerhalb von {{ … }} kannst du frei rechnen:

{{ 3.90 + 1.50 }}

Ergebnis: 5.40

Warenkorbwert und versandkostenfrei​

Versandkostenfrei ab 100 Euro​

{{ cart.price.totalPrice >= 100 ? 0 : 4.90 }}
  • Warenkorb 79,90 € → Versandkosten 4.90
  • Warenkorb 129,00 € → Versandkosten 0

Versandkostenfrei ab 50 Euro netto​

{{ cart.price.netPrice >= 50 ? 0 : 4.90 }}

Prozentual vom Warenkorbwert​

2 % der Warenkorbsumme:

{{ cart.price.totalPrice * 0.02 }}

Prozentual mit Mindestbetrag​

max wählt den größeren Wert – die Versandkosten fallen nie unter 3.90:

{{ max(3.90, cart.price.totalPrice * 0.02) }}

Prozentual mit Obergrenze​

min wählt den kleineren Wert – die Versandkosten steigen nie über 19.90:

{{ min(19.90, cart.price.totalPrice * 0.05) }}

Staffel nach Warenkorbwert​

{% if cart.price.totalPrice >= 200 %}
0
{% elseif cart.price.totalPrice >= 100 %}
2.90
{% else %}
5.90
{% endif %}

Gewicht​

positions.weight liefert das Gesamtgewicht der Lieferung in Kilogramm – Gewicht je Stück mal bestellte Menge, über alle Artikel summiert.

Preis pro Kilogramm​

{{ positions.weight * 0.80 }}

Grundpreis plus Kilopreis​

{{ 3.90 + positions.weight * 0.50 }}
  • 4 kg → 3.90 + 2.00 = 5.90
  • 20 kg → 3.90 + 10.00 = 13.90

Gewichtsstaffel​

{% if positions.weight <= 5 %}
4.90
{% elseif positions.weight <= 20 %}
9.90
{% else %}
19.90
{% endif %}

Leichte Sendungen versandkostenfrei​

Bis 2 kg kostenlos, darüber 4.90:

{{ positions.weight <= 2 ? 0 : 4.90 }}

Preis pro angefangene 10 Kilogramm​

round mit 'ceil' rundet immer auf – je angefangene 10 kg werden 5.00 berechnet:

{{ (positions.weight / 10) | round(0, 'ceil') * 5 }}
  • 8 kg → 1 Einheit → 5.00
  • 23 kg → 3 Einheiten → 15.00

Sperrgut-Zuschlag als Teilformel​

Teilformeln werden addiert. Lege den Grundpreis als erste Teilformel an (z. B. 4.90) und den Zuschlag als zweite – er greift nur über 31.5 kg:

{{ positions.weight > 31.5 ? 12.50 : 0 }}

Nur Artikel ohne „Versandkostenfrei"-Häkchen wiegen​

Artikel, bei denen am Produkt „Versandkostenfrei" angehakt ist, sollen nicht mitzählen:

{{ (positions.lineItems
| filter(item => not (item.deliveryInformation.freeDelivery ?? false))
| map(item => (item.deliveryInformation.weight ?? 0) * item.quantity)
| reduce((summe, gewicht) => summe + gewicht, 0)) * 0.80 }}

Maße: Länge, Breite, Höhe​

Die Maße kommen aus den Produkt-Stammdaten und werden in Millimetern geliefert. Mit ?? 0 fängst du Artikel ohne gepflegte Maße ab.

hinweis

Alle Beispiele schließen ihre filter-/map-Ketten bewusst in einem Zug ab und wenden max() nur auf map-Ergebnisse an. Warum das wichtig ist, erklärt der Abschnitt „Das Ergebnis von filter nur einmal verwenden".

Zuschlag ab einer bestimmten Länge​

Ist der längste Artikel länger als 1200 mm, kommen 15.00 hinzu (als Teilformel zum Grundpreis):

{{ max(positions.lineItems | map(item => item.deliveryInformation.length ?? 0)) > 1200 ? 15 : 0 }}

Staffel nach dem längsten Artikel​

{% set laenge = max(positions.lineItems | map(item => item.deliveryInformation.length ?? 0)) %}
{% if laenge > 2000 %}
39.90
{% elseif laenge > 1200 %}
19.90
{% else %}
5.90
{% endif %}

Gurtmaß (Länge plus Umfang)​

Viele Paketdienste rechnen mit dem Gurtmaß: Länge + 2 × Breite + 2 × Höhe. Über 3000 mm wird es teurer:

{% set gurtmass = max(positions.lineItems | map(item =>
(item.deliveryInformation.length ?? 0)
+ 2 * (item.deliveryInformation.width ?? 0)
+ 2 * (item.deliveryInformation.height ?? 0)
)) %}
{{ gurtmass > 3000 ? 24.90 : 6.90 }}

Preis nach Volumen​

positions.volume liefert das Gesamtvolumen in mm³. Geteilt durch 1000000000 ergibt Kubikmeter – ab einem halben Kubikmeter gilt der Speditionspreis:

{{ positions.volume / 1000000000 > 0.5 ? 29.90 : 9.90 }}

Menge und Positionen​

Preis pro Stück​

{{ positions.quantity * 0.99 }}

Preis pro Stück mit Obergrenze​

{{ min(9.90, positions.quantity * 0.99) }}

Ab 5 Stück versandkostenfrei​

{{ positions.quantity >= 5 ? 0 : 3.90 }}

Preis pro Position​

1.50 je unterschiedlichem Artikel im Warenkorb (unabhängig von der Menge):

{{ (positions.lineItems | length) * 1.50 }}

Preis pro Paket​

Passen 10 Stück in ein Paket, kostet jedes angefangene Paket 3.90:

{{ (positions.quantity / 10) | round(0, 'ceil') * 3.90 }}

Land, Postleitzahl und Währung​

hinweis

Für Länderpreise sind meist die „Regelbasierten Formeln" mit Rule-Builder-Regeln (z. B. „Lieferland ist Schweiz") die übersichtlichere Wahl – die folgenden Varianten zeigen den Weg direkt in der Formel.

Auslandszuschlag für ein Land​

{{ delivery.location.country.iso == 'CH' ? 14.90 : 5.90 }}

Mehrere Länder unterscheiden​

{% if delivery.location.country.iso in ['AT', 'CH'] %}
12.90
{% else %}
5.90
{% endif %}

Inselzuschlag nach Postleitzahl​

Als Teilformel zum Grundpreis – hier für Sylt (PLZ 25980). Der Ersatzwert ?? '' greift, solange noch keine Lieferadresse bekannt ist:

{{ (delivery.location.address.zipcode ?? '') starts with '25980' ? 25 : 0 }}

Preis in anderen Währungen umrechnen​

Das Formel-Ergebnis gilt in der aktiven Währung. Ein Euro-Preis, der in jeder Währung stimmt:

{{ 4.90 * currency.factor }}

Kunde und Kundengruppe​

Händler versenden kostenfrei​

Am wartungsärmsten löst du das über eine regelbasierte Formel mit einer Kundengruppen-Regel. Direkt in der Formel geht es so:

{{ customerGroup.translated.name == 'Händler' ? 0 : 4.90 }}

Preis für nicht eingeloggte Kunden​

customer ist leer, solange niemand eingeloggt ist:

{{ customer ? 4.90 : 5.90 }}

Zusammenspiel: Regeln und Teilformeln​

Szenario: versandkostenfrei ab 100 Euro, aber nur in Deutschland​

Ganz ohne Wenn-dann-Formeln, nur mit der Reihenfolge der Regeln:

  1. Regel 1 – Rule-Builder-Regel „Warenkorb ab 100 € und Lieferland Deutschland", Teilformel: 0
  2. „Standard-Formel (Fallback)": 5.90

Die erste zutreffende Regel gewinnt: Deutsche Bestellungen ab 100 € versenden kostenfrei, alle anderen zahlen 5.90.

Szenario: Baukasten aus Teilformeln​

Eine Regel mit drei Teilformeln – die Ergebnisse werden addiert:

  1. Grundpreis: 3.90
  2. Gewichtszuschlag: {{ positions.weight > 20 ? 9.00 : 0 }}
  3. Inselzuschlag: {{ (delivery.location.address.zipcode ?? '') starts with '25980' ? 25 : 0 }}

Eine 25-kg-Bestellung nach Sylt kostet damit 3.90 + 9.00 + 25.00 = 37.90 Versand.