Official blog official blog

Friday, June 28, 2013

Sample exercise 02

Here's another sample exercise that explains how to use We'll use the example provided by prof. Joost Impink at (on the site you'll find more accurate explaination than here), that kindly autorized us to do so.

Just to show something different, this time we will create a firm from scratch, so we'll have an empty chart of accounts.

Transaction 1
The firm is incorporated on the 1st of January. The owner, Betty, pays 40,000 cash for 10,000 shares.

Since we do not have any account yet, we can create a new journal post and put an exclamation mark after the name of the account (e.g. "Cash!").

Transaction 2
ABCD Inc. buys a Grasshopper lawn mower for 8,000 cash.

Since the account "Cash" has already been created, we won't need to add an exclamation mark for it. When typing the first few letters of the name of the account, we'll have a list of accounts matching the name. Don't care about the code, for now.

Transaction 3
ABCD Inc. pays 500 cash for advertising in the local newspaper.

Transaction 4
ABCD Inc. receives 3,000 cash for services delivered in January.

Transaction 5
ABCD joins the Association of Landscapers, and receives an invoice of 400 to be payable in February.

This time, the account Operating expenses already exists, and will show up when you type its name.

Transaction 6
The company pays a 1,000 cash dividend.

After recording the above transactions, your journal will look like this:

The little bells are there to warn you that the accounts have not been yet correctly positioned in the chart of accounts. The same goes for the trial balance:

Notice that the codes are generated randomly, and have a ~ sign at the beginning. This goes for all accounts created with the exclamation mark trick.

If you look at the chart of accounts now, you'll find that there is actually no position and no ordinary outstanding balance set for any of the accounts:

We can easily fix that. Not only we want to correctly position the accounts, we also want to group them in clever ways.

We can start from creating a new account, named Assets, that will group together some of the accounts (Cash, Equipment, etc.). Let's give this account a "01" code, a name, and choose the right position and ordinary outstanding balance (the latter is used for some checks, warning if you make mistakes):

Then, we want to "move" the Cash account under the Assets account. It's as easy as changing the Cash account's code to "01.01". The dot here stays for a parent-child relationship between accounts. You can do something similar with the Equipment account (say you give it a "01.02" code).

The same goes for Liabilities, that will contain Accounts payable, and Equity, that will contain Dividends and Paid-in capital.

You can group together also accounts that express expenses and revenues, and you have multilevel groups. At the end of the process, you could arrive to something similar to this:

The "position" means that the net amount of the account will be shown up in the Balance Sheet (BS) or in the Income Statement.

Actually, we can already see how these two statements look like so far:

You can find the complete exercise in its public page, and you can fork the firm by using the slug "sample-exercise-02".

Thursday, June 20, 2013

Sample exercise 01

We introduce here some simple examples of business transaction and how they are recorded using's bookkeeping system. This is just a sort of "proof of concept", and we'll use it also as a way to show some screenshots in the right context. Other exercises, probably more complex than this one, can be prepared, and other firms can be shared.

October, 1st.

Joanna sets up an individual business (she will repair children toys). She opens a bank account for her firm, with a first $3,000 deposit.

Here's how the journal entry would like:

October, 2nd.

Joanna needs some cash to buy some tools she'll need. She goes to the bank and withdraws $200 from her bank account. Afterwards, she goes to a hardware shop to buy the tools, paying them $155.

There are going to be other two journal entries. If you look at the journal now, you would find something like:

If you want to see which accounts have been debited and credited so far, you can have a look at the trial balance:

October 10th.

Joanna repairs a wooden horse. The amount to receive for the job done is $140, but she agrees with Tom, the owner of the horse, to be paid half in cash now and half by a bank transfer after a week.

When Joanna records the income, she enters a debit of the Cash account for $70, and a debit of a new "Tom" account, that will be put under "Accounts receivable" in the Charts of Accounts (this can be done later).

The account "Services Provided" will be credited for the total amount, $140.

October 14th.

Joanna deposits in her bank account all the cash she has.

Let's now check the ledger of the Cash account. We will see all the transactions concerning it.

October 21st.

Joanna receives the payment for the wooden horse repair from Tom.

October 22nd.

Joanna pays an insurance premium of $80 with a bank transfer, for which she is debited $1 from the bank.

The fiscal year / reporting period is not finished yet, but we can have a look at the balance sheet and at the income statement so far.

You may notice that the grandtotal for Assets is $59 greater than the one for Liabilities and Equity. And $59 is exactly the Operating Profit so far.

If we were to prepare the final statements now, without any other transaction, we would need a closing post for all temporary (economic) accounts, and we would get this new Liabilities and Equity section of the Financial Statement.

You can have a look at the Journal and at the Statements on the public page of Sample Exercise 01.

You can login and fork the firm by using the slug «sample-exercise-01».

Sunday, June 16, 2013

DELT's database

Different kinds of databases are supported, since DELT is based on PDO, which is a DBMS abstraction layer. That said, I only used MySQL for my tests, so there could be problems I am not aware of if you use something else.

To setup the database, you can use the file protected/data/schema.mysql.sql, through the interface you like best (command line, phpMyAdmin, whatever...). The file contains the instructions to create the needed tables, and to insert a user, name 'admin' and password 'admin' in the users table.

Also, you should copy the files protected/config/main.php-dist and protected/config/console.php-dist to protected/config/main.php and protected/config/console.php, respectively.
In the file protected/config/main.php you will find the following lines:

  'connectionString' => 'mysql:host=localhost;dbname=delt',
  'emulatePrepare' => true,
  'username' => 'delt',
  'password' => 'secretpassword',
  'charset' => 'utf8',
  'tablePrefix' => 'tbl_',

Edit the connection string, the username, the password and, if needed, the tablePrefix.

Friday, June 14, 2013

Internationalized names of accounts

Just noticed that the interface for giving names to the accounts is was not clear enough. We will work on that, and fix the problem.

An account may have names in different languages, but you must write the names just after the appropriate locale string, like in the following example:

en_US: Depreciation of Buildings
it_IT: Ammortamento fabbricati

You shouldn't remove the locale, but, of course, you are not enforced to write the names in all the languages.

What does it happen if the firm's language is set to, say, English, and there's no name in English for an account? Well, another language is chosen, but an asterisk is added.

What if no name is provided? Well, only the asterisk comes up, like here:

Please be patient, a fix is coming soon...
The bug has been fixed in version 1.0.5. Now the names are correctly checked on saving.

About DELT's development and installation

DELT is developed in PHP, by using the framework Yii and trying to follow the best practices, like MVC architectural pattern, use of ORM tools, RERO (release eary, release often), DRY (don't repeat yourself), etc.

It's still missing many things (most notably, comments in the source code and automated tests), and there is a list of ideas for further development.

If you want to install DELT on your host, you should first install Yii, and then download DELT or, even better, pull or fork the whole project from github.

If you are a developer and you know Yii, you can send patches or comments. One of the aim of the project is to use the sources to show students how to write a web-based application, by providing a sort of real-life example.

If you are not a developer, you can still help in improving the software. For instance, since Yii is fully internationalized, you could provide a version in your language of a file with all the user interface's texts, which would look more or less like this (in Italian).

In case of problems during installation and setup, just write a comment here or contact us through the form.

Thursday, June 13, 2013

A short introduction to DELT and

The website is based on DELT (Double Entry Learning Tool), which is available as free software at github, released under the terms of GNU Affero General Public License. In short, that means you are absolutely free to get the software and install it on your machine, improve it and release your improvements, provided that they retain the same license. But, since DELT is a web application installed on the website, you do not need to download and install anything, because you can use the application as it is offered online. is different from other accounting tools that you may have tried. Its aim is to offer students a way of practicing double entry bookkeeping / accounting principles without the complexity of a software that is normally used in a firm, but in an easier way than it would be by using spreadsheets or, worse, pen and paper.

For instance, in many accounting professional applications:
  • you cannot easily add an account in the chart of accounts while you are preparing a journal entry;
  • you must fill lots of information about documents (like invoice numbers and dates, customers and suppliers codes, tax-related details, etc.) when entering something in the journal;
  • you cannot see how the statements would look like at a certain moment in time, without actually performing some closing activities;
  • you cannot edit journal entries that are already recorded and confirmed.
All of the above limits make sense in a professional application, where these things are a requirement, but if you are a student and just want to practice, they represent quite a waste of time.

Another point is that on firms are public and can be shared amongst users. This opens up some possibilities described in the following scenarios:
  1. when students work in pairs or in groups, they can complete an exercise together, working on the same firm, but with different accounts; if one of them the next day is not present, the others can continue with no problems;
  2. when a student finishes an exercise and wants his/her teacher to check it, he/she can just send an email with the public link to the firm, that the teacher can access without even logging in;
  3. if you are a teacher and want to prepare an exercise, you can do so easily: you just create a new firm, make some editing to the chart of accounts, add some journal entries, and give your students the slug of the firm; the students will start a new firm by forking (i.e. copying) the one that you created, and that's it;
  4. if you created a firm that is a good example of a basic standard firm for the students in your country, you can ask for it being considered as a system firm (use the contact form for that).
All firms are considered public, in the sense that they are viewable and forkable by everybody, as long as they know the slug (and as you might have already noticed, the contents of the firm, like the chart of accounts, and the journal posts, are shared with a creative commons license). The firms are not listed on a web page, or indexed by search engines, and this permits some privacy, if the slug is set to a random 32 character string.

Some other information that can be useful, while waiting for online help:
  • when registering, you are sent a confirmation email -- it sometimes happens that the email message ends up in the spam folder of your email program, so please check there too;
  • every user can create a maximum of ten firms (but can ask for more, if necessary); 
  • the language of the interface can be, at the moment, in English or Italian, and you can choose in your profile which language to use (the application is fully internationalized, and so it is relatively easy to add support for other languages, so please get in touch if you are interested in helping in this); 
  • one can set a language for the firm he/she is managing, that can be different from the language of the interface -- this allows to have the chart of accounts in English and the interface in Italian, for instance; 
  • the chart of accounts allows for names in different languages (and this could be useful for students to familiarize with international terminology); 
  • when you create a new empty firm you do not have a chart of accounts, and that may be not very comfortable for a beginner -- a better idea would be to start by forking an existing standard firm; 
  • if you realize that an account is needed when you are in the middle of a journal entry editing, you can create it on the fly by adding an exclamation mark in the name (and you'll decide later where to put it in the chart of accounts) -- or you can open the chart of accounts in a different page / tab of your browser, of course; 
  • if you want to close an account (setting its balance to zero, like when you are paying a debt), you can just write a question mark in the amount field; 
  • if your journal entry is long, with many accounts (like in some textbook exercises, such as when you are entering the opening post of the year), you can use the raw mode (copy and paste data to a spreadsheet, edit data there, and copy and past data back in the application); 
  • you can backup the data of your firm in a file, for a later possible restore, and you can export the current balance in a CSV file.

added links to other posts;
changed reference to VAT (Value Added Tax) to a more general "tax-related"
changed "journal posts" to "journal entries"

Tuesday, June 11, 2013

Aggiunta la generazione automatica dello slug

È stata aggiunta la generazione automatica dello slug per le aziende.

Facendo clic su "rigenera" lo slug viene creato con una funzione che parte dal nome dell'azienda, sostituisce le lettere che contengono segni diacritici con le corrispondenti lettere base, rende tutte le lettere minuscole, sostituisce spazi con trattini, ecc.

Facendo clic su "rendi casuale" lo slug viene generato come sequenza di 32 caratteri alfanumerici casuali. Questo rende l'azienda un po' più privata, nel senso che solo conoscendo lo slug se ne possono leggere i contenuti, la si può duplicare, ecc.

Saturday, June 8, 2013

Condivisione aziende tra utenti

È ora possibile condividere una propria azienda con altri utenti, consentendo loro una piena amministrazione. Non sono previsti livelli di accesso differenziati. Tutti gli utenti che lavorano su un'azienda condivisa possono fare tutte le operazioni su quell'azienda, compresa l'ulteriore condivisione.

Per la condivisione, è sufficiente accedere alla voce "Condividi" nel menù "Azienda"

e inserire il nome utente della persona con cui la si vuole condividere. La condivisione sarà attiva dal momento in cui la persona invitata la accetterà.

A che cosa serve la condivisione? Semplicemente, spesso capita che gli allievi di una classe lavorino a coppie. Se un giorno uno dei due allievi manca, l'altro non potrebbe proseguire l'esercizio a meno che non conosca la password del compagno. Con la condivisione, invece, i due allievi mantengono credenziali d'accesso diverse, ma possono lavorare separatamente.

Per ora non è previsto un annullamento della condivisione.

Thursday, June 6, 2013

Nuova pagina avvio duplicazione

La pagina per la scelta dell'azienda da duplicare di è stata leggermente modificata. Ora:
  • compaiono anche le descrizioni delle aziende duplicabili
  • è presente una casella di testo dove inserire lo slug di un'azienda
schermata duplicazione azienda

Ricordo che le aziende sono (a meno che non vengano cancellate o sospese) tutte visibili e duplicabili, a patto di conoscerne lo slug. Quelle che compaiono nell'elenco sono quelle "di sistema", ossia messe a disposizione direttamente dai gestori del sito. In effetti, l'aggettivo "pubbliche" non rende bene l'idea, e quindi accetto suggerimenti su quale altra espressione potrebbe essere utilizzata.

L'aggiunta della casella di testo fa sì che una persona possa creare un'azienda e comunicare, via email, scrivendolo alla lavagna, o in qualsiasi altro modo, lo slug dell'azienda, per far sì che altri possano duplicarla.