/** * The main template file * * This is the most generic template file in a WordPress theme * and one of the two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. * E.g., it puts together the home page when no home.php file exists. * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/ * * @package WordPress * @subpackage Tally * @since 1.0.0 */ ?>
An extremely powerful reporting system that provides 500+ reports, and 1000+ configurations and has been used by millions for over 3 decades. We made it 10x easier to use with zero interruptions to users and no effort to learn! This post is about the engineering choices that enabled this.
TallyPrime has rich functionality that offers many diverse features and modules. It is extremely rich (Accounting, Inventory, Indian Taxation, International taxation), yet an amazingly simple product.
Business reports are a key component of any ERP product. Business reports provided by TallyPrime are loved by our users. These reports enable users to:
Users have configurations and filters to
When we have a lot of variations for each report and have 500+ reports, an interesting problem arises - which configurations should be retained when the user returns to the application the next time.
A simplistic solution is to ‘always retain’ the user’s configuration and let them change it whenever they wish to. However, from our experience in the domain and understanding user behavior for over 36 years, we know this will be an unpleasant experience. ‘%’ figures for Balance Sheet amounts are something that users will want only occasionally. Others, such as layout, are likely to be long-term preferences.
Hence, some are retained, and others are not. However, we decided to push the limits and bring an entirely new paradigm of operating the reports!
Although the current setup works very well, we looked at some pain points and then analyzed different user behaviors. We wanted to push the boundary and bring a significant shift in the user experience of the product. This is both to solve existing pain points and create new usage patterns that enable users to work efficiently and with far greater control.
Call out before proceeding
As covered in some of our earlier blogs, it is worth noting that we control the entire UI Engine and Reporting stack of TallyPrime, and everything is built from scratch. We do not depend on any third-party stack for this; hence we have complete control over the areas we wish to enhance to achieve the desired outcome.
We considered several different things:
4. Users deal with some ledgers, and stock items, more often than others
We rejected complex solutions (complex for the user), such as allowing the user to control which configuration gets persisted etc. They would be simpler to build but hard to use. Imagine having to configure 1000 options for whether they would be retained or not! It would be akin to being a mechanic for your car when you just wanted a nice ride in it as a driver!
We narrowed down the solution to be a ‘personalized’ solution where the user can ‘Save View’ for any given report and save it under any name. This will enable the user to save virtually unlimited views – now, every user can have their own view, have different views for each purpose, and so on.
Immediately, all problems get solved– you can have a preferred view for every user, a view for Audit reasons, a view for year-end activities, and so on. What’s more? You can save a view for your most dealt-with suppliers, buyers, and stock items and access information 10x faster.
Along with user experience, we have the following technical and implementation-related challenges:
a. We want the experience to just work!
a. With so many views that can be expected to be saved, providing instant speed while saving, loading, and updating ‘views’ is crucial.
a. Handle the diversity of 3000+ configurations that exist.
b. Find an approach that we can implement in 500+ reports.
4. Consistency and ease of implementation
a. We will need to implement this solution across all reports of the product.
a. Solve for compatibility to ensure future enhancements continue working.
a. Reports support many rich filters; they, too, need to be persisted.
b. Manage user security rights
c. Manage geography constraints on reports’ availability.. and more
Enter the Legos, or as we call them – Technical Building Blocks!
We have a layered architecture and hence built underlying capabilities of the system to guarantee performance, consistency, and reliability. Upper layers then use these to handle diversity and nuances of user needs and diversity.
Listed below are some of the key components of our technical solution for this problem:
We introduced various new actions in TDL (Tally Definition Language) language, which would handle all complexity related to saving and applying the views. These actions are responsible for the simplicity of the end-user experience, ease of application programmer’s work, and providing robustness.
These actions are
a. Save report view
b. Load report view
c. Set default view
iv. Cases like file deletion outside of the application are handled, and the user gets a clear understanding of the behavior.
The choice of binary data format allows the user to save the view at either the application level or make it part of their company data. This provides flexibility, and each user can choose what they like.
Reporting engine inherently honors the views, and the ability to set a default view for a report makes users’ life seamless by making the report open the way they like every single time.
The fact that a report such as ledger vouchers or stock item vouchers report can be saved along with their primary context means one can now create separate reports for most used entities, eliminating the need to select every time. Now, this, coupled with “GoTo,” enabled users to reach these views in a blazingly fast manner.
Visual experience has been illustrated with a couple of screenshots from the product below:
Save View button has been provided on the right button bar with “Ctrl + L” as the shortcut key.
Intermediate report that opens while saving view to input details of the view.
List of views saved at both application and company levels being displayed in the GoTo table.
Change View also provides a list of views with options to delete and set/alter the default view of the report.
Delete views have been provided under Help Popup Menu for Troubleshooting
Using QuickBooks? Here’s Why Tally is the Right Fit for your Business
Save Report View – Tally’s Approach to Personalized Configurations
Benefits of Integrating Payment Processing with Your Invoicing in Your Business