Global View

Siwapp is structured into this major sections

* Dashboard * Searching * Invoices * Recurring Invoices * Estimates * Application Configuration

Dashboard

The Dashboard is the place where you start navigating when you log into the app.

It is not very clear what will be the content or information in here but it must be a descriptive summary of the global balance of invoicing (paid, overdued...). In the future there could be a graph or something else.

Searching

Searching is present all over the app. You can search by keywords, tags and issue date. When user introduces text in the search textbox and submits the form the system must divide that text into keywords and search for it in some relevant database fields:

* Customer name * Invoice series + Invoice number * Contact person * Customer legal Id * Tags * ...

Optionally, user can specify tags visually from a tag cloud that appears under the search bar as needed. Tags are represented as two-state selectable tags. When you select a tag it changes its appearance to represent the "selected status" and, internally, its value is added to a hidden variable that will be sent to the server as part of the search values.

A date range can be set to limit the search results in time (issue date).

Search results can be invoices, recurring invoices and estimates (if implemented). Results are organized as independent listings at the same page with only one pagination system (or three using AJAX, it must be decided).

Invoices

An invoice belongs to a series and has an invoice number of that series. For example, an invoice can have a number value of 2 as it could be another invoice with the same number belonging to a different series (MH-HAV-2 is different from MH-NET-2). Invoices have an associated status.

There is no contact information stored in the database, but invoice editing has autocompletion capabilities. That functionality is achieved thanks to the information stored at the invoice and invoice item tables. When user introduces text into the customer textbox the system searches at the invoice table and if she previously made another invoice to a customer whose name agrees the text she introduced she will be able to select it and the other fields will be filled magically. The same could be applied for invoice items lines.

Invoices can also be tagged.

Recurring Invoices

Recurring invoices are templates for invoices that a user must create periodically. The system checks at a predefined time for recurring invoices that must be generated and creates that ones that fulfill the requirements for being instantiated. A recurring invoice is associated with a cron like job object. See model for details.

Estimates

Not yet.

Application configuration

User can configure some application parameters through properties. Parameters are not really defined yet but you can see properties explanation here? and here?.