This particular customer offered various services at different international airports. With that, the customer invoiced hourly rates for the staff he positioned at different check points.
One of his clients requested electronic invoicing and it had to be exact to the minute. Gaps and overlaps were not allowed - imagine the employee taking a short break. Also, the hourly rate depended on the time of the day (e.g. night-premium, bank holiday or weekend days) and on the qualifications of the allocated staff.
Doing all of that by hand was almost impossible at the scale of that project. But still, the hours reports were filled and signed on paper by the employees, handed over (at some point) to an office where another employee would enter everything into an excel file. Imagine all the hand-writing the employee has to read and the typos he could quickly make - we're talking about hundreds of records every day!
The goal had several dimensions:
For this project we used the Laravel PHP Framework in the latest version along with a VueJS frontend and a MySQL database. It was critical that this web application was responsive because it was going to be used on a tablet.
We also used the airwatch mobile device management system (MDM) to enable a kiosk mode and make sure the staff does not use the tablet for anything but that hours report application.
For this project we followed an agile project management approach. We took elements of Scrum and Kanban and implemented those into our project management tools. In this case it was GitLab. The implementation took around 3 months and we developed following features:
The tablets at each checkpoint had a digital pen attached. Staff that would start a shift could click a button and the current timestamp would be used. When the employee went on his break, he had to be replaced by someone else as this was a security area which must be secured 24/7. The custom hours report application had a dedicated handover feature that made sure there was no gap in the system. At each handover, the current timestamp was used as the end time for the last entry and as the start time for the new entry with the new employee. The emplpoyee who was replaced (e.g. break or shift end) always had to sign the entries electronically using the digital pen.
We made sure that the employees at the checkpoint could only use the hours reports and only fill those and sign them electronically. The back office staff had different user roles so they could generate the invoices and fix entries.
With all the data it was possible to create an invoice. We knew the customer the staff worked for, we knew the qualifications of each employee and we have the times and dates. We've built an entire setup for invoicing numbers (without gaps or duplicates), taxes, a CRM and automatic PDF generation. If the customer had desired so, we could've also sent those invoices to his client directly.
As explained above, it was necessary to split the hours worked into four "buckets (as we called them). Normal hours, night premium hours, bank holiday and sunday hours. For that, we took the begin and end date and times from each entry and determined in which bucket each minute belonged. Some shifts would span from a saturday night shift (while being a bank holiday) to a sunday... And all of that should happen in a fraction of a second so thousands of such calculations could be done for invoice creation.
All communication is encrypted via SSL and the authentication follows standards based on JWT. Employees could not see records of other employees that were not with them on the same shift.
This project was a challenge because the user experience and the graphical user interface had to be really on point. The staff that was going to use it usually had very little knowledge and touchpoints with computers or tablets, forget about web applications. But as we worked closely with them and incorporated them in the design process, it became a success.
Much less time is spent on the invoicing process and no one ever has to type the entries from the paper reports into a system. Mistakes in that process lead to wrong invoices which his client used as an excuse not to pay the bill. That's all over now.