Bookkeeping BKeeping and the BKell

Share

INTRODUCTION

This is a short description of ‘Bookkeeping’, a double-entry bookkeeping software package I'm about to release. There are 3 parts to the program: 'Bookeeping', the software proper; 'BKeeping', the language that implements bookkeeping commands; and 'BKell', the shell in which you can run your bkeeping commands. Bookkeeping has been designed to be integrated into a web, messaged based, or larger application requiring double-entry bookkeeping functionality.


ABSTRACT

Bookkeeping is the task of maintaining balanced financial records for business transactions. The main principle of bookkeeping is that every financial transaction has two flows, a debit and a credit flow.


FUNCTIONALITY

‘Bookkeeping’ maintains double-entry bookkeeping, meaning debit and credit journal entries. This means that the software can track debit / credit accounts. So the user can use 'Bookkeeping' to maintain income, expense, asset, liability and capital accounts. 'Bookkeeping' performs the following tasks:

i)double entry bookkeeping, including:
- adding Journal Entries
- reversing Journal entries
- deleting Journal entries
- easy Finding / Viewing / Ordering of Journal entries

ii)debit and credit sides for all accounts

iii)different sets of accounts for
- income, expense, asset, liability and capital accounts
- a banking institution's books

iv)general ledgers for configured time periods
v)platform Independent; working on Windows, Linux, OS X


ACTORS

The system is composed of 6 main entities. Debit and credit represent both sides of an entry. Each entry is entered into a set of entries, which exist inside of a journal. All debits and credits are also applied to each of their corresponding accounts.
account
journal
entries
entry
debit
credit

Cashflows are either balanced on the debit or credit side of an account depending on the account's type.
income
expense
asset
liability
capital


BKEEPING COMMANDS

In bkell, naming an entity (or token) and options is synonymous to giving the literal token (the XML). So executing the command in fig.1 is the same as executing the command in fig.2. Also, variables are xml tokens and referenced by prefixing an '@' sign (see fig.3). And commands can be recursively nested (also fig.3). The format of bkeeping commands are outline below in fig.4. The only drawback to bkell is that you have to enter an EOF character at the end of your bkeeping expressions (Ctrl-Z in Windows, Ctrl-D in Mac). This is due to a limitation in SableCC, Bookkeeping's parser generator of choice.


load ( debit -id abc );
fig.1


load ( < debit xmlns="com/interrupt/bookkeeping/account" id="abc" / > );
fig.2


var testJournals = load ( journals -id journals.test );
add ( ( @testJournals ) add ( (create ( journal -name ontarioexpenses ))
create ( entries -id oex )
) );
fig.3


add ((token.literal) token.literal,...);
remove ((token.literal) token.literal,...);
reverse ((token.literal) (token.literal) token.literal);

find ((token.literal) token.literal);
list ((token.literal) token.literal);

load (token.literal);
create (token.literal);

commit (token.literal);
print (token.literal);

exit;
fig.4

Posted by  on 2007.04.07| Original post

#archive #frye #thebox