De kassa, van begin tot eind
Afrekenen en betalingen innen, blijven verkopen als de lijn wegvalt, printers en de lade, kassa sluiten, het backoffice, de rapportage, een vloot van kassa's beheren. Bewezen op balies die nu open zijn.
Het platform
De meeste kassaleveranciers hebben één product met een instellingen scherm, of een fork per klant die langzaam veroudert. Phlo POS is een gedeelde engine met plekken om in te haken. Wat van jou is, blijft van jou; wat nuttig blijkt voor iedereen gaat terug in de engine, waar het voor iedereen wordt onderhouden.
Dat is het hele punt van een gedeelde engine, en het is wat een maatwerk kassa betaalbaar maakt. Twee kassa's die we draaien, en wat elk van hen eigenlijk gebouwd moest hebben.
Afrekenen en betalingen innen, blijven verkopen als de lijn wegvalt, printers en de lade, kassa sluiten, het backoffice, de rapportage, een vloot van kassa's beheren. Bewezen op balies die nu open zijn.
Drie dingen moesten worden gebouwd: het loyaliteitsprogramma dat het al jaren draait, de kolommen die het hoofdkantoor in een rapport wil, en welke schermindeling zijn kassa's gebruiken. Meerdere valuta, meerdere winkels en de contante procedures waren al aanwezig.
Ronden geparkeerd op een naam, een tafel of een team, opgepakt door degene die achter de bar staat. Het is gebouwd omdat één kassa het nodig had, en geschreven zodat de volgende het gewoon kan inschakelen.
Dat is de deal. Je betaalt voor het deel dat van jou is, en het deel dat gedeeld is wordt steeds beter zonder dat je er twee keer voor betaalt.
Niet door de motor te kopiëren en deze te bewerken, wat eenmalig goedkoop is en voor altijd duur. Door jouw eigen gedrag eraan te koppelen op de momenten waarop een kassa verschilt, en de rest met rust te laten.
Wat het sluiten van de dag blokkeert. Wat niet geannuleerd mag worden. Wat er gebeurt op het moment dat een bon wordt geboekt. Welke extra velden een regel heeft. Wat een korting mag doen. Elk van deze is een plek waar jouw gedrag loopt, en waar niets doen betekent dat de motor zich gedraagt zoals altijd.
Welke belasting heet het in jouw land, hoe leest een kortingsregel, wat staat er onderaan de bon, hoeveel kopieën print een kaartbetaling. Een bon in het Caribisch gebied splitst belasting op drie manieren onder drie namen; dat is een haak, geen vork.
Een loyaliteitsprogramma met zijn eigen broker, een boekhoudexport met jouw grootboekregels, een productfeed van een systeem dat hieraan voorafging. Connectors zijn gewone code in jouw eigen laag, en ze krijgen dezelfde tests als alles.
Een extra kolom op een bonregel, een extra tabel, een extra soort regel die de kassa kan boeken. Jouw laag voegt velden toe aan een model in plaats van het te kopiëren, zodat een gedeeld veld nog steeds op één plek wordt bijgewerkt.
Vraag je je af welk deel van je toonbank een haak zou zijn en welk deel er al is? Dat is wat een intake beantwoordt.
Aantoonbaar herbruikbare functionaliteit hoort in de gedeelde engine, zelfs wanneer één klant de eerste of enige afnemer is.
Van de werkafspraken van de Phlo POS-engine
Het klinkt als een intern detail. Het is de hele economie van het geheel. De gemakkelijke manier om een maatwerk kassa te bouwen is om de motor te kopiëren en deze te veranderen, wat eenmalig goedkoop is en voor altijd duur: elke fix moet vijf keer worden gedaan, en vier daarvan worden vergeten.
Het tabsysteem dat een bar vroeg is algemeen geschreven. De multi-valuta verwerking die een keten nodig had zit in de kern. Het terminalprotocol dat we voor één bank hebben geïmplementeerd staat naast de cloudterminal als gelijkwaardig. Elke kassa die daarna komt begint verder dan de vorige, en dat is waarom het tweede project van dit soort minder kost dan het eerste.
Een gedeelde motor is alleen een voordeel als een wijziging voor één kassa niet stilletjes een andere kan breken.
Elke kassa en elk backoffice van elke live installatie wordt gestart en gecontroleerd door de test suite. Als een van hen stopt met werken, gaat de wijziging niet door.
Totaalbedragen, belasting, kortingen en afrondingen worden gecontroleerd op basis van geregistreerde uitkomsten. Boeken en annuleren worden getest tegen een echte database, omdat daar de geldbugs zich bevinden.
Een test bouwt het hele schema opnieuw op vanuit zijn migraties op een lege database en vergelijkt het, kolom voor kolom, met wat er daadwerkelijk draait. Een ontwikkelingssnellink kan geen productie verrassing worden.
Per kassa, met de versie opzettelijk verhoogd. De ontvanger maakt eerst een dump, voert de uitstaande migraties uit en rolt alles automatisch terug als de gezondheidscontrole faalt.
Het contract tussen de kassa en de machine waarop het afdrukt is schriftelijk vastgelegd. Nieuwe mogelijkheden worden ernaast toegevoegd, nooit ter vervanging, zodat een kassa die een jaar niet is aangeraakt blijft afdrukken.
Een rapportageknop op de kassa en in de backoffice stuurt een screenshot met de omstandigheden en opent een thread. Wat er gerapporteerd is, wat er besloten is en in welke versie het opgelost is, wordt opgeschreven, niet onthouden.
Je krijgt een systeem dat draait, en een overeenkomst die zegt wat er gebeurt als we door een bus worden aangereden. Wat we niet doen is je vastzetten aan hardware die je alleen bij ons kunt kopen of een licentie die je kassa stopt als een contract eindigt. Eigendom van het werk dat we voor je doen is onderdeel van het voorstel, geen bijzaak.
Dat is de normale situatie, en het is de reden voor het hook contract. Iets specifieks voor jou leeft in jouw eigen laag; iets dat elke kassa kan gebruiken gaat in de gedeelde engine, waar het voor iedereen wordt onderhouden en getest. Je betaalt niet twee keer voor hetzelfde idee.
Het is niet toegestaan om. Elke wijziging aan de gedeelde engine doorloopt de volledige suite van beide live installaties voordat het wordt verzonden, en het implementeren op een kassa is een bewuste stap per app, met eerst een database dump en een automatische rollback als de gezondheidscontrole faalt.
De rekencore wordt getest tegen gouden bestanden, en de boek- en annuleringsstromen worden getest tegen een echte database die is opgebouwd uit de live structuur. Het annuleren van een verkoop was vroeger de bugfabriek; het heeft nu tests die boeken, annuleren en de gevolgen controleren.
Dat is het grootste deel van het werk in een keten. Boekhoudexporten, loyaliteitsprogramma's, productfeeds en oudere databases die niet van de ene op de andere dag kunnen worden vervangen zijn connectors, en een connector is code die we schrijven en jij houdt.
Een maatwerk kassa heeft geen lijstprijs, omdat de scope dat bepaalt. Na een intake krijg je één prijs voor het hele project: bouw, hardware advies, installatie en training in één bedrag, afgesproken voordat we beginnen.
Klaar om het goed te bekijken?
Vertel ons hoe je vandaag verkoopt en wat je tegenhoudt. Je krijgt een vaste scope en een vaste prijs, of een eerlijk nee.
Hoe een intake eruitziet
Je hoort terug van de mensen die het gaan bouwen, niet van een verkoopdesk.
Vraag je je af wat jouw kassa nodig heeft?
Start een intake