Versandkosten-Einstellungen¶
Jede Versandmethode (OrderAndItemCharges) kann mehrere Preis-Komponenten
kombinieren. Alle Beträge sind Brutto (inkl. MwSt.).
Schwellwerte¶
| Feld | Typ | Bedeutung |
|---|---|---|
minimum_order_value |
Decimal | Warenkorb muss ≥ diesen Wert haben. Sonst ist die Versandmethode nicht verfügbar. |
free_shipping_threshold |
Decimal | Warenkorb ≥ diesen Wert → alle Zuschläge entfallen. None = deaktiviert. |
small_order_threshold |
Decimal | Schwellwert für den warenwertabhängigen Zuschlag. Vergleicht mit Warenwert ohne Pfand. None = deaktiviert. |
Preis-Komponenten¶
Jede Komponente hat drei Felder: Betrag, Anzeigename (Label im Checkout) und Artikelnummer (für WaWi-Export). Leere Anzeigenamen/Referenzen fallen auf Defaults zurück.
| Komponente | Berechnung | Aktiv wenn |
|---|---|---|
price_per_order |
Pauschal pro Bestellung | Betrag > 0 |
price_per_item |
× Anzahl Artikel | Betrag > 0 |
price_per_box |
× Anzahl Kisten (product.has_box) |
Betrag > 0 |
price_per_floor |
× Etagendifferenz (|Stockwerk|) | Betrag > 0 und maximum_floor_difference > 0 |
small_order_surcharge |
Pauschal bei Unterschreitung der Schwelle | Betrag > 0 und small_order_threshold gesetzt |
Zusätzlich: ShippedFloor-Records für etagenspezifische Sonderpreise (überschreiben price_per_floor für das jeweilige Stockwerk).
Reihenfolge im Checkout¶
1. is_free_shipping()
→ Warenkorb (ohne Pfand) ≥ free_shipping_threshold?
JA → KEINE Zuschläge
2. small_order_surcharge (nur wenn nicht floor_only)
→ Warenkorb (ohne Pfand) < small_order_threshold?
JA → Zuschlag hinzufügen
3. price_per_floor
→ |Stockwerk| × Preis pro Etage
4. price_per_order (nur wenn nicht floor_only)
5. price_per_item (nur wenn nicht floor_only)
6. price_per_box (nur wenn nicht floor_only)
7. ShippedFloor (etagenspezifisch)
→ Überschreibt price_per_floor für das konkrete Stockwerk
Technische Details¶
floor_only=Truewird intern von der Stockwerk-Auswahl im Checkout-Formular verwendet. Nur Etagen-Zuschläge erscheinen dann.- Berechnungsbasis für Schwellwerte und Zuschlag ist immer
Basket.after_deposit(Brutto-Warenwert abzüglich aller Pfand-Positionen). - Die Methode
calculate()der Versandmethode liefert immer 0,00 €. Alle Kosten werden als separateSurcharge-Zeilen überget_extra_charges()abgerechnet — das ermöglicht die detaillierte Aufschlüsselung. - Ein
small_order_surcharge = 0,00odersmall_order_threshold = Nonedeaktiviert den warenwertabhängigen Zuschlag vollständig.
Konfigurationsbeispiele¶
B2C-Getränkelieferung mit Stockwerkszuschlag¶
| Feld | Wert |
|---|---|
minimum_order_value |
30,00 |
small_order_threshold |
75,00 |
small_order_surcharge |
9,99 |
price_per_floor |
2,00 |
maximum_floor_difference |
3 |
Warenkorb 45 €, EG: 9,99 € Zuschlag
Warenkorb 80 €, 2. OG: 4,00 € Stockwerk, kein Zuschlag
Warenkorb 25 €: Versandmethode nicht verfügbar
Gastro-Abholung (keine Zuschläge)¶
| Feld | Wert |
|---|---|
minimum_order_value |
0,00 |
deprecated_method_type |
Pickup |
| Alle Zuschläge | 0,00 |