Files @ 7156529ceb23
Branch filter:

Location: NPO-Accounting/import2ledger/TODO.rst

Brett Smith
nbpy2017: Report item rate names and final unit prices.

This keeps more of the RBI calculation in the templates, where it belongs.
Template logic has become more capable since this importer was first
written, which makes this change practical.
TODO
====

Template multiplexing with action hooks
---------------------------------------

* Add a hook that simply reads information from a configuration file section ``[template variables]`` and adds it to the entry data.

* Add a hook that changes what template to use based on other entry data.  (This needs more specification.)
  OR, should this be a hook that just adds more entry data, and trusts the Ledger entry template to use it?

Bug fixes
---------

* Parsing open date ranges raises an exception

New importers
-------------

* Stripe import via API
  * This is going to require giving importer objects the configuration so they can read things like API keys.
* YourCause
* Network for Good

Other feature requests
----------------------

* Some way of preventing re-imports

User niceties
-------------

These haven't been requested yet but it's easy to imagine how they make the program more user-friendly.

* ``load_hooks`` and ``skip_hooks`` configuration options to limit what hooks are used.
  Setting ``load_hooks`` means "skip everything not in this list."
  Not setting ``load_hooks`` means "only skip what's listed in ``skip_hooks``."
  If neither setting is set, ``skip_hooks`` should default to a list of hooks that have business-specific logic (currently just ``add_entity``).
  If a hook is listed in both, it's either skipped or a configuration error (TBD).
* Try all importers even after one fails
* Clean up error reporting on bad configuration file syntax.

Code infrastructure
-------------------

* Open files for import in binary mode; add a text-wrapping importer base
* Write a utility dict transformer.  Given a source dictionary, it returns something like ``{new_key: transform(source[old_key]) for old_key, transform, new_key in configuration}``.
  A lot of the CSV importers are doing this ad hoc now, so refactoring out a common way to do it could help speed up development of future importers.