Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrvandalo/csv-to-qif
convert csv files to qif files
https://github.com/mrvandalo/csv-to-qif
haskell
Last synced: about 1 month ago
JSON representation
convert csv files to qif files
- Host: GitHub
- URL: https://github.com/mrvandalo/csv-to-qif
- Owner: mrVanDalo
- License: other
- Created: 2014-06-21T21:59:30.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2019-08-24T12:01:48.000Z (over 5 years ago)
- Last Synced: 2024-12-22T23:04:09.851Z (about 1 month ago)
- Topics: haskell
- Language: Haskell
- Homepage: http://palovandalo.com/csv-to-qif
- Size: 55.7 KB
- Stars: 4
- Watchers: 6
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.markdown
- License: LICENSE.txt
Awesome Lists containing this project
README
# CSV To Qif
[![Build Status](https://travis-ci.org/mrVanDalo/csv-to-qif.svg?branch=master)](https://travis-ci.org/mrVanDalo/csv-to-qif)
transform a wide range of csv files to qif files, with
the main target to import them into [GnuCash](http://www.gnucash.org/).# Usage
You have to give `csv-to-qif` a lot of parameters, so it's best
to create a bash script for every type of csv your bank will give you.#!/bin/bash
FILE=$1
NEW_FILE=/tmp/bank.tmp
CONFIG=parse.conf
OUTPUT="Active:Bank-Name:CreditCard.qif"
SKIP=7
iconv -t UTF-8 -f ISO-8859-15 $FILE > $NEW_FILE
csv-to-qif --input=$NEW_FILE \
--output=$OUTPUT \
--date=0 \
--text=3,4 \
--longtext=3,4,5 \
--balance=7 \
--skip=$SKIP \
--separator=';' \
--updater=$CONFIG
head -n $SKIP $FILE## Parameters
### Mandatory
* input : csv input file
* output : qif file name to write to.
* date : column of date of transaction
* text : list of columns to create description from
* longtext : same like text but for more information
* balance : column of balance of transaction### optional
* skip : how many lines to skip before reading
* separator : default is `,` it must be a char!### updater Parameter
Because some banks create descriptions that are _to detailed_.
You can create a updater configuration that will match for Strings
and replaces the description (not the long description) with a replacement.
The format is `match`<->`replacement`Example updater file.
PayPal<->Bought Stuff at paypal
Your small shop says Thank you<->Bought stuff at ShopA file with this content
"11.11.2011","Transaction to PayPal","Bottle of water","-1000.00"
"12.11.2011","Your small","Your small shop says Thank you for buying stuff like Explosives","-200000.00"parsed without updater
$> csv-to-qif --input=foo.csv \
--output=foo.qif \
--date=0 \
--text=1,2 \
--longtext=1,2,3 \
--balance=3
$> cat foo.qif!Type:Bank
PTransaction to PayPal Bottle of water
T-1000.00
D11.11.2011
MTransaction to PayPal Bottle of water -1000.00
^
PYour small Your small shop says Thank you for buying stuff like Explosives
T-200000.00
D12.11.2011
MYour small Your small shop says Thank you for buying stuff like Explosives -200000.00
^
parsed with updater$> csv-to-qif --input=foo.csv \
--output=foo-updated.qif \
--date=0 \
--text=1,2 \
--longtext=1,2,3 \
--balance=3 \
--updater=updater.conf
$> cat foo-updated.qif!Type:Bank
PBought Stuff at paypal
T-1000.00
D11.11.2011
MTransaction to PayPal Bottle of water -1000.00
^
PBought stuff at Shop
T-200000.00
D12.11.2011
MYour small Your small shop says Thank you for buying stuff like Explosives -200000.00
^
# Install
## Package manager
You can install it via package manager on the following Distributions :
* [Gentoo via Haskell Overlay](https://github.com/gentoo-haskell/gentoo-haskell)
* [NixOS](https://nixos.org/)## using Cabal
$> cabal update
$> cabal install csv-to-qifshould do it.
## from sources
get the source
$> git clone https://github.com/mrVanDalo/csv-to-qif.git
$> cd csv-to-qifinstall from source
$> cabal clean # just to be sure
$> cabal configure --enable-tests # we want also the tests
$> cabal install --only-dependencies --enable-tests
$> cabal build # sure we want to build
$> cabal test && cabal install # only install when tests are ok