shithub: rech

Download patch

ref: d023a73dc8bb187bd9161b0b804e8a097ffa8b8c
parent: 982ba593935d007955d7d53f69622af34b3436ab
author: sirjofri <sirjofri@sirjofri.de>
date: Thu Aug 14 07:08:04 EDT 2025

adds first version of the balance script, adds categories to items

--- /dev/null
+++ b/bin/balance
@@ -1,0 +1,111 @@
+#!/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'
--- a/bin/formatdata.awk
+++ b/bin/formatdata.awk
@@ -15,7 +15,8 @@
 	number = $1
 	single = $2
 	vat = $3
-	name = $4
+	cat = $4
+	name = $5
 	
 	total = number * single
 	
--