Thursday, 22 September 2016

FXBilling - A free and open-sourced JavaFX Billing Application

Hi, I am happy to share with all the readers of my blog a billing application named FXBilling that I have developed in JavaFX. Before I tell more about this application, please have a look at its screenshot below:


More screenshots of the application can be viewed here.

This application is targeted at small-scaled Indian Traders, and is a JavaFX port of my earlier released C# billing application named Biller. The features include invoice generation & printing, invoice search, payment receipt, payment search, customer account lookup & printing, database backup & restoration.

I have taken every care to make this application bug-free; however, a bug or two may still have crept in. So, if you come across any bug, please let me know.

The Java version 8 (update 72) has been used to develop this application. Hence, you will require this or a newer version of Java to run the application. You can download Java SE Runtime Environment (JRE) from here.

FXBilling Executable Download Link

FXBilling Source Code Download Link

FXBilling Windows Installer Link

I trust that you will find this application useful whether you are a developer or a user, and you will also enjoy using it as much as I have enjoyed developing it. Do provide your feedback through the comments section below.

Thanks for your time!








24 comments:

  1. hi,
    just checked your javafx billing application and i think it looks cool, i have a couple of questions:
    1- what data base are you using ?
    2- what library/tool do you use to create reports?
    3- the data entry forms seems to be written in html are you using a webview to create your forms ??

    ReplyDelete
  2. Thanks that you found the application cool! As regards your queries:

    1)I am using the Apache Derby database (https://db.apache.org/derby/)
    2)To create reports, I am using JasperReports (http://community.jaspersoft.com/)
    3)The data entry forms have not been written in HTML; instead, they have been written in FXML (https://en.wikipedia.org/wiki/FXML). I am not using at all the WebView component to create or display the forms. The entire application is being displayed in a Scene that is hosted by a Stage. The Scene contains a TabView component, and different forms are displayed as tabs of this component.

    Trust this answers all your queries :-)

    ReplyDelete
  3. Under what license are you releasing this ? Shall I customize to my own for a small shop and use it ?

    ReplyDelete
    Replies
    1. Hi, the application is free of all licenses. You can customize it and use it. No strings attached :-)

      Delete
  4. Thank you for your software Dinesh! Look's great. Few days ago I'm download it and porting to Spanish language...I'm living in Entre Ríos, Argentina...
    I must change some things, for example, the model in Apache Derby and some things in FXML files (Gluon SceneBuilder not loading all FXML files)
    You can reach me at ezicart@frp.utn.edu.ar or ezicart@gmail.com...
    Stay tuned Dinesh!
    Thank you again!

    ReplyDelete
    Replies
    1. Hi Ernesto, You will need to change the locale of the Apache Derby database whilst creating it. Apart from that, you will need to replace the Indian Currency Sign (Rupee) with that of your country's currency sign.
      As regard ScreenBuilder, I also face problem with it in opening many FXML files, and therefore I don't use it. All the FXML files used in the application are hand-crafted. They have been created in the Netbeans' IDE text editor; no graphic editor involved. Hand-written FXML are devoid of bloat, easy-to-understand and also reinforces learning! Just my two cents :)

      Delete
    2. Hi Dinesh! Certainly I must agree with you about FXML files...respect to the database, all changes made and work fine!
      I'm very excited re-coding you code and learn JavaFX! The beauty of simple things!
      Thank you AGAIN Dinesh...God bless you!

      Delete
  5. Hi sir, why i can't open the fxml files?? im getting an error when i opened it. what scene builder and jdk version are you using? please help..i really like your design thank you!

    ReplyDelete
  6. Hello, as stated in the blog post, the JDK version used is 8 (update 72). It is represented as 1.8.0_72. You could use this or a newer version to run the app. As regards you not being able to open the fxml files, I have clarified in the comment dated 6th January that I also face problem in opening files in the Scene Builder, and therefore I don't use it. All the files used in the application are hand-crafted.
    To get insight on issue you are facing with the Scene Builder, open a new thread in stackoverflow.com, or check existing relevant threads there.
    Hope this helps.

    ReplyDelete
    Replies
    1. oh sorry i didn;t read the content.i got able to open the fxml files by updating my scene builder. thank you so much.

      Delete
  7. Very good contribution to the community, it looks very promising and I will certainly use it for my own education. Just one thing I am though encountering: in file fxbilling.database/Database.java, at line "import org.apache.derby.tools.ij;" (line 18), I get "cannot find symbol", though I have installed derby and added to the path too, readded it as a library in the project properties (I use NetBeans). I am still green to programming and Java but can't think of something I am missing. Any enlightment? Thank you so much in advance.

    ReplyDelete
    Replies
    1. Sorry, it seems I found out: the ij tool is included in derbytools.jar, not derby.jar nor derbyclient.jar as I first understood. Adding this library in the project properties (NetBeans) worked and the error disappeared. Cheers.

      Delete
  8. hi sir hope to see more open source projects from you.

    ReplyDelete
  9. Thanks for your source code. However, I need some help as how new customer fxml is working inserting the listview. Which method is being used to insert a new customer in the listview.

    ReplyDelete
  10. How i can change the currency logo???

    ReplyDelete
  11. Hi,
    To get your currency symbol, you can use the code like this:

    Currency.getInstance(new Locale("en", "IN")).getSymbol();
    /*Replace Indian locale with your country's locale*/

    I however have not used this method as this returns me the old Indian currency symbol (Rs.). To get the new Indian currency symbol, I am directly using its Unicode value which is 20b9.

    ReplyDelete
  12. Hi, Thank you for your grate effort.

    I'm getting an error which saying

    WARNING: Could not open windows registry node Software\JavaSoft\Prefs\fxbilling at root 0x80000002. Windows RegOpenKey(...)

    Netbeans 8.2, Java 1.8

    Do you have any idea where it coming from ?

    ReplyDelete
    Replies
    1. I think I have an idea where it is coming from :-)
      You are probably running the application either from within the IDE or running the jar file (as against the Windows executable file) directly. Either way, you are running it without Administrative privileges. Ensure that you are running the app with Administrative privilege, and this error won't occur again.
      The application requires Administrative privilege because it calls the API "Preferences.systemNodeForPackage" to store or retrieve the user preferences to/from the system backend (In the case of Windows, this backend is OS's Registry database). You can though replace this call with "Preferences.userNodeForPackage", and doing so will obviate the need to run the application with Administrative privilege.
      Trust this helps.

      Delete
  13. Thanks for the software but however i am facing problems using it with netbeans 8.1. Can you describe how to configure this in IDE and what step to follow.
    Thanks again.

    ReplyDelete
    Replies
    1. Hi, I think that the problem you are facing may have to do with required Java libraries not having been set in your IDE. You need to set up Java libraries for Apache Derby, ControlsFX and Jasper Reports in your IDE. To see how to add a Java library to the Netbeans IDE, please check this link: http://www.oracledistilled.com/netbeans/adding-java-libraries-to-netbeans-6-9/
      Hope this helps.

      Delete
    2. See the libraries as they appear in my IDE:
      https://imgur.com/a/uCESn

      Delete
  14. Hello sir, when I am trying to run the FXBilling program in NetBeans IDE, I am getting an exception like /resources/stylesheets/home.bss not found on the classpath
    /D:/code/fxbilling_source_code/FXBilling/build/classes/fxbilling/view/Home.fxml:14

    Do you have any idea on this? Please help me

    ReplyDelete
  15. Hi, check that "Project Properties > Build > Packaging > Binary Encode JavaFX CSS Files" option is turned on in your IDE. I hope doing so will resolve the issue.

    ReplyDelete