Het openen van een kassalade

Als je zelf kassasoftware schrijft, zul je er op een bepaald moment het mogelijk willen maken dat de kassalade open gaat. Als er geld gewisseld moet worden bijvoorbeeld.

De manier waarop je dat doet is met een kort commando naar de kassabonprinter. Meestal is de lade aangesloten op de printer. Neem bijvoorbeeld de Star TSP100. Deze printer heeft een speciale aansluiting voor de kassalade. Zodra de printer een bepaalde commando ontvangt wordt de lade geopend.

Het commando wat deze printer gebruikt is het BELL commando. Het BELL commando is een ASCII karakter wat als je ‘intypt’ op een desktop computer een piepje laat klinken. Voor de printer is het voor het openen van de lade. Sommige printers kunnen ook tegelijkertijd een geluidje laten horen. Het BELL commando heeft de waarde 7.

Naast het BELL commando ondersteunt een kassabonprinter ook andere commando’s. Dat is natuurlijk te veel om te onthouden en daarom heb ik een handige Perl module geschreven die voor de verschillende commando’s eigen functies heeft.

De code voor deze module is te vinden op GitHub en CPAN.

 

De webwinkel krijgt ook een API

Ik ben op dit moment druk bezig met het schrijven van de API van de webwinkel. Het wordt hier een stuk makkelijker door om de gegevens in de webwinkel voor andere zaken te gebruiken.

De API wordt al gebruikt voor twee processen. De eerste proces dat gebruik maakt van de API is bij het verzenden van de pakketten naar klanten. Hier wordt het op twee manieren gebruikt: voor het printen van labels en voor het exporteren van pakketten voor PostNL.

De webwinkel onthoudt de adresgegevens van de klant, zoals straatnaam en huisnummer in een veld. Dit is lastig al je controles wilt doen of er een huisnummer is ingevuld. Gelukkig heeft PostNL een library waarmee je deze gegevens zelf kunt splitsen.

Het andere proces dat gebruik maakt van de API is de voorraadcontrole. Elke paar minuten haalt een script de nieuwe facturen en de productgegevens op. Hiermee kan een volgend programma in de voorraad aangeven welke producten verkocht zijn. Zo blijft de voorraad registratie op orde.

Ook hieraan kun je zien dat een API processen mogelijk maakt die niet door een webwinkel alleen te implementeren zijn. Hoe zou je bijvoorbeeld labels via internet naar een labelprinter sturen?

Kortom een API is een hele vooruitgang voor een moderne onderneming. Jouw klanten en jijzelf kunnen er voordelen uithalen, die je alleen niet voor elkaar zou kunnen krijgen.

Wat is een API?

Een API is een application programming interface. Een API maakt het voor een programmeur mogelijk om nieuwe functionaliteit te schrijven die werkt met software die je nu al gebruikt.

Ik zal beginnen met een voorbeeld. Stel je hebt een webwinkel en na een tijdje begin je meer te verkopen. In het begin plak je handgeschreven adreslabels op je pakketten, maar nu begint dat steeds meer werk te worden. Met een API kun je nu de webwinkel gebruiken om de juiste gegevens van een bestelling op te zoeken en deze door te sturen naar een labelprinter, helemaal automatisch. Je hoeft dan alleen een ordernummer in te vullen en de rest gaat vanzelf.

Een ander voorbeeld is dat als je nog meer producten gaat verkopen, dat je misschien gebruik wilt maken van een nieuwe dienst van PostNL, waarmee je makkelijk en voor een lager tarief pakketten kunt versturen. Je moet hiervoor wel een bestand aanleveren met alle adresgegevens van de pakketten. Een API maakt dit mogelijk. Een programmeur kan een programma schrijven dat de bestellingen van vandaag kan inlezen van de webwinkel en een bestand maken dat door PostNL gebruikt wordt om adreslabels af te drukken en pakketten te frankeren. Dit scheelt allemaal een hoop werk.

Op dezelfde manier als hierboven is geschetst hebben veel programma’s en websites vergelijkbare mogelijkheden die je kunt benutten om je werk eenvoudiger te maken, door het kopieerwerk door software over te laten nemen.

 

Print zelf kassabonnen

Het besturen van een kassabonprinter met software kan moeilijk zijn zonder de juiste software. Ik heb daarom een Perl module geschreven waarmee het makkelijk wordt om de juiste codes voor de printer samen te stellen.

De module heet star-linemode en is op GitHub te vinden.

Ik zal proberen je een idee te geven wat deze module doet met een kort voorbeeld. De printer kan de kassabon op verschillende manieren afdrukken en opmaken. Er zijn codes voor centreren of vet of lettergrootte. Elke manier heeft een eigen code. Deze codes worden beschreven in de handleiding van de printer.

Als je geen opmaak wilt gebruiken, dan werkt de printer heel eenvoudig. Je kunt dan de tekst zonder codes naar de printer sturen. Het enige wat de printer dan doet is tekst printen op de bon.

Met de codes erbij kan je bijvoorbeeld de naam van het bedrijf groot en in het midden van de bon weergeven. Of je kunt de bon af laten snijden. Of je kunt de aangesloten kassalade open laten gaan.

Om de module te gebruiken verzin je welke tekst je wilt afdrukken en hoe je die wilt weergeven. De module kan deze commando’s omzetten naar codes voor de printer. Als je alle commando’s gegeven hebt, dan kun je deze codes allemaal in een keer naar de printer sturen.

Deze module stelt alleen de codes samen en zorgt niet voor het naar sturen van de codes naar de printer. Daar moet je weer andere software voor gebruiken.

Het backendproces verbeteren met een labelprinter

Een tijdje geleden vroeg een klant van me of ik iets kon verzinnen om het
backendproces van zijn webwinkel te verbeteren. Voordat ik begin met het
bouwen van een oplossing moet ik erachter komen wat er verbeterd kan worden.

Het onderzoek begint met het kijken hoe in de huidige situatie gewerkt wordt.
Een goede oplossing maakt gebruik van de processen in de huidige situatie en
past delen aan, zodat er bijna geen wijzigingen zijn voor het personeel.

Een korte kijk in de keuken van de webwinkel van de klant liet zien dat er
A4 stickervellen gebruikt worden. Voor elke bestelling wordt het vel een
keer door de printer gehaald. En om te zorgen dat erop het juiste label
afgedrukt wordt, moet er elke keer aangegeven worden op welke label nu
afgedrukt moet worden. Deze oplossing werkt, maar veroorzaakt veel werk voor
de persoon die de labels afdrukt.

Dit probleem kan al opgelost worden door een speciale labelprinter te
gebruiken. Een labelprinter is een kleine printer die speciaal gemaakt is om
losse etiketten en labels af te drukken. Een medewerker gebruikt een
bijgeleverd programma waar je de tekst van een label in kunt kopiëren en
plakken en dan afdrukken.

Terwijl de klant de nieuwe labelprinter in gebruik neemt, onderzoek ik hoe
ik een speciaal stuk software kan ontwerpen voor de rest van het probleem.
De medewerker moest nu nog de tekst van de label uit de webwinkelsoftware
knippen en plakken en extra retourlabels afdrukken. De software moet dit
allemaal uit handen van de medewerker nemen.

De doelen van de software:

  • De gegevens opzoeken op basis van het ordernummer bij de juiste webwinkel
  • Mogelijkheid tot het aanpassen van de af te drukken tekst
  • Tegelijk een extra label afdrukken met het logo en adres van de webwinkel
  • Meerdere webwinkels ondersteunen

Met deze doelen ga ik aan de slag en heb er een doeltreffend programma van
gemaakt. Ik was begonnen met de moeilijke delen van de software. Het
inloggen en verzamelen van de gegevens uit de webwinkel en het besturen
van de labelprinter.

Deze onderdelen zijn vrij belangrijk voor de software en het is daarom ook
een goed idee deze onderdelen eerst los van de rest van de software te
bouwen, zodat makkelijk getest kan worden of het werkt. Als je gelijk alle
software aan elkaar koppelt dan kun je nooit goed weten waar een probleem
zich voordoet.

Het ophalen van de gegevens bestaat uit een aantal stappen. Aangezien de
webwinkel geen speciale manier heeft om de gegevens op te halen wordt er
gebruikt gemaakt van ‘scraping’. Dit betekent dat de software de tekst uit
de juiste pagina van de webwinkel schraapt. Om dit te kunnen doen moet het
programma eerst inloggen en de juiste pagina vinden. Deze pagina wordt
gedownload en de juiste tekst wordt opgezocht met behulp van XPath.

Daarna moet deze tekst doorgestuurd worden naar de labelprinter. Deze
printer heeft wel een eigen manier om aangesproken te worden. Daardoor is
het makkelijk om een label te laten af drukken. Het is mogelijk om in het
bijgeleverde programma een labelbestand te maken met gaten die later door de
speciale software worden opgevuld met het ordernummer en de adresgegevens.

Nu de technische onderdelen klaar zijn is het belangrijk om de interface van
het programma goed te laten werken in het proces van de webwinkelier. Het
moet makkelijk zijn om een bestelling te zoeken en een label af te drukken.

Door de software echt te gebruiken kom je snel kleine probleempjes tegen die
meestal makkelijk op te lossen zijn. Door de webwinkelier gebruikt te laten
maken kom je snel missende functionaliteit en problemen tegen, zodat er nog
iets meer winst kan worden gehaald uit het gebruiken van de software.

De software wordt nu al weer een paar maanden zonder problemen gebruikt en
er zijn al meerdere duizenden labels mee afgedrukt.

Wat is een gastenboek?

Een gastenboek is een website waar bezoekers berichten kunnen achterlaten.
De meeste gastenboeken bestaan uit twee delen. Het eerste deel stelt de
bezoekers in staat om een bericht te schrijven en achter te laten. Het
tweede deel laat alle vorige berichten die bezoekers hebben achter gelaten
zien.

Een gastenboek kan een mooie toevoeging zijn voor een webshop of website.
Toch zijn de meningen over het gebruik van gastenboeken op commerciële
websites verdeeld.

Een nadeel van gastenboeken is dat ze vroeger veel gebruikt werden en dat er
tegenwoordig betere manieren om interactie mogelijk te maken met je
bezoekers.

Een ander nadeel van een gasteboek is mensen ze knullig vinden, omdat ze vol
staan met berichtjes van vrienden en familie. Deze berichtjes zijn misschien
leuk voor de eigenaar van de website, maar voor de andere bezoekers is het
een teken dat de website net begonnen en niet professioneel is. Dus als je
een gastenboek neemt, let op dat je ook berichten krijgt van andere mensen
dan je vrienden en familie, echte klanten bijvoorbeeld.

Sommige bezoekers laten een vraag achter in het gastenboek, maar het
probleem is dat je deze vraag alleen via het gastenboek kunt beantwoorden.
De persoon die de vraag gesteld heeft, moet het gastenboek in de gaten
houden om het antwoord te zien. U kunt daarom beter om een link maken
bovenaan het gastenboek naar een contactpagina of een e-mailadres.

Een voordeel van een gastenboek is dat bezoekers een positief en publiek
bericht kunnen achterlaten dat andere bezoekers kunnen lezen.

Een gastenboek is niet ingewikkeld en kan makkelijk door een software
ontwikkelaar gebouwd en geïntegreerd worden in een bestaande website. Een
gastenboek kan een mooie toevoeging zijn voor een website en daarmee
bezoekers omzetten naar betaalde klanten.

In hoeveel klikken moeten mensen hun informatie hebben?

Soms wordt er gevraagt hoe vaak een bezoeker klikt totdat deze opgeeft en de
website verlaat. Het is antwoord is niet duidelijk en er is geen vaste
regel.

Het idee achter de vraag is dat mensen na drie klikken gefrusteerd raken en
de website verlaten, omdat ze de benodigde informatie niet kunnen vinden.
Als je in je hoofd na gaat hoe dit werkt, dan lijkt het vanzelfsprekend. Als
je te veel moet klikken om te vinden wat je zoekt, dan begin je steeds meer
te twijfelen of de informatie op de website staat.

Aan de andere kant als je weet dat de informatie er is, dan ga je een paar
keer proberen om het te vinden en als je in de goede richting gaat, dan ga
je gewoon verder.

Het is niet makkelijk en nuttig om een vaste regel te hebben voor dit
probleem. Je kunt beter uitzoeken wat de doelen van je website en je
bezoekers zijn om het ontwerp daar op aan te passen.

Tellen hoeveel mensen op je website komen

Als je wilt bepalen hoe goed je website wordt bezocht, dan moet je eerst
tellen hoeveel bezoekers erop komen. Het kan lastig zijn om je bezoekers te
tellen, omdat je niet naast je website kunt gaan zitten en turven hoeveel
mensen er langskomen.

Gelukkig is het tellen van de bezoekersaantallen op websites een probleem
dat grotendeels is opgelost. Er zijn twee manieren om je bezoek te tellen:
serverlogs en website analytics.

Met serverlogs schrijft de webserver een regel tekst naar een bestand
voor elke pagina die opgevraagd wordt. Deze regel bevat informatie over de
browser, de herkomstpagina van de bezoeker en de pagina die de bezoeker
opvraagt. Door de informatie in dit bestand samen te vatten kun je veel te
weten komen over je bezoekers. In een hostingaccount wordt deze informatie
vaak web statistieken genoemd.

De tweede manier waarop je kunt tellen hoeveel bezoekers langskomen is met
website analytics. Hiervoor moet je een klein stukje javascript code opnemen in
je pagina’s. Deze code stuurt een berichtje naar een server als een bezoeker
op je pagina komt. Deze berichtjes bevatten meer informatie dan bij de
serverlogs en kunnen daarom een duidelijker beeld geven van je bezoek. Een
voorbeeld van deze manier is
Google Analytics.

Beide manieren hebben voordelen. Serverlogs worden meestal automatisch
gemaakt door hosting providers, terwijl website analytics meer informatie
bevat, maar iets meer werk is.

Waar wordt nu op gezocht in Google

Een jaar geleden beschreef ik hoe je kunt zien hoeveel mensen zoeken naar
een specifiek keyword
. Dit geeft je een idee welke van je
keywords meer gezocht wordt dan andere.

Dit is handig als je al weet wat je belangrijkste keywords zijn. Als je nog
niet weet wat je keywords zijn, dan zou je kunnen kijken bij Google
Trends
. Trends geeft een overzicht van de woorden waarop gezocht is
in Google.

Wat is saai?

Om erachter te komen wat een software ontwikkelaar voor u kan betekenen,
moet u zich afvragen wat u vaak doet, maar wat eigenlijk heel saai is.

Voor mensen betekent saai dat ze iets meer dan een keer moeten doen. Een
computer heeft geen moeite met het uitvoeren van saaie taken
.

Het voordeel van het automatiseren van saaie taken door een computer is dat
een computer het vaak sneller doet dan een mens en daarnaast ook nog
zonder fouten.

Dus de vraag is: Wat vindt u saai om te doen?