Brett Smith
c2851f5cc0
reports: URL-quote file links in spreadsheets. RT#12517
...
This was already done correctly in RT links because rtutil takes care of the
quoting. The fact that we weren't doing it for file links was an oversight.
2020-09-05 14:48:48 -04:00
Brett Smith
de10197af7
reports: Improve formatting of non-currency commodities.
...
Introduce the get_commodity_format() function, which returns Babel's
usual format string for currencies, but returns a version of it
"merged" with the locale's currency unit pattern for other
commodities.
BaseODS then calls this function where needed to format amounts.
2020-09-04 15:29:10 -04:00
Brett Smith
b4f2b506be
reports: ODS currency formatting gets integer precision from Babel.
2020-09-04 14:49:20 -04:00
Brett Smith
21383d2355
reports: Correct use of NumberPattern.grouping.
...
The 2-tuple represents min/max grouping, not positive/negative.
2020-09-04 14:46:18 -04:00
Brett Smith
44ac5e61f7
reports: BaseODS gets decimalplaces directly from Babel.
2020-09-04 14:20:11 -04:00
Brett Smith
2c3438ba0f
balance_sheet: Add account code column to chart of accounts.
2020-09-03 17:01:28 -04:00
Brett Smith
5081c8934c
ledger: Put account classification on each row in a hidden column.
...
This makes it easier to build formulas based on classification.
Hiding it keeps the presentation neat for human readers.
2020-09-03 14:51:39 -04:00
Brett Smith
27acf1f0c1
meta_expense_type: Default management for payroll expenses.
...
It's a little abstract since we usually rewrite these but this is a
safer default.
2020-09-03 11:55:59 -04:00
Brett Smith
72f144e1ff
extract_odf_links: Make "not found" warning easier to parse.
...
e.g., you can just use `grep | cut -b N-`.
2020-09-03 09:45:31 -04:00
Brett Smith
42442c401f
extract_odf_links: Support multiprocessing.
...
This cuts audit packet manifest build time in half on my 8-core laptop.
2020-09-03 09:40:47 -04:00
Brett Smith
552dae6ea5
cliutil: Take on --jobs support from audit_report.
2020-09-02 13:26:35 -04:00
Brett Smith
35804db617
reports: All reports support rewrite rules.
...
I realized that if ledger-report supported rewrite rules, then it would
include all the information necessary to reproduce the numbers on the
statement of functional expenses.
With that, it was easy enough to add support to the rest of the reports for
consistency's sake.
2020-08-31 14:19:00 -04:00
Brett Smith
8c81eceb2c
audit_report: Exclude rewrite logs from verbose display.
2020-08-31 14:14:19 -04:00
Brett Smith
7281cf0f01
audit_report: New tool.
2020-08-30 22:34:32 -04:00
Brett Smith
0e52f11a58
rtutil: Fix crash when multiple RTLinkCaches race.
...
This was most likely to happen with multiple bean-checks running in
parallel: they would both see a new RT URL, fetch it, and try to
insert it into the cache. That's not a problem as long as they're
both inserting the same URL, so catch that exception.
2020-08-30 11:18:32 -04:00
Brett Smith
dc2e2d200d
balance_sheet: Fix logger name.
2020-08-30 11:14:25 -04:00
Brett Smith
2eba5a5546
extract_odf_links: Add --relative-to option.
...
This is just too convenient for our usual case where we expect
all links to be relative to a specific directory (the repository).
2020-08-30 10:03:57 -04:00
Brett Smith
977b16e365
balance_sheet: Remove custom data normalizations.
...
These can be supported with rewrite rules now.
2020-08-29 17:18:38 -04:00
Brett Smith
153361ce9f
balance_sheet: Support rewrite rules.
2020-08-29 17:18:15 -04:00
Brett Smith
f3e577f0d5
rewrite: New module.
...
This module is intended to make bulk data changes to normalize
information across FYs for reporting.
2020-08-29 17:17:41 -04:00
Brett Smith
52adf1f0a5
data: Add PostingMeta.detached() method.
2020-08-29 10:26:21 -04:00
Brett Smith
dfdb9b65d5
accrual: Add total divider lines.
2020-08-22 12:39:43 -04:00
Brett Smith
4f223642ed
reports: Refactor total styles to BaseODS.
2020-08-22 12:33:06 -04:00
Brett Smith
e8a754c387
ledger: Formatting modernizations.
...
* Equity sheet(s) report project.
* Headers include account classification.
* Bottom lines are formatted in the usual accounting way.
2020-08-22 12:31:44 -04:00
Brett Smith
58954aab23
fund: Text output readability improvements.
...
Make it look more like the spreadsheets:
* Don't normalize Expenses negative.
* Consistent account order: Income, then Expenses, then Equity.
* Include a bottom line divider for each fund.
2020-08-22 09:49:19 -04:00
Brett Smith
cc1767a09d
fund: Incorporate Equity accounts into Release from Restrictions.
...
This matches what we do on our Statement of Activities in the
balance sheet report.
2020-08-22 09:25:53 -04:00
Brett Smith
95fb8ce481
meta_expense_type: Refine defaults.
...
* Default "management" for more accounts.
* There's a good handful of accounts where in past audits, the functional
split has been "Conservancy expenses are management, project expenses are
program." Handle those cases too.
2020-08-20 17:22:05 -04:00
Brett Smith
3519933b8c
balance_sheet: Normalize handling of release from restrictions.
2020-08-19 16:09:53 -04:00
Brett Smith
bd33c04932
balance_sheet: Re-simplify the "release from restrictions" math.
...
Basically the original bug was an incorrect sign. The last implementation
was very belt-and-suspenders to help me think through it. But it's also more
error-prone in the long run.
2020-08-18 16:48:26 -04:00
Brett Smith
5a3ee24589
balance_sheet: Correct "release from restrictions" calculation.
...
The old version was causing Income:Donations:Released postings to be
"double-released." This version gets the bottom line numbers for
Net Assets With/out Donor Restrictions match the corresponding numbers
in the fund report.
2020-08-18 16:26:12 -04:00
Brett Smith
a0ff9e6834
balance_sheet: Support arbitrary date ranges.
...
This lets you do year-over-year comparisons of smaller ranges of time, like
a quarter.
2020-08-18 15:15:02 -04:00
Brett Smith
9e7df0b020
balance_sheet: Fix typo in report.
2020-08-18 15:13:31 -04:00
Brett Smith
5c7cf9cd2a
balance_sheet: Sort trial balance accounts.
...
They were previously sorted by date, then name, which is slightly less
helpful.
2020-08-18 14:20:16 -04:00
Brett Smith
950536e4f1
balance_sheet: Transform "chart of accounts" into trial balances.
...
It was mostly this already, just needed to add a column and change the
title.
2020-08-18 13:22:07 -04:00
Brett Smith
ee40b5b5c2
balance_sheet: Add chart of accounts.
2020-08-18 10:13:30 -04:00
Brett Smith
6159870681
balance_sheet: Refactor out Report.write_totals_row method.
2020-08-18 04:16:08 -04:00
Brett Smith
b7dee6a88a
balance_sheet: Refactor out Report.write_classifications_by_account.
2020-08-18 03:27:27 -04:00
Brett Smith
90ae343a1a
balance_sheet: Refactor out Report.start_sheet method.
2020-08-18 02:02:54 -04:00
Brett Smith
aa1f2ea35a
balance_sheet: Balance.total() accepts multiple account names.
...
This simplifies the code to total all equity.
2020-08-18 01:28:37 -04:00
Brett Smith
e05f55659a
balance_sheet: Balance only considers post_type for Expenses.
...
This simplifies the code and slightly optimizes it, since now Balance
won't store and keep re-summing income-type breakdowns that nothing
needs.
2020-08-18 01:28:37 -04:00
Brett Smith
b7f9903d1f
balance_sheet: Default classification sort by root account.
...
This provides more consistent presentation across sheets,
especially the financial position+cash flows.
2020-08-18 01:28:37 -04:00
Brett Smith
f55b698718
balance_sheet: Formatting cleanup in functional expenses.
2020-08-18 01:28:37 -04:00
Brett Smith
07757e7717
balance_sheet: Add cash flows report.
...
With this, the balance sheet report has all the reports from the audit.
2020-08-17 17:09:31 -04:00
Brett Smith
eaaf8fe98c
balance_sheet: Add functional expenses report.
2020-08-17 15:28:08 -04:00
Brett Smith
29d4325c7a
balance_sheet: Add activity report.
2020-08-17 15:26:55 -04:00
Brett Smith
89bbf84347
reports: Balance tolerance can be an int.
2020-08-17 10:34:38 -04:00
Brett Smith
a87d4bfc6c
balance_sheet: Start report with financial position. RT#11854.
2020-08-17 10:34:38 -04:00
Brett Smith
385f5a20da
extract_odf_links: Don't print document-internal links.
2020-08-10 11:36:51 -04:00
Brett Smith
b4dee2cf9a
extract_odf_links: Improve help text.
2020-08-10 10:49:03 -04:00
Brett Smith
ce067963dc
tools: Add extract-odf-links.
2020-08-10 10:02:40 -04:00
Brett Smith
8597a526d7
cliutil: Use semi-standardized BSD exit codes.
2020-07-30 15:53:31 -04:00
Brett Smith
f56d89462a
reports: Add common properties to all ODS reports.
2020-07-29 17:30:07 -04:00
Brett Smith
837fcec8f0
reports: Add BaseODS.set_common_properties() method.
2020-07-29 17:22:09 -04:00
Brett Smith
04be991e19
reports: Add BaseODS.set_custom_property() method.
2020-07-29 16:58:57 -04:00
Brett Smith
59b088b573
reports: Add BaseODS.set_properties() method.
2020-07-29 16:58:57 -04:00
Brett Smith
f9ea7edae3
config: Add Config.books_repo() method.
2020-07-29 15:46:14 -04:00
Brett Smith
680bb6e305
meta_tax_implication: Update values for TY2020 1099-MISC changes.
...
Support the new 1099-NEC form.
2020-07-28 16:41:34 -04:00
Brett Smith
123508ef88
expense_type: Revamp expense-allocation metadata.
...
* Change the name for symmetry with income-type.
* Standardize on "management" value because that's what it's called in the 990.
2020-07-28 11:46:00 -04:00
Brett Smith
a27d68beab
cliutil: Add diff_year function.
2020-07-27 11:50:11 -04:00
Brett Smith
4615364538
cliutil: Add ReturnFlag.
...
Take this opportunity to re-standardize flag values now that it's clear
what's most common.
2020-07-27 10:54:04 -04:00
Brett Smith
46fe18809c
ledger: Add transaction-level reports.
...
Mainly for the cash disbursements and receipts reports, which have dedicated
shortcuts.
2020-07-22 11:26:36 -04:00
Brett Smith
6960425571
ledger: Prepare LedgerODS for subclasses.
...
This commit reorganized the class internals to make it more straightforward
to add a transaction-oriented reporting subclass.
2020-07-22 11:15:31 -04:00
Brett Smith
56114cc66e
accrual: Support limited punctuation in payment-method.
2020-07-21 13:20:58 -04:00
Brett Smith
a008c84e45
accrual: Add E-Check payment method.
2020-07-21 13:15:41 -04:00
Brett Smith
6c7603fa6c
ledger: Add options to control account totals display.
2020-07-20 22:45:14 -04:00
Brett Smith
708d48699a
accrual: Restore "since last nonzero" behavior to outgoing report.
...
Basically this behavior is an extension of the fact that the outgoing report
is grouped by RT ticket rather than "accrual data." Ripping this
functionality out of other reports was correct, but it needed to stay for
the outgoing report.
2020-07-20 15:13:20 -04:00
Brett Smith
52e7f3a221
ledger: Only display accounts requested with --account.
...
Now that we're accepting classifications, it's possible to specify account
options that select some but not all accounts at the same level of the
hierarchy. This commit tracks requested account names separately from sheet
names to do that correctly.
2020-07-20 13:13:22 -04:00
Brett Smith
aaa26e9e61
data: Make Account.iter_accounts() argument optional.
2020-07-20 11:22:23 -04:00
Brett Smith
6f1d01a3d4
ledger: Improve sheet size math.
2020-07-17 11:00:33 -04:00
Brett Smith
e5aa63996a
ledger: Include balances for accounts without activity.
2020-07-17 10:56:12 -04:00
Brett Smith
4483d76999
data: Add Account.is_open_on_date() method.
2020-07-17 09:58:18 -04:00
Brett Smith
a0372d4b73
data: Add Account.keeps_balance() method.
2020-07-17 09:33:59 -04:00
Brett Smith
88ae03302f
ledger: Add memo column to Income sheets.
...
Quick accommodation for project reporting.
2020-07-16 16:33:18 -04:00
Brett Smith
97d813972b
books: Loader.load_none() returns default options_map.
...
This way it's still safe to assume all the expected keys are there.
2020-07-16 15:37:11 -04:00
Brett Smith
3f0b201d16
ledger: --account accepts a classification.
...
This makes it easier for users to specify a group of accounts.
2020-07-16 15:12:20 -04:00
Brett Smith
fd3bd68326
data: Add Account iteration methods.
2020-07-16 13:51:23 -04:00
Brett Smith
df0c3546fd
data: Add Account.load_from_books convenience classmethod.
2020-07-16 10:39:31 -04:00
Brett Smith
fff9e37bf8
data: Add Account.is_account and Account.load_options_map.
...
These work in concert to distinguish account names from other
colon-separated strings.
2020-07-16 10:11:39 -04:00
Brett Smith
6a7815090c
data: Add AccountMeta class.
2020-07-15 10:27:05 -04:00
Brett Smith
0e8745bf51
ledger: Include all fund accounts in default project ledger reports.
...
This brings the reporting into sync with the fund report.
2020-07-15 10:14:46 -04:00
Brett Smith
638bc8ccbb
accrual: Make comment not an actual type:ignore.
2020-07-02 13:07:59 -04:00
Brett Smith
a8a3f9d12b
accrual: Better error handling and reporting around payment-method.
2020-07-02 10:56:51 -04:00
Brett Smith
b25bea0fc6
fund: Swap Unearned Income and Payable columns.
...
Unearned Income is more interesting.
2020-07-01 15:59:55 -04:00
Brett Smith
b41249bec6
fund: Clean unused import.
2020-07-01 15:59:16 -04:00
Brett Smith
ceb0c451fa
fund: Improve type signature.
2020-07-01 15:57:58 -04:00
Brett Smith
7702a1f03c
fund: Add bottom line totals to Fund Report. RT#4582.
...
This required keeping the balances from write_row, and then a lot of other
changes followed from that. In particular it makes more sense to build the
fund report sheet from scratch rather than copying the breakdowns report and
chiseling the fund report out of it.
2020-07-01 15:56:39 -04:00
Brett Smith
7a0fa4fb57
accrual: Wire is a single payment method.
2020-07-01 13:43:58 -04:00
Brett Smith
42b3e6ca17
accruals: Aging report shows all unpaid accruals color coded by age.
...
Some readers care about recent accruals, some don't. This presentation
accommmodates both audiences, providing the data while making it easy to
ignore or filter out recent accruals.
2020-07-01 12:00:17 -04:00
Brett Smith
c0a2d1c070
accrual: Rip out unnecessary functionality.
...
Now that make_consistent is really robust, there's much less need to do all
the consistency checking that was done in AccrualPostings.__init__. I expect
this will provide a performance benefit for large reports, since we'll be
calculating data for many fewer accrual groups. The only performance penalty
I see is that the aging report has to calculate the balance three times for
each row it reports, twice in write() and once in write_row(), but that
seems okay and can be cached separately if needed.
2020-07-01 10:54:58 -04:00
Brett Smith
a5b3dc1463
accrual: AccrualPostings.make_consistent() groups accruals by date.
...
This accommodates cases of contracts without separate invoices,
where a series of payments are scheduled over time.
The dance we used to do of group-by-invoice, then make consistent was
already suspect. It was originally motivated by the consistency checks that
are now gone. Use this opportunity to clean up and just make make_consistent
a classmethod.
2020-07-01 09:50:20 -04:00
Brett Smith
f7d24cd8ab
fund: ODS report usability improvements.
...
* Lock the first column.
* Open the breakdown sheet by default.
2020-06-29 09:39:41 -04:00
Brett Smith
2c61f2b9f2
reports: Add BaseODS.set_open_sheet() method.
2020-06-29 09:38:04 -04:00
Brett Smith
8d3a0dbe4c
reports: Add BaseODS.lock_first_column() method.
2020-06-29 09:20:59 -04:00
Brett Smith
d6821b1368
fund: Fund report columns more closely match the audit report.
2020-06-28 09:43:44 -04:00
Brett Smith
5978c2f0c2
reports: Remove BaseODS.style_dividerline.
...
Obsoleted by the new border_style() method.
2020-06-27 23:12:35 -04:00
Brett Smith
15becebf5c
reports: Add BaseODS.border_style() method.
2020-06-27 23:08:23 -04:00
Brett Smith
138928eebf
fund: Omit unreportable rows from the fund report sheet.
2020-06-27 21:37:14 -04:00
Brett Smith
40573cb6dc
fund: Split ODS into two sheets.
...
The first only has equity numbers the auditors look at.
The second includes balances of additional accounts.
2020-06-27 18:26:03 -04:00
Brett Smith
09b1548a96
reports: BaseODS.copy_element() recurses.
2020-06-27 17:36:02 -04:00
Brett Smith
d473ed54fc
fund: Add outstanding balances to ODS fund report.
2020-06-27 16:51:35 -04:00