Gratis Open Source Regnskabsystem - #n4s
(Not For Sale / Ikke til salg)

Fri software

Måske har du hørt om open source.

Fri software er nødvendigvis open source, men open source er ikke altid Fri Software

Fri software insisterer på følgende rettigheder til brugere af computersoftware:

  1. Friheden til at køre et computerprogram til ethvert formål
  2. Friheden til at studere hvordan programmet virker og foretage ændringer
  3. Friheden til at dele en kopi af programmet med sin nabo

Friheden til at udgive en forbedret kopi og dele med omverdenen

Ledger - Dobbelt bogholder i terminalen

Ledger behandler tekstfiler som input og laver beregninger udfra principperne i det dobbelte bogholderi.

 

Dette program kan udføre alle de mest almindelige funktioner i et regnskabsysstem såsom:

  • Saldobalance
  • Kontokort
  • Årsafslutning
  • Momsrapportering
  • Valuta
  • Lager
  • Periodiseringer
  • Budget
  • Debitorer, kreditorer
  • Afskrivninger
  • Renter
  • og meget meget mere

 

Der var dog følgende mangler som gjorde at systemet ikke umiddelbart kunne anvendes, men som er blevet implementeret i n4s:

  • Understøtter ikke momskoder så momsen skulle redegøres for særskilt
  • Datafiler skulle indtastes manuelt idet der ikke er nogen brugergrænseflade at arbejde med dem i – og krævede flere indtastninger pr. postering end de fleste eksisterende systemer.
  • Rapportering vistes på skærmen i en virtuel terminal og kan ikke anses for at være præsentabel ifht eksterne interessenter.
  • Begrænset sporbarhed på transaktioner hvilket måtte siges at være på kant med bogføringsloven.
  • Har ikke noget grafisk interface og kan således kun bruges af folk som er forholdsvis it-kyndige med lidt flair for programmering.

Ledger er udgivet under en såkaldt BSD softwarelicens. Det betyder at det er fri software i den forstand at det ikke krænker nogle af de basale rettigheder for fri software, men den garanterer den omvendt heller ikke idet man kan videredistribuere softwaren i modificeret form uden at inkludere kildekoden. En mere almindelig fri softwarelicens er GPL som både garanterer brugeren sine rettigheder, og garanterer at de mennesker om videreudvikler på softwaren også giver Deres brugere samme rettigheder.

Hvordan virker ledger i praksis?

Du indtaster dine transaktioner i en eller flere datafiler.

Ledger har sit eget dataformat som er let at læse og skrive for mennesker.

Ledger læser filerne og viser den rapport du beder om med forskellige parametre og filtre som du bestemmer f.eks. periodeafgrænsning.

Her er en eksempel fil med to transaktioner. Bemærk at kontoplanen i ledger som udgangspunkt er en træstruktur hvor konti automatisk defineres efterhånden som de bliver brugt.

 

Købmand.ledger

2020/01/01 Omsætning
   Aktiver:Likvider:Bank  5000
   Aktiver:Likvider:Kasse  600
   Indtægter:Omsætning  -4480
   Passiver:Moms:Salgsmoms  -1120
2020/02/01 Varekøb
   Udgifter:Varekøb  1000
   Passiver:Moms:Salgsmoms  250
   Aktiver:Likvider:Bank  -1250

Disse transaktioner kan man få få ledger til at generere rapportering udfra.

Hvis jeg kører kommandoen ”ledger -f Købmand.ledger balance” får jeg en balance som en træstruktur der viser saldoen for al tid på de forskellige konti:

Hvis jeg kun ønsker at se Aktiverne kan jeg tilføje kontonavnet som parameter til balance-kommandoen, så ser det sådan her ud: ”ledger -f Købmand.ledger balance Aktiver” – output er således:

Hvis jeg ønsker at se indholdet af en konto (kontokort/kontospecifikationer) kan jeg bruge register-kommandoen: ”ledger -f Købmand.ledger register Aktiver:Likvider:Bank” viser f.eks. indholdet af banksaldoen:

Udover at man kan afgrænse på dato og en række andre parametre kan man også begrænse træets dybde, hvilket kan være nyttigt i forhold til at få sig en overskuelig regnskabsrapport.

 

Balancerapporten ovenfor hvor man kan se Likvidbeholdningerne Kasse og Bank har ikke nogen dybdebegrænsning, men hvis vi havde begrænset samme rapport til en trædybde på 2 ville Bank og Kasse ikke blive vist, men blot indregnet under Aktiver:Likvider.

 

Det er lidt samme øvelse bogholdere og revisorer laver når de laver årsrapporter. Der bliver samlet mange små konti der ikke er relevante at vise regnskabslæseren individuelt. Der er f.eks. slet ikke plads til at inkludere kasse og bank som selvstændige poster i den taksonomi som anvendes ved årsrapporterne, men de samles naturligt under Likvide beholdninger.

Unix - Linux - GNU

En af mantraerne i den tekniske filosofi omkring Unix (som GNU/Linux er en slags variant af) er en opfordring til at bygge simpel, kort og modulær kode og særligt have for øje at lave små programmer der udfører éen funktion godt i stedet for et stort program med mange funktioner indbygget. Ved at skabe en række små programmer med hver sin funktion i stedet for at bygge alle funktionerne ind i et stort og komplekst stykke software kan man gøre det nemmere at genbruge kode ved at andre programmer mere enkelt kan kalde nogle af de funktioner der er separeret i sit eget program.

Linux er ikke et operativsystem i sig selv, men blot éen enkelt komponent ud af mindst 100 og en ret essentiel komponent, nemlig kernen som forbinder alle de andre programmer.

En stor del af disse programmer er dog også så essentielle at systemet er ubrugeligt uden.

Et operativsystem har, udover en kerne, bl.a. brug for følgende:

  1. En opstarter
  2. Et filsystem
  3. En compiler (så man kan skrive programmer i et programmeringssprog som oversættes til binære filer som operativsystemet kan afvikle)
  4. En række kommandoer til at navigere rundt og læse/skrive til/fra filer
  5. En ”skal” (shell/kommandoprompt) som kan tage imod kommandoer ved tastaturinput eller udføre en række kommandoer fra en fil.

Når de mest basale funktioner er på plads kan man så bygge ovenpå med netværk, avancerede grafiske systemer, multimedier og lign.

Hvis funktionerne er delt ud på forskellige programmer åbner det mulighed for genbrug af kode, så man ikke finder sig selv skrive det samme stykke kode om og om igen.

Et moderne GNU/Linux system har adgang til millioner af bittemså programmer med hver sit eget værdige formål.

Hvis man i sit arbejde har brug for at udføre et lignende stykke arbejde kan man da bare kalde et eksisterende program der er lavet kun med dette formål for øje.

N4S

n4s’ kerne hedder ledger.

Alle andre komponenter kommunikerer med og afhænger af denne kerne fra et højere lag.

Ovenpå denne kerne er indtil videre udviklet:

  • Avanceret udvidet filstruktur og versionering og sporing på data/transaktioner.
  • Periodisering
  • Momskoder
  • Årsafslutning
  • Rapport generator og transaktions-stifinder (webapplikation samt tekstbaseret)
  • Import af transaktioner fra CSV eller live bank forbindelse
  • Automatisk beregning af rente hvor man kan specificere rentesatsen på en given konto
  • Automatisk periodisering hvor man på hver udgift kan angive en start og slutdato
  • Automatisk konsolidering
  • Bankafstemning
  • Logik / regler – mulighed for at definere regler for automatisk kontering af posteringer
  • Søgning efter transaktioner og masseopdatering udfra specificerbare kriterier
  • Præsentabel rapportering (saldobalancer og kontokort)
  • Mulighed for at generere links for en given regnskabsperiode for et regnskab som kan åbnes uden login, hvor man kan se saldobalancen og gennemse de bagvedliggende posteringer.
  • Skatteregnskab – manuel
  • Bilagshåndteringssystem
  • Værktøj til effektiv oprettelse af transaktioner
  • Indlæsning af OIOUBL (XML) fakturaer

Planlagt ”short term”:

  • XBRL fil til upload af årsrapport til Erhvervsstyrelsen uden indtastning
  • Automatisk import af skattekonto poster
  • Anlægskartotek
  • Mere automatisering af skatteregnskab, herunder beregning af udskudt skat.
  • Avanceret debitor/kreditormodul
  • Fakturering
  • Hjælperværktøjer til nem oprettelse af transaktioner for nybegyndere

Ønskeliste – langsigtede mål:

  • Distribueret datalagring via blockchain teknologi
  • eller ændring af datastruktur som lige nu er baseret på en serie af datafiler til en database (af typen postgresql).
  • Forskellige brugere, forskellige rettigheder. F.eks. brugere der kun kan læse regnskabet, mens andre kan ændre i det.
  • En bedre bankforbindelse hvor man udover at kunne se kontooversigt og posteringer også kan oprette betalinger (bankoverførsel/giro).
  • Integration til Izettle
  • Integration til Paypal
  •  

Ledgers begrænsninger

Ledger er udviklet i c++ og det er svært at få et overblik og forståelse for programmets struktur og foretage forbedringer.

Der er nogle mindre fejl i systemet som burde rettes og måske sker det en dag uden at jeg behøver gøre noget. Hvis ikke, bør der foretages en investering i en dygtig c++ programmør som burde kunne udrede de mest væsentlige problematikker på en uges tid.

Jeg har fundet workarounds for at undgå disse problemer, men på den lidt længere bane er det nødvendigt at de rettes i selve ledger-systemet.

Visionen for fremtidens regnskab

  1. Indtastning af data holdes på et minimum så længe det af forskellige årsager er nødvendigt.
  2. Posteringer skal indlæses automatisk fra andre it-systemer, f.eks. bankposter, skattekonto, lønsystemer og lign.
  3. Der skal foretages en automatisk kontering baseret på brugerdefinerede regler i den udstrækning det er muligt
  4. Den automatiske kontering er midlertidig og valideres af bogholderen ifbm. aflæsning af bilagsmateriale
  5. Aftaler skal kunne registreres i et standardiseret format således at de kan blive indregnet i budgettet måned for måned automatisk.
  6. Regnskabet skal ikke længere være historisk, men give et her og nu billede af virksomhedens (eller personens) økonomiske situation.

Derudover skal softwaren give brugeren de 4 basale friheder, altså være Fri Software.

Første priortet er dog at systemet får løst sine sikkerhedsmæssige udfordringer og kildekoden derved kan frigives og interesserede kan downloade og installere en kopi.

 

n4s – navnet

Dette system er ikke til salg og kan slet ikke sælges. Deraf navnet n4s som er en forkortelse af ”Not for sale”. Eftersom softwaren bliver udgivet som fri software er der derfor ikke nogen der har ejendomsret / copyright på produktet som derfor ikke risikerer at blive opkøbt. Man kan derfor sige at det tilhører os alle. Dette er også kaldet ”copyleft”.

 

Plan for produkt launch

Når sikkerhedsproblematikken er løst kan produktet tilbydes hosted til en rimelig pris.

Derudover vil der være tilbud om konsulentassistance til installation på egen server.

Hvis man ønsker selv at prøve kræfter med det vil kildekoden være tilgængelig på github med instruktioner i hvordan man installerer og opsætter det på en debian-baseret GNU/Linux-distribution.

Hvordan støtter du op om systemet?

Kan du programmere ?

Teknologi:

Systemet kræver følgende for at køre:

  • PHP7+
  • Bash
  • Apache

Systemet kører som udgangspunkt på GNU/Linux, men jeg vurderer ikke der skal meget store tilpasninger til for at det kan køre på OS X eller Windows.

 

Kan du skrive dokumentation ?

Vi har brug for at få udviklet dokumentationen i programmet

#getintouch

irc lebara: #n4s