Nederlands, English
Doneer aan ASK-Solutions (de IRADIS Foundation), Bekijk onze video's, Steun ons op Patreon
Aanmelden

Bookkeeping

Bookkeeping is een actief AGPLv3 Java-client/server-administratieplatform dat door ASK-Solutions wordt ontwikkeld en gebruikt. Het is ontstaan vanuit boekhoudkundige behoeften, maar in de praktijk uitgegroeid tot een breder intern systeem voor financiële administratie, relaties, projectdefinities, bankafschriften, apparatuur en inventaris, rittenregistratie, meldingen, systeemintegratie en onderdelen van de eigen technische infrastructuur.

De software is ontwikkeld vanuit de behoefte van ASK-Solutions om financiële, organisatorische en operationele administratie onder eigen zeggenschap te houden. Functies worden toegevoegd wanneer daar in het dagelijkse werk een concrete behoefte aan ontstaat. Daardoor verbindt Bookkeeping gegevens en processen die in de praktijk met elkaar samenhangen, zonder dat daarvoor steeds een afzonderlijk gesloten systeem nodig is.

Wat Bookkeeping is

Bookkeeping is een Java-client/server-applicatie. De server is geschreven in Java en kan onder Linux of Windows draaien. De client is eveneens geschreven in Java en ondersteunt interfaceschaling en instelbare pluggable look-and-feel-instellingen.

Het systeem wordt door ASK-Solutions gebruikt voor boekhouding, btw-administratie, grootboekwerk, financiële rapportage, relatiebeheer, bankafschriftverwerking, activa- en inventarisbeheer, rittenregistratie, projectdefinities, meldingen en verschillende interne processen. Hoewel de naam naar boekhouding verwijst, is Bookkeeping daarmee breder dan een grootboekapplicatie: het is een administratief platform dat in het dagelijkse werk van de stichting wordt gebruikt.

Waarom ASK-Solutions het bouwde

ASK-Solutions had administratiesoftware nodig die verder ging dan de functies van een standaard boekhoudpakket. De financiële administratie staat in de praktijk niet los van relaties, projecten, apparatuur, bankafschriften, rittenregistratie, interne processen en onderdelen van de eigen technische infrastructuur. Door de jaren heen was daarom regelmatig de vraag waarom niet eenvoudig een gangbaar pakket zoals Exact, AFAS of vergelijkbare administratiesoftware werd gebruikt. Zulke pakketten kunnen een groot deel van de financiële administratie afhandelen, maar bieden niet vanzelf de combinatie van functies en onderlinge koppelingen die binnen ASK-Solutions nodig is.

Een maatwerk-ERP- of CRM-achtige oplossing zou die combinatie wel kunnen bieden. Zeker in de jaren 2000 kon dat bijvoorbeeld een lokaal servergebaseerd systeem zijn dat met een omgeving als FileMaker Pro, SAP, Magic of andere bedrijfssoftware door een gespecialiseerd bureau werd ingericht en verder ontwikkeld. Zo’n oplossing kon technisch goed aansluiten op de organisatie, maar bracht ook aanzienlijke ontwikkel- en licentiekosten met zich mee en maakte verdere aanpassingen afhankelijk van zowel de gebruikte softwareomgeving als de partij die het maatwerk onderhield.

ASK-Solutions had zelf de technische kennis om zo’n systeem te ontwerpen en te onderhouden. Bookkeeping zelf ontwikkelen maakte het mogelijk om de software direct met de eigen praktijk mee te laten groeien, koppelingen en functies zelf toe te voegen en zowel de gegevens als de broncode en technische werking onder eigen zeggenschap te houden. Door het project als vrije software beschikbaar te maken blijft die vrijheid bovendien niet beperkt tot de eigen organisatie.

Bookkeeping groeide daarom vanuit praktisch gebruik. Nieuwe functies werden toegevoegd wanneer daar een concrete administratieve of operationele aanleiding voor bestond, waaronder btw-overzichten, activabeheer, relatiebeheer, rittenregistratie, bankafschriftimport, meldingen, projectdefinities, koppelingen met andere eigen systemen en ondersteuning voor delen van de technische infrastructuur.

Architectuur

Bookkeeping is opgebouwd als een Java-client/server-systeem. De Java-client communiceert met de server via TLS-beveiligde RMI. De server gebruikt MySQL voor permanente opslag, maar de applicatielogica is niet direct aan ruwe databasetabellen gekoppeld. Het systeem gebruikt serialiseerbare POJO’s (Plain Old Java Objects) en een database-abstractielaag met caching, toegangscontrole en logging.

De server biedt daarnaast een REST API waarmee andere ASK-Solutions-systemen en scripts gegevens en functies uit Bookkeeping kunnen gebruiken zonder via de Java-client te werken. Die API wordt onder meer gebruikt voor webintegratie en voor koppelingen met onderdelen van de eigen serveromgeving.

Verschillende delen van de onderliggende codebasis komen voort uit eerder softwarewerk van ASK-Solutions. Sommige bibliotheken en patronen gaan terug op projecten zoals A340GC en ander Java-gebaseerd werk uit de Java 1.2-periode aan het einde van de jaren negentig. Die codelijnen worden nog steeds onderhouden en gebruikt.

Financiële administratie en rapportages

Naast het grootboek biedt Bookkeeping de gebruikelijke financiële overzichten die nodig zijn voor dagelijkse administratie: balansoverzichten, activa en passiva, winst-en-verliesoverzichten, configureerbare dagboeken en btw-overzichten per dag, week, maand, kwartaal, jaar of zelf gekozen datumbereik.

Facturen kunnen worden bekeken, gezocht en gefilterd op rekening, relatie, omschrijving, referentie, datumbereik en andere praktische velden. Dezelfde benadering is beschikbaar om de onderliggende boekingen en mutaties tussen rekeningen direct te bekijken. Daardoor kan zowel vanuit de factuurkant als vanuit de onderliggende boekingen en het grootboek worden gewerkt.

Bookkeeping ondersteunt ook het importeren van bankafschriften. Geïmporteerde afschriften kunnen worden afgeletterd tegen inkomende en uitgaande facturen, zodat betalingen, vorderingen en schulden vanuit dezelfde administratieve omgeving kunnen worden opgevolgd.

Entiteiten, rekeningen en RGS

Bookkeeping ondersteunt meerdere entiteiten. Elke entiteit kan eigen rekeningen hebben, of rekeningdefinities delen terwijl de eigen mutaties gescheiden blijven. Daardoor kan een volledig rekeningschema, zoals een RGS-inrichting, één keer worden onderhouden, terwijl per entiteit alleen entiteitsspecifieke rekeningen hoeven te worden toegevoegd.

Dezelfde software kan daardoor verschillende administraties ondersteunen zonder rekeningdefinities, rapportagestructuren en ander inrichtingswerk onnodig te dupliceren.

Projecten en WasteBug-integratie

Bookkeeping beheert ook een projectlijst die binnen ASK-Solutions wordt gebruikt. Projecten kunnen een naam, nummer, relatie, startdatum en einddatum hebben, en kunnen worden gegroepeerd voor praktische administratie en opvolging.

Deze projectstructuur wordt ook gebruikt door een aangepaste ASK-Solutions-versie van WasteBug. Die WasteBug-versie, beschikbaar onder de AGPLv3, voegt een extra projectveld en een extra databasekolom toe. Via een databaseview en een cross-database foreign-key-constraint koppelt WasteBug dat veld aan de projectdefinitietabel in Bookkeeping. Daardoor kunnen projecten uit een of meerdere projectgroepen direct in WasteBug worden geselecteerd en kunnen cases, bugs en taken aan het juiste project worden gekoppeld.

De integratie houdt projectadministratie en issue tracking met elkaar verbonden zonder dat het ene systeem het andere wordt. Bookkeeping blijft de administratieve bron voor projectdefinities, terwijl WasteBug het praktische hulpmiddel blijft voor het volgen van cases en ontwikkelwerk.

Apparatuur, activa en inventaris

Bookkeeping wordt ook gebruikt om apparatuur en andere inventaris administratief te volgen. Dat omvat onder meer servers, UPS’en, switches en andere netwerkapparatuur, machines, 3D-printers, plotters en andere apparatuur die op verschillende locaties van ASK-Solutions aanwezig is.

Niet alle geregistreerde apparatuur is een financieel actief. Apparatuur kan ook zijn gedoneerd, in voorraad worden gehouden, worden gebruikt als bron van onderdelen, worden opgeknapt voor hergebruik of binnen een project of subsidieregeling een nieuwe bestemming krijgen. De registratie maakt het mogelijk om onder meer herkomst, status, locatie en verdere bestemming van apparatuur uit elkaar te houden.

Daardoor sluit het inventarisbeheer aan op zowel de financiële administratie als de praktische werkelijkheid waarin apparatuur kan worden gekocht, gebruikt, verplaatst, gerepareerd, gedoneerd of opnieuw ingezet.

Relaties, toegang en meldingen

Bookkeeping beheert relaties en contacten. Dat kunnen onder meer leveranciers, verhuurders, samenwerkingspartners en andere organisaties zijn, maar ook relaties aan wie ASK-Solutions bijvoorbeeld gebruikte onderdelen of materialen, een workshop, langere ondersteuning of het gebruik van een ruimte in rekening brengt.

Het systeem bevat daarnaast gebruikersnaam- en wachtwoordgeneratie, toegangscontrole en logging. De server kan clients herkennen op hostnaam en/of IP-adres voor geconfigureerde automatische login of entiteitsselectie.

Bookkeeping kan e-mail- en sms-meldingen gebruiken voor administratieve en praktische opvolging. Een melding kan bijvoorbeeld een vrijwilliger of bestuurder eraan herinneren dat een factuur nog moet worden gemaakt, dat voor een locatie of activiteit iets moet worden geregeld of dat een geregistreerde situatie aandacht nodig heeft.

Daarbij kent Bookkeeping de administratieve context waarop de melding betrekking heeft. Dat maakt deze functie anders dan een losse agenda-afspraak. Wanneer bijvoorbeeld een geïmporteerde bankmutatie aan een factuur wordt gekoppeld en de administratieve status daardoor verandert, kan die gewijzigde toestand ook bij de verdere opvolging worden gebruikt. De software kan zo rekening houden met wat inmiddels in de administratie is gebeurd, in plaats van alleen op een vooraf vastgelegde datum een herinnering te geven.

Waar dat wordt gebruikt, kan de server meldingen via de eigen MTA-implementatie verzenden.

REST API en ASK-Accounts

De Bookkeeping-server biedt een REST API waarmee andere systemen gebruik kunnen maken van gegevens en functies uit Bookkeeping zonder via de Java-client te werken. De hoofdwebsite gebruikt deze API via de Nocterra-add-on ASK-Accounts. ASK-Accounts draait op de afzonderlijke accountwebsites van ASK-Solutions en vormt een dunne webinterface bovenop functies die door Bookkeeping beschikbaar worden gesteld.

Samenwerkende relaties kunnen via ASK-Accounts onder meer hun eigen contact- en adresgegevens beheren en factuurinformatie en factuurdocumenten raadplegen. Wanneer voor iemand tijdelijk technische voorzieningen binnen de serveromgeving worden beheerd, kunnen via dezelfde interface ook daarvoor beschikbare functies worden gebruikt, bijvoorbeeld voor het configureren van een e-mailaccount of het overzetten van een website van een test- naar een liveomgeving.

ASK-Accounts is niet de enige manier waarop deze functies worden gebruikt. Binnen de eigen technische omgeving kunnen beheerders rechtstreeks met de REST API en achterliggende serverfuncties werken. Dezelfde infrastructuur ondersteunt onder meer de eigen websites, projectwebsites, interne systemen en ontwikkel- en testomgevingen van ASK-Solutions.

Geplande verdere toepassing

Er wordt ook onderzocht hoe dezelfde opzet later binnen The Owl’s Nest kan worden gebruikt. Een mogelijke toepassing is een afgeschermde omgeving voor participanten die via een samenwerkende behandelaar of andere organisatie deelnemen. Daarin zouden bijvoorbeeld afspraken, eigen notities en vooraf in te vullen intake- en signaleringsvragen kunnen worden opgenomen, zodat iemand vóór een gesprek al kan aangeven wat diegene wil bereiken en met welke omstandigheden tijdens de deelname rekening moet worden gehouden.

Een andere geplande toepassing is een dunne weblaag voor praktische aanvragen, zoals het aanvragen van een workshop of het opnemen van contact. In plaats van zo’n formulier uitsluitend als e-mail te versturen, kan de informatie dan rechtstreeks via de REST API in een daarvoor bestemde database worden opgeslagen en van daaruit worden opgevolgd.

Deze functies voor The Owl’s Nest zijn nog niet geïmplementeerd. De ontwikkeling van de locatiestructuur en bijbehorende websitefunctionaliteit kreeg eerst prioriteit.

Serverintegratie en automatisering

Een serveruitbreiding van Bookkeeping kan geplande taken uitvoeren, configuratiebestanden bijwerken en herlaadacties voor onder meer Apache- en Postfix-configuratie starten. Daardoor kunnen gegevens uit de administratie door scripts en systemen in de eigen technische omgeving worden gebruikt zonder dezelfde informatie op verschillende plaatsen handmatig te hoeven onderhouden.

Die technische omgeving wordt voor uiteenlopende doeleinden gebruikt. Op de servers draaien onder meer eigen openbare websites, projectwebsites, interne toepassingen, ontwikkel- en testomgevingen en gearchiveerde websites. Daarnaast wordt voor een beperkt aantal websites technisch beheer uitgevoerd als onderdeel van samenwerkingen of andere praktische ondersteuning. Dezelfde onderliggende automatisering kan voor deze verschillende situaties worden gebruikt.

Bookkeeping kan ook printtaken afhandelen. Daardoor kan een client op afstand overzichten afdrukken op een centrale printer via de serveromgeving.

Kassafuncties

De Bookkeeping-client bevat een kassamodus. Die modus kan verbinding maken met een weegschaal, betaalterminal en bonprinter. Deze apparaten hoeven niet noodzakelijk op dezelfde computer te zijn aangesloten als de computer waarop de client draait; ze kunnen via de serveromgeving worden afgehandeld.

Daarbij wordt hetzelfde client/server-model gebruikt als elders in Bookkeeping: administratie, apparaten en praktische afhandeling kunnen met elkaar worden verbonden zonder afhankelijk te zijn van één lokale desktopopstelling.

Ritten, kilometers en voertuigen

Bookkeeping ondersteunt ritten- en kilometeradministratie. Het kan ritten bijhouden voor een voertuig van een entiteit, en ook reizen met openbaar vervoer, privéauto’s of fietsen registreren die worden gebruikt voor aftrekbare kilometers en vergoedingen.

Daarmee wordt voertuig- en reisadministratie onderdeel van hetzelfde systeem als de financiële gegevens, relaties en interne processen die ervan afhankelijk zijn.

Wat het momenteel niet doet

Bookkeeping maakt momenteel niet rechtstreeks facturen aan. ASK-Solutions maakt facturen in LibreOffice en voert ze daarna in Bookkeeping in. Het systeem kan vervolgens worden gebruikt om die facturen te administreren, te zoeken, op te volgen en af te letteren.

Bookkeeping bevat momenteel ook geen loonadministratie of andere HR-functies.

Licentie

De Bookkeeping-server, Java-client, serveruitbreidingen, de ASK-Accounts-add-on voor Nocterra, Linux-systemd-services, scripts en bijbehorende C-programma’s zijn beschikbaar onder de GNU Affero General Public License versie 3.

Die licentiekeuze past bij het project omdat Bookkeeping niet alleen lokale desktopsoftware is. Het omvat servercomponenten, clients op afstand, REST API-integratie, webinterfaces en operationele automatisering. De AGPLv3 helpt deze netwerksoftware beschikbaar te houden om te bestuderen, aan te passen, te bewaren en te delen.

Relatie met ASK-Solutions

Bookkeeping is een van de vrije-softwareprojecten van ASK-Solutions, naast Nocterra, WasteBug, BackPage en Synergos. Het is gebouwd vanuit praktische behoefte, maar drukt ook een bredere positie uit: organisaties zouden geen zeggenschap moeten verliezen over hun eigen administratie, gegevens, werkprocessen en infrastructuur doordat de software daaromheen gesloten, gehuurd, ondoorzichtig of moeilijk te bewaren is.

Voor ASK-Solutions staat administratieve software niet los van softwarevrijheid. Bookkeeping verwerkt financiële en operationele informatie waarvan de stichting afhankelijk is. Dat systeem inspecteerbaar, aanpasbaar en onder vrije-softwarevoorwaarden houden, hoort bij dezelfde praktische filosofie die zichtbaar is in reparatie, documentatie, Right to Ownership, vrije hardware en brongebaseerd publiceren.

Bookkeeping laat ook zien hoe ouder softwarewerk bruikbaar kan blijven wanneer het wordt onderhouden in plaats van weggegooid. Codepatronen en bibliotheken uit eerdere projecten zijn meegenomen, aangepast en in gebruik gehouden. In die zin is Bookkeeping niet alleen een administratiesysteem, maar ook onderdeel van de softwarecontinuïteit van ASK-Solutions op lange termijn.

Status

Bookkeeping is een actief vrije-softwareproject dat door ASK-Solutions wordt ontwikkeld en gebruikt. Het ondersteunt de huidige administratie en technische infrastructuur van de stichting en wordt onderhouden en verder ontwikkeld waar praktische behoeften ontstaan. Hoewel het is gebouwd vanuit de eigen behoeften van ASK-Solutions, is het beschikbaar onder de AGPLv3, zodat anderen het onder de licentievoorwaarden kunnen gebruiken, bestuderen, aanpassen en delen.

De huidige software omvat onder meer boekhouding, btw-administratie, grootboekwerk, rapportages, relaties, bankafschriftverwerking, projectdefinities, activa- en inventarisbeheer, rittenregistratie, meldingen, REST API-integratie, ASK-Accounts en operationele automatisering. Sommige functies, zoals het rechtstreeks aanmaken van facturen en loonadministratie, maken momenteel geen deel uit van het systeem.

Waar kun je verder?