Make it clear what the "active" flag does on a conference
Import "chosen" jquery library

This allows autocomplete dropdowns, which will be used in,
amongst other things, the accounting package.
Add basic accounting package

There is definitely more to do. One thing that comes readily to mind
is to fix up the CSS, and move it all to a proper CSS file. But one
thing at a time...
Automatically generate accounting records on payments

This will automatically create as much as possible of accounting records
when payments arrive that we already know about. This menas either
automated payments through Paypal or Adyen, or manually flagged invoices.

Transactions that are fully specified (typically those caused by an invoice
being paid) will automatically be closed and no manual work is needed.
Transactions that are not fully specified will be left with an open
accounting entry for manual completion.

For manually flagged invoices, there will be a single accounting entry,
with the full cost. If any fees show up later, they will need to be
processed later.

For Paypal paid invoices, there will be a single accounting entry,
containing both the payment entry and the cost (going to different
accounts of course). Paypal has it's own balance account, from which
we make manual transfers in and out - and those manual transfers have
to be manually accounted as well.

For Adyen paid invoices, multiple accounting entries will be made. When
the payment is authorized, one entry turning it into a short-term
receivable under "Adyen authorized payments" for the full amount. Once
the settlement completes, the fee will be known and posted to the
cost account, and the remaining amount is moved to the "Adyen
payable balance". Once the payout happens, it will need to be manually
moved from the payable balance account to the main bank account (this
step could possibly be automated in the future).

Refunds are currently not tracked automatically, they have to be
fully manually processed.

With this change we now track accounting accounts and objects on the
invoices. These fields can be left empty for manual processing, and
there's intentionally not a foreign key in the database between these
systems to keep them loosely connected. Conferences in the registration
system now also carry a field to keep track of which accounting object
transactions should be posted to - but the actual account numbers are
per system (e.g. confreg vs membership).
Add scripts to backfill accounting information

backfill_invoices.py will go through all existing invoices and
assign them an account and possibly an object. If it's a conference
registration, the object will be copied from the conference - so make
sure to set objects on all conference objects before beginning.

backfill_accounting.py will go through all existing invoices, paypal
payments and adyen payments (from 2013 only, yes this is hardcoded)
and generate accounting entries. Make sure you've run the
backfill_invoices.py scripts first since the accounting info is
copied from the invoice records.

Entriesthat can be known completed will be done so, and other
entries will be left open. After running these scripts it's important
to go through the accounting system and close out all accounting entries
that are not closed automatically, as there will likely be quite a few.
Add ability to search for journal entries

Autogenerating all our invoice items is going to create a lot of
entries - it's going to be really hard to work with if it's not
searchable..
Add ability to use % key to autobalance an entry
Minor CSS tweaks

Not to make it look great, but to make it more readable - e.g. prevent
linewraps in unfortunate places for example.
Temporarily disable creation of automatic accounting entries

To make sure we don't stop payments from working while working
on setting up the base information.
Make the backfill_invoices script a bite nicer to work with

There are a lot of invoices in our system. And a few have had their links
broken by people who forgot to update both sides of a relationship :)
Default new journal entries to the same date as the last one

This makes a lot more sense than defaulting to "today", since most of
the time things are booked at least a few days in the past.