# POS update — 04 October 2026

This build updates the supplied Hotel POS ZIP and matching SQL dump.

## Implemented

1. Unified POS menu selector: one restaurant POS screen can switch between the user's accessible Restaurant, Bar and Kitchen sections. Bar sections show bar products; Kitchen sections show kitchen-bound restaurant products; section-tagged products are respected.
2. Section tagging is now available on Products and Ingredients and section filters are available on Products, Ingredients, Stock and Stock Transfers.
3. Cashiers can remove an individual item before a KOT/bill has actually been printed. Whole-order cancellation remains separate.
4. When a waiter prints a kitchen/bar order together with the bill, the bill is finalized and the order is automatically placed in Held Orders for cashier clearance. Direct receipt printing also applies this rule to billed service orders.
5. Held Orders now show the waiter name and the actual item names/quantities, not only the item count.
6. Order numbers are now short (`ORD-123456`) for new orders.
7. Stock cannot be reduced below zero. Recipe sales pre-check all ingredient quantities before deduction so a failed ingredient deduction does not leave partial stock changes.
8. Existing negative stock in the supplied SQL dump is reset to zero while preserving the movement/audit history.
9. Product SKU is optional.
10. Product image upload is supported.
11. Product and Ingredient forms now use Opening Stock, Reorder Level and Expiry Date rather than Minimum Stock Level in the main stock settings.
12. Opening stock is tied to a selected store and creates an opening-stock movement. Expiry date is stored against that stock record.
13. Receiving purchased goods now allows an expiry date per received purchase line and updates the store stock expiry date.
14. Ingredients have a Delete action, with protection when the ingredient is still used by a recipe.
15. Recipe units include Milligrams (`mg`) and Litres (`L`) in addition to the existing units and conversion engine.
16. The legacy Bar POS remains in the codebase for compatibility, but the main navigation now uses the unified POS entry point.

## SQL

`dsbuslzs_hotelpos_updated.sql` is based on the supplied database dump and includes the database changes above. It preserves the existing sales, users, products and audit history.

## Deployment note

After installing the ZIP, run:

```bash
php artisan migrate
php artisan optimize:clear
php artisan storage:link
```

If you import the supplied updated SQL instead, the update migration is already marked as applied in the dump.
