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 Verkaufskanal aktiv. Deaktiviert blendet Header-Buttons, Sidebar-Links und Buy-Widgets aus und sperrt alle Routen.true
rentalRequestEmailAdmin-Adresse für Benachrichtigungen. Leer = keine Admin-Mail.leer
requestNumberPrefixPräfix für die Anfragen-IDAM-
bufferBeforeDaysGlobale Pufferzeit vor Mietbeginn (Tage)1
bufferAfterDaysGlobale Pufferzeit nach Mietende (Tage)2
createOrderOnConfirmBei Bestätigung automatisch eine Shopware-Bestellung anlegentrue
hideCartStandard-Warenkorb im Header ausblendenfalse
bookingsEnabledVerfügbarkeitsprüfung und Buchungen aktivierentrue
howItWorksUrlURL der „Wie funktioniert’s“-Seite (Link im Kundenbereich)leer
howItWorksLabelAbweichende Beschriftung dieses Linksleer
includeSaturdaySamstag als Berechnungstag zählenfalse
includeSundaySonntag als Berechnungstag zählenfalse
includeHolidaysFeiertage als Berechnungstag zählenfalse
pricingRulesJsonPreisregeln als JSON (siehe unten). Leer = mitgelieferte Standard-Staffel.leer
pricingDisplayHtmlHTML der Preis-Erklärbox. Leer = zweisprachige Standard-Tabelle.leer
holidayDatesFeiertage als Liste im Format Y-m-dleer
holidayBundeslandBundesland für den automatischen Feiertags-ImportNATIONAL
galleryLogoMediaIdLogo für Galerie und PDF aus der Medienverwaltungleer
galleryLogoUrlLogo-URL als Alternative zur Medienauswahlleer

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:setlist:set-rental --all

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

# Bestehende Werte über alle Sprachübersetzungen synchronisieren
bin/console sven-das-miet:setlist:set-rental
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 Berechnungstagen — standardmäßig Montag bis Freitag; Samstag, Sonntag und Feiertage lassen sich per Schalter hinzunehmen.

Die mitgelieferte Standard-Staffel

Solange das Feld Preisregeln (JSON) leer bleibt, gilt diese Staffel:

MietdauerRegelBeispiel (Basispreis 100 €)
Tag 1 – 10Basispreis je Tag5 Tage = 500,00 €
Tag 11 – 2030 % Rabatt je Tag (70 € statt 100 €)15 Tage = 1.350,00 €
Tag 21 – 3050 % Rabatt je Tag (50 € statt 100 €)25 Tage = 1.950,00 €
Ab Tag 31Individualpreis – Betrag dient als Richtwert

Eigene Regeln hinterlegen

Die Staffel wird als JSON-Array beschrieben. Genau dieses JSON entspricht der Standard-Staffel oben:

[
  {"fromDay": 1,  "toDay": 1,  "type": "flat"},
  {"fromDay": 2,  "toDay": 10, "type": "add_percent_per_day", "percent": 100},
  {"fromDay": 11, "toDay": 20, "type": "add_percent_per_day", "percent": 70},
  {"fromDay": 21, "toDay": 30, "type": "add_percent_per_day", "percent": 50},
  {"fromDay": 31, "type": "individual"}
]

Jeder Eintrag beschreibt eine Stufe von fromDay bis toDay (ohne toDay läuft die Stufe offen weiter). Drei Typen stehen zur Verfügung:

TypWirkung
flatKein Aufschlag — der Basispreis gilt für diese Stufe pauschal.
add_percent_per_dayAddiert je Tag dieser Stufe percent Prozent des Basispreises. 100 entspricht dem vollen Tagespreis, 70 einem Rabatt von 30 %.
individualAb fromDay gilt Individualpreisregelung. Der berechnete Betrag wird nur noch als Richtwert angezeigt.
Warum die erste Stufe nur einen Tag umfasst. Die Berechnung startet immer mit einem Basispreis und addiert die Stufen darauf. Ein voller Tagespreis über zehn Tage wird deshalb als flat für Tag 1 plus 100 % ab Tag 2 abgebildet — sonst käme ein Tag zu viel heraus.
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:setlist:register-custom-fields

# Massen-Setzen des Rental-Flags
bin/console sven-das-miet:setlist:set-rental --all          # alle = true
bin/console sven-das-miet:setlist:set-rental --all=false    # alle = false
bin/console sven-das-miet:setlist:set-rental                # 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:setlist:reset --all --force

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