Fix typo in ProgramAccountingController.get_lineitemtypes()
Impose consistent ordering on results of IndividualAccountingController.get_transfers()
Add 'in_full' optional argument to has_paid()

Sometimes you want to know whether someone has submitted any payments for
a program.  Sometimes you want to know whether they have paid the full
balance required for the program.
Add functions to represent a user/program accounting record as a string

When someone makes a program payment, we want to know who it's for, and
what program is for.  This bare minimum information is known as the
accounting controller's "ID" and is simply "[program id]/[user id]".

Furthermore, sometimes we'll want to know what specific items the user is
paying for.  The accounting controller's "identifier" includes the ID as
well as a list of line item IDs and amounts paid.  It is possible to check
the consistency of a user's records against one of these strings (for
example, to see if they changed their preferences before their payment was
received), although nothing breaks if they aren't consistent.
Update Cybersource credit card module for new accounting system

The look and feel remain the same, but the identifier that is attached to
the payment form has changed (see previous commit).

Also, the module no longer complains if you have already submitted a
payment.  The effects of previous payments and financial aid grants are
shown on the form and incorporated into the balance.  If you pay for a
program and then select some more optional items, you will be allowed to
pay again.
Update First Data credit card module for new accounting system

These changes are similar to those for the Cybersource module, but I also
took a crack at updating the payment_success view which handles postback
from the payment processor.

Note that I have not tested this with live payments, only verified that
the forms work and produce reasonable POST data to the payment processor.
BOTH CREDIT CARD MODULES MUST BE TESTED ON PRODUCTION SERVERS BEFORE USE.
Update submit_transaction() view for new accounting system

Not yet tested.  BOTH CREDIT CARD MODULES MUST BE TESTED ON PRODUCTION
SERVERS BEFORE USE.
Update {{ program.receipt }} smart text for new accounting system
Update student_financial_spreadsheet view for new accounting system
Fix typo in ProgramPrintables.get_student_schedules()
Update student schedules for new accounting system

Template overrides that make use of accounting data in the student
schedules will need to be updated slightly.  I got the labels and total
amount to appear correctly with an MIT Splash template override, but I
don't have the ability to test barcodes on my dev server.
Update student checklist for new accounting system
Update class checklists for new accounting system
Add all_transfers() method to ProgramAccountingController

This fetches all purchases and payments for a program in bulk, with
optional arguments (required_only, optional_only, payment_only) just like
get_lineitemtypes().
Update purchased items lists for new accounting system
Remove old accounting imports from programprintables.py
Correct typo in splashinfo.html
Add function to set preferred quantity of a single optional item

This is for convenience only, the same thing could be done by calling
get_preferences(), modifying the list and sending it back to
apply_preferences().
Fix bug in FinancialAidGrant.finalize()
Add sibling discount support to accounting system

Sibling discounts work much like a financial aid grant: the discount is
calculated based on whether your SplashInfo says so (just like financial
aid is calculated based on the FinancialAidGrant), regardless of what
transfers have already been performed.

For now, the discount is hard coded at $20, but this would be easy enough
to make customizable.  Behavior is unchanged when not using SplashInfo.