1# Environment for ledger expenses
2
3[ $(whoami) == "adamsrl" ] \
4    && export LEDGER_HOME="/home/adamsrl/AdamsInfoServ/BusinessDocuments/Ledger/AdamsRussell" \
5    || export LEDGER_HOME="/home/Heather/AdamsRussell"
6
7[ $(hostname) == "cardamom" ] \
8    && export LEDGER_BIN="${LEDGER_HOME}/ledger" \
9    || export LEDGER_BIN="${LEDGER_HOME}/ledger.exe"
10
11[ $(whoami) == "andersonll" ] \
12    && export LEDGER_HOME="/home/andersonll/AdamsInfoServ/Expenses" \
13	&& export LEDGER_BIN="${LEDGER_HOME}/ledger"
14
15# Common reports
16
17alias ledger='${LEDGER_BIN} -f "${LEDGER_HOME}/.ledger" -VE '
18alias ERSummary='ledger --pivot ER bal | egrep "AIS(ER|IN)[0-9]+|Unassigned"'
19
20function ERTxns() {
21    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
22
23    ledger reg "%ER=${1}"
24}
25
26function ERCategorySummary() {
27    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
28
29    ledger bal --pivot CATEGORY "%ER=${1}"
30}
31
32function ERMealSummary() {
33    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
34
35    ledger reg "%ER=${1}" and %CATEGORY=Meals -D
36}
37
38function ERMeals() {
39    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
40
41    ledger reg "%ER=${1}" and %CATEGORY=Meals
42}
43
44function ERUncleared() {
45    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
46
47    ledger reg "%ER=${1}" -U
48}
49
50function ERMissingReceipts() {
51    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
52
53    ledger reg "%ER=${1}" and not %RECEIPT
54}
55
56function ERVerify() {
57    [ -z "$1" ] && echo "Please specify an ER number (ie: AISER0042)." && return
58
59    echo "========== Uncleared txns below =========="
60    ERUncleared "$1"
61    echo "========== Missing receipts below (miles and stubs ok) =========="
62    ERMissingReceipts "$1"
63    echo "========== Category Summary (airline? mileage? car? hotel? =========="
64    ERCategorySummary "$1"
65    echo "========== Meal summary (<\$50 / day unless otherwise specified) =========="
66    ERMealSummary "$1"
67    echo "========== Account Verification (Internal vs Project ER should be ONE type) =========="
68    echo $1 | grep AISIN >/dev/null 2>&1 \
69         || { ledger reg "%ER=${1}" | grep Dest:Internal ; } \
70         && { ledger reg "%ER=${1}" | grep Dest:Projects ; }
71    echo "========== Project Verification (only one project code should be listed) =========="
72    ledger print "%ER=${1}" | grep PROJECT | sort -u
73    echo "========== Receipts missing =========="
74    ledger print "%ER=${1}" | grep -h '; RECEIPT: ' \
75	    | sed 's,\W*; RECEIPT: ,,g' \
76	    | tr , '\n' \
77	    | sort -u \
78	    | while read X ; do
79	    [ -f "${LEDGER_HOME}/${X}" ] \
80		    || echo XX $X
81    done
82}
83
84function ERListing() {
85    ledger reg Stub --register-format="%(tag('ER')) %(tag('NOTE'))\n" | sort -u
86}
87
88function ERQueue() {
89    ledger reg %ER=Unassigned --prepend-format="%(filename) "
90}
91