A chart of accounts defines a ledger: Chart -> Ledger
One can post entries to ledger, invalid entries are not posted Ledger -> List[Entry] -> (Ledger, List[Entry])
On ledger closing we close income and expense accounts, create income statement, and transfer current profit to retained earnings: Ledger -> (ClosedLedger, IncomeStatement)
Postclose entries may distribute dividend: ClosedLedger -> List[Entry] -> ClosedLedger
End of period account balances are saved for next period: ClosedLedger -> Balances
End of period balances create an opening entry for start of next period Balances -> Entry
We condense contra accounts and show balance sheet report ClosedLedger -> BalanceSheet
Obtain information about ledger:
Trial balance reflects state of ledger Ledger -> TrialBalance
We can calculate current profit based on state of income and expense accounts
Other:
Chart, [Entry], IncomeStatement, BalanceSheet and Balances are serialisable
Assumptions:
No contra accounts
Simplistic or no cash flow statement
One level of accounts
One currency
No negativity or overspending checks
Entry can touch any accounts
Must supply entries, not transactions
Chart:
required accounts are retained earnings account and income summary account
Work flow:
Chart -> Ledger
Ledger -> List[Entry] -> (Ledger, List[Entry])
Ledger -> (ClosedLedger, IncomeStatement)
ClosedLedger -> List[Entry] -> ClosedLedger
ClosedLedger -> Balances
Balances -> Entry
ClosedLedger -> BalanceSheet
Obtain information about ledger:
Ledger -> TrialBalance
Other:
Chart
,[Entry]
,IncomeStatement
,BalanceSheet
andBalances
are serialisableAssumptions:
Chart: