ref: d023a73dc8bb187bd9161b0b804e8a097ffa8b8c
dir: /bin/balance/
#!/bin/rc
rfork en
ramfs
datafiles=`{ls invoice/*/data.tsv}
cat $datafiles | awk -F '\t' '
!/^#/ && NF >= 4 {
number = $1
single = $2
vat = $3
cat = $4
cats[cat] = number * single
vats[vat] += cats[cat]
}
END {
for (c in cats) {
printf "%s\t%.2f\n", c, cats[c]
total += cats[c]
}
#printf "\t%.2f\n", final
for (i in vats) {
if (i == 0)
continue;
printf "USt.%d\t%.2f\n", i, vats[i] * i / 100.
}
}
' > /tmp/in
datafiles=`{ls out/*/*/data.tsv}
cat $datafiles | awk -F '\t' '
!/^#/ && NF >= 2 {
cat = $1
val = $2
sums[cat] += val
}
END {
for (c in sums) {
printf "%s\t%.2f\n", c, sums[c]
}
}
' > /tmp/out
awk -F '\t' '
{
$2 *= -1
printf "%s\t%.2f\n", $1, $2
}
' /tmp/out > /tmp/outinv
#################
dumpscript='
NF == 2 {
cat = $1
val = $2
total += val
printf "%s\t%.2f EUR\n", cat, val
}
END {
print "_"
printf "Summe\t%.2f EUR\n", total
}'
echo '.TS
expand linesize(5);
l s
l n .
_
\fBBetriebseinnahmen\fR
_'
# Einnahmen
awk -F '\t' $"dumpscript /tmp/in
echo '.T&
l s
l n .
=
\fBBetriebsausgaben\fR
_'
# Ausgaben
awk -F '\t' $"dumpscript /tmp/out
echo '.T&
l s
l n .
=
\fBErgebnis\fR
_'
# Ergebnis
cat /tmp/in /tmp/outinv | awk -F '\t' '
{
if ($2 < 0)
totalout += $2
else
totalin += $2
}
END {
printf "Gesamteinnahmen\t%.2f EUR\n", totalin
printf "Gesamtausgaben\t%.2f EUR\n", totalout
printf "\\fBGewinn vor Steuern\\fR\t\\fB%.2f EUR\\fR\n", totalin + totalout
}
'
echo '_
.TE'