This clearly opens up opportunities for open source. I started looking at several products and two which appealed to me were TinyErp and OFBiz. TinyERP is written in Python and is remarkably compact for the functionality it provides. OFBiz is a very promising J2EE application and was an Apache incubation project when I looked at it a year ago. It is now an official top level project of Apache. I soon realised that the foundations of an ERP system is an accounting system and the first step should be a simple accounting system. This was not a pleasant thought as accounting systems do not seem all that exciting or fun projects. However, if we need to promote our preferences, we need to do so in the language of our audience. Since we aim to succeed, we might as well learn to manage our own income. InitialisationA good place to start for an Indian perspective was the online school book on accounting for class XI published by NCERT (http://www.ncert.nic.in/textbooks/testing/Index.htm). For the accounting application, we can use GnuCash, possibly the best known of the accounting applications in the Linux world. The tutorial and concepts documentation of GnuCash is excellent as well. Interaction with a CA helps and I would like to thank Rajesh Seth for helping me overcome my misconceptions. GnuCash follows a double entry system. Historically, this was useful to resolve bookkeeping errors. Fortunately, with computerisation, it is highly unlikely that the books will not tally. So, the primary use now of double entry system is to keep track of where the money came from and where it went. While GnuCash is intended as a personal accounting system, it is comprehensive enough that it can handle the accounts of a small business as well. A very nice feature of GnuCash is that while it conforms to the standard accounting processes and practices, the messages and column headings are easier to understand for a lay person. Getting StartedWe will need to create a new file in GnuCash to keep our data. It
is desirable that we keep it in a separate directory because GnuCash
creates a lot of reports, logs and backup files during its
operations. The critical part of the creation of the new file is the
creation of a set of accounts. A druid
will help us should we so choose and we do. We will choose the
default currency to be INR. A number of categories for accounts are
available. By default “Common Accounts” is selected. We will
de-select it and limit ourselves to “Business Accounts” (Fig
1). There will be 5 top level accounts(Fig 2). The minor issue will be that the account “Equity” is normally referred to as “Capital” in India. We can change its name to suit our needs. We can also remove some of the accounts which may not be meaningful for us, e.g. the sub-accounts in “Expenses/Taxes” categories. In “Assets/Current Assets”, we have a sub-account “Petty Cash”, while we normally just use “Cash”. What we call a “Current Account” is called a “Checking Account” here. The point is that it is easy to get started with GnuCash and it is perfectly suitable for, at least, maintaining the books as per our needs. Not all reports which may be useful for Indian businesses will be available but new reports can always be added. We may need to create an account for each of our bank accounts under the Current Assets, possibly under “Checking Account” or “Savings Account” (Fig 3). We are now ready to get started with the transactions. Basic TransactionsOur bank accounts will have an opening balance. We could have provided it at the time of the creation of the account or we can enter it as a transaction. The two are identical. GnuCash makes extensive use of tabbed windows. A window remains open till we decide to close it. I wish the closing a window had followed the Firefox model; instead, we have to click on the Close icon on the tool bar. We select our bank account and open it. Double click achieves the
same goal. We enter “Opening Balance” in the “Description”
column. The key value is the “Transfer” column, which will
contain the second account affected by this transaction. For an
opening balance transaction, the source of the money is a Capital
account, i.e. “Equity/Opening Balances”. We enter, say, 1000 in
the “Deposit” column(Fig 4). Once we press Enter, we get a new line for entering the next transaction. We can select the previous transaction and click on the “Jump” icon in the tool bar. A tabbed window with the “Equity/Opening Balances” appears and we can see that the transaction we have just entered in the bank account is reflected here as well. Notice that the amount column headings here are “Decrease” and “Increase”(Fig 5). Fortunately, we are not confused by the debit and credit headings which can be hard for non-accountants. The developers of GnuCash have put in great amount of effort in making it easy to enter transactions. Short cuts are available, intelligent options are offered. The data entry can be very fast and convenient once one is familiar with it. Most of the time, it is not difficult for us to decide on the source and destination accounts. A customer is an asset and we will normally create an account for each customer under “Accounts Receivable”. When we invoice him, the second account affected will be the “Income/Sales”. If we wish to keep track of “Services”, we can create an account with that name under “Income”. The customer pays us by a cheque but deducts service tax at source. This becomes a split transaction. Suppose we had raised an invoice for Rs. 1000. We receive a cheque for Rs. 900 and Rs. 100 is the tax deducted at source. Now, instead of entering the “Transfer Account”, we will click on the “Split” icon on the tool bar. We will make an entry of Rs. 900 in “Current Assets/Bank Account” and the balance Rs 100 in “Expenses/Taxes”. As can be seen, it is easy to ensure that the books remain balanced.(Fig 6) ReportsThe most useful report for getting started is the “Account
Summary”(Fig 7). The first thing we notice is that the report gives values in both INR and $. We need to adjust some of our preferences. In the “Edit/Preferences”, we change the “Default Report Currency” to INR. While at it, we can also set the accounting year and the date format. The operation of the reports is a bit unusual. A report will open in a tab view. There are no report parameters asked. Once the report has opened, we click on the “Options” icon and we can change the report parameters. For example, let us change the “Levels of Subaccounts” to 1 in “Accounts” options and click on “Apply”(Fig 8). The report will now show only the top level account values(Fig 9). Odds and EndsAmong the limitations, GnuCash is a single user application. It does not have a year closing option. A simple solution is to add a transaction at the end of the financial year in each of the Income and Expense accounts transferring the balance to an Equity/Capital account. We can create a Profit and Loss account for this purpose. However, the old transactions are not locked and we can still make changes. The application is written in C and Scheme. Exposure to Scheme and Lisp like languages is minimal for many programmers. On the positive side, if we need to add code, it may be just the incentive needed to learn Scheme! SummaryWe do not expect new users of computers to ask for Linux and Open Source as a part of their requirements. They are more likely going to be influenced by their colleagues, suppliers and IT professionals. Money and keeping track of it is a critical part of any business. Even experienced users may be open to change. Many are faced with the dilemma that the accounting application they were using no longer works on their new system. Licensing issues are also becoming more complex. We need to handhold and guide these users to the Open Source world, at least till we build a pool of references for such applications. It is my belief that GnuCash or a similar application is a critical component in the spread of Linux on the desktops in India. |
Other Articles >