Feb – Oct 2026
Salon ERP — reporting and accounting logic
A Laravel ERP for salons in Bangladesh, covering billing, split payments, staff commission and double-entry accounts, in production at a salon in Dhaka. On a team of three, I worked on its reporting and accounting logic.
- My role
- Engineer on a team of 3; owned reporting correctness
- Status
- In production
The problem
A salon's daily cash, bank and mobile-money (bKash, Nagad) totals have to agree with its books, and the owner wants to see which clients keep coming back.
My approach
I reworked the daily cash report: cash is identified by account group instead of by account name, it has a bank-wise income breakdown and cash deposit and credit lines, and unpaid (due) bills no longer count as income, through a configurable due-bill account. I built a Customer Retention Report (controller, SQL service and view) that counts visits without double counting, with client-based paging and CSV export. I also traced failed logins ("419 Page Expired") to a single stray byte before <?php, and restored a lost pre-payment invoice feature.
The outcome
The daily report separates cash, bank-wise and mobile-money income and leaves out unpaid bills. The retention report is covered by 32 Pest tests.