diff options
author | Bradley M. Kuhn <bkuhn@ebb.org> | 2011-11-01 12:24:19 -0400 |
---|---|---|
committer | Bradley M. Kuhn <bkuhn@ebb.org> | 2012-11-26 13:54:43 -0500 |
commit | daad6e5700141bfbed6bb6a984ad99f76e7ac09d (patch) | |
tree | f59e4319af0849553fbb4ade88ee9cf5f3c9bf53 /contrib/non-profit-audit-reports/fund-report.plx | |
parent | 55227e4d2c30923da7014826f9f02a21facbacfa (diff) | |
download | fork-ledger-daad6e5700141bfbed6bb6a984ad99f76e7ac09d.tar.gz fork-ledger-daad6e5700141bfbed6bb6a984ad99f76e7ac09d.tar.bz2 fork-ledger-daad6e5700141bfbed6bb6a984ad99f76e7ac09d.zip |
Added income/expense summing.
Diffstat (limited to 'contrib/non-profit-audit-reports/fund-report.plx')
-rwxr-xr-x | contrib/non-profit-audit-reports/fund-report.plx | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/contrib/non-profit-audit-reports/fund-report.plx b/contrib/non-profit-audit-reports/fund-report.plx index 22373eb8..35463fe3 100755 --- a/contrib/non-profit-audit-reports/fund-report.plx +++ b/contrib/non-profit-audit-reports/fund-report.plx @@ -59,7 +59,7 @@ while (my $fundLine = <LEDGER_FUNDS>) { unless $fundLine =~ /^\s*([^\$]+)\s+\$\s*\s*([\d\.\,]+)/; my($account, $amount) = ($1, $2); $amount = ParseNumber($amount); - $account =~ s/^\s+Funds:Restricted://; $account =~ s/\s+$//; + $account =~ s/^\s*Funds:Restricted://; $account =~ s/\s+$//; $funds{$account}{ending} = $amount; } close LEDGER_FUNDS; @@ -77,21 +77,44 @@ while (my $fundLine = <LEDGER_FUNDS>) { unless $fundLine =~ /^\s*([^\$]+)\s+\$\s*\s*([\d\.\,]+)/; my($account, $amount) = ($1, $2); $amount = ParseNumber($amount); - $account =~ s/^\s+Funds:Restricted://; $account =~ s/\s+$//; + $account =~ s/^\s*Funds:Restricted://; $account =~ s/\s+$//; $funds{$account}{starting} = $amount; } close LEDGER_FUNDS; + foreach my $fund (keys %funds) { $funds{$fund}{starting} = $ZERO if not defined $funds{$fund}{starting}; } +@ledgerOptions = (@mainLedgerOptions, + '--wide-register-format', "%-.70A %22.108t\n", '-w', '-s', + '-b', $startDate, '-e', $endDate, 'reg'); + +foreach my $type ('Income', 'Expenses') { + foreach my $fund (keys %funds) { + open(LEDGER_INCOME, "-|", $LEDGER_CMD, @ledgerOptions, "^${type}:$fund") + or die "Unable to run $LEDGER_CMD for funds: $!"; + $funds{$fund}{$type} = $ZERO; + while (my $line = <LEDGER_INCOME>) { + die "Unable to parse output line from $type line command: $line" + unless $line =~ /^\s*([^\$]+)\s+\$\s*\s*([\-\d\.\,]+)/; + my($account, $amount) = ($1, $2); + $amount = ParseNumber($amount); + $funds{$fund}{$type} += $amount; + } + close LEDGER_INCOME; + } +} + my $format = "%-${ACCT_WIDTH}.${ACCT_WIDTH}s \$%11.2f \$%11.2f\n"; my($totDeb, $totCred) = ($ZERO, $ZERO); foreach my $fund (sort keys %funds) { print "Fund: $fund\n"; - print " Balance as of $startDate: ", sprintf("\$%11.2f\n", $funds{$fund}{starting}); + print " Balance as of $startDate: ", sprintf("\$%11.2f\n\n", $funds{$fund}{starting}); + print " Income during period: ", sprintf("\$%11.2f\n", $funds{$fund}{Income}); + print " Expenses during period: ", sprintf("\$%11.2f\n", $funds{$fund}{Expenses}); print " Balance as of $endDate: ", sprintf("\$%11.2f\n", $funds{$fund}{ending}); print "\n\n"; } |