Installation & Konfiguration

Plugin einrichten, Produkte markieren, Preise konfigurieren.

Plugin installieren

  1. Plugin-Verzeichnis ablegen

    Verzeichnis SvenDasMiet nach custom/plugins/ kopieren.

  2. Plugin-Refresh
    bin/console plugin:refresh
  3. Installation & Aktivierung
    bin/console plugin:install --activate SvenDasMiet
  4. Cache leeren und Theme bauen
    bin/console cache:clear
    bin/console theme:compile
  5. Scheduled Tasks registrieren (optional, für automatischen Feiertags-Import)
    bin/console scheduled-task:register
Was die Installation anlegt:
  • 7 DB-Tabellen mit Präfix sven_miet_* (Constraint-Namen DB-weit eindeutig)
  • Custom-Field-Set „Mietartikel" mit allen Produktfeldern
  • 10 Mail-Template-Typen mit Default-Templates
  • Plugin-SystemConfig mit sinnvollen Default-Werten

Deinstallation

Beim Deinstallieren stehen zwei Optionen zur Verfügung:

FK-Cleanup beim Reinstall: Falls bei einer früheren Installation generische Foreign-Key-Constraints zurückblieben (fk_set_project, fk_item_set), räumt die Migration sie defensiv auf, bevor sie eindeutige Namen anlegt. Der MySQL-Fehler 1826 („Duplicate foreign key constraint name") tritt damit nicht mehr auf.

Plugin-Konfiguration

Erreichbar im Admin unter Erweiterungen → Merkzettel, Mietanfragen & Bestellungen → Konfiguration. Alle Werte sind Sales-Channel-spezifisch hinterlegbar.

Plugin-Konfiguration: Pufferzeiten, automatische Order-Erstellung und Header-Optionen
Plugin-Konfiguration im Admin: Buffer Time (vor/nach Mietzeitraum), Orders (Auto-Order bei Bestätigung) und Header (Warenkorb-Sichtbarkeit). Jedes Feld hat ein (i)-Tooltip mit Erklärung.
SettingBedeutungDefault
enabledPlugin im Sales-Channel aktivtrue
requestNumberPrefixPräfix für Anfragen-IDAM-
bufferBeforeDaysGlobale Pufferzeit vor Mietbeginn1
bufferAfterDaysGlobale Pufferzeit nach Mietende2
createOrderOnConfirmBei Bestätigung automatisch Bestellung anlegentrue
hideCartWarenkorb-Icon im Header ausblendenfalse
pricingRulesJsonStaffelpreis-Regeln (siehe unten)siehe Default
pricingDisplayHtmlHTML-Erklärbox auf der Listen-Detailseitesiehe Default
holidaysListe der Feiertage (Y-m-d)leer
countHolidaysAsWorkingDaysFeiertage als Arbeitstage zählenfalse

Mietartikel markieren

Im Produkt-Custom-Field-Set „Mietartikel" (automatisch nach Installation verfügbar) findet sich pro Produkt:

FeldZweck
sven_miet_is_rentalProdukt als Mietartikel behandeln (kein direkter Warenkorb, Verfügbarkeitsprüfung greift)
sven_miet_buffer_before_daysPro-Produkt-Puffer vor Mietstart (überschreibt globalen Wert)
sven_miet_buffer_after_daysPro-Produkt-Puffer nach Mietende
sven_miet_rental_not_availableTemporär nicht verleihbar — Anfragen weiterhin möglich
sven_miet_rental_not_available_noteOptionaler Hinweistext für den Kunden
sven_miet_damage_descriptionHTML-Schadenbeschreibung (nur Admin)
sven_miet_damage_image_{1..5}Schaden-Bildanhänge (Media-Picker)

Massen-Markierung per CLI

# Alle Produkte als Mietartikel markieren
bin/console sven-das-miet:set-rental-flag --all

# Alle Produkte als Kaufartikel markieren
bin/console sven-das-miet:set-rental-flag --all=false

# Bestehende Werte über alle Sprachübersetzungen synchronisieren
bin/console sven-das-miet:set-rental-flag
Mixed-Listen: Du musst dich nicht für einen Modus entscheiden. Mietartikel und Kaufartikel dürfen in derselben Anfrage liegen — das Plugin unterscheidet beim Pricing, der Verfügbarkeitsprüfung und der Buchung automatisch. Datums-Felder erscheinen nur, wenn mind. ein Mietartikel in der Liste ist.

Staffelpreise (nur Mietartikel)

Pricing-Konfiguration mit Wochenend-/Feiertag-Toggles, Staffelpreis-JSON und Preis-Anzeige-HTML
Pricing-Block: Wochenend-/Feiertag-Toggles, JSON-Staffelpreise (Mehr-Tage-Rabatte) und das anpassbare HTML-Snippet für die Preis-Erklärbox auf der Listen-Detailseite.

Die Berechnung erfolgt auf Arbeitstagen (Mo–Fr). Pricing-Rules in JSON-Form in der Plugin-Konfiguration:

[
  {"from": 1,  "to": 3,  "factor": 1.0},
  {"from": 4,  "to": 7,  "factor": 0.8},
  {"from": 8,  "to": 14, "factor": 0.6},
  {"from": 15, "to": 30, "factor": 0.5}
]

Jeder Eintrag beschreibt einen Tage-Bereich (fromto) und den Multiplikator (factor) auf den Tagespreis. Im Beispiel: 1–3 Tage = voller Preis, 4–7 Tage = 80% pro Tag, 8–14 Tage = 60%, 15–30 Tage = 50%.

Kaufartikel ignorieren die Staffel. Für Items ohne sven_miet_is_rental-Flag gilt der Standard-Produktpreis × Menge — egal wie lang die Liste „offen" liegt.

Feiertage

Feiertage werden bei der Arbeitstage-Berechnung ausgeschlossen. Pflegen kannst du sie auf zwei Wegen:

Manuell

Plugin-Konfiguration → Feiertage (kein Berechnungstag) → Daten als Y-m-d hinzufügen.

Automatisch via API

# Feiertage für das aktuelle und kommende Jahr importieren
bin/console sven-das-miet:holidays --import

# Aktuelle Liste anzeigen
bin/console sven-das-miet:holidays

Der Import nutzt feiertage-api.de (DE/AT/CH). Ein Scheduled Task sven_miet_setlist.import_holidays aktualisiert die Liste monatlich automatisch.

Mit dem Schalter „Feiertage als Berechnungstag zählen" kannst du das Verhalten umkehren — falls bei dir auch an Feiertagen gearbeitet wird.

CLI-Befehle (Übersicht)

# Custom Fields nachträglich registrieren / sicherstellen
bin/console sven-das-miet:custom-fields

# Massen-Setzen des Rental-Flags
bin/console sven-das-miet:set-rental-flag --all          # alle = true
bin/console sven-das-miet:set-rental-flag --all=false    # alle = false
bin/console sven-das-miet:set-rental-flag                # Sprach-Sync

# Feiertage
bin/console sven-das-miet:holidays --import
bin/console sven-das-miet:holidays

# Test-Reset (Buchungen + Anfragen löschen)
bin/console sven-das-miet:reset --confirm

# Scheduled Tasks aktivieren
bin/console scheduled-task:register
bin/console scheduled-task:list
← Übersicht Weiter: Status & Workflow →