New invoicing app powered by my online server

Peter Simpson

Expert
Licensed User
Longtime User
Simply Invoice AE
Here we have my new MySQL powered Android invoicing solution for people that are on the move. I've still got a couple of screens left to develop, these are the main systems settings screen and the main sales chart screen. I've also got to finish the sending of invoices via email, but that not too difficult to implement.

Anyway, I've added the screen shots for everybody to look at. This didn't really take too long to develop, so I'm a happy chappy...

Screen shots were taken on my Nexus 7 2013. It also looks great on a Tab 3 10.1.

Login Screen:
1.png


Options screen:
2.png


Stock list (filtered):

3.png


Item description (example 1):
4.png


Item description (example 2):
7.png


Customer information:
5.png


Invoice information screen (create new or view previous invoices):
6.png


Invoicing screen with menu filters:
9.png


Database location properties:
8.png


That's all folks...
 
Last edited:

Peter Simpson

Expert
Licensed User
Longtime User
Hiya @DonManfred I've always used a library, no PHP script or RDC for me. It's straight from my app to my database server and back. If I tether my tablet to my mobile, on average the retrieval of 100 lines of data takes about 0.45 - 0.7 seconds. It's quicker via my home WiFi but this app is designed for working whilst on the move.
 

Peter Simpson

Expert
Licensed User
Longtime User
Last edited:

keirS

Well-Known Member
Licensed User
Longtime User
You may already know this but that Invoice is not VAT complaint. To be VAT compliant you have have to show the rate of VAT charged per item. Otherwise it looks very good.
 

RandomCoder

Well-Known Member
Licensed User
Longtime User
Very nice professional looking layout @Peter Simpson would you mind listing for me which Views you have used in the Item Description Activity? Is the Bulleted list just a TextBox and the underlined items are they a Label or TextBox with a line placed below or something more technical? Finally, did you create your layout in the Designer or is it all done in code? I'm interested because I am currently 'playing' with a Maintenance/Asset Care App and your layout is very clean!
 

Peter Simpson

Expert
Licensed User
Longtime User
Hello @RandomCoder, thank you for your extremely kind words.
Here is a old video of just the invoice screen in action https://plus.google.com/106521964133033960510/posts/CgPXxTbatDq, parts of the app have changed since that video was made, the options screen is what is now screen shot above, the grid colour is different etc. The invoice list, stock list and contact lists screens are all created in code(no designer), the invoice details, contact details and stock details screens are created using the designer script as they are quite complicated and each view is set using the designer script, I didn't use anchors as it just didn't work as I expected. The bullet list is actually a WebView reading HTML out of the MySQL database. By tapping the arrow down button, the WebView changed into a fully editable text box that the HTML or None-HTML(normal text) can be stored in. The underlined items are all text boxes, TargetSDK is 21 with a minimum SDK of 14(Honeycomb I think).

Below is a list of what I'm using.

Classes:
Flexible Table V1.39 - I've turned into a library

https://www.b4x.com/android/forum/threads/class-flexible-table.30649/

Libraries:
AHNavigationDrawer V1.21
- Will hopefully be moving away from soon
https://www.b4x.com/android/forum/threads/ahnavigationdrawer-native-google-navigation-drawer.31461/
mListView V1.20 - used with the above - Will hopefully be moving away from soon
https://www.b4x.com/android/forum/threads/lib-mlistview-based-on-native-listview.25413/#content

AppCompat V1.10
https://www.b4x.com/android/forum/t...le-with-older-android-versions.48423/#content

Base64 V1.02 (For images stored In/Out of database)
https://www.b4x.com/android/forum/threads/base64-encode-decode-image-library.31031/

PDFJetB4A V1.10 (For emailing PDF invoice to customers)
https://www.b4x.com/android/forum/threads/pdfjetb4a.37843/#content

MSMariaDB V1.02 (For connecting to MySQL databases)
https://www.b4x.com/android/forum/threads/chargeable-msmariadb-another-connector-to-mysql.50732/

I also use other libraries like StringFunctions for proper case, IME to hide the keyboard, RandomAccessFile to store the database settings(it works for me), JavaObject and that's all. I use NinePatch for most of the shadows, but I also use AppCompat.SetElevation to elevate the ActionBar to add a shadow https://www.b4x.com/android/forum/t...3-using-a-toolbar-as-actionbar.49053/#content.

Including lots of messing about and changing MySQL libraries, design changes etc, it took me under 2 weeks On and Off to do. To finish it I probably need another week or so but I have bespoke client work to finish first, as that's what pays the bills ;)

I hope this help you out with your project...
 
Last edited:

RandomCoder

Well-Known Member
Licensed User
Longtime User

Peter Simpson

Expert
Licensed User
Longtime User
Started working on this huge mega project again.

Big changes:
Initially all data was stored directly directly into an online MySQL database, but that has now changed. All data will now be saved in an built-in SQLite database which can then be synchronised with the online MySQL database at will. This is actually a better solution as if the end user of the app is in an area where they do not have a good mobile signal, then there is actually no way to access the online MySQL database for invoicing. Saving the data to a built-in SQLite database first (whilst on the move) guarantees that the sale is created and stored and can later be synchronised either manually or automatically :).

I've already started to add the extra routines but it can be a bit confusing at times, synchronising 2 databases is the best solution though :confused:

BTW this app can also bypass the SQLite database and save directly to the MySQL database if need be :)
 
Last edited:

asales

Expert
Licensed User
Longtime User
... All data will now be saved in an built-in SQLite database which can then be synchronised with the online MySQL database at will...

I've already started to add the extra routines but it can be a bit confusing at times, synchronising 2 databases is the best solution though :confused:
Very nice!
How did you make to synchronize the data between SQlite and MySQL?
How did you check the records to not duplicate the data in both database?
 

Beja

Expert
Licensed User
Longtime User
Hi Pete,
Nice app indeed.. thanks for sharing the interface
Are you planning to incorporate online credit card payment option?
 

Peter Simpson

Expert
Licensed User
Longtime User
Sorry @AS2 and @Beja I completely forgot to answer your questions :rolleyes:

@AS2 I wrote a code module that does all the work for me. Basically when an invoice in the SQLite DB has synchronised to the online MySQL DB it is marked as Boolean = True in the SQLite DB (there is a Boolean column called 'Synchronised' in the main invoice table). This way the synchronise query knows not to re-synchronise that particular invoice to the main MySQL online database again.

@Beja I've looked at this option but I'm not 100% sure as yet, there are lots of payment options out there including Paypal, SagePay, WorldPay, Nochex and lots of other business to choose from. I have a company beta testing this app for me at the moment, but I still have to look into adding a mobile payment system. I have added Bluetooth Barcode scanning and soon I will also be adding a 58mm mobile Bluetooth receipt printer http://www.aliexpress.com/wholesale...50527031224&SearchText=58mm+bluetooth+printer. In theory I've written the printer code for an 80mm serial printer and scaled it down to fit a portable 58mm Bluetooth printer, I've just ordered a printer so when it turns up hopefully my code will work first time out.
 
Top