Tappion tiedostoformaatti

Tappion tilikausitiedostot (*.tlk) ovat tekstitiedostoja, jotka sisältävät täsmälleen yhden S-lauseen (S-expression, sexp). Tappion tiedostoformaatissa S-lauseita on neljää eri tyyppiä:

Määritellään myös tyyppi Päivämäärä, joka on neljän lauseen mittainen lista. Ensimmäinen lause on symboli date, jonka jälkeen seuraavat kokonaislukuina ilmaistut vuosi, kuukausi ja päivä. Edelleen tyyppi Rahasumma on kahden alkion lista. Ensimmäinen alkio on symboli money ja toinen on kokonaisluku, joka kertoo rahasumman suuruuden sentteinä. Positiivinen summa on debetiä, negatiivinen kreditiä.

Tappion tilikauden muodostava S-lause on lista, joka koostuu kuudesta lauseesta:

Viimeisenä oleva fiscal-year-lista koostuu myös kuudesta lauseesta:

Tilikarttamäärittely on jälleen lista. Sen ensimmäinen lause on symboli account-map, jonka jälkeen seuraa kolme tilimääritystä. Näistä ensimmäinen on taseen Vastaavaa-tili, toinen taseen Vasttavaa-tili ja kolmas Tulos-tili. Kukin tilimääritys on neljän tai viiden alkion mittainen lista:

Tilimäärittely sisältää siis rekursiivisesti muita tilimäärittelyitä. Nämä määrittelyt näkyvät tilikartassa alitileinä.

ALV-määrittely, jos se on olemassa, on lista. Sen ensimmäinen lause on symboli vat, toinen lause on symboli joka kertoo tilin ALV-tyypin:

Jos tyyppi on sales tai purchase, listassa on myös kolmas lause, joka on kokonaisluku. Tämä luku kertoo tilin arvonlisäverokannan sadasosaprosentteina.

Päiväkirja on lista, joka sisältää nolla tai useampia tapahtumamäärittelyjä. Kukin tapahtumamäärittely on viisialkioinen lista:

Kukin tiliöinti on kahden alkion lista. Ensimmäinen alkio on kokonaisluku ja kertoo sen tilin numeron, jolle tiliöinti kohdistuu. Toinen alkio on rahasumma.

Kannattanee katsella tallennettuja tlk-tiedostoja, sieltä rakenne käy helposti ilmi. Tappio ei tosin tallentaessaan käytä rivinvaihtoja, joten koko tilikausimäärittely on yksi pitkä rivi, mikä tekee lukemisen hieman ikävämmäksi. Kannattanee pilkkoa sopivista kohdista.

Kaikkien Tappion formaattia lukevien ohjelmien tulee pystyä lukemaan kaikkia formaatteja versiosta X alaspäin. Eli siis, jos ohjelma ilmoittaa tukevansa Tappion formaattia 0.42, sen tulee osata lukea kaikki formaatit 0.10:n ja 0.42:n väliltä. Uudempiakin saa toki osata lukea, mutta pakollista se ei ole - tällöinkin olisi hyvä antaa virheilmoitus mikäli vastaan tulee odottamattomia tietueita. Tämän homman helpottamiseksi olen kerännyt seuraavaan listaan eri Tappion versioissa tulleet tiedostoformaattimuutokset:

Lopuksi vielä esimerkkitilikausi:

(identity "Tappio"
 version "versio 0.10"
 finances (fiscal-year "Esimerkkiyhdistys ery"
                       (date 2003 1 1)
		       (date 2003 12 31)
		       (account-map (account -1 "Vastaavaa" ((account 101 "Pankkitili" ())))
		                    (account -1 "Vastattavaa" ((account 201 "Oma pääoma" ())))
				    (account -1 "Tulos" ((account 300 "Tulot" ()) (account 400 "Menot" ()))))
		       ((event 1 (date 2003 1 1) "Tilinavaus" ((101 (money 123456)) (201 (money -123456)))))))