PS PrestaShop Anfänger

Abholung im Geschäft (Store Pickup) — Komplette Anleitung

Abholung im Geschäft installieren, konfigurieren und betreiben: dedizierter Versanddienstleister, Auswahl des Abholpunkts auf einer interaktiven Karte (Leaflet/OpenStreetMap, ohne API-Schlüssel), Filialverwaltung und Bestellverfolgung für PrestaShop 8 und 9.

Aktualisiert Modulversion 1.0.0

Überblick

Das Modul Abholung im Geschäft (datafireflystorepickup) ermöglicht Ihren Kunden, ihre Bestellung in einer Ihrer Filialen abzuholen, statt sie liefern zu lassen. Bei der Installation wird automatisch ein Versanddienstleister „Abholung im Geschäft“ angelegt. Wählt der Kunde im Checkout diesen Dienstleister, erscheinen eine Filialliste und eine interaktive Karte: Er wählt seinen Abholpunkt, und diese Auswahl wird mit der Bestellung gespeichert.

Die Karte basiert auf Leaflet und OpenStreetMap, ohne dass ein API-Schlüssel erforderlich ist. Das Modul ist mit PrestaShop 8.x und 9.x kompatibel und stützt sich ausschließlich auf native Hooks, ohne den Core zu überschreiben.

Installation

  1. Zippen Sie den Ordner datafireflystorepickup (das Archiv muss den Ordner selbst enthalten, nicht nur dessen Inhalt).
  2. Öffnen Sie im Back Office Module > Modul-Manager, klicken Sie auf Modul hochladen und legen Sie das ZIP-Archiv ab.
  3. Klicken Sie nach Abschluss der Installation auf Konfigurieren.

Bei der Installation führt das Modul automatisch Folgendes aus: Es erstellt den Versanddienstleister „Abholung im Geschäft“ (mit seinen Preis- und Gewichtsbereichen, allen Zonen und allen Kundengruppen), legt die Datentabellen an, registriert die Hooks und initialisiert die Abholgebühr mit 0.

Der Versanddienstleister wird über seine Referenz (id_reference) und nicht nur über seine ID verfolgt: Sie können ihn unter Versand > Transportunternehmen frei bearbeiten (Name, Laufzeit, Logo, Zonen), ohne die Verbindung zum Modul zu unterbrechen.

Konfiguration

Gehen Sie zu Module > Abholung im Geschäft > Konfigurieren. Die Seite vereint die allgemeinen Einstellungen und die Filialverwaltung.

Abholgebühr

Das Feld Abholgebühr (netto) legt die Kosten fest, die für den Abhol-Dienstleister berechnet werden. Belassen Sie 0 für eine kostenlose Abholung oder geben Sie einen Nettobetrag ein. Dieser Tarif gilt unabhängig von der gewählten Filiale.

Filialverwaltung

Die Filialliste zeigt alle Ihre Abholpunkte mit Name, Adresse, Postleitzahl, Ort, Telefon und Status. Aus dieser Liste können Sie eine Filiale hinzufügen, bearbeiten, aktivieren/deaktivieren oder löschen.

Jede Filiale hat folgende Felder:

  • Name (erforderlich) — dem Kunden angezeigte Bezeichnung.
  • Adresse (erforderlich) und Postleitzahl.
  • Ort (erforderlich).
  • Telefon.
  • Öffnungszeiten — Freitextfeld, z. B. „Mo-Sa 9-19 Uhr“.
  • Breitengrad und Längengrad (erforderlich) — die Position der Filiale auf der Karte.
  • Aktiv — nur aktive Filialen werden im Checkout angeboten.

Sie müssen die Koordinaten nicht manuell suchen: Klicken Sie auf die Karte unter dem Formular, um den Punkt zu setzen, oder nutzen Sie die Adress-Geokodierung. Breiten- und Längengrad werden automatisch ausgefüllt. Die Geokodierung basiert auf Nominatim / OpenStreetMap.

Kundenseite (Checkout)

Im Lieferschritt zeigt das Modul, sobald der Kunde den Dienstleister „Abholung im Geschäft“ auswählt, unter dem Dienstleister die Liste der aktiven Filialen sowie eine interaktive Karte, auf der jede Filiale durch einen Marker dargestellt wird. Der Kunde wählt seinen Abholpunkt aus der Liste oder direkt auf der Karte.

Die Auswahl ist obligatorisch: Solange keine Filiale gewählt ist, kann der Lieferschritt nicht bestätigt werden, und eine Meldung fordert den Kunden auf, seine Filiale auszuwählen. Die Auswahl wird in Echtzeit (per AJAX-Anfrage) gespeichert und dem Warenkorb zugeordnet.

Ist keine aktive Filiale verfügbar, wird anstelle der Karte eine Warnmeldung angezeigt.

Bestellverfolgung

Nach Bestätigung der Bestellung wird die gewählte Filiale als Momentaufnahme an die Bestellung angehängt gespeichert (Name, Adresse, Postleitzahl, Ort, Telefon und Öffnungszeiten zum Kaufzeitpunkt). Sie bleibt damit einsehbar, auch wenn die Filiale später bearbeitet oder gelöscht wird. Der Abholpunkt wird automatisch angezeigt:

  • auf der Bestellbestätigungsseite;
  • im Bestelldetail des Kundenkontos;
  • in der Bestellseite des Back Office, in der Seitenspalte.

Technische Struktur

Dieser Abschnitt richtet sich an Integratoren und Entwickler, die die Interna des Moduls verstehen möchten.

Modultyp

Die Hauptklasse DataFireflyStorePickup erweitert CarrierModule. Der Tarif des Dienstleisters wird von getOrderShippingCost() und getOrderShippingCostExternal() zurückgegeben, beide basierend auf der Konfiguration DATAFIREFLY_PICKUP_FEE.

Verwendete Hooks

  • actionFrontControllerSetMedia — lädt Leaflet (entferntes CSS/JS) und die Front-Assets des Moduls auf der Bestellseite.
  • displayCarrierExtraContent — fügt Liste und Karte unter dem Abhol-Dienstleister ein.
  • actionCarrierUpdate — aktualisiert die Dienstleister-ID, wenn dieser im Back Office bearbeitet wird.
  • actionValidateStepComplete — macht die Filialauswahl im Lieferschritt obligatorisch.
  • actionValidateOrder — friert die gewählte Filiale in der Bestellung ein.
  • displayOrderConfirmation und displayOrderDetail — zeigen den Abholpunkt auf der Kundenseite an.
  • displayAdminOrderSide — zeigt den Abholpunkt in der Bestellseite des Back Office an.

Erkennung des Dienstleisters

Die Methode isPickupCarrier() identifiziert den Abhol-Dienstleister sowohl über seine Referenz (id_reference) als auch über seine aktuelle ID, da sich die ID eines PrestaShop-Dienstleisters bei jeder Bearbeitung im Back Office ändert. Dafür werden zwei Konfigurationsschlüssel gespeichert: DATAFIREFLY_PICKUP_CARRIER_ID und DATAFIREFLY_PICKUP_CARRIER_REF.

Datentabellen

  • datafirefly_pickup_store — die Filialen (Name, Adresse, Koordinaten, Öffnungszeiten, Status). Verwaltet vom ObjectModel DataFireflyPickupStore.
  • datafirefly_pickup_selection — die pro Warenkorb gewählte Filiale (Schlüssel id_cart), vor Bestätigung der Bestellung.
  • datafirefly_pickup_order — die Momentaufnahme der Filiale pro Bestellung (Schlüssel id_order), nach dem Kauf erhalten.

AJAX-Auswahl

Der Front-Controller ajax (Aktion selectStore) speichert die gewählte Filiale in datafirefly_pickup_selection für den aktuellen Warenkorb. Bei Bestätigung der Bestellung wird diese Auswahl in datafirefly_pickup_order kopiert und anschließend die Warenkorbzeile gelöscht.

Deinstallation

Die Deinstallation des Moduls markiert den Dienstleister als gelöscht und deaktiviert, entfernt die Konfigurationsschlüssel (DATAFIREFLY_PICKUP_CARRIER_ID, DATAFIREFLY_PICKUP_CARRIER_REF, DATAFIREFLY_PICKUP_FEE) und löscht die drei Tabellen des Moduls. Gespeicherte Filialen werden daher entfernt.

Bekannte Einschränkungen

  • Der Abholpunkt wird nicht in die Bestätigungs-E-Mails eingefügt: Er bleibt im Back Office und im Kundenkonto sichtbar.
  • Die Geokodierung basiert auf Nominatim (OpenStreetMap) — eine maßvolle Nutzung wird empfohlen, um die Nutzungsbedingungen des Dienstes einzuhalten.

FAQ

Ist für die Karte ein API-Schlüssel erforderlich?

Nein. Die Karte nutzt Leaflet und OpenStreetMap-Kacheln, ohne API-Schlüssel oder externe Konfiguration.

Kann der Kunde seine Bestellung bestätigen, ohne eine Filiale zu wählen?

Nein. Wenn der Abhol-Dienstleister ausgewählt ist, ist die Wahl einer Filiale obligatorisch, um den Lieferschritt zu bestehen.

Was geschieht mit dem Abholpunkt, wenn ich eine Filiale nach einer Bestellung lösche?

Die Bestellung behält eine zum Kaufzeitpunkt gespeicherte Momentaufnahme der Filiale (Name, Adresse, Öffnungszeiten…). Sie bleibt auch nach dem Löschen der Filiale einsehbar.

Ist das Modul mit PrestaShop 9 kompatibel?

Ja, das Modul ist mit PrestaShop 8.x und 9.x kompatibel.

War diese Seite hilfreich?

Immer noch nicht weiter? Support kontaktieren