CSV bestanden van telefoonnota's bewerken.

Of te wel; hoe declareer je makkelijker.


Beste mensen,

Allereerst de beste wensen voor het nieuwe jaar 2012.
Tja, dan moeten we ook weer eens aan de financiŽn werken, en daar hoort ook het maken van declaraties en de belastingaangifte bij. En zo komen we bij het uitzoeken van onze telefoonrekeningen.

KPN Telefoonspecificaties digitaal bekijken.


Log in bij KPN met de juiste toegangscodes (zie de laatste papieren factuur) en haal alle telefoonnota's in PDF op, evenals de gesprekkenlijsten in CSV. CSV staat voor Comma Separated Value, een door komma's gescheiden tekstbestand. Zo'n bestand begint vaak met een recordindeling in velden en veldnamen, net als bij een database. En elk record wordt gescheiden door een carriage return en/of LineFeed (= nieuwe regel).
Echter in plaats van komma's hebben ze bij KPN puntkomma's gebruikt, en de komma's als decimaal scheider bij getallen in plaats van de punt. Oude programma's zoals Lotus123 onder MS-Dos konden dat ook aan, en Excel onder Windows waarschijnlijk ook.
Vaak zijn die CSV scheidingstekens instelbaar, d.w.z. ;., of ,;. enz. Teksten staan meestal tussen 'aanhalingstekens', en getallen niet.
Kunnen we er onder RISC OS dan ook nog wat mee?
Jawel, maar dan met name na een kleine verbouwing, hier gaan we...

Ombouwen CSV bestanden van KPN ten behoeve van inlezen in Eureka spreadsheet programma onder Acorn RISC OS:


!Dos2Text


Stap 1.
Start de appplicatie !Dos2Text
Dubbelclick op het icoon van !Dos2Text op de iconen balk.
Er opent zich nu een groter venster.
Zet daarin het vinkje aan bij Add LF.
Remove CR en 'convert high char' staan al aan, zo niet, doe dat dan alsnog.

Window applicatie !Dos2Text

Stap 2.
Sleep het van de KPN site opgehaalde (geDownLoadde) csv bestand naar het DOS to Text conversion window van de applicatie !Dos2Text.
Sla de omgezette tekst met met Save funtie op op de ramdisc, b.v. als KPN2011/CSV.

In plaats van !Dos2Text te gebruiken, kun je hetzelfde ook realiseren met de juiste zoek en vervang invulvelden in een goede tekst editor.
Dus zoek CR (=&0D) en vervang dat door een LF (=&0A), ook wel New Line genoemd.


Stap 3.
Start een testeditor (!Edit, !Zap of !StrongEd),
lees het zojuist opgeslagen csv bestand in de editor,
en sloop de kop (bovenin) uit het bestand, want die hebben we niet nodig, maar laat de veldnamen(lijstje) wel staan.
!Zap heeft b.v. ook een zogenaamde CSV-Mode, dan kun je de verschillen goed zien met kleurgebruik.

Stap 4.
Ga op de bovenste regel in het bestand staan met de tekstcursor.
Druk op op (Shift) F4 en vul bij zoeken een komma in en vervang die door een punt, in het gehele bestand.
In plaats van de Functietoets F4 mag je natuurlijk ook met de middelste muis menu-toets werken om in het zoek en vervang raampje te komen ;-).
Nu hebben alle getallen het juiste decimaal teken voor Engelstalige software.

Stap 5.
Druk op op (Shift) F4 en vul bij zoeken een puntkomma in en vervang die door een komma, in het gehele bestand.
Nu is de veldscheider een komma geworden.

Doe vooral stap 4 en 5 alleen in deze volgorde, want als je eerst die puntkomma door een komma gaat vervangen, en daarna pas de komma van het decimalteken voor een punt, dan gaat het fout, en wordt er teveel veranderd. Dit is een doordenkrtje!


Stap 6.
Sla het bestand met F3 op bijvoorbeeld als KPN2011/CSV,
en zet het bestandstype op CSV =&DFE.

Het bestand is nu geschikt om in te lezen in het !Eureka spreadsheet programma.
Eigenlijk zouden alle teksten tussen aanhalingstekens moeten staan,
maar Eureka ziet al direct dat het tekst is en geen getallen.
Als het goed is komen alle velden netjes in verschillende kolommen terecht, en alle records netjes onder elkaar.
Zo niet, dan heb je in de bovenstaande stappen iets fout gedaan.
Probeer het dan nog eens van voren af aan met een copie van het originele van de website c.q. e-mail opgehaalde KPN/CSV bestand.
Elk telefoongesprek is dus een 'record' (regel) zoals dat in database termen heet, en in elke kolom staat een veld van dat 'record' of gesprek.
Uiteraard moet je even de kolombreedtes in Eureka aanpassen naar behoefte. Je kunt nu binnen Eureka alles doen wat je kent, zoals optellen van de kosten, of sorteren van gebelde telefoonnummers e.d.

Ook zou je vooraf alle 6 de twee-maands CSV bestanden van KPN kunnen samenvoegen, en die na het hierboven beschreven voortraject als totaal bestand van het afgelopen jaar kunnen bewerken en bekijken.
De veldnamen hoeven alleen op de bovenste regel te staan.
Van de andere nota's moet je ze weghalen als je ze wilt samenvoegen tot een compleet jaaroverzicht.
Handig als je b.v. alle kosten van alle gesprekken naar bepaalde personen of voor bepaalde doelen wilt sorteren en optellen om te kunnen declareren bij je werkgever, vereniging(en) en/of voor de BelastingDienst.
Hmm, wat ook opvalt is dat de gesprekskosten van november en december op de specificatie van januari staan. Immers bij het KPN BelBasis abonnement betaal je de gesprekken achteraf, maar de huur van de lijn altijd vooruit.

Hoe andere telefoonmaatschappijen hun telefoonnota's en gespreksoverzichten aanleveren is me niet bekend, maar de kans is redelijk groot dat ze dat op een soortgelijke manier kunnen verstrekken, d.w.z. dat je het zelf van hun beveiligde website kunt downloaden, of toe laten zenden per e-mail.
In plaats van CSV wordt ook wel eens TSV gebruikt. Tab Separated Value.
Men gebruikt dan Tabs (=&09) i.p.v. komma's als veldscheider.
In dat geval moet je die met de zoek- en vervang-functie vervangen door een komma.


Noot: bij afgeschermde of geheime telefoonnummers staan er (gedeeltelijk) sterretjes in het telefoonnummerveld. Zelf weet je dat nummer natuurlijk wel, anders kon je het (zelf of je modem) niet bellen ;-).

Maar je kan natuurlijk in het gehele CSV bestand dat nummer, met de zoek en vervangfunctie, vervangen door de naam van de gebelde persoon of instantie als je dat beter uitkomt in je eindresultaat zoals vanwege privacy e.d..

Jammer dat er geen lijst beschikbaar is van alle inkomende gesprekken, want dat is ook wel handig als je iets wilt opzoeken of moet bewijzen. Misschien eens bij de OPTA of ConsumentenBond neerleggen?

Ik was altijd voorstander van papieren KPN telefoonnota's, maar ik had deze digitale truucks veel eerder moeten toepassen, want dat had me een hoop werk gescheeld bij het maken van declaraties e.d..
Afijn jullie weten nu ook de weg, dus wens ik iedereen veel digitaal plezier met uiteraard ons Acorn RISC OS systeem, of welke opvolger je daarvan ook in gebruik hebt, zoals de Iyonix, A9home, Beagle Board xM, ARMini of een RISC OS emulator onder Windows. Linux of Apple MacOS.
De spreadsheet applicatie !Eureka werkt op echte 32 bitsystemen zoals de Iyonix en de A9home prima samen met !Aemulor.
Ook met de nu gratis versie van !PipeDream 4.50/23 (10 augustus 2000, zie de digitale *Asterisk nummer 29.08 bij Riscynieuws.net) werkt het inlezen van mijn aangepaste csv-bestand in een keer goed. Als je geen !Eurka hebt, dan is de gratis !PipeDream 4.50 een mogelijke oplossing.

Uiteraard is het inlezen en bewerken van CSV bestanden ook mogelijk met andere database- en spreadsheet-programma's zoals; !Squirrel, !Impact, !Powerbase of Excel onder M$ Windows, maar dat laat ik over aan een ieders eigen fantasie, daar ik me zo veel mogelijk wil beperken tot RISC OS.

Op de valreep bij het schrijven van dit artikel ontdek ik nog de applicatie !CSVamp op mijn harddisk in de directory DataBase programma's. Hiermee kun je CSV bestanden manipuleren, door b.v. de volgorde van de velden te verplaatsen, weg te laten e.d.. Dat wordt dus experimenteren...

Wie weten er nog meer leuke toepassingen voor onze systemen en wil die beschrijven en met de andere leden delen via dit schitterende medium *Asterisk?
Immers zonder input geen output, en meel hebben we toch allemaal nodig?
Want zonder bakkers geen brood.

Cijfermatige groeten van Henri.

Bijlage(n):
CSV-bestand: KPN2011/CSV (&DFE)
Eureka-bestand: KPN2011/EUR (&C37) en
Conversie applicatie: !Dos2Text