summaryrefslogtreecommitdiff
path: root/tools/confirm.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/confirm.py')
-rwxr-xr-xtools/confirm.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/tools/confirm.py b/tools/confirm.py
new file mode 100755
index 00000000..fa650074
--- /dev/null
+++ b/tools/confirm.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+# This script confirms what ledger tells you.
+
+import sys
+import os
+import re
+
+def clean(num):
+ return float(re.sub("(\s+|\$|,)","", num))
+
+running_total = 0.0
+index = 1
+last_line = ""
+errors = 0
+
+report = sys.argv[1]
+for line in os.popen("./ledger -f tools/standard.dat -e 2004/4 %s reg %s" %
+ (report, sys.argv[2])):
+ match = re.match("\\s*([-$,0-9.]+)\\s+([-$,0-9.]+)", line[55:])
+ if not match:
+ continue
+ value = clean(match.group(1))
+ total = clean(match.group(2))
+
+ running_total += value
+ diff = abs(running_total - total)
+ if report == "-V" or report == "-G" and diff < 0.015:
+ diff = 0.0
+ if diff > 0.001:
+ print "! discrepancy of %.2f (%.2f - %.2f) at line %d:" % \
+ (running_total - total, running_total, total, index)
+ print line,
+ running_total = total
+ errors += 1
+
+ index += 1
+ last_line = line
+
+balance_total = 0.0
+
+for line in os.popen("./ledger -f tools/standard.dat -e 2004/4 %s bal %s" %
+ (report, sys.argv[2])):
+ if line[0] != '-':
+ balance_total = clean(line[:20])
+
+diff = abs(balance_total - running_total)
+if report == "-V" or report == "-G" and diff < 0.015:
+ diff = 0.0
+if diff > 0.001:
+ print
+ print "! discrepancy of %.2f (%.2f - %.2f) between register and balance" % \
+ (balance_total - running_total, balance_total, running_total)
+ print last_line,
+ errors += 1
+
+sys.exit(errors)