Add session_cost to billing model and admin.
Add session_created field to transaction table.
Add session_cost and session_created to billing API calls and update tests.
Add support for new sessions to calculate_credit_cost.
Update calls to calculate_credit_cost to pass in the session cost and whether a session was created.
Remove credit_amount calculations from message cost API (these can no longer be calculated without additional information, i.e. whether the session was created).
Add TODO to test a transaction with session_created = True.
Use session_created in billing worker.
Add tests for billing messages that create sessions and improve assertions on calls made to billing api.
Add test for creating transactions for new sessions.
Only update the users credit balance *after* the transaction has been recorded so that balances are never updated unless a corresponding transaction exists.
Fix the types of the message_cost and session_cost on the transaction field (and fix the billing api tests).
Have the billing API require session_created to be passed in when creating transactions.
Replace credit_cost and resulting price with credit_cost and session_credit_cost and add tests for them.
Rather set session_cost and message_cost to zero than use substration in session_credit_cost and credit_cost calculations.
Remove dangling bracket.
Fix checks for rounding costs towards zero.
Rename credit_cost to message_credit_cost for clarity.
Add tests for MessageCostForm and fix bugs revealed.
Use keyword arguments when calling calculate_credit_cost in forms so that it's clear which things are being set to zero.