ZopeMag's mascot the ZOPE fish


Article Finder
People
Issue 9 - Revision 8  /   February 7, 2005 


 
  ZopeMag Links:
Latest Issue
About the Fish
Issue 10
Issue 09
Issue 08
Issue 07
Issue 06
Issue 05
Issue 04
Issue 03
Issue 02
Issue 01
 
 
Downloads
     
  Letter from the Editor:


Interviews:
Each issue we interview important people in the Zope world.

  Joel Burton

Articles:
Throughout the quarter we cover topics of interest to Zope developers, designers, and users.

  Improving WebDAV in Zope

  Profiling Zope (Part II)

  Redesigning the portal with CPSSkins and CPSPortlets

  Zope and Flash

  Localization (Part I of II)

Product Review:
Too many Products, too little time? ZopeMag keeps you up-to-date which Zope Products are worthwhile checking out.

  Corp Calender
  BastionLedger


Book Review:
Thanks to a growing subscriber base we can now offer even more to our readers. Zope and Plone Book Reviews!

  The Definitive Guide to Plone


Guides:
This quarter we bring you a new SuperGuide. Our miniGuides and SuperGuides give you the background knowledge you need to mastering Zope.

  miniGuide to writing Zope 2 Products
 
 
Downloads
     
  URLs / Download
Products we talk about in this issues Articles and Reviews

     



____
 
 
Product name BastionLedger
Description A framework for developing a Web-based accounting system, which also offers a GPL license.
Release Date 2004-10-07
Version 1.0.6 (version evaluated; BL is close to release 1.0.7/2.0.1)
Rating
(all ratings are on scale of 1-5 with 5 sushi being the best)
Usability
Software Design
Documentation
Usefulness
Categories Financial/Accounting application
Size 99 KBytes
DocFinder: 10,863 Bytes (tgz)
Requirements Zope 2.3 and up - requires BTreeFolder2
Creator(s) The Last Bastion Network
License(s) GPL
URL(s) Free to use but there may be a nominal fee to download it.
Download
Packaged as Python / Zope Product / Compressed TAR file
 
____

BastionLedger

- - - - - - - - - - - -

By Samuel Sotillo |  December 29, 2004

print

Pros
  • Supports most accounting functionalities.
  • Released under GPL.
  • Financial reporting and invoicing. Basic payroll management functionality.
Cons
  • Poor documentation.
  • No integration for Plone at the time of review.
  • Limited error handling



Introduction

BastionLedger (BL) is a Web-based accounting system. It is part of a series of products designed to integrate enterprise financial services into a single view accessible through the Web. Further, BL is one of the first Open Source products targeted to the emerging on-demand applications market.

BL was developed by The Last Bastion Network, an integration company, to compete with other similar products such as Oracle-based NetSuite and SAP-based mySAP. Like those other products, BL was initially conceived as a hosted solution — users would be able to access a Web-based accounting system customized for their company's needs. Host-based applications or, as they are called today, on-demand applications, are an emerging technology based on the ASP (Application Service Provider) model from the mid 90s. Several companies are pushing this new technology, including big names such as IBM and Oracle, and more modest ones such as the integrators Salesforce.com and Grand Central Communications. BL is one of the first Open Source accounting products offered under this emerging model.

Nonetheless, in contrast with its competitors, BL is also available under GPL so that people can use the product to set up their own in-house accounting systems or to develop their own applications.

Some BL features are (or will be):

  • A General Ledger
  • Some reporting capabilities
  • A basic inventory control system
  • Some payroll management tools
  • Shareholder management

Another type of object can be added to this list: BLOrderBook objects. Order books are used to generate forms that may be employed to initiate transactions.





Installation

BL is available for download as a at compressed TAR file . For this review we will use BL version 1.0.6 running on top of Zope 2.7.2 for Linux. (Note: BL requires BtreeFolder2 in order to handle the containment of a large number of objects.) To install the product, one must untar the package into the <:zope-home>/Products folder. Do not forget that Zope must be re-started to complete the installation.

Once Zope has been re-started, one must check Control Panel->:Products in the ZMI, to verify that BL is working appropriately.

There is another way to verify that BL has been installed correctly. From the root folder, expand the pull-down menu (or Zope Product Add list) and check if a new object named Ledger has been added. If so, everything is OK.

Some documentation is available in HTML format, though it is mostly introductory. (There is a User Manual as well as a User Guide for the sister-application BastionBanking.)

(Recently, The Last Bastion released BL as RPM packages. For those interested in using Linux the RPM packages are available here. There is a nominal fee for accessing this version of the distribution.)


Getting started: myCompany Inc.

To test BL let's use an imaginary company named: myCompany Inc. Let's assume that it is a small business whose primary purpose is to sell hand-made Christmas cards.

First we need to create a folder named myCompany. Once this has been done we are ready to create our ledger. From within the folder myCompany, select a new Ledger object from the pull-down Add list. Figure 1 shows the Add Ledger view.



fig. 1
Figure 1

There are three parameters to define, as shown in Figure 1. The first one is the very common Id used by most Zope objects. We used accounting as our value for Id.

The next parameter is Locale. According to BL's sparse documentation, this parameter is used to separate different customized data components. For instance, a locale may consist of a particular “chart of accounts, a ledger report format, or even a table of tax rates” that belongs to a particular legal/accounting “jurisdiction.” By default, BL uses a basic template and subsequent instances of the ledger may be synchronized with a particular locale — a common chart of accounts and so on. Unfortunately, as already mentioned, the documentation is very poor in its explanation of the details of how to do such synchronization, so we will use the default locale for our review.

The last parameter (Currency) refers to the currency that will be used for all transactions processed by the accounting system. As shown in Figure 1, BL offers a long list of currencies to choose from, but the user is only allowed to choose one — we will use US Dollars (USD) for the sake of simplicity.

Figure 2 depicts our ledger before it has been set up.

fig. 2
Figure 2

BL is a relatively complex application — it would be impossible to describe all of BL's capabilities in the space of a product review. Sometime in the future, ZopeMag will offer a more detailed article on this interesting product. For now, we will review some of the most interesting capabilities of BL without going too deeply into the details.

Setting up our Company's identity

All new ledgers include several default objects — all of them based on default templates. Figure 2 shows the following list of objects (with some changes):

  • A General Ledger that contains the chart of accounts
  • A sample payroll object — which represents an anonymous employee
  • An inventory object for one type of product: Christmas Cards
  • Two subsidiary ledgers created to manage two special accounts (see sidebar): account receivables (Customer) and account payables (Supplier/Vendor)
  • A shareholder object
  • An order book for cash-only orders

Following the documentation, the next step should be to enter the Company's identity information. Figure 3 shows how to do it. (Of course, all data is fictitious.)

fig. 2
Figure 3

In addition to self-explanatory data such as title, address, incorporation date, or the names of the directors and the secretary, our Company's identity includes an ID number and a tax identification number. Because this product has been designed as a hosted solution, the company's ID number is used to differentiate this particular instance of the ledger from other instances belonging to other companies.

Users and security

BL instances use the underlying Zope user management mechanism through an acl_users folder. However, BL extends the basic Zope permissions to include the following:

  • Add BastionLedger objects:allows a user (with a certain role) to create new ledgers
  • Delete objects:allows a user (with a certain role) to delete BL objects
  • Manage BastionLedgers:allows a user (with a certain role) to change the configuration of the ledgers
  • Operate BastionLedgers:allows a user (with a certain role) limited access to certain users such as clerical staff.
  • View management screens:allows a user (with a certain role) access to the Management API

For example, administrators can define a new role, say bl_clerk, and then assign it the permissions they want to give users with this role. By this means, administrators are able to define several layers of security using a specific set of roles and permissions.

Additionally, new users can be created at the time certain kinds of accounts are created — for instance, employees and shareholders.

Setting-up the Ledger

The Ledger is the most important part of any accounting system. It keeps information about all existing accounts and their relationship to each other. To use our ledger we must click on the Ledger object link. Figure 4 shows the content of this object.

fig. 3
Figure 4

As mentioned above , the Ledger contains the chart of accounts (see Table 1 for a partial list of BL's default chart of accounts). By default, clicking on the Ledger object link takes us to the Ledger's properties view. Figure 4 shows this view. Basically, a ledger may have a name, some information about the next account and transaction numbers available, a list of possible currencies that can be assigned to the ledger, and an email address for “correspondence.” Note that the ledger may use multiple currencies — we have assigned US and Canadian dollars as an example. It is important to differentiate between BL the product and its ledgers as described in this section. BL, as defined above (“Setting up our Company's Identity”), does not support multiple currencies — this means that all balances will be computed in a single currency, the one chosen at the time we define our company's identity. However, this restriction is of limited importance now as future versions of BL will offer full multi-currency functionality.

Account Number Description Account Type Account Sub-type
A1060 Checking Account Asset Current Assets
A1065 Petty Cash Asset Current Assets
A1205 Account Receivables AssetCurrent Assets
A1520 Inventory / Trading Stock Asset Inventory Asset
A1840 Vehicle Asset Capital Expenditure
A2100 Account Payables Liability Current Liability
A2155 TaxLiability Liability Current Liability
A4020 Sales Income Sales Revenues
A4440 Interest Income Other Revenues
A5410 Wages & Salaries Expense Payroll Expenses
A5810 Exchange Losses Expense Trading Expenses

Going back to the chart of accounts, BL uses a default list of accounts — see Table above. Accounts are identified by an account number or code. According to the documentation these codes are generated by concatenating the letter A (for “Account”) and an integer. Figure 5 shows our chart of accounts as rendered by the Accounts view.

fig. 5
Figure 5

Transaction numbers are generated the same way, with the letter T (Transaction) instead of A at the beginning.

Inventories

Inventories are assumed to have a simple hierarchical structure. Stocks or parts are kept in BLParts objects. Figure 6 shows the form used to create a BLPart for an object named parents_cards (i.e. Christmas cards for parents). Basically, the inventory entry includes information about the type of unit used to quantify parts (pounds, units, kilograms, etc.), the weight (if any, for shipping purposes), the number of units on-hand, and a list of prices that reflect the company's price rules or policies (see sidebar).

fig. 3
Figure 6

Every item (stock) in the Inventory must be associated with a series of accounts in the General Ledger so that transactions can update all necessary records when they are committed. The last three parameters point to such accounts.

Orders and transactions

When an order is entered into BL, a transaction is initiated that affects the order's underlying account — for instance, either account payables or account receivables. In order to use this mechanism, debtor and creditor () accounts must be created through the BLOrderBooks object. Figure 7 shows how to create an order account for a fictitious company (All-Fictitious Corporation). This order account belongs to one of the default subsidiary ledgers: account receivables.

fig.4
Figure 7

As can be seen in Figure 7, the All-Fictitious Corporation's order account includes tombstone information (company name, address, contact info, tax info, discount rate, credit limit, etc.) in the Details view. Other views allow for statement generation and the setting-up of price policies, as well as the defining of observable events.

Observable eventsare actions or processes that can be pre-scheduled or which can trigger other processes or events. These events may be triggered whenever an entry is made into the account — whenever they are added (onAdd events) or deleted (onDelete events).

For example, let's enter a new order from us for fifty (50) Sibling Cards by All-Fictitious Corp. First we add a new BLOrder as shown in Figure 8.

fig.4
Figure 8

The new BLOrder has no items yet. To add items, we must click on the BLOrderItem button. Figure 9 shows the resulting Add Order Item form. From the pull-down list we select “siblings_cards - Siblings Cards.” As we said above, we want to sell fifty (50) cards of this type. (Note: we defined this type of card in addition to the “Parents Cards” shown above in the section “Inventories”. )

fig.4
Figure 9

Figure 10 shows the resulting invoice. As shown, BL calculates the gross amount after the preset discount is applied.

fig.10
Figure 10

Transactions can be defined for any BL account — for instance, journal transactions for the Petty Cash account. Most objects have a special tab view that allows the user to define transactions for it. Basically, transactions are containers for BL entries. Figure 10b shows how to add a new BLEntry that debits the utility bill amount from the company's checking account.

fig.10b
Figure 10b

By the way, as should be expected, transactions can contain more than one entry. Transactions cannot be completed until they balance — i.e., all accounts involved must balance. However, there is no information about what happens when there is an open transaction at the end of the fiscal year.

Payroll

Development of the payroll system is still in progress. Basic employee information such as contact information and pay-stub information are accessible to every employee with a personal user account. From this point of access employees can create personalized time-sheets and view past pay-stubs. Figure 11 illustrates how to create a new employee account.

fig.11
Figure 11

Unfortunately, this component still has a lot of flaws. While testing, I found several bugs in some of the main page templates, as well as problems with some form processing routines in different scripts.

Shareholders

The Shareholder component allows the user to keep some basic information about the company's owners — their capital accounts. Figure 12 shows information about a sample shareholder (Bill Gastes).

fig.12
Figure 12

In addition to the shareholder accounts, BL allows the creation of share definitions containing face value, allocation, and issue date.

Things to come

BL is evolving. The Last Bastion Network is working hard to integrate this product into Plone. According to them, Plone skins are being developed to facilitate usage and to make BL more appealing. Also, much of BL functionality is being translated into Plone's workflows — for instance, future BL releases will use workflows to deal with accounts, transactions, orders and so on. In addition, a new payment management system will allow BL to handle PayPal transactions — currently, BL offers some basic payment functionality when it is used in conjunction with another Last Bastion project, BastionBanking.

Unfortunately, all this new functionality was not available at the time of this review.

Conclusions

BastionLedger is a framework suited for developing Web-based accounting systems targeted to CPA firms and other small and medium-size businesses. It was initially offered as a hosted, on-demand solution but because of its GPL license, it may be customized as an on-site application or integrated into other products. Unfortunately, BL is lacking proper documentation. The available documentation is poor and limited in scope — focussing mainly on the API. Further, the source-code is buggy and there is almost no error-handling — beyond the basic one provided by Zope.

Despite its deficiencies, BL is a very interesting project with a lot of potentiality in an emerging market — on-demand applications. According to Allan Milligan, lead developer of The Last Bastion Network, BL is a challenging project with significant “demands.” For that reason, they are requesting increased support from the Zope/Plone community in order to develop a robust application good enough to compete with the likes of Oracle's NetSuite, SAP's mySAP, and even Open Source Java-based Compiere ERP.

Product Review End.


Samuel Sotillo:

Samuel Sotillo is a free-lance writer from Venezuela. His interests are: Zope, transactional systems, Python, PostgreSQL, MySQL, Web services, and Latin-American literature and history.


shim
shim  ZopeMag is committed to bringing you the best in Zope Documentation. shim
shim


Home   Subscribe   FAQ   Contact   Write for us   Privacy Policy   Weekly News   PyZine   opensourcexperts.com  

Reproduction of material from any of ZopeMag's pages without prior written permission is strictly prohibited. Copyright 2003 - 2005 ZopeMag Zope/Plone hosting by Nidelven IT