Some years ago, a new head of marketing wanted the help of IT. He wanted to know the sales patterns of a group of products. We found that all these products were categorised under a single account code. The invoice information was entered only in the accounting system bypassing the sales module. We could tell him the sales value of all the products but could not tell the value of sales per product. It was also not possible to tell the volumes of sales. He was very unhappy and refused to understand that unless the details of the invoices were entered, it just wasn't possible to carry out any sales analysis.
From the perspective of IT, the sad part was that there was no saving of effort. The invoices were being generated but using spreadsheets or word processors. Entry of the same information in an application would not have been any harder. It is desirable that an organisation, no matter how small, should implement practices which ensure that the organisation's data is available in future when it would be useful. After all, seasonal pattern can only be known after at least a season. In the first season, the entry of data often seems like extra work, a pointless activity.
Suppose we have selected the wrong ERP. We implement an ERP but need to change it at a future date. This fear should not paralyse us into inaction. We as technologists know that it is not very difficult to write scripts to transfer data from one format to another provided the formats are known. There is nothing hidden about the formats used by the Open Source products. Our goal is that organisation should use an ERP application and not worry excessively about whether it will be suitable in future. This is an easy decision as the cost of implementing an Open Source ERP is not very high. More likely than not, the ERP we choose will grow with us. We can easily add capabilities to it and the need to change it may never even arise.
A company accepts an order and raises an invoice on the client. The client pays by cheque and the money is deposited in our account.
What is the effort if the above common task is done using an ERP? We raise an order. The ERP system will generate the invoice. We accept the payment and the ERP system will generate the appropriate accounting entries. There is no additional effort in using the ERP system. There is, however, an additional effort in setting up the system initially. After that it is, in fact, easier, as the transaction is handled by the person creating the data.
The change is cultural. For example, instead of telling an accounts person on a phone or scribbling a note to him, the sales person has to enter the order in the system.
It is unfortunate that the word 'tiny' is in the name of TinyERP. It's code base is quite compact thanks to Python but it is a very capable application using Postgresql as the database.
Download the development version of the server and the client from http://www.tinyerp.com. Make sure that python, postgresql and a few other dependencies mentioned on the above site are resolved.
Installation is typical of python programs. Un-tar the files and run 'python setup.py install'. The current client installation complains at run time about a few missing files. The easiest solution is to copy terp.glade, pixmaps/, themes/ and icons/ from the tinyerp-client/bin to $PYTHON-HOME/site-packages/tinyerp-client.
Use a user with rights to create a postresql database. Open two terminal windows and in first run the server
and in the other, the client
The two terminal windows are useful as any diagnostic messages would be displayed on the consoles.
Create a new database. Our intention is to start with a minimal, usable set up. Choose 'Accounting Only' profile and do not load sample data. None of the sample charts of accounts included at present seem suitable for us. Hence, choose 'None'. We will need to create our own. The application will ask for the company profile to be entered.
The user interface is consistent across all modules. It isn't very obvious but it is easy to learn. It is functional but not terribly attractive. There is common tree-like menu. Selecting an option, opens a tab window with a form or a list of results as may be appropriate. To enter a new record, we click on the 'New' button. To store an entry, we click on the 'Save' button.
Even the Accounting only profile consists of much more than what
we might expect. In addition to Financial Management, Partners, HR
and Products modules are also included.
We choose Financial Management/Configuration/Accounts Definitions. A few entries, one for each major category are present. We should replace all of them with accounts which we need. You may refer to the article on GnuCash (LFY, October 2007) regarding setting up a chart of accounts.
The top level node of a chart of accounts has the code 0. There can be multiple charts of accounts in TinyERP, which can help analyse the financial data as per different needs.
Clicking on 'New' brings up a form with very few mandatory fields. We need to give the account a name. Select an account type. Deferral method tells how an account is to be treated for period closing. We can specify a numeric code and a short cut should we so choose.
For each account except the root account with code 0, we will need to specify a parent account. If multiple chart of accounts is involved, an account may have multiple parents.
We will create an account for our bank under assets. All transactions must be in a journal. We will create a journal for the bank account. Choose Financial Management/Configuration/Journal/Journal Definition. Now select the Bank Journal and modify the default debit and credit accounts to be the ones for our bank account. Since we will also be needing the sales journal, we can suitably modify the Sales Journal as well to use our accounts.
Now select Financial Management/Configuration/Periods/Fiscal Years. Click on 'New' to create a financial year. With this, the minimal settings needed for Financial Management are done.
Now choose Partners/Partners and create a new entry for our client. The only information we need to enter is the name and in Properties, the receivables/payables accounts associated with this client. If we have not created an account for the client as yet, we can do so now.
Next, we choose Products/Configuration/Product Categories. As usual, clicking on New button allows us to create a category. Let us call it Consultancy and associate income and expense accounts for this category.
Next we choose Products/Products and enter a new Product. Let's call it 'Open Source Consultancy' and it belongs to 'Consultancy' category. This is a complex form and is intended to cater to a wide range of requirements. In our case, we will ignore most of the fields except may be the Properties where we can specify the Income/Expense accounts for this product.
We create an invoice using Financial Management/Invoices/Customer Invoice. We select the Partner and click on the icon for create new entry on the Invoice Line. We select the product and enter the price we wish to charge. We click on Create button to, well, create the invoice. It will move from Draft state to Open state.
We select the line view (using the 'Other View' button) and select
this invoice. Clicking on 'Action', we can select 'Pay Invoice'. We
select the Bank Journal and accept the payment.
Simple. Once the initial set up is over, we are insulated from the accounting information.
In our use case we had talked about raising an order. The accounting only profile does not include the sales module. We can add that module or any of the number of additional modules available to increase the functionality of the application. In this article, we wanted to stay as simple as possible.
Our objective in this article was that a technical person should be able to set up and create a simple transaction in TinyERP. Before creating an invoice, the business process involved defining:
Going through these steps should help in understanding the business process and lay the foundation for the next article.
Next month, we will discuss how to program and customise TinyERP. To a computer program, it hardly matters whether we are selling a potato or a seat on a plane. However, computer application had better not look or feel the same!
Other Articles >