Trace: • Invoice Application
Table of Contents
This is an old revision of the document!
Version: 5.0 / 2018-04-12
Introduction
The objective of this tutorial is the creation of an invoice application with VisionX. It is assumed that a VisionX Project is already available. If you haven't created an application yet refer to the VisionX documentation "First Application" where the creation is described in detail.
Creating a Work Screen
First we need to create a WorkScreen in VisionX. Press the “New Screen” Button (1) fill in a Name and click “Next” (2).
In the following wizard select “Application screen with one Grid and Detail Form” and press “Next”.
In the next step, we go with the third option and define the information we want to manage ourselfs.
In this wizard we create the table for our invoices. For this we create three columns. One to store the invoice number, one with our invoice date and one column when the payment is due.
After pressing “Next” we are prompted to choose the detailed layout options for our screen. We are going with a form column count of one and leave everything else as it is and click “Finish”.
We are now greeted with our application screen.
Finishing the Data Model
For this invoicing application we are going to create the following data model:
Add customers (Combobox)
The data model for our invoice application is not done yet. To send out our invoices we need a table to store our Customers in. For this purpose we are going to create our table from .csv Data. In the bottom middle part of VisionX press “NEW table” (1) and choose the first option to “Take data from a Spreadsheet” (2). Press “Next” (3) to continue.
In this screen we paste the following string of data to create the table and press “Next”. This list could be copied from an existing customer list as well.
"Name,"Address","ZIP Code","City","Country","Website" "SIB Visions GmbH,"Wehlistr. 29 Stiege 1 / 2 .Stk","1200","Vienna","Austria","www.sibvisions.com" "Imaginative,"Paulastreet 443","1200","Vienna","Austria","imaginative.com" "Skyndu,"Straubel Road 31","1160","Vienna","Austria","skyndu.at" "Yakijo," 311 Starling Way","WC2N 5DU","London","Great Britian","yakijo.com" "PicForce,"Powderstreet 441","75000","Paris","France","picforce.org" "Hipstorm,"Monterey Road 611","60434","Noailles","France","hipstorm.com" "UStars,"Howlingstreet 541","75015","Paris","France","ustars-comp.org" "Shufflebeat,"Becker Way 2","5602","Arcangel","Philippines","shufflebeat.com" "Avamba,"Oneill Hill 2","8608","Santiago","Philippines","avamba.ph" "Rhyzio,"Manitowish Alley 441","368324","Ulluaya","Russia","rhyzio.com" "Browsetype,"Peter Road 12","1130","Vienna","Austria","browsetype.at" "Eazzy,"Landstr. 12","1010","Vienna","Austria","eazzy.at" "Izio,"Buhler Terrace 81","WC2N 5DU","London","Great Britain","izio.com" "Trilia,"Mesta Hill 321","75000","Paris","France","trilia.co.uk"
In the “Options” group of this screen we select “First row contains labels” and choose “,” as the delimiter for our data.
For the last step we just change the “Table name” and leave everything else as it is. After pressing “Finish” our customer table is created and already has some data in it.
Our data model is not quite finished yet as we still need to create a reference of our customers in the invoice table. To do this we are going to edit (1) the table. In this screen we once again press the “More…” button to reveal additional options. Press the “Database changes” button (2) add a new Column (3) and select “Make Combobox”. This time we select the customer table (4) and press “Finish”.
Add Articles
Every invoice needs articles/items so as the next step we are going to create a table to store our articles in. We once again create a new table and same as in the invoice table we created before we are going to define the information ourselfs. Our article table consists of a name, a description and a the rate of our article.
Add Items (Master-Detail)
The last table we are going to create is the invoice item table. This table consists of a reference to the article table, a quanitity and an amount(rate * quantity). For this we are going to create a subtable in our invoice table. This way the database already knows which invoice items are related to which invoices. To do this we press the “Edit” button on the invoice table.
In the following wizard we press the “More…” button. Press on “Database changes” and add a new column to the table. Now we press the “Make Subtable” button above the table.
We name our table “Invoice Items” and add the columns quantity and amount and a reference to the article table. Press Finish to create the subtable and therefore our data model.
Layouting the Invoice Screen
Change Table
Up next is the layouting of our application. The created screen is a good start but we need to change a few things to make it a proper invoicing application. First off we are going to change the columns shown in the left side table. For this we press the “Edit” button (1) on the table. Here we tick off the columns (2) we don't want to be shown, in this case invoice date and due date, in this table we also change the label of the columns. We also turn off the navigation (3) in this table as we are going to do this via buttons. We change the margins (4) for our table to make it look nicer and with this are done editing the table.
The table still needs a search bar and buttons for adding and deleting a new invoice. Add a panel (1) on the north side of our table. In this panel we are goint to add the search bar (2) and an “Insert” and a “Delete” button from the “Web Elements”(3).
After changing the labels of our buttons this is what the screen should look by now.
Add invoice items
To layout the form we are going to add the customer selection on top. Just take the “Customer” (1) editor from the “Unused Editors” section and drag it into the screen (2). We also add a label (3) in front of the editor.
To add items to our invoice we are not going to use a standard table but a special “Component Table”. This kind of table is typically used in web applications. To add this control we select “Data Links” (1) in the left sidebar of VisionX. Now we drag the “Component Table” (2) directly under our form (3).
This control is built in a way, that everything you put into it is copied for each row in a table. For instance if we add the editors of our invoice items table into the “Component Table” the editors are “cloned” for every item in our invoice. That means we are going to select our invoice item table (1) in the bottom of VisionX. We are adding the following editors: “Name”, “Quantity”, “Rate” and “Amount” (2) in this order into the control (3). Next to the editors we add a “Delete” button from the “Web Elements”(4) to delete the specifc item.
After this step the screen should look like this in the designer:
We dont want the labels for our columns cloned so we add those outside and on top of our table in their own panel. As the last thing we are going to add a button next to the item column to add a new article to the article table and a button under the “Component Table” to add a new invoice item. When everything is set into place this is how our screen should look in the editor by now.
Adding the Functionality
We added all those buttons in the preceding steps and now we are going to add some functionality to them.
Adding/Deleting Invoices
The “Insert” and the “Delete” button from our “Web Elements” already have all the required actions to add and delete a new invoice so we dont have to change anything here.
Adding/Deleting Invoice Items
Next up we are going to edit the actions for the “Add new item” and “Delete” buttons for the invoice item table in the “Component Table”.
Action for the Add new item-Button:
The “Delete” button we added once again already has all the required actions to delete an invoice item so nothing to do here.
Adding Articles (Master Data/Popup)
The last button on our list is the “Add Article” button. This button will be used to add articles to our database which can be chosen as the items for our invoice. For this we are going to create a popup screen. Press the “New Screen” Button to create a new workscreen. In the second part of the wizard we chose “Application screen as Form” now though. As the data source we choose “Use existing data from database tables” select “Use Application Database User” in the next step and select our article table in the second to last step. In the layout options we choose a “Form” column count of one and press “Finish” to create the screen. If everything was done correctly we are greeted with this screen:
In this screen we add a “Save” and a “Cancel” button and change up the layout and size a bit.
To make our screen open as a popup select the screen and press its edit button (1). Tick “Show as Popup” (2) and we are done.
To give this screen its desired functionality we have to add actions to our buttons.
Action for the Save-Button:
Action for the Cancel-Button:
To incorporate this popup to our invoice screen we are going to edit the action of our “+” button next to the item column.
Styling the Application
Changing the Application Style
Without any additional styling done this is what the application looks right now in the web preview.
Not the prettiest application yet but with a few tweaks we can change that pretty fast. As the first step lets change the display mode and theme for our web application. For this we select the Dropdown next to “Settings” in the right VisionX Toolbar and press “Web” (1).
In the following wizard change the “Display mode” to “Corporation” (1) and the “Theme” to “Valo” (2).
This is how our Screen looks with the Valo-Theme now:
Changing the Invoice Screen
As the next step we are going to style our buttons. Starting off with the “Insert” and “Delete” buttons above our invoice table. To do that we press the “Edit” button (1) on our button and set the foreground color to white (2) and the background color to a nice blue (2) for the “Add” button and red for the “Delete” button. Additionally we are going to turn off the border of our button (3). We're also going to change the text from “Insert” to “Add”
The “Add Article” and “Add new item” buttons are getting a new style as well. Press the “Edit” button (1), uncheck “Show border” (2) and check “Border on Mouseover” (2). Additionally we set the foreground color to the same color of our “Add” button (3) and the background to transparent (3).
Now we style the “Delete” button of the component table. We remove the text altogether (1) and set the foreground to the same red we used at the “Delete” Button (2). Uncheck “Show border” (2) and check “Border on Mouseover” (2) and as the last step select the “minus-circle” icon with a size of 24 for this button (3).
The last button we are going to style is the “+” button of the component table. We remove the text altogether (1) and set the foreground to the same blue we used at the “Add” Button (2). Uncheck “Show border” (2) and check “Border on Mouseover” (2) and as the last step select the “plus-circle” icon with a size of 24 for this button (3).
To make the component table look like a real table we have to line up the labels with the editors. To do that you select the label in the editor and set the anchors to your desired positions. In the “Edit” menu of the labels we set them to bold as well. Next up we are going to add a title to the right side of the screen. To do that we change the type of our panel in its “Edit” menu. To do that we select the left side icon under the “Margins” of the panel. After that we add a label “Edit Invoice” and add an icon in front of it with the Font Awesome Icon “file-text-o”.
Calculations in the Application
As the last few steps we are going to add a “Sub Total” area under the component table. For this we have to add a “Total” column to our invoice table. We already added a column in this tutorial so we are going to skip this part. As the next step we are going to add a label “Sub Total” and the new editor “Total” from our table directly under the “Amount” column of our component table. We remove the border of our editor in the “Edit” menu to make it fit better.
As the next step we are going to make the table do the calculations when a row is changed. Select a component in our component table and press “Create Row Value Changed”. In the following wizard we select “Calculate Value” specify that we want to “Write to” the invoice item amount column and add “[Invoice Item.Quantity] * [Invoice Item.Rate]” as the Formula. This is done to save the amount into the invoice item row. We add another command, select “Calculate Value” once more but “Write to” our total column in the invoice table now. The formula is “sum([Invoice Item.Amount])” in this case. To add columns to our formula we can press the button (1) next to the formula field. This way you can add the columns of our tables via dropdown (2).
After that we can add items and the calculations will be done. To make sure that the values are also changed when we delete an item we have to add a “Create After Deleted Row” event with the same commands as well. Our application should now look somewhat like this:
Creating a Report
The last step of our tutorial is going to be a report of our invoice. For this matter we add a “Export Invoice” button under the “+ Add new item” button. This button will have the same style as the “Add” button but the icon we choose will be “download”.
To add a report we press the “Reports” Button on the right side of the VisionX Designer. In the following wizard we select out “Invoice” Screen and press “Next”.
Select “Create a new Report” in the next screen and continue.
We are going to create a “Document” and it will contain “A list with detail information”.
In the next step we select our invoice table, specify that we only want to “Show detail records only for selected master” and press “Finish”.
VisionX will now create our report and asks us how we want to add the report to our application. Select “Add “Show Report” automatically” in this step and select the “Export Invoice button”. After pressing “Finish” our report will now be available when pressing the button. If we do that this is how the report is looking now.
And this is how the template of our report looks initially:
The initial report doesn't really look like an invoice but you can change it with Microsoft Word/Open Office/Libre Office. You can find additional information on how to change a report in the VisionX report documentation. To download and later upload an alternative template for this report you press the “Reports” button on the left side of VisionX again. In the following wizard once again select our invoice screen.
Select “Edit an existing report”, select our previously created template and press “Next”.
In the following dialog press either the “Get Template” button to download the template or the “Change Template…” button to upload the changed template. If you decided to upload a template press “Finish” and your selected template will be used for the export.
This is how the changed invoice could look like:
And once again this is what the template looks like:
You can download the changed template from here.
The finished application
With this done this let's look how our application is looking in a web environment. For this we once again use the “Preview” Button in VisionX. This will start a browser window which shows our finished application: