Double Entry Accounting: From Transaction Analysis to General Ledger