shithub: rech

ref: d023a73dc8bb187bd9161b0b804e8a097ffa8b8c
dir: /bin/balance/

View raw version
#!/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'