Commit graph

135 commits

Author SHA1 Message Date
Brett Smith
6d1a7cb57d config: Make get_section a public method.
As hooks and importers both require more configuration, they're gonna need
to have lower-level access to configuration settings.
2017-12-31 16:50:07 -05:00
Brett Smith
76f2707aac hooks.ledger_entry: New hook to output Ledger entries.
This is roughly the smallest diff necessary to move output to a hook.
There's a lot of code reorganization that should still happen to bring it
better in line with this new structure.
2017-12-31 12:35:20 -05:00
Brett Smith
d2f8772e08 config: Add open_output_file method.
Make this functionality accessible to hooks.
2017-12-31 11:10:49 -05:00
Brett Smith
efe5768941 main: Set up a decimal context that safely handles currency. 2017-12-31 10:06:57 -05:00
Brett Smith
85b665200c hooks: Hooks declare what order they run in. 2017-12-30 18:11:41 -05:00
Brett Smith
e8bcbd5f99 hooks.add_entity: Remove common company suffixes from entity tags. 2017-12-30 17:29:54 -05:00
Brett Smith
fb947e6bb5 README: Document Benevity disbursement importer from 1b1e2d0.
With this, we've finished paying down our recent technical debt.
2017-12-30 16:55:12 -05:00
Brett Smith
e55e3151ba README: Document Amazon Affiliate Earnings importer from 25c6454. 2017-12-30 16:54:27 -05:00
Brett Smith
c7de107267 tests: Test Benevity disbursement importer from 1b1e2d0. 2017-12-30 16:39:38 -05:00
Brett Smith
e497561a7e tests: Test Amazon Affiliate Earnings importer from 25c6454. 2017-12-30 16:14:15 -05:00
Brett Smith
d9f68e9817 tests: Add template test for 40552d6. 2017-12-30 15:55:47 -05:00
Brett Smith
f6599a3deb tests: Add template test for 9f72052. 2017-12-30 15:55:25 -05:00
Brett Smith
52f2bdcd0e tests: Add render_lines shortcut to template tests. 2017-12-30 15:54:53 -05:00
Brett Smith
2c6211c9ea main: Ensure the source_dir variable is a string. 2017-12-30 10:18:33 -05:00
Brett Smith
06f5ae9f4c README: Document additional source variables from 07d2241. 2017-12-30 10:17:22 -05:00
Brett Smith
cdedd0fc7c importers: Add CSVImporterBase documentation for 0f4f83e. 2017-12-30 10:14:08 -05:00
Brett Smith
fdcc214f9f tests: AddEntityHook test for f2c869d. 2017-12-30 09:54:17 -05:00
Brett Smith
7bdd98075f tests: AddEntityHook tests for e758db3, 56cba14, 82e4bf5. 2017-12-30 09:49:33 -05:00
Brett Smith
73b50097a2 TODO: Additions from recent user feedback and development. 2017-12-28 11:35:19 -05:00
Brett Smith
ceba336665 TODO: Format as reST.
Just to reduce the number of things people need to know to contribute.
2017-12-28 10:34:19 -05:00
Brett Smith
25c6454e2d importers.amazon: Initial version. 2017-12-27 13:44:35 -05:00
Brett Smith
11eccb60dd strparse: Fix default limit argument in split functions.
The underlying string methods don't accept None.
2017-12-27 13:35:52 -05:00
Brett Smith
0f4f83e079 importers._csv: Refactor header reading into CSVImporterBase. 2017-12-27 13:14:12 -05:00
Brett Smith
1b1e2d038c importers.benevity: Initial version. 2017-12-27 11:54:34 -05:00
Brett Smith
f2c869d783 hooks.add_entity: Add a corp_entity from a corporation variable. 2017-12-27 11:51:14 -05:00
Brett Smith
82e4bf5bd8 hooks.add_entity: Add name prefixes: der, la 2017-12-27 11:50:58 -05:00
Brett Smith
56cba1456f hooks.add_entity: Maintain sequences of name prefixes. 2017-12-27 11:50:37 -05:00
Brett Smith
07d22418d4 main: Provide additional template variables about each source path. 2017-12-27 11:39:56 -05:00
Brett Smith
40552d665a template: Let users split an account multiple times per template. 2017-12-27 11:39:34 -05:00
Brett Smith
9f720527f1 template: Bugfix newline handling.
If a rendering ended with a zeroed out split, the output would contain an
extraneous trailing newline.  Rearrange the code to print a newline
preceding each content line.
2017-12-27 11:36:25 -05:00
Brett Smith
e758db31ad hooks.add_entity: Don't try to rearrange non-Latin names. 2017-12-27 10:45:18 -05:00
Brett Smith
ba81dc9847 TODO: Add items. 2017-12-26 13:54:44 -05:00
Brett Smith
cbe96f6f03 setup: Declare dependencies for nbpy2017 importer. 2017-12-26 13:54:44 -05:00
Brett Smith
87f3209101 strparse: Improve extra text parsing in currency_decimal.
This allows a symbol and a currency code to be in different parts of the
string, as long as there's at most one of each.
2017-12-19 12:43:59 -05:00
Brett Smith
9d638f4d01 TODO: Source filename is available to templates as of cc8c03a. 2017-12-19 10:22:12 -05:00
Brett Smith
0f945c28df main: Clean noop line.
I guess this was a remnant when I was trying to implement date filtering
before I decided to do it with hooks.
2017-12-19 10:20:35 -05:00
Brett Smith
18eebbc0ed hooks: run() return value controls processing of entry data.
Instead of using in-band signaling with the entry_data dict.
I don't know why I didn't think of this in the first place.
2017-12-19 10:19:56 -05:00
Brett Smith
fa35a70f9f CODE: Update main loop to reflect the template change in 34b71ba. 2017-12-19 10:17:15 -05:00
Brett Smith
cc8c03ab62 main: Provide template variables about the file being imported. 2017-12-19 09:13:44 -05:00
Brett Smith
122323853d importers: Prefer using ChainMaps to copying and updating dicts. 2017-12-19 09:13:44 -05:00
Brett Smith
b41a7a99af hooks: Filter entries by setting entry_data['_hook_cancel'] to True.
The current method only works for plain dicts and other simple mappings.
Mapping that may still contain items after .clear(), like ChainMap, can't
rely on the old method.
2017-12-19 09:13:44 -05:00
Brett Smith
34b71baaf7 template: render() takes a single mapping argument.
This lets it receive other mapping types like ChainMap.
2017-12-19 09:13:00 -05:00
Brett Smith
1b98ab2015 util: Rename to strparse.
Better describes what the functions in the module do.
2017-12-19 06:42:05 -05:00
Brett Smith
6ea28c2c89 util: Add parse_currency_dec.
The current importers trim lots of extraneous symbols and whitespace from
currency strings before passing them to Decimal().  This function takes care
of all that in a single place.
2017-12-18 23:04:05 -05:00
Brett Smith
0734b6f7a5 hooks.invoice_payment: New hook.
In the long run, this should be some kind of configurable hook to run
arbitrary regexps on arbitrary entry fields, and then on a match, add
another field with a format string using the match data.  But this is
reasonably generic for now.
2017-12-18 17:40:30 -05:00
Brett Smith
9472be10f1 main: Open files with errors='replace'.
Stripe payment CSVs have apparently random encoding, and no way what to tell
what they're using beyond chardet.

The better way to fix this is following the existing to-do item, opening
files in binary mode and creating an importer base class to provide text
wrapping.  This would let each importer be as strict as possible.
2017-12-18 17:38:55 -05:00
Brett Smith
68a0a9625c importers.stripe: Generate payment entries for refunded payments.
In order to be refunded, the payment had to be paid in the first place, so
we should still generate an entry for it.
2017-12-18 17:32:33 -05:00
Brett Smith
4796932cb7 importers.patreon: Handle commas in large amounts. 2017-12-18 14:09:54 -05:00
Brett Smith
a2120805ab tests: Remove noop cruft file. 2017-12-18 14:06:53 -05:00
Brett Smith
8696ca33d6 TODO: Start list. 2017-12-18 13:26:32 -05:00