Commit graph

368 commits

Author SHA1 Message Date
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
Brett Smith
9ae974009b fund: Add outstanding balances to text fund report. 2020-06-27 16:31:27 -04:00
Brett Smith
b1a46d6ef6 plugin: Validate FY19. 2020-06-26 10:34:50 -04:00
Brett Smith
cd5d98eb4d setup: Bump version for income_type update. 2020-06-25 13:57:44 -04:00
Brett Smith
9699f4e527 income_type: Set a default for TrademarkSales. RT#8869. 2020-06-25 13:52:37 -04:00
Brett Smith
f3c68ff462 opening_balances: New tool. 2020-06-25 10:51:37 -04:00
Brett Smith
b038ec827c cliutil: Add year_or_date_arg() function. 2020-06-25 08:43:28 -04:00
Brett Smith
0e35f16853 tests: Extend fund report input.
This lays the groundwork to test both the opening balances generator,
and additional account breakdowns on the fund report.
2020-06-24 10:13:41 -04:00
Brett Smith
fd548f35f4 accrual: Be case-insensitive when gathering payment-method.
This is a little nicer for the user, and lets us simplify surrounding
case-handling code.
2020-06-23 16:46:31 -04:00
Brett Smith
5085d4d8ef accrual: Outgoing report sets RT CFs for outgoing payment. 2020-06-23 14:47:03 -04:00
Brett Smith
4789972d38 approval: Not required for any bank transfer. RT#11707. 2020-06-23 09:51:47 -04:00
Brett Smith
f9411e0ffe meta_receipt: Not required on interest income. RT#11695. 2020-06-22 16:34:06 -04:00
Brett Smith
887102ea92 fund: New report. 2020-06-21 18:07:44 -04:00
Brett Smith
baf0b2c5ff ledger: Fix --output-format default help.
This was accidentally carried over from accrual-report.
2020-06-21 11:40:28 -04:00
Brett Smith
42d2002fda reports: Balance.format(None) uses accounting formats. 2020-06-21 11:39:31 -04:00
Brett Smith
5e9e11923e reports: Add account_balances() function. 2020-06-20 22:51:02 -04:00
Brett Smith
6213bc1e5d reports: Add PeriodPostings class.
This is AccountPostings from the ledger report, cleaned up to be more
general.
2020-06-20 19:04:53 -04:00
Brett Smith
7a9bc2da50 reports: Add sort_and_filter_accounts() function.
Extracted from the ledger report.
2020-06-20 09:11:01 -04:00
Brett Smith
5b68312924 tests: Add tests for Balance.copy() tolerance handling.
I wrote the changes to Balance.format() before the dependent changes to
Balance.copy(), so I was sort of counting on them to be implicitly
tested. But they should be explicit.
2020-06-20 09:11:01 -04:00
Brett Smith
7f3a26b555 reports: Balance.format() accepts zero argument.
This change has the same motivation as the recent change to
BaseODS.balance_cell(): try to preserve currency information when it's
available.
2020-06-18 14:07:44 -04:00
Brett Smith
ae974b8e50 reports: Balance.copy() accepts tolerance argument. 2020-06-18 14:06:18 -04:00
Brett Smith
355a48381c reports: Balance.clean_copy() creates new Balance with given tolerance. 2020-06-18 14:05:49 -04:00
Brett Smith
0f7a154ff4 reports: Balance cells try to retain currency on zero balance. 2020-06-18 10:07:10 -04:00
Brett Smith
daf7e12752 ledger: Remove obsoleted hack.
This is no longer necessary now that the plugin enforces proper project
metadata on Equity accounts.
2020-06-18 10:05:37 -04:00
Brett Smith
7441f4ef0c ledger: Correct period totals. RT#11661.
The period totals were reporting the balance of all the loaded postings, not
just the ones in the reporting date range.

Like the accrual report, introduce a RelatedPostings subclass that records
and saves all the information we need at group definition time, to help us
get it consistently right rather than redoing the same math over and over.
2020-06-17 18:25:47 -04:00
Brett Smith
5e295f1024 accrual: Change args.since default.
This default makes more since with the way we're going to stop having
opening balances in open books.
2020-06-17 15:32:08 -04:00
Brett Smith
0caf78436f accrual: Generate an aging report in more cases.
Default to generating an aging report unless the user searched for a
specific RT ticket or invoice.
2020-06-17 15:32:08 -04:00
Brett Smith
d7e2ab34b9 meta_project: Force the default project on Equity accounts.
See rationale in comments.
2020-06-17 04:29:17 -04:00
Brett Smith
8b8bdc0225 reports: Add BaseODS.column_style() method.
Use this to provide more consistent column styles throughout the reports.
2020-06-16 22:41:13 -04:00
Brett Smith
cf2833ee20 plugin: Load user configuration file. 2020-06-16 15:10:19 -04:00
Brett Smith
b1f82badf7 config: Get repository directory from config file.
One less thing users have to fiddle with to get set up.
2020-06-16 14:42:09 -04:00
Brett Smith
efe9bd8855 ledger: Change default report dates.
The old defaults were optimized for the audit report.
The new defaults provide more helpful ad hoc reports.
The latter will be run more often and more quickly, so it's
worth optimizing the defaults for them.
2020-06-16 13:31:46 -04:00
Brett Smith
9782e7203a ledger: New reporting module. 2020-06-16 10:18:18 -04:00
Brett Smith
7660700e6c cliutil: Add date_arg() function.
Meant to be used as an argument type.
2020-06-15 18:11:39 -04:00
Brett Smith
4a28596db2 data: bank-statement and tax-statement are link metadata.
Not including them earlier was an oversight.
2020-06-15 18:08:18 -04:00
Brett Smith
582316ae85 data: Add Metadata.report_links() method.
This is just a variant of get_links() that eats TypeError.
Higher-level reporting code often wants it.
2020-06-15 14:19:10 -04:00