Naar de inhoud
hans
Werk Expertise Diensten CV Portfolio Koppelingen Laravel packages Blog Aanmelden Contact opnemen

Kassa, voorraad en de klant erachter

Een winkelketen draait op een kassasysteem dat alles weet en weinig laat zien. Het werk zit in de laag ernaast: de klantenkaart, het spaarsysteem, de cijfers over winkels heen, en de klant die zijn eigen gegevens wil kunnen aanpassen.

Wat een winkelketen van software vraagt

Een kassasysteem is goed in wat het doet: aanslaan, betalen, voorraad afboeken, de dag afsluiten. Wat het zelden goed doet is alles wat eromheen hangt. De klantenkaart is er een, en die valt op omdat de klant hem ziet. Maar ook de vraag welke winkel welke productgroep het snelst kwijtraakt, of een mail naar iedereen die vorig jaar iets kocht en sindsdien niet meer langskwam, valt buiten wat een kassa doet.

De meeste van die systemen hebben wel een api. Daar zit meteen de tweedeling: wat je eruit mag halen is doorgaans ruim, wat je erin mag schrijven is smal en traag. Een koppeling die dat omdraait, alles zelf bijhouden en de kassa af en toe bijwerken, lijkt sneller en breekt bij de eerste correctie die iemand aan de kassa doet. De kassa wint altijd; de laag ernaast moet zich daarnaar schikken.

Wat ik erop gebouwd heb

Zes stukken tussen een kassa die alles bijhoudt en een klant die zijn kaart op zak heeft.

De klantenkaart in de telefoon

Een pas in Apple en Google Wallet, met de naam, de barcode en het saldo erop. Verandert het saldo, dan werkt de pas zichzelf bij op het toestel zonder dat de klant iets moet openen. Geen app om te installeren en geen kaartje om kwijt te raken.

Punten en tegoeden uit het spaarsysteem

Wat het kassasysteem aan punten, kortingen en cadeaubonnen bijhoudt, opgehaald en getoond op een plek waar de klant zelf kan kijken. De kassa blijft de bron; het scherm ernaast is enkel een venster.

Gegevens die de klant zelf aanpast

Een adreswijziging of een uitschrijving die de klant zelf doorvoert, en die langs de api meteen in het kassasysteem staat. Scheelt de winkel een telefoontje en de klant een wachttijd.

Inschrijven aan de kassa

Lid worden zonder formulier: een code op het klantenscherm, de telefoon erbij, en de kaart werkt bij de volgende aankoop. Wie liever tikt, doet het op de site en ziet dezelfde kaart verschijnen.

Winkels en verkopen voor de eigen rapportering

Verkopen, vestigingen en productgroepen uit het kassasysteem in een eigen databank, zodat een vraag over drie winkels en zes maanden een query is en geen exportronde langs drie mensen.

Verzenden vanaf de winkelvloer

Een bestelling die niet opgehaald wordt, wordt een pakket: label, servicepunt, retour en een trackingpagina in de eigen huisstijl. Rechtstreeks op het vervoerderscontract, of via een verzendplatform.

Hoe het in elkaar zit

Vijf keuzes die bepalen of de koppeling ook klopt op een drukke zaterdag en na de eerste correctie aan de kassa.

De kassa is de bron, niet je eigen databank

Wat aan de kassa gebeurt is waar. Een eigen applicatie ernaast die klantgegevens of saldo bijhoudt, houdt een kopie bij, en een kopie loopt uit de pas. Daarom schrijft de applicatie terug naar het kassasysteem waar dat kan, en toont ze de rest live in plaats van op te slaan.

Een wallet-pas is geen plaatje maar een abonnement

Een pas die eenmalig gedownload wordt, is de dag erna verouderd. Apple en Google voorzien allebei een weg om een bestaande pas op het toestel bij te werken, elk met hun eigen sleutels, hun eigen certificaten en hun eigen verlooptermijnen. Dat stukje beheer is het echte werk; het ontwerp van de pas is een middag.

Een klant is geen kaart

Dezelfde persoon heeft een kaart, een mailadres, misschien een tweede kaart van vroeger en een bestelling online. Ze aan elkaar knopen is niet het samenvoegen van twee rijen maar een beslissing over wie waarvan eigenaar is. Zonder die beslissing vooraf sta je later voor dubbele klanten die niemand durft samen te voegen.

De winkel telt in seconden

Aan de kassa staat een rij. Een scherm dat drie tellen nadenkt terwijl de api geraadpleegd wordt, is aan het einde van de dag een half uur. Vandaar dat alles wat traag kan zijn vooraf opgehaald wordt of achteraf verwerkt, en dat de kassa nooit hoeft te wachten op iets dat ook later kan.

Elke vestiging is anders, en dat is geen fout

De ene winkel werkt met afhaalpunten, de andere verstuurt, de derde doet alleen ter plaatse. Dat in een systeem gieten met een schakelaar per vestiging werkt beter dan een uitzondering per winkel in de code. De vestiging is dan een eersterangs begrip en geen filterveld.

Draai je zelf op een kassasysteem

Wil je een klantenkaart zonder plastic, cijfers over je vestigingen heen, of gewoon weten wat de api van jouw pakket toelaat, dan kijk ik daar graag eens naar. Stuur gerust een bericht.

De api van Tilroy staat uitgewerkt bij de Tilroy-koppeling, verzenden bij Sendcloud en Shippingtail, betalen bij Mollie Connect. Wat tweedehands anders maakt, staat bij kringloop en hergebruik.