Account merging.
This commit is contained in:
parent
abd9f4aa5b
commit
f8d89e340f
1 changed files with 93 additions and 0 deletions
93
fetch_fio.sh
93
fetch_fio.sh
|
@ -157,6 +157,90 @@ download_year() {
|
||||||
download_file "${APIURI}/periods/$apikey/$year-01-01/$year-12-31/transactions.csv" "$fname"
|
download_file "${APIURI}/periods/$apikey/$year-01-01/$year-12-31/transactions.csv" "$fname"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Gets the first year of the account statement.
|
||||||
|
# $1 - account number
|
||||||
|
first_acc_part() {
|
||||||
|
accno="$1"
|
||||||
|
ls "${BANK_DIR_PARTS}/" \
|
||||||
|
| grep "^$accno" \
|
||||||
|
| grep '.csv$' \
|
||||||
|
| sort \
|
||||||
|
| head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Gets the last year of the account statement.
|
||||||
|
# $1 - account number
|
||||||
|
last_acc_part() {
|
||||||
|
accno="$1"
|
||||||
|
ls "${BANK_DIR_PARTS}/" \
|
||||||
|
| grep "^$accno" \
|
||||||
|
| grep '.csv$' \
|
||||||
|
| sort -r \
|
||||||
|
| head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Returns all parts except for the first
|
||||||
|
# $1 - account number
|
||||||
|
all_but_first_parts() {
|
||||||
|
accno="$1"
|
||||||
|
first="`first_acc_part $1`"
|
||||||
|
ls "${BANK_DIR_PARTS}/" \
|
||||||
|
| grep "^$accno" \
|
||||||
|
| grep '.csv$' \
|
||||||
|
| sort \
|
||||||
|
| grep -v "$first"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Creates static header for given account
|
||||||
|
# $1 - account number
|
||||||
|
make_acc_header_static() {
|
||||||
|
grep -B 20 '^$' "$1" \
|
||||||
|
| grep . \
|
||||||
|
| egrep -v 'Balance|^date|^id'
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Gets only given header
|
||||||
|
# $1 - path to file
|
||||||
|
# $2 - header name
|
||||||
|
get_header_field() {
|
||||||
|
grep "^$2" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dynamic part
|
||||||
|
# $1 - account number
|
||||||
|
make_acc_header() {
|
||||||
|
first="`first_acc_part $1`"
|
||||||
|
last="`last_acc_part $2`"
|
||||||
|
firstfname="$BANK_DIR_PARTS/$first"
|
||||||
|
lastfname="$BANK_DIR_PARTS/$last"
|
||||||
|
make_acc_header_static "$firstfname"
|
||||||
|
get_header_field "$firstfname" openingBalance
|
||||||
|
get_header_field "$lastfname" closingBalance
|
||||||
|
get_header_field "$firstfname" dateStart
|
||||||
|
get_header_field "$lastfname" dateEnd
|
||||||
|
get_header_field "$firstfname" idFrom
|
||||||
|
get_header_field "$lastfname" idTo
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Creates the complete merged account statement
|
||||||
|
# $1 - account number
|
||||||
|
merge_acc() {
|
||||||
|
make_acc_header "$1"
|
||||||
|
grep -A 100000 '^$' "$BANK_DIR_PARTS/`first_acc_part $1`"
|
||||||
|
for part in `all_but_first_parts $1` ; do
|
||||||
|
grep -A 100000 '^ID' "$BANK_DIR_PARTS/$part" \
|
||||||
|
| grep -v '^ID'
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# Current year (last in seq)
|
# Current year (last in seq)
|
||||||
CYEAR=`date +%Y`
|
CYEAR=`date +%Y`
|
||||||
|
|
||||||
|
@ -209,6 +293,15 @@ while read accnt ; do
|
||||||
log "Skipping $ACCNO in $year - already latest: $FILE_DATE"
|
log "Skipping $ACCNO in $year - already latest: $FILE_DATE"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Merge the account
|
||||||
|
log "Merging $ACCNO"
|
||||||
|
merge_acc "$ACCNO" >"$BANK_DIR/$ACCNO.csv.tmp"
|
||||||
|
log "Renaming $ACCNO"
|
||||||
|
if [ -r "$ACCNO.csv" ] ; then
|
||||||
|
cp "$ACCNO.csv" "$ACCNO.csv.old"
|
||||||
|
fi
|
||||||
|
mv "$ACCNO.csv.tmp" "$ACCNO.csv"
|
||||||
done < "$APIKEYS_FILE"
|
done < "$APIKEYS_FILE"
|
||||||
|
|
||||||
# Mark
|
# Mark
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue