Add invoice table
Implement a rough invoice model, update models for new transaction tables
Update correct status enumeration for invoice
Clean comments
Create corresponding transaction when creating an invoice
Update old SQLAlchemy table joining calls manner
Implement invoice status updating
Use dict mapping instead of if statements for transaction model
Add test for invoice transaction charge
Add test for invoice transaction processing failed
Remove a unused statement
Add test for processing invoice refund transaction
Add tests for invoice model, back to 100% coverage again, yeah!
Try to fix testing failures for PostgreSQL
Implement basic invoice API
Extract repeat code from test_invoice for model
Update invoice API, add tests
Add test for creating invoice with bad parameters
Add tests making sure cannot get and create invoice for other company
Remove an unused line