facebook

Tak for din besked!

Vi har modtaget din besked og vil vende tilbage hurtigst muligt.

Menu
Kontakt os:
+45 71 74 28 28
Cecilie's

Cecilie's – kassesystem bygget fra bunden til fem centre

Cecilie's sælger bowling, minigolf, mad og drikke i fem centre. Vi har bygget deres kassesystem fra bunden – med integration til kortterminalen, bonprint direkte fra browseren, kasseopgørelse med optælling, gavekort på tværs af kanaler og dagsrapport videre til e-conomic.

Kunde

Cecilie's

Services

E-commerce Betalingsintegration API Integration Realtidsopdatering Multi-tenant Automatisering Hosting & vedligeholdelse ERP-integration

Teknologi

Laravel Vue.js Inertia.js Laravel Reverb Integration API MySQL Hosting

Link til casen

Besøg Cecilie's

Kundecase

Baggrund og udfordring

Cecilie's driver fem indendørs oplevelsescentre i Herlev, City2, Holbæk, Slagelse og Amager. Hvert sted er på flere tusind kvadratmeter og rummer bowling, minigolf, pool, dart og shuffleboard side om side med café, restaurant og sportsbar. Gæsten er sjældent kun ét af tingene: hun booker en bane, spiser, køber en omgang mere ved baren og betaler måske det hele på firmaets faktura.

Det gør kassen til noget andet end en butikskasse. Den skal kunne finde dagens bookinger frem, tage imod efterbestillinger på en bane, sende en madbestilling videre til køkkenet, sælge og indløse gavekort, kende forskel på moms på mad, drikke og aktiviteter – og aflevere dagens tal til bogholderiet i en form, der kan bogføres.

Ingen standardkasse på hylden kunne det uden at blive bøjet. Alternativet var at drive tre systemer ved siden af hinanden – et til booking, et til salg og et regneark til at få enderne til at mødes – med den type dobbeltarbejde og differencer, der følger med.

Indexed - Morten io gang med udvikling
Løsning

Løsningen

Vi har bygget kassesystemet fra bunden som et selvstændigt modul i den samme platform, der driver Cecilie's booking. Kassen er ikke koblet på bookingen – den er bygget på de samme data. Det fjerner hele det synkroniseringslag, der normalt er mellem et POS og alt det andet.

Kortterminalen taler direkte med kassen

Vi har skrevet integrationen til Verifone-terminalen selv – protokol, forbindelse, tilstand og fejlhåndtering. Ekspedienten trykker betal, beløbet ryger over på terminalen, og svaret læses tilbage i kassen. Ingen taster beløbet ind to gange, og en terminal, der er optaget eller uden forbindelse, giver en forståelig besked frem for en fejlkode.

Bonprint direkte fra browseren

Kassen kører i browseren, men printer på almindelige bonprintere over USB. Vi har bygget vores eget ESC/POS-lag med tekst, skrifttyper, streg- og QR-koder, billeder, papirklip og kasseskuffe, så bonner, gavekortbeviser, køkkensedler og kasseopgørelser ser ud, som de skal – på hardware, der ikke er låst til én leverandør.

Kasseåbning, optælling og opgørelse

En kasse åbnes med en startbeholdning og lukkes med en optælling seddel for seddel og mønt for mønt. Opgørelsen samler salg pr. betalingsmiddel, solgte og indløste gavekort og differencen mellem talt og forventet beholdning. Kassen kan ikke lukkes, mens der stadig ligger ubetalte ordrer på den.

Betaling med kort, kontant, gavekort og faktura

Flere betalingsmidler kan bruges på den samme ordre. Kontant afrundes til nærmeste 50 øre efter danske regler, og forskellen posteres for sig. Gavekort slås op på nummer og kan bruges som delbetaling, og erhvervskunder kan købe på faktura, der sendes videre – også elektronisk til offentlige kunder.

Bookinger hentes frem ved ankomsten

Dagens bookinger ligger i kassen. Personalet finder gæsten frem ved ankomst, tjekker ind og lægger mad, drikke og ekstra spil på den samme ordre. Det, der blev købt online, og det, der købes på stedet, er den samme handel – ikke to.

Madbestillinger videre til køkkenet

Mad bestilt ved kassen eller på en QR-kode ved bordet sendes til køkkenskærmen med bordnummer og tidspunkt, så køkkenet arbejder efter en kø frem for efter råb. Køkkenets åbningstider og kapacitet er en del af systemet, så der ikke sælges mere mad, end der kan laves.

Flere kasser, der arbejder sammen

Kasserne i et center deler ordrer i realtid, så en bon startet i baren kan afsluttes ved receptionen. Hver ekspedient logger på med sin egen kode – den samme kode, som bruges i vagtplansystemet – så salget kan spores til en person, og kassen kan låses mellem to skift.

Dagsrapporten går selv i bogholderiet

Hver vare, pakke og aktivitet hører til en kontogruppe, og når en ordre er fuldt betalt, fordeles omsætningen på de rigtige konti. Dagens salg sendes videre til e-conomic som et bilag fordelt på konti og betalingsmidler, klar til at blive bogført.

Bogføring og revisionsspor

Kassen skal kunne stå for et eftersyn

Et kassesystem er en del af regnskabet, og det har vi bygget efter fra begyndelsen frem for at lægge ovenpå bagefter:

  • Fortløbende numre uden huller: Bon-, ordre- og fakturanumre tildeles gennem en låst tæller med både distribueret lås og rækkelås i databasen, så to kasser aldrig kan trække det samme nummer – heller ikke i myldretiden.

  • Spor på alle ændringer: Rettelser, annulleringer og returneringer logges med bruger, tidspunkt og hvad der blev ændret fra og til, så en difference kan forklares frem for gættes.

  • Moms pr. varelinje: Mad, drikke, aktiviteter og gavekort behandles hver for sig, også når de sælges i den samme pakke.

  • Gavekort bogført som forpligtelse: Et solgt gavekort er ikke omsætning, før det bliver brugt. Salg, indløsning og saldo håndteres hver for sig med egen kontering.

  • Alle kald logges: Kommunikationen med terminal og økonomisystem gemmes med forespørgsel og svar, så det kan efterprøves præcis, hvad der blev sendt, når noget ikke stemmer.

Indexed - Kristian i gang med udvikling
Resultat

Resultater og fordele

Kassen er ikke et system ved siden af forretningen – den er en del af den.

Ét system i stedet for tre

Booking, salg, køkken og gavekort ligger i den samme løsning. Personalet skifter ikke mellem systemer midt i en ekspedition, og der er ét sted at slå en gæst op.

Dagens tal er bogført, inden nogen går hjem

Kasseopgørelsen bliver til et bilag i e-conomic frem for til et regneark. Det fjerner både indtastningen og den månedlige jagt på, hvor differencen kom fra.

Ingen taster beløb ind to gange

Kortterminalen får beløbet fra kassen. Det fjerner den klassiske fejlkilde, hvor der bliver betalt et andet beløb, end der blev solgt for.

Fem centre på samme platform

Hvert center har sine egne kasser, priser, varer og tal, men kører på det samme fundament. Center nummer seks er en opsætning frem for et nyt projekt.

Udstyret er et valg

Fordi vi taler direkte med printer og terminal, er hardwaren ikke bundet til en leverandørs kasse. En ekstra kasse i højsæsonen er en skærm og en printer – ikke en licensforhandling.

Ændringer tager dage, ikke kvartaler

Skal en rabat, en pakke eller en betalingsform fungere anderledes, ændrer vi den. Der er ingen producent at sende en ønskeseddel til.

Systemet bag

Hvordan det er bygget

Kassen er en Vue-applikation, der kører i browseren oven på en Laravel-backend, og som deler database, varekartotek og kunder med booking og webshop. Nogle af de valg, der bærer løsningen:

  • Realtid mellem kasserne: Ordrer, printjobs og statusskift sendes over websockets, så to kasser i samme center altid ser det samme.

  • Eget ESC/POS-lag: Bonner beskrives som byggeklodser i koden og oversættes til printerkommandoer, så en ny bontype er et stykke kode – ikke en skabelon i et fremmed værktøj.

  • Modulopdelt kodebase: Kasse, booking, køkken, gavekort, fakturering og ERP-integration er adskilte moduler med hver sit ansvar, så en ændring ét sted ikke vælter noget et andet.

  • Fælles medarbejderlogin: Kassen verificerer ekspedientens kode mod vagtplansystemet, så der kun er ét sted at oprette og spærre en medarbejder.

  • Multi-tenant fra bunden: Platformen er bygget til flere selskaber og flere centre med hver sine data, indstillinger og nummerserier.

  • Testdækning på pengene: Betalinger, returneringer, afrunding og kasseopgørelse er dækket af automatiske tests, fordi det er dér, en fejl koster rigtige penge.

Indexed - Palle & Kristian Gennemgang af udvikling
PHP kode i en editor på en bærbar

Fremadrettet samarbejde

Vi hoster og driver løsningen og udvikler den videre sammen med Cecilie's. Fordi kasse, booking, køkken og økonomi ligger i den samme kodebase, kommer en forbedring ét sted også de andre til gode – og et nyt center er en opsætning frem for et nyt system.

Indexed

Hvorfor vælge Indexed?

  • Vi bygger det, hylden ikke har: Kortterminal, bonprinter og kasseopgørelse er skrevet af os, så løsningen følger forretningen frem for omvendt.

  • Vi kender økonomienden: e-conomic, Business Central, Rackbeat og Visma eEkonomi er integrationer, vi har bygget og driver – ikke noget, vi sætter os ind i undervejs.

  • Én leverandør til hele kæden: Booking, kasse, køkken, gavekort og bogføring ligger hos os, så der ikke er flere leverandører at koordinere, når noget skal rettes.

  • Erfarent team: Med mere end 20 års erfaring har vi løst komplekse udfordringer for en lang række kunder.

  • Dansk udvikling – Made in Denmark: Al vores udvikling og hosting foregår i Danmark.

Indexed - Palle i gang med udvikling

Mød holdet

Vi er et webbureau med fokus på kvalitet og kundens løsninger. Vores tekniske kunnen matcher vores evne til at levere.

Indexed
Peter Sørensen, Indexed
Direktør

Peter Sørensen

Mathi Kumarathurai, Projektleder hos Indexed.dk
Projektleder

Mathi Kumarathurai

Morten Bak
CTO

Morten Bak

Palle Andersen Houtved
Senior Webudvikler

Palle Houtved

Senior Webudvikler

Kristian Svalgaard

Senior webudvikler

Tue Jensen

Morten Harders
Senior Webudvikler

Morten Harders

Christian Mousten
Senior Webudvikler

Christian Mousten

Kontorets blæksprutte

Mette Blaase

Skal jeres kasse passe til forretningen?

Bøjer I en standardkasse for at få hverdagen til at hænge sammen, så lad os tage en uforpligtende snak om, hvad et kassesystem bygget til jer ville kunne.