Back to projects

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
LaravelPHPMySQLBladejQueryPest

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.