# Changelog All notable changes to TRx WMS are documented here. Format: `## [version] — YYYY-MM-DD` with sections Added / Changed / Fixed / Removed. --- ## [Unreleased] ### Planned - Role-based access control enforcement across all API endpoints and UI pages (see `ROLES.md`) --- ## [0.6.0] — 2026-05-06 ### Added - Barcode system — `md_barcode` table, SKU label page (`ics/sku_barcode_label.php`), Location label page (`ics/location_barcode_label.php`) - `scanner.js` — unified scanner module supporting USB scanner, handheld, phone camera (Html5Qrcode), and clipboard paste - Scan-driven stock flows — scan SKU label → scan location label → F2 to save (no mouse required) - `ics/api/engine/barcode_lookup.php` — validates barcode string, returns typed result (`sku` / `loc` / `raw`) - `ics/api/engine/validate_scan_location.php` — pre-save location validation for stock in/out/transfer - `ics/api/engine/sku_label_lots.php`, `sku_label_products.php` — lot and product data feeds for SKU label page - Cost, price, and margin fields on `md_product` - Contact module linked to setting sidebar ### Fixed - `location_barcode_label.php` — `ON DUPLICATE KEY UPDATE` now includes `status = 1` so previewing a previously-disabled location barcode re-enables it --- ## [0.5.0] — 2026-04 ### Added - Purchase Orders (`po/`) — create, confirm, receive, cancel, payment tracking - Order module (`order/`) — sales orders, returns, invoices (invoice / credit note / debit note), order confirmation, payment status - `td_order`, `td_invoice`, `td_return`, `td_purchase_order` tables - Invoice print view (`order/print_invoice.php`) --- ## [0.4.0] — 2026-03 ### Added - Warehouse location modes — simple (warehouse + rack) and advanced (warehouse + zone + aisle + rack) - `company_setting` keys: `advanced_location`, `location_label_rack/zone/aisle`, `default_stock_status`, `auto_complete_on_ship`, `auto_invoice_and_credit_note` - Per-warehouse stock tables (`td_stock_{warehouse_id}`) — balance = `SUM(in) - SUM(out)` where `status = 1` - Stock approval flow — transactions created as `status = 0` (draft) and approved separately - Rack occupancy report (`reports/occupy_rack.php`) - Expired / near-expiry report (`reports/expired_stock.php`) ### Changed - Warehouse layers made switchable via `advanced_location` setting --- ## [0.3.0] — 2026-02 ### Added - Contact module (`contact/`) — supplier/customer contacts, contact types - Stock movement report with date and SKU filters - Product lot report with expiry date tracking - Low-stock dashboard widget with restock shortcut --- ## [0.2.0] — 2026-01 ### Added - Multi-tenant branch support — `company_list`, `company_map_user`, branch switcher in topbar - User management (`setting/users.php`) — invite by email, role assignment, remove member - SMTP configuration (`setting/smtp.php`) - OTP validation on every API request (HMAC-SHA1 based on user password + session time) - CSRF token enforcement on all POST requests --- ## [0.1.0] — 2025-12 ### Added - Initial project scaffold — PHP + MySQL + Bootstrap 5 + jQuery - Login / registration / onboarding flow - Product master (`inventory/product.php`) — SKU, name, UOM, category, barcode - Warehouse master (`inventory/warehouse.php`) — warehouses and rack definitions - Stock In / Out / Transfer pages with manual form entry - `td_stock` base table structure - Dashboard with basic stock summary