This document describes the requirements for a simple billing management web application. These requirements and this application serve two purposes:

  1. provide simple customer billing system for OQube company using non-standard and open-source software (ledger, latex)
  2. compare different web application development frameworks and technologies on this simple example

For goal n.2, it is expected that these requirements are simple enough to be implemented without requiring much efforts yet complete enough to exercise various parts of a WADF:

Base requirements and functionality

General requirements

The application billing is to be used by SOHO that provides service for various customers, each customer being served for one or several different projects. Billable items for each project are recorded at random times and bills are issued either periodically (eg. monthly, quarterly) or at any other appropriate time, when the user sees fit.

The status of each project and each customer can be viewed with basic informations (name, contact info, locations...) updated easily. This status report should include:

Once issued, a bill may not be further modified but it should be possible to register and issue avoirs.

The application shall start with a global status page with summary for each customer of billed/billable items.

Projects and customers shall not be deleted if bills (resp. bills and projects) exists in the db for these projects/customers.

When a bill is issued, this generates proper transactions into the ledger system and produces a latex then PDF file that is sent to the client. The latex source is saved on the server's filesystem.

Technical requirements

The application should be usable from any modern web browser (firefox 1.X and IE6+) and behind the most strict firewalls (ie. no applets, no activeX) and under the lightest platform requirements (ie. no javascript, no platform specific feature). The server part shall be accessed through an Apache 2 httpd server front-end on the same or different host. Authentication is not to be handled by the application, but is handled at the web server level. The chosen platform is linux (specifically ubuntu dapper drake).

Transactions read or issued are expected to use the ledger flat-file format and application. Alternatively, ledger can produce XML format which can be used by the application in read-only mode. Other long-term storage should be done in XML format using plain files or XML native DB server.

For the sake of simplicity, the application may assume access to some underlying structured storage and provide a SPI in application's language to be implemented for specific context of execution. This means that data access details are abstracted away as method calls providing specific objects or data-structures in native language of applications.

Apart from the above, there are no requirements on the language/framework/system used. The application must of course run on the expected platform. Of course, all necessary applications or libraries must be open-source products.

The application may be used by several simultaneous users and access to backend should be properly secured (ie. using transactions, locking...). The application should respond reasonably fast, although no precise requirements are expected at this stage.

Detailed specifications

Data

Domain model

The domain model is made of the following classes[1]:

Parameters

Various parameters may be set to customize the behavior of the application.

  1. customize the (latex) format for outputting bill. This allows setting headers and footers that enclose the issued bill. These headers may contain references to the model's variables in the forme bill.account.contact.name for example. These variables will be filtered during bill generation
  2. customize ledger's layout

Behavior

Use cases are mostly standard CRUD operations on various parts of the model.

Account

Project

Basic crud operations:

Contact

Item

Creation of an item entails creation of a ledger entry after validation. This entry is modified upon update validation.

Bill

Currency

Basic crud operation. Deletion is forbidden if currency is in use by some item or some account. Base of currency may be either another existing currency or itself.

Footnotes: [1] Although this model is expressed in terms of classes and methods,

this by no means implies that the application should be made using object-oriented languages, frameworks or models.

© 2006-2007 OQube  | Dernière publication: 29-01-2007