← Alle Themen · Einstellungen
In diesem Artikel 6 Kapitel
Deckungsbeitrag · Formeln
Auf der Seite Einstellungen → Deckungsbeitrag finden Sie im Tab Formeln die Berechnungsformeln, mit denen der Deckungsbeitrag pro Auftrag ermittelt wird (siehe Aufträge → Deckungsbeitrag).
Die Formeln werden in Twig geschrieben → der gleichen Template-Sprache, die Sie schon aus den Ticket-Vorlagen kennen (CRM → Tickets · Vorlagen). Sie können verschachtelte if/else-Bedingungen schreiben, Werte aus den Kennzahlen referenzieren und die Auftragsdaten direkt verwenden.
Liste der Formeln
Die Tabelle zeigt alle hinterlegten Formeln mit Mandant, Markt, Beschreibung und Gültigkeitsbereich. Pro Zeile können Sie:
- Stift → Formel bearbeiten
- Papierkorb → Formel löschen (Sicherheitsabfrage)
Formel anlegen / bearbeiten
Klicken Sie auf + Neue Formel oder das Stift-Symbol einer bestehenden Zeile. Ein großes Fenster öffnet sich. Links der Editor, rechts die Hilfe-Sidebar mit allen verfügbaren Variablen und KPIs.
Eingabefelder
| Feld | Beschreibung | Werte-Herkunft |
|---|---|---|
| Mandant | global (gilt für alle) oder ein konkreter Mandant | Mandanten |
| Markt | alle (gilt für alle) oder ein konkreter Marktplatz | Anbindungen |
| Gültig von / bis | Datumsbereich, in dem die Formel angewendet werden soll | Datumsauswahl |
| Beschreibung | Klartext zur Wiedererkennung (z.B. „Standardformel ohne Peak") | Freitext |
| Formel (Twig) | Der eigentliche Formelcode → siehe unten | Code |
Auswahl der passenden Formel
Pro Auftrag wird die spezifischste Formel ausgewählt, die zum Erstelldatum des Auftrags gültig ist:
- Mandant + Markt + Datum (höchste Priorität)
- Mandant + Datum
- Markt + Datum
- Global + Datum
Existiert keine passende Formel, wird der Auftrag in der Auswertung mit einem Fehler-Badge markiert.
Verfügbare Variablen
Diese Variablen stehen in jeder Formel zur Verfügung → konkret befüllt aus dem Auftrag, der berechnet wird:
Verkaufs- und Einkaufspreise
| Variable | Typ | Beschreibung |
|---|---|---|
vknetto | Zahl (€) | Verkaufspreis netto nach Abzug von Gutschriften |
vkbrutto | Zahl (€) | Verkaufspreis brutto nach Abzug von Gutschriften |
ektotal | Zahl (€) | Einkaufspreis-Summe nach Abzug von Retouren |
vknetto_original | Zahl (€) | Ursprünglicher VK Netto vor Gutschriften |
vkbrutto_original | Zahl (€) | Ursprünglicher VK Brutto vor Gutschriften |
ektotal_original | Zahl (€) | Ursprünglicher EK vor Retouren |
gutschrift_netto | Zahl (€) | Summe der erteilten Gutschriften (Netto) |
gutschrift_brutto | Zahl (€) | Summe der erteilten Gutschriften (Brutto) |
retoure_ek | Zahl (€) | Anteilige EK-Summe aller retournierten Positionen |
Auftragsdaten
| Variable | Typ | Beschreibung |
|---|---|---|
existiert_retoure | Bool | true, wenn mindestens eine Retoure existiert |
existiert_gutschrift | Bool | true, wenn mindestens eine Gutschrift existiert |
versanddienstleister | String | Carrier der ersten Sendung (z.B. DHL, DPD) |
versanddatum | Unix-Timestamp | Datum der ersten Sendung |
versandgewicht_g | Zahl (Gramm) | Gewicht der ersten Sendung in Gramm |
erstelldatum | Unix-Timestamp | Auftrags-Erstelldatum |
marktplatz | String | Herkunft (z.B. amazon, ebay) → siehe Anbindungen |
mandant | Zahl (ID) | Mandanten-ID → siehe Mandanten |
mandant_name | String | Mandantenname |
lieferland | String (ISO-2) | Empfänger-Land aus der Versandadresse, z.B. DE, AT, FR. Leer wenn keine Versandadresse vorhanden. |
Positionen
positionen ist eine Liste mit allen Auftragspositionen. Pro Position:
| Schlüssel | Beschreibung |
|---|---|
sku | SKU |
name | Artikelname |
qty | Menge |
vknetto | Positions-Summe Netto |
vkbrutto | Positions-Summe Brutto |
ek | Positions-Summe EK |
ek_unit | EK pro Einheit |
preis_unit | Stückpreis Netto |
Verwendung in Twig:
{% set einzelposten = 0 %}
{% for p in positionen %}
{% set einzelposten = einzelposten + p.qty * 0.05 %}
{% endfor %}
{{ vknetto - ektotal - einzelposten }}
Kennzahlen
Jede in Einstellungen → Deckungsbeitrag · Kennzahlen hinterlegte Kennzahl steht unter ihrem key als Top-Level-Variable zur Verfügung. Beispiel: ein KPI mit Key peakzuschlag und Wert 0.30 ist in der Formel als peakzuschlag (= 0.30) verfügbar.
Hinweis zum Typ: Prozent-KPIs werden automatisch durch 100 geteilt, bevor sie in den Twig-Kontext gelangen. Ein KPI mit Typ percent und Wert 15 wird als 0.15 injiziert → damit lässt sich direkt multiplizieren (z.B. vknetto * marketgebuehr).
Twig-Syntax
Bedingungen
{% if vknetto <= 10 %}
{{ vknetto * 0.5 - ektotal }}
{% elseif vknetto <= 50 %}
{{ vknetto * 0.6 - ektotal - peakzuschlag }}
{% else %}
{{ vknetto * 0.7 - ektotal - peakzuschlag * 1.5 }}
{% endif %}
Boolesche Auftragsdaten nutzen
{% if existiert_retoure and existiert_gutschrift %}
{{ vknetto - ektotal - retourenlabel }}
{% elseif existiert_retoure %}
{{ vknetto_original - ektotal - retourenlabel * 0.5 }}
{% else %}
{{ vknetto - ektotal }}
{% endif %}
Zugriff auf einzelne Positionen
{{ vknetto - ektotal - positionen|length * verpackung }}
(verpackung ist hier ein vom Anwender hinterlegter KPI → z.B. 0,15 € pro Position.)
Erlaubte Filter
abs, round, default, first, last, length, number_format, min, max, slice, join, split, upper, lower, date
Erlaubte Funktionen
range, min, max
Sicherheitshinweis: Die Twig-Sandbox erlaubt keine Datei-, Datenbank- oder Funktionsaufrufe außerhalb der oben gelisteten Filter/Funktionen. Sie können nur mit den bereitgestellten Variablen rechnen.
Sandbox-Test
Im unteren Bereich des Bearbeitungsdialogs befindet sich ein Sandbox-Test:
- Geben Sie eine echte Auftrags-ID ein.
- Klicken Sie auf Ausführen.
- Sie sehen:
- Das berechnete Ergebnis in Euro
- Den rohen Render-Output der Formel (vor Zahlenkonvertierung)
- Alle Kontext-Variablen mit konkreten Werten für diesen Auftrag
- Alle aktiven KPIs mit Quelle (global / Mandant / Markt)
So können Sie Formeln vor dem Speichern in Ruhe gegen reale Daten prüfen.
Empfehlungen
- Schreiben Sie immer eine globale Default-Formel (Mandant + Markt = global), damit kein Auftrag ohne Formel bleibt.
- Halten Sie Mandanten- oder Markt-spezifische Formeln knapp → sie überschreiben die globale Formel komplett.
- Versionieren Sie über Gültigkeitsbereiche. Wenn sich die Kalkulationslogik ändert, legen Sie eine neue Formel mit
Gültig von = morgenan und setzen bei der altenGültig bis = heute. So bleibt die historische Berechnung nachvollziehbar. - Bei verschachtelten Bedingungen lohnt es sich, eine Beschreibung wie „v3 → ab 2026-06 mit Peak" zu hinterlegen, damit Sie später wissen, was der Zweck der Formel war.