/gherk-book

An "Accounting Workbench" with SpecFlow step definitions using the domain language of double entry bookkeeping. It allows developers and accountants to specify transactions in Gherkin Given-When-Then notation.

Primary LanguageC#BSD 2-Clause "Simplified" LicenseBSD-2-Clause

Accounting Workbench

Bookkeeping must be one of the most standardized and well-documented domains in existence (http://en.wikipedia.org/wiki/Della_mercatura_e_del_mercante_perfetto).

This is an exercise I'm doing to understand the domain better. With the addition of SpecFlow steps it's beginning to look like a kind of "Accounting Workbench". It might be possible for developers to sit down with accountants and use Gherkin to model the parts of applications which need to record financial transactions:

Scenario: Record a transaction

Given a Accounts Receivable ledger with id 3001 and a revenue account no. 3000 as controlling account
And a revenue account 1236 "Sales (Services)" in Accounts Receivable

When I record the following transaction in the Accounts Receivable ledger:
	| AccountNumber | AccountName      | Date      | TransactionReference		   | Amount    |
	| 1236          | Sales (Services) | 12/3/2011 | 5434 - Widgets, Harry Slayton | 2034.12   |
	
Then the trial balance of the Accounts Receivable ledger should look like this:
     | AccountNumber | AcctType  | AccountName		 | Debit	| Credit	|
     |       1236    |   Revenue | Sales (Services)  |  0.0		|   2034.12	|

And the Accounts Receivable ledger should not balance.

It's rudimentary:

  • There are ledgers.
  • Accounts can be created.
  • Transactions can be recorded.
  • There is a (at this point) somewhat broken trial balance.
  • There is a simple report printer. It writes trial balances and account statements to the console.
  • There are no step definitions for account statements (yet).
  • There are no journals (yet).
  • There is no user interface. Run the NUnit tests.
  • There is no database.

DISCLAIMER: I'm not an accountant. This was put together in a hurry, with domain knowledge googled on the fly. Stay out of jail.