Installation & Konfiguration
Plugin einrichten, Produkte markieren, Preise konfigurieren.
Plugin installieren
-
Plugin-Verzeichnis ablegen
Verzeichnis
SvenDasMietnachcustom/plugins/kopieren. -
Plugin-Refresh
bin/console plugin:refresh -
Installation & Aktivierung
bin/console plugin:install --activate SvenDasMiet -
Cache leeren und Theme bauen
bin/console cache:clear bin/console theme:compile -
Scheduled Tasks registrieren (optional, für automatischen Feiertags-Import)
bin/console scheduled-task:register
- 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:
- Daten behalten (Default) — Plugin wird abgemeldet, alle DB-Daten und Custom Fields bleiben unangetastet. Bei Reinstall ist der vorherige Zustand wieder da.
- Daten löschen — Alle 7 Plugin-Tabellen, das Custom-Field-Set, alle Mail-Templates UND deren Typen sowie die
SvenDasMiet.config.*-SystemConfig-Einträge werden vollständig entfernt.
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.
| Setting | Bedeutung | Default |
|---|---|---|
enabled | Plugin im Verkaufskanal aktiv. Deaktiviert blendet Header-Buttons, Sidebar-Links und Buy-Widgets aus und sperrt alle Routen. | true |
rentalRequestEmail | Admin-Adresse für Benachrichtigungen. Leer = keine Admin-Mail. | leer |
requestNumberPrefix | Präfix für die Anfragen-ID | AM- |
bufferBeforeDays | Globale Pufferzeit vor Mietbeginn (Tage) | 1 |
bufferAfterDays | Globale Pufferzeit nach Mietende (Tage) | 2 |
createOrderOnConfirm | Bei Bestätigung automatisch eine Shopware-Bestellung anlegen | true |
hideCart | Standard-Warenkorb im Header ausblenden | false |
bookingsEnabled | Verfügbarkeitsprüfung und Buchungen aktivieren | true |
howItWorksUrl | URL der „Wie funktioniert’s“-Seite (Link im Kundenbereich) | leer |
howItWorksLabel | Abweichende Beschriftung dieses Links | leer |
includeSaturday | Samstag als Berechnungstag zählen | false |
includeSunday | Sonntag als Berechnungstag zählen | false |
includeHolidays | Feiertage als Berechnungstag zählen | false |
pricingRulesJson | Preisregeln als JSON (siehe unten). Leer = mitgelieferte Standard-Staffel. | leer |
pricingDisplayHtml | HTML der Preis-Erklärbox. Leer = zweisprachige Standard-Tabelle. | leer |
holidayDates | Feiertage als Liste im Format Y-m-d | leer |
holidayBundesland | Bundesland für den automatischen Feiertags-Import | NATIONAL |
galleryLogoMediaId | Logo für Galerie und PDF aus der Medienverwaltung | leer |
galleryLogoUrl | Logo-URL als Alternative zur Medienauswahl | leer |
Mietartikel markieren
Im Produkt-Custom-Field-Set „Mietartikel" (automatisch nach Installation verfügbar) findet sich pro Produkt:
| Feld | Zweck |
|---|---|
sven_miet_is_rental | Produkt als Mietartikel behandeln (kein direkter Warenkorb, Verfügbarkeitsprüfung greift) |
sven_miet_buffer_before_days | Pro-Produkt-Puffer vor Mietstart (überschreibt globalen Wert) |
sven_miet_buffer_after_days | Pro-Produkt-Puffer nach Mietende |
sven_miet_rental_not_available | Temporär nicht verleihbar — Anfragen weiterhin möglich |
sven_miet_rental_not_available_note | Optionaler Hinweistext für den Kunden |
sven_miet_damage_description | HTML-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
Staffelpreise (nur Mietartikel)
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:
| Mietdauer | Regel | Beispiel (Basispreis 100 €) |
|---|---|---|
| Tag 1 – 10 | Basispreis je Tag | 5 Tage = 500,00 € |
| Tag 11 – 20 | 30 % Rabatt je Tag (70 € statt 100 €) | 15 Tage = 1.350,00 € |
| Tag 21 – 30 | 50 % Rabatt je Tag (50 € statt 100 €) | 25 Tage = 1.950,00 € |
| Ab Tag 31 | Individualpreis – 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:
| Typ | Wirkung |
|---|---|
flat | Kein Aufschlag — der Basispreis gilt für diese Stufe pauschal. |
add_percent_per_day | Addiert je Tag dieser Stufe percent Prozent des Basispreises. 100 entspricht dem vollen Tagespreis, 70 einem Rabatt von 30 %. |
individual | Ab fromDay gilt Individualpreisregelung. Der berechnete Betrag wird nur noch als Richtwert angezeigt. |
flat für Tag 1 plus 100 % ab Tag 2 abgebildet — sonst käme ein Tag zu viel heraus.
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.
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