PS PrestaShop Beginner

Afhalen in de Winkel (Store Pickup): volledige gids

Installatie, configuratie en gebruik van het afhalen in de winkel: aparte vervoerder, keuze van het afhaalpunt op een interactieve kaart (Leaflet/OpenStreetMap, zonder API-sleutel), winkelbeheer en bestelopvolging voor PrestaShop 8 en 9.

Bijgewerkt Moduleversie 1.0.0

Overzicht

De module Afhalen in de Winkel (datafireflystorepickup) laat uw klanten hun bestelling ophalen in een van uw verkooppunten in plaats van haar te laten bezorgen. Bij de installatie wordt automatisch een vervoerder “Afhalen in de winkel” aangemaakt. Wanneer de klant in de checkout deze vervoerder kiest, verschijnen een winkellijst en een interactieve kaart: hij selecteert zijn afhaalpunt, en die keuze wordt bij de bestelling opgeslagen.

De kaart is gebaseerd op Leaflet en OpenStreetMap, zonder enige API-sleutel. De module is compatibel met PrestaShop 8.x en 9.x en steunt uitsluitend op de native hooks, zonder core-overrides.

Installatie

  1. Zip de map datafireflystorepickup (het archief moet de map zelf bevatten, niet alleen de inhoud).
  2. Open vanuit de back-office Modules > Modulebeheer, klik op Een module installeren en sleep het ZIP-archief erin.
  3. Klik na de installatie op Configureren.

Bij de installatie voert de module automatisch de volgende handelingen uit: aanmaken van de vervoerder “Afhalen in de winkel” (met zijn prijs- en gewichtsbereiken, alle zones en alle klantgroepen), aanmaken van de datatabellen, registreren van de hooks en initialiseren van de afhaalkosten op 0.

De vervoerder wordt gevolgd via zijn referentie (id_reference) en niet alleen via zijn identifier: u kunt hem vrij aanpassen in Verzending > Vervoerders (naam, levertijd, logo, zones) zonder de koppeling met de module te breken.

Configuratie

Ga naar Modules > Afhalen in de winkel > Configureren. De pagina bundelt de algemene instellingen en het winkelbeheer.

Afhaalkosten

Het veld Afhaalkosten (excl. btw) bepaalt de kosten die op de afhaalvervoerder worden toegepast. Laat 0 staan voor gratis afhalen, of voer een bedrag exclusief btw in. Dit tarief geldt ongeacht de gekozen winkel.

Winkelbeheer

De winkellijst toont al uw afhaalpunten met hun naam, adres, postcode, plaats, telefoonnummer en status. Vanuit deze lijst kunt u een winkel toevoegen, wijzigen, in-/uitschakelen of verwijderen.

Elke winkel bevat de volgende velden:

  • Naam (verplicht) — label dat aan de klant wordt getoond.
  • Adres (verplicht) en Postcode.
  • Plaats (verplicht).
  • Telefoon.
  • Openingstijden — vrij veld, bijvoorbeeld “Ma-Za 9-19 u”.
  • Breedtegraad en Lengtegraad (verplicht) — positie van de winkel op de kaart.
  • Actief — alleen actieve winkels worden in de checkout aangeboden.

U hoeft de coördinaten niet handmatig op te zoeken: klik op de kaart onder het formulier om het punt te plaatsen, of gebruik de adresgeocodering. De breedte- en lengtegraad worden automatisch ingevuld. De geocodering is gebaseerd op Nominatim / OpenStreetMap.

Aan klantzijde (checkout)

Wanneer de klant in de leveringsstap de vervoerder “Afhalen in de winkel” selecteert, toont de module onder de vervoerder de lijst met actieve winkels plus een interactieve kaart waarop elke winkel als marker verschijnt. De klant kiest zijn afhaalpunt in de lijst of direct op de kaart.

De selectie is verplicht: zolang er geen winkel is gekozen, kan de leveringsstap niet worden gevalideerd en nodigt een melding de klant uit zijn winkel te selecteren. De keuze wordt in realtime opgeslagen (via een AJAX-verzoek) en aan de winkelwagen gekoppeld.

Als er geen actieve winkel beschikbaar is, verschijnt er een waarschuwingsmelding in plaats van de kaart.

Bestelopvolging

Zodra de bestelling is gevalideerd, wordt de gekozen winkel als een momentopname aan de bestelling gekoppeld (naam, adres, postcode, plaats, telefoon en openingstijden op het moment van aankoop). Hij blijft zo raadpleegbaar, ook als de winkel later wordt gewijzigd of verwijderd. Het afhaalpunt wordt automatisch getoond:

  • op de orderbevestigingspagina;
  • in het besteldetail van het klantaccount;
  • in de bestelfiche in de back-office, in de zijkolom.

Technische structuur

Deze sectie richt zich tot integrators en ontwikkelaars die de interne werking van de module willen begrijpen.

Moduletype

De hoofdklasse DataFireflyStorePickup breidt CarrierModule uit. Het vervoerderstarief wordt teruggegeven door getOrderShippingCost() en getOrderShippingCostExternal(), beide gebaseerd op de configuratie DATAFIREFLY_PICKUP_FEE.

Gebruikte hooks

  • actionFrontControllerSetMedia — laadt Leaflet (externe CSS/JS) en de front-assets van de module op de bestelpagina.
  • displayCarrierExtraContent — injecteert de lijst en de kaart onder de afhaalvervoerder.
  • actionCarrierUpdate — werkt de identifier van de vervoerder bij wanneer hij in de back-office wordt gewijzigd.
  • actionValidateStepComplete — maakt de winkelselectie verplicht in de leveringsstap.
  • actionValidateOrder — legt de gekozen winkel vast in de bestelling.
  • displayOrderConfirmation en displayOrderDetail — tonen het afhaalpunt aan klantzijde.
  • displayAdminOrderSide — toont het afhaalpunt in de bestelfiche van de back-office.

Herkenning van de vervoerder

De methode isPickupCarrier() identificeert de afhaalvervoerder zowel via zijn referentie (id_reference) als via zijn huidige identifier, omdat de ID van een PrestaShop-vervoerder bij elke wijziging in de back-office verandert. Daarvoor worden twee configuratiesleutels opgeslagen: DATAFIREFLY_PICKUP_CARRIER_ID en DATAFIREFLY_PICKUP_CARRIER_REF.

Datatabellen

  • datafirefly_pickup_store — de winkels (naam, adres, coördinaten, openingstijden, status). Beheerd door het ObjectModel DataFireflyPickupStore.
  • datafirefly_pickup_selection — de gekozen winkel per winkelwagen (sleutel id_cart), vóór validatie van de bestelling.
  • datafirefly_pickup_order — de momentopname van de winkel per bestelling (sleutel id_order), bewaard na de aankoop.

AJAX-selectie

De frontcontroller ajax (actie selectStore) slaat de geselecteerde winkel op in datafirefly_pickup_selection voor de huidige winkelwagen. Bij validatie van de bestelling wordt deze selectie gekopieerd naar datafirefly_pickup_order, waarna de winkelwagenregel wordt verwijderd.

Deïnstallatie

Het deïnstalleren markeert de vervoerder als verwijderd en uitgeschakeld, verwijdert de configuratiesleutels (DATAFIREFLY_PICKUP_CARRIER_ID, DATAFIREFLY_PICKUP_CARRIER_REF, DATAFIREFLY_PICKUP_FEE) en verwijdert de drie tabellen van de module. De geregistreerde winkels worden dus gewist.

Bekende beperkingen

  • Het afhaalpunt wordt niet in de bevestigingsmails geïnjecteerd: het blijft zichtbaar in de back-office en het klantaccount.
  • De geocodering steunt op Nominatim (OpenStreetMap) — gematigd gebruik wordt aanbevolen om de gebruiksvoorwaarden van de dienst te respecteren.

FAQ

Is er een API-sleutel nodig voor de kaart?

Nee. De kaart gebruikt Leaflet en OpenStreetMap-tegels, zonder API-sleutel of externe configuratie.

Kan de klant zijn bestelling valideren zonder een winkel te kiezen?

Nee. Wanneer de afhaalvervoerder is geselecteerd, is de keuze van een winkel verplicht om de leveringsstap te passeren.

Wat gebeurt er met het afhaalpunt als ik een winkel verwijder na een bestelling?

De bestelling bewaart een momentopname van de winkel (naam, adres, openingstijden…) zoals vastgelegd op het moment van aankoop. Deze blijft raadpleegbaar, ook na verwijdering van de winkel.

Is de module compatibel met PrestaShop 9?

Ja, de module is compatibel met PrestaShop 8.x en 9.x.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support