CodeParva Blogs

Building Scalable and highly customizable reporting tool with Crystal Report

28 Apr, 2021

Reports are very valuable and essential tools for any business. They provide a means to track and analyse the performance and overall health of the business while identifying areas for improvement and opportunities for growth. Reporting is done through the process of compiling and reviewing the information within a specific functional area such as finance, sales, operations, inventory control, or any area of the business where performance is monitored and measured.

Self-Storage industry deals with a lot of financials, inventory, activity data. A good report tool can give enough information for the business to make it run smoothly. As the self storage software management company we needed our application to support a reporting tool that can be fast, affordable, accurate and support a wide range of reports.

Challenges with Creating Report with HTML Template and Converting it to PDF

There are three parts for getting the report, one creating a template, then inserting the data into the template and then converting that template to a human readable format such as PDF. We started our research for the solutions, initially, we were focused on getting a reporting tool which can be written in ReactJS or any JS framework (given our expertise in the JS language). But doing the report in JS had its own limitations. Our customers are used to some standards of reporting and we want the same standards for our new reporting tool. We can write the template in HTML but there are some niche requirements which cannot be completely taken care of and even if we do achieve this by using the advanced CSS, the libraries to convert the template into PDF do not have support for that.

Puppeteer is one of the libraries which can work for most CSS but it’s a very heavy library (would incur heavy server charges) which includes many things and converting from HTML to PDF is one of the small features of it. We tried other libraries such as jsPdf, html2pdf, etc. but the problem remains unsolved.

There is a heavy demand for reports during the end of the month from our customers, so to cater to that we would need a high-end server which can deliver the reports faster on demand. We looked for many microservices which can do the conversion of HTML to PDF for us, but given the amount of report we would need, the service was not affordable.

Why does Crystal Report work for us?

Image of the logo of strapi

Image Cred:

We pivoted to SAP’s Crystal Report, which is affordable and we have been using it for our customers for the reporting tool which means it satisfies all our requirements. Now we just need to put the Crystal Report on the server and get the reports out.

Crystal Reports is a business intelligence application used to create custom reports from a variety of data sources. The package includes the major features needed for a business to create a database reporting environment, such as data access, report design/formatting, report viewing, and application integration. It allows you to create highly pixel-perfect reports using SAP crystal reports with an easy design interface and efficient workflows. Helps you to export more data to a single worksheet, without extending it to multiple sheets. There are many more benefits of using Crystal Report such as it helps you to create a customized reporting view you need for your business.

Crystal Report and JSON

Although Crystal Report allows you to produce reports from multiple data sources, it does not support JSON as a data source. So in order to make it work with our data source format we needed to process our data into the DataSet (in memory tabular representation of data in . NET) and then feed it to the crystal report.

How are we generating the report?

As shown in the flowchart below when the request for a particular report comes to our reporting server, we fetch the required report template, get the data from our ES server (Fetching is fast), authenticate the user and process the data according to the schema required by report template and finally get the report in the required format.

Flowchart for report implementation

Flowchart of generating reports

Final Words

Currently, we spend time on creating templates, processing data, and inserting that data into the crystal report. This requires an adequate amount of development time. We at CodeParva would like to enhance our reporting capabilities so that the development time is decreased and even a person with not lots of development experience should be able to create a report on demand. Technically a CodeParva’s own Crystal Report application according to the needs of the Self Storage industry.

If you like the idea and want to know more, doesn’t matter if it is the industry or the product, you can always connect with us. Visit CodeParva Technologies to know more about us.

Linkedin | Instagram


Aishwary Kumar