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

> Ü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…

- Seite: <https://www.datafirefly.com/de/documentation/datafireflystorepickup/>
- Sprache: de
- Aktualisiert am: 2026-07-09
- Weitere Sprachen: [fr](https://www.datafirefly.com/documentation/datafireflystorepickup/index.md), [en](https://www.datafirefly.com/en/documentation/datafireflystorepickup/index.md), [es](https://www.datafirefly.com/es/documentation/datafireflystorepickup/index.md), [it](https://www.datafirefly.com/it/documentation/datafireflystorepickup/index.md), [pl](https://www.datafirefly.com/pl/documentation/datafireflystorepickup/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafireflystorepickup/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafireflystorepickup/index.md)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

## Ü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.
