PS PrestaShop Mittel

Produktvermietung — Vollständige Anleitung

Produktvermietung installieren, konfigurieren und betreiben: Verfügbarkeitskalender, Kaution, degressive oder prozentuale Preise, Reservierungsanfrage ohne Zahlung, Packs und REST-API, mit Buchungsverfolgung für PrestaShop 8 und 9.

Aktualisiert Modulversion 1.5.7

Überblick

Das Modul Produktvermietung (dfproductrental) fügt Ihrem PrestaShop-Shop einen Vermietungsmodus hinzu, den Sie produktweise aktivieren. Auf der Seite eines vermietbaren Produkts wählt der Kunde einen Datumsbereich in einem Kalender, der bereits gebuchte Tage automatisch ausgraut, und der Preis wird pro Tag nach einer degressiven Stufenpreisgestaltung berechnet, als feste Beträge oder als Prozentsatz des Verkaufspreises. Das Modul verwaltet eine Kaution pro Produkt, erzwingt die Dauer mit einer Mindest- und Höchstzahl an Tagen, akzeptiert Reservierungsanfragen ohne Zahlung, synchronisiert die Verfügbarkeit von Packs und ihren Komponenten, stellt eine REST-API für Ihre Verwaltungssoftware bereit und verfolgt jede Buchung über ein dediziertes Back-Office, vom Warenkorb bis zur Rückgabe des Artikels.

Ideal für Geräte, Möbel, Veranstaltungsausstattung, Instrumente, Fahrzeuge oder Werkzeuge: jeden Artikel, der vermietet statt ein für alle Mal verkauft wird. Der Vermietungsmodus wird nur bei den von Ihnen bestimmten Produkten aktiviert, ohne den Rest Ihres Katalogs zu verfälschen.

Kompatibilität

  • PrestaShop 8.0 bis 9.x
  • PHP 7.4 bis 8.3
  • Einzelshop und Multishop
  • 5 Sprachen: FR, EN, ES, DE, IT
  • Classic-Theme und individuelle Themes
  • Keine Abhängigkeit: kein Composer, manueller PSR-4-Autoloader, flatpickr-Kalender lokal eingebunden (FR-Locale enthalten)

Installation

  1. Öffnen Sie im Back-Office Module > Modul-Manager.
  2. Klicken Sie auf Modul hochladen und wählen Sie die Datei dfproductrental.zip.
  3. Klicken Sie nach der Installation auf Konfigurieren.

Bei der Installation erstellt das Modul seine drei Tabellen (df_rental_product, df_rental_tier, df_rental_booking), registriert seine Hooks, initialisiert seine Standardeinstellungen und fügt zwei Einträge unter dem Menü Katalog hinzu: Vermietung – Produkte und Vermietung – Buchungen. Die Aktualisierung von Version 1.2.0 oder 1.3.0 wird durch fehlertolerante Upgrade-Skripte abgedeckt: installieren Sie einfach das neue ZIP darüber.

Allgemeine Einstellungen

Die Konfigurationsseite des Moduls bündelt die globalen Optionen, die standardmäßig auf alle vermietbaren Produkte angewendet werden.

  • Pufferzeit (Tage): Anzahl der nach jeder Rückgabe blockierten Tage, um den Artikel vor der nächsten Vermietung vorzubereiten, zu reinigen oder zu prüfen. Globaler Wert, pro Produkt überschreibbar.
  • Buchungshorizont (Tage): begrenzt, wie weit in die Zukunft ein Kunde buchen kann (standardmäßig 365 Tage).
  • Ablauf ausstehender Warenkörbe (Minuten): Frist, nach der eine unbestätigte Buchung ihre Daten freigibt (standardmäßig 60 Minuten).
  • Kaution in die Warenkorbzeile integrieren: wenn aktiv, wird die Kaution zum Zeilenpreis hinzugefügt und bei Rückgabe per Gutschrift erstattet.
  • Nativen „In den Warenkorb“-Button ausblenden: blendet bei Mietprodukten den klassischen Kaufbutton zugunsten des Buchungsbuttons aus.
  • Standardkaution: standardmäßig vorgeschlagener Betrag beim Anlegen eines neuen vermietbaren Produkts.
  • Pack-Synchronisation: aktiviert oder deaktiviert die automatische Übertragung von Pack-Buchungen auf ihre mietbaren Komponenten (standardmäßig aktiviert).
  • Ablauf der Anfragen (Stunden): nach dieser Frist wird eine unbeantwortete Reservierungsanfrage storniert und ihre Termine werden freigegeben (0 = nie, Standard).
  • API: Aktivierungsschalter, Lese-Schreib-Token und Nur-Lese-Token, jeweils mit einem Klick neu generierbar. Die Endpunkt-Dokumentation wird direkt unter diesem Panel angezeigt.

Ein vermietbares Produkt konfigurieren

Gehen Sie zu Katalog > Vermietung – Produkte, dann Hinzufügen.

  • Produkt: wählen Sie das Katalogprodukt, das vermietbar werden soll.
  • Aktiv: aktiviert oder pausiert die Vermietung dieses Produkts.
  • Preismodus: feste Beträge oder Prozentsatz des Verkaufspreises des Produkts (siehe unten).
  • Basis-Tagespreis: Tagessatz, der angewendet wird, wenn keine Stufe zur gewählten Dauer passt.
  • Kaution: Betrag der für dieses Produkt verlangten Kaution.
  • Mindest- / Höchstdauer (Tage): begrenzt den Datumsbereich, den der Kunde auswählen kann.
  • Verfügbare Einheiten: Anzahl der Exemplare, die Sie besitzen. Ein Datum wird erst blockiert, wenn alle Einheiten gleichzeitig vermietet sind.
  • Pufferzeit: behalten Sie den globalen Wert bei oder legen Sie eine produktspezifische Pufferzeit fest.
  • Anfrage ohne Zahlung erlauben: zeigt einen Reservierungsanfrage-Button auf der Produktseite an, neben oder anstelle des klassischen Bestellwegs.
  • Anfragen blockieren den Bestand: legt fest, ob offene Anfragen dieses Produkts die Daten reservieren, bis Sie entschieden haben.

Degressive Preisstufen

Fügen Sie unter dem Formular beliebig viele Stufen hinzu. Jede Stufe wird durch einen Mindesttag, einen Höchsttag und einen Tagespreis definiert.

Das Modul wendet die Stufe an, deren Bereich die gewählte Dauer enthält. Eine Stufe, deren Höchsttag 0 beträgt, gilt als unbegrenzt. Passt keine Stufe, gilt der Basis-Tagespreis.

Beispiel: 39 €/Tag von 1 bis 3 Tagen, 32 €/Tag von 4 bis 7 Tagen, 26 €/Tag ab 8 Tagen (Höchsttag auf 0).

Prozentmodus

Im Prozentmodus sind der Basis-Tagespreis, die Kaution und die Stufen keine Währungsbeträge mehr, sondern Prozentsätze des Netto-Verkaufspreises des Produkts. Ein für 1000 € verkauftes Produkt mit einer Kaution von 10 verlangt so 100 € Kaution; ein Tagessatz von 2 ergibt 20 € pro Tag. Die Beträge folgen automatisch Ihren Katalogpreisen: der schnellste Weg, ein einheitliches Preisraster auf viele vermietbare Produkte anzuwenden.

Nutzung im Shop

Der Verfügbarkeitskalender

Auf der Produktseite wird eine Datumsbereichsauswahl angezeigt. Bereits gebuchte Tage werden automatisch ausgegraut und sind nicht auswählbar, ebenso die Puffertage nach jeder Rückgabe. Der Kunde wählt ein Start- und ein Enddatum innerhalb der von Ihnen festgelegten Dauergrenzen.

Die Preisberechnung

Sobald ein gültiger Bereich ausgewählt ist, schlüsselt eine Zusammenfassung die Anzahl der Tage, den angewandten Tagespreis (je Stufe), die Mietsumme, die Kaution und die Gesamtsumme auf. Der Kunde weiß genau, was er zahlt, bevor er in den Warenkorb legt.

Die Buchung

Der Button Diese Daten buchen legt die Vermietung in den Warenkorb. Der Mietpreis wird über einen warenkorbgebundenen spezifischen Preis eingespeist: der ursprüngliche Produktpreis bleibt im Katalog und für alle anderen Verkäufe unverändert. Eine Buchung wird im Status ausstehend erstellt und blockiert die gewählten Daten.

Wird die Bestellung nicht innerhalb der konfigurierten Ablauffrist bestätigt, verfällt der Warenkorb und die Daten werden automatisch für andere Kunden freigegeben. Bei Bestellbestätigung wechselt die Buchung auf bestätigt und wird mit dem Kunden und der Bestellung verknüpft.

Reservierungsanfrage ohne Zahlung

Bei Produkten mit aktiver Option Anfrage ohne Zahlung erlauben zeigt die Produktseite einen Button Reservierung anfragen. Der Kunde wählt seine Termine und seine Menge wie bei einer regulären Buchung und gibt dann seine Kontaktdaten an: angemeldete Kunden werden automatisch identifiziert, Besucher geben ihren Namen, ihre E-Mail und optional ihre Telefonnummer ein. Ein freies Nachrichtenfeld begleitet die Anfrage.

Die Anfrage erscheint unter Katalog > Vermietung – Buchungen mit dem Status Offene Anfrage. Zwei Aktionen sind auf jeder Zeile verfügbar:

  • Annehmen: das Modul prüft die Verfügbarkeit des Zeitraums erneut (einschließlich konkurrierender Anfragen) und stellt die Buchung auf bestätigt. Der Kunde erhält eine Annahme-E-Mail.
  • Ablehnen: die Buchung wechselt auf abgelehnt, ihre Daten werden freigegeben und der Kunde erhält eine Ablehnungs-E-Mail.

Drei automatische E-Mails begleiten den Ablauf: eine Eingangsbestätigung an den Kunden beim Absenden der Anfrage, eine Benachrichtigung an den Händler mit den Kontaktdaten und der Nachricht des Kunden, dann die Entscheidungs-E-Mail. Die Vorlagen existieren in den fünf Sprachen des Moduls und lassen sich wie jede PrestaShop-E-Mail anpassen.

Die Bestandssperrung durch Anfragen lässt sich fein einstellen: ein Standard pro Produkt (Anfragen blockieren den Bestand) und ein individueller Schalter auf jeder Anfrage in der Buchungsliste. Eine Anfrage, die den Bestand nicht blockiert, lässt die Termine für andere Kunden buchbar, solange sie nicht angenommen ist. Eine konfigurierbare Ablauffrist (in Stunden) kann unbeantwortete Anfragen automatisch stornieren und ihre Termine freigeben.

Produkt-Packs

Das Modul unterstützt native PrestaShop-Packs. Enthält ein Pack Komponenten, die selbst als vermietbar konfiguriert sind, erstellt die Buchung des Packs automatisch verknüpfte Buchungen auf jeder seiner Komponenten, unter Berücksichtigung der Pack-Mengen. Konkret:

  • Die Buchung eines Packs blockiert die Verfügbarkeit jeder seiner mietbaren Komponenten im selben Zeitraum.
  • Die Buchung einer Komponente allein macht das Pack an diesen Terminen nicht verfügbar, sobald nicht mehr genug Einheiten verbleiben.
  • Jede Änderung der Pack-Buchung (Termine, Menge, Status, Stornierung) wird automatisch auf die Buchungen seiner Komponenten übertragen.

Komponenten-Buchungen sind kundenseitig verborgen (der Kunde sieht nur sein Pack), aber im Back-Office sichtbar mit einem Abzeichen Pack #N, das auf die übergeordnete Buchung verweist. Sie sind nicht direkt bearbeitbar: die Pack-Buchung ist maßgeblich. Eine globale Einstellung erlaubt es, den gesamten Mechanismus zu deaktivieren, wenn Sie Packs lieber als unabhängige Produkte verwalten.

REST-API

Die API stellt die Vermietung als JSON für Ihre Flotten-, Planungs- oder Abrechnungssoftware bereit. Aktivieren Sie sie in der Modulkonfiguration: zwei Tokens werden generiert, mit einem Klick neu generierbar: ein Lese-Schreib-Token und ein Nur-Lese-Token, das nur auf GET-Endpunkten akzeptiert wird. Jede Anfrage muss eines dieser Tokens über den Header X-Api-Key oder Authorization: Bearer vorlegen.

Endpunkte

  • GET ping: Prüfung der Authentifizierung und der Version.
  • GET products: Liste der vermietbaren Produkte mit ihrer Konfiguration (Preis, Kaution, Stufen, Einheiten, Preismodus).
  • GET availability: tagesgenaue Verfügbarkeit eines Produkts zwischen zwei Daten, einschließlich verbleibender Einheiten.
  • GET bookings: Liste der Buchungen, filterbar nach status, id_product, from, to, updated_since und external_reference, paginiert mit limit und offset.
  • POST bookings: Erstellung einer Buchung im Status requested oder confirmed, mit Verfügbarkeitsprüfung (umgehbar mit force). Das Feld external_reference (max. 64 Zeichen) macht die Erstellung idempotent: trägt eine Buchung diese Referenz bereits, wird sie aktualisiert statt dupliziert.
  • POST bookings&id=N: Änderung einer Buchung (Termine, Menge, Status), übertragen auf Pack-Komponenten.
  • DELETE bookings&id=N: Stornierung einer Buchung.

Der Filter updated_since ermöglicht eine inkrementelle Synchronisation: Ihre Software merkt sich das Datum ihres letzten Durchlaufs und ruft nur die seitdem geänderten Buchungen ab. Die API sendet keine ausgehenden Webhooks: die Synchronisation erfolgt durch periodische Abfrage. Die genauen URLs und Anfragebeispiele werden auf der Konfigurationsseite des Moduls angezeigt.

Buchungsverfolgung

Unter Katalog > Vermietung – Buchungen finden Sie alle Buchungen mit ihrem Produkt, ihrem Kunden, ihrer Bestellung, ihren Daten und ihrem Status, gekennzeichnet durch ein farbiges Abzeichen.

  • Offene Anfrage: Anfrage ohne Zahlung, wartet auf Ihre Entscheidung.
  • Ausstehend: in den Warenkorb gelegt, wartet auf Bestellbestätigung.
  • Bestätigt: Bestellung bestätigt oder Anfrage angenommen, Daten reserviert.
  • Laufend: Mietzeitraum läuft.
  • Zurückgegeben: Artikel zurückgegeben.
  • Abgelehnt: Anfrage abgelehnt, Daten freigegeben.
  • Storniert: Buchung storniert, Daten freigegeben.

Das Detail jeder Vermietung erscheint auch im Warenkorb, auf der Bestellbestätigungsseite und auf der Back-Office-Bestellseite. Kundenseitig listet die Seite Meine Vermietungen im Bereich Mein Konto alle Vermietungen mit Zeitraum, Dauer, Kaution und Status auf.

Die Erstattung der Kaution erfolgt per Gutschrift bei Rückgabe des Artikels, über die PrestaShop-Bestellseite. Dies ist die einfachste und transparenteste Methode für die Buchhaltung der meisten Vermietungsshops.

Optionen der Version 1.5

Version 1.5 erweitert Datumsauswahl, Preisberechnung und Kautionsverwaltung. Alle Optionen werden in der Modulkonfiguration eingestellt.

Datumsauswahl

Zwei Anzeigemodi: ein einzelnes Zeitraumfeld mit Zweimonatskalender oder zwei getrennte Start- und Endfelder. Abhol- und Rückgabezeiten können aktiviert werden; sie werden auf der Buchung erfasst und in der API verfügbar gemacht. Die Position des Mietblocks auf der Produktseite ist unter sieben Hooks wählbar, mit einem Rückfall-Hook für Themes ohne displayProductAdditionalInfo.

Warenkorbweite Mietdaten

Standardmäßig aktiv, wenden sie einen einzigen Zeitraum auf alle Positionen der Bestellung an. Die Produktseiten kommen mit dem Warenkorbzeitraum vorausgefüllt, und der Warenkorb bietet einen Editor, um die Daten der gesamten Bestellung zu ändern, mit erneuter Verfügbarkeitsprüfung und Preisneuberechnung jeder Position. Eine Option verlegt die Datumsauswahl vollständig in den Warenkorb: die Produktseite fragt nur die Menge ab, und beim ersten Hinzufügen wird automatisch der erste verfügbare Zeitraum vorgeschlagen.

Gesamter Katalog zur Vermietung

Für reine Vermietungsshops: jedes aktive Produkt wird ohne Einzelkonfiguration mietbar. Der Basisbetrag stammt aus dem Verkaufspreis, der Mietbestand folgt dem PrestaShop-Bestand, und Reservierungsanfragen können global erlaubt werden.

Dauerkoeffizienten

Im Koeffizientenmodus berechnet sich der Preis als Basisbetrag multipliziert mit einem Koeffizienten. Das Tagesraster ist konfigurierbar (standardmäßig 1 Tag: 1, 2 Tage: 1,5, 3 Tage: 2, 4 bis 7 Tage: 3, 8 bis 14 Tage: 5, 15 bis 21 Tage: 7, 22 bis 30 Tage: 9). Zwei vorrangige Wochenendausnahmen sind einstellbar: Samstag bis Montag (Koeffizient 1 standardmäßig) und Freitag bis Montag (1,5 standardmäßig). Jenseits der Höchstdauer (standardmäßig 30 Tage) wechselt der Preis auf Anfrage: das Hinzufügen zum Warenkorb wird gesperrt und die Reservierungsanfrage ohne Zahlung übernimmt.

Kaution

Drei Modi: pro Produkt (historisches Verhalten), automatisch global oder deaktiviert. Im globalen Modus wird eine einzige Kaution für die gesamte Bestellung berechnet: Basisbetrag inkl. MwSt. multipliziert mit einem Multiplikator (standardmäßig 2), mit einem Minimum (standardmäßig 500) und Aufrundung auf die nächste Stufe (standardmäßig 100). Sie wird auf der ersten Buchung der Bestellung erfasst und bleibt im Back-Office änderbar. Der Einzug ist unabhängig: Kaution bei der Zahlung eingezogen oder nur für eine Kartenreservierung angezeigt. Die Kautionsspalten verschwinden aus den Übersichten und der PDF-Rechnung, wenn keine Position eine trägt.

FAQ und Fehlerbehebung

Ändert der Mietpreis den Preis meines Produkts?

Nein. Der Preis wird über einen spezifischen Preis eingespeist, der nur mit dem aktuellen Warenkorb verknüpft ist. Der ursprüngliche Produktpreis bleibt im Katalog und für andere Kunden unverändert.

Wie funktioniert die degressive Preisgestaltung?

Sie definieren Stufen (Mindesttag, Höchsttag, Tagespreis). Das Modul wählt die Stufe, deren Bereich die angeforderte Dauer enthält. Ein Höchsttag von 0 bedeutet „unbegrenzt“. Ohne passende Stufe gilt der Basis-Tagespreis.

Können mehrere Einheiten desselben Produkts gemietet werden?

Ja. Geben Sie die Anzahl der verfügbaren Einheiten an. Ein Datum wird erst ausgegraut, wenn alle Einheiten in diesem Zeitraum bereits vermietet sind.

Wird die Kaution automatisch erstattet?

Nein. Sie wird bei der Vermietung zur Warenkorbzeile hinzugefügt und bei Rückgabe per Gutschrift erstattet, über die Back-Office-Bestellseite.

Erstellt eine angenommene Anfrage eine Bestellung?

Nein. Die Annahme bestätigt die Buchung und blockiert die Termine, ohne eine PrestaShop-Bestellung zu erstellen. Sie kassieren die Zahlung über den Kanal Ihrer Wahl (vor Ort, Überweisung, Zahlungslink) und verfolgen die Vermietung über den Buchungsbildschirm.

Der Kalender erscheint nicht auf der Produktseite

Prüfen Sie, ob das Produkt unter Vermietung – Produkte konfiguriert und aktiv ist. Leeren Sie dann den PrestaShop-Cache (Erweiterte Einstellungen > Leistung) und deaktivieren Sie während Ihrer Tests das Kombinieren/Komprimieren von Dateien (CCC).

Der native „In den Warenkorb“-Button bleibt sichtbar

Das Ausblenden stützt sich auf Theme-Selektoren. Aktivieren Sie die Option Nativen „In den Warenkorb“-Button ausblenden in den Einstellungen; je nach Theme kann eine leichte Anpassung der Selektoren nötig sein.

Die API antwortet mit 401

Prüfen Sie, ob die API in der Konfiguration aktiviert ist und ob das gesendete Token dem angezeigten Token entspricht. Denken Sie nach einer Token-Regenerierung daran, Ihre Integrationen zu aktualisieren.

Ist es mit PrestaShop 9 kompatibel?

Ja. Das Modul ist mit PrestaShop 8 und 9 kompatibel, im Multishop und mehrsprachig (FR, EN, ES, DE, IT). Die Preisformatierung verwendet das aktuelle Locale, im Einklang mit den Praktiken von PrestaShop 9.

War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren