# Hotel POS update — reports, units and login

## Included in this update
- Daily waiter sales table on Sales Reports. It respects the selected period and area and shows each waiter's order count, daily sales, and a total across the filtered waiters.
- Purchase Report with date range, status filter, order counts and purchase value.
- Customer Report with customer search, owing/no-balance filters, credit limits and outstanding balances.
- Units & Sub-units settings page to manage base units and conversion factors (for example, 1 kg = 1,000 g). Units already used by products/ingredients or other sub-units cannot be deleted.
- Bar product form now exposes a Low-stock alert quantity. Ingredient reorder levels remain available on the ingredient form. The existing stock report uses those reorder levels.
- Redesigned split-screen login: logo/business panel on one half, PIN/email login on the other; six selectable gradient wallpapers rotate automatically every eight seconds.
- Existing M-Pesa STK Push/payment status and eTIMS invoice-status/retry modules are preserved. Live provider requests still require correct sandbox/production credentials and callback configuration; a screen or pending invoice is not proof of a successful payment/tax submission.

## Deployment
1. Back up your current app and database.
2. Upload and extract this ZIP over the existing application files.
3. Preserve your live `.env` and `APP_KEY`; do not replace them with values from a sample environment.
4. No database migration is required for these changes; units use the existing `units` table.
5. From the Laravel project directory run `php artisan optimize:clear`.
6. Sign in with an account that has the appropriate report/settings permissions. The new reports require `purchase_orders.view` or `customers.view`; Units settings require `settings.general`, and changes require `settings.manage`.

## Notes
- Stock value is available in Inventory Reports; trending/top-selling products are available in Sales Reports.
- For M-Pesa/eTIMS, test in sandbox first and verify callbacks and provider responses before using live credentials.
