- Added order_for_labels table to init_db.py (printing/labels module)
- Fixed fetch API calls in database management to properly check HTTP response status before parsing JSON
- Prevents 'Unexpected token' errors when server returns HTML error pages instead of JSON
- Improved error messages for better debugging (shows HTTP status codes)
- All 10 database management API endpoints now have proper error handling
- Fix Docker build issues:
* Add missing system dependencies (build-essential, python3-dev, libpq-dev)
* Fix requirements.txt formatting (separate Flask-Session and openpyxl)
* Update openpyxl version to 3.1.5 (3.10.0 was invalid)
- Set proper folder permissions for Docker write access (app/ and data/)
- Add comprehensive test data for labels module:
* 8 sample orders (TEST-ORD-001 through TEST-ORD-008)
* Mix of printed/unprinted orders for testing
* Various product types, customers, and delivery dates
* Ready for QZ Tray printing functionality testing
- Include test data generation scripts for future use
- Application now fully containerized and ready for labels/printing testing
- Add SchemaVerifier class for automatic database schema verification and repair
- Implement warehouse_manager (Level 75) and warehouse_worker (Level 35) roles
- Add zone-based access control for warehouse workers
- Implement worker-manager binding system with zone filtering
- Add comprehensive database auto-repair on Docker initialization
- Remove Module Access section from user form (role-based access only)
- Add autocomplete attributes to password fields for better UX
- Include detailed documentation for warehouse implementation
- Update initialize_db.py with schema verification as Step 0
- Add boxes_crates database table with BIGINT IDs and 8-digit auto-numbered box_numbers
- Implement boxes CRUD operations (add, edit, update, delete, delete_multiple)
- Create boxes route handlers with POST actions for all operations
- Add boxes.html template with 3-panel layout matching warehouse locations module
- Implement barcode generation and printing with JsBarcode and QZ Tray integration
- Add browser print fallback for when QZ Tray is not available
- Simplify create box form to single button with auto-generation
- Fix JavaScript null reference errors with proper element validation
- Convert tuple data to dictionaries for Jinja2 template compatibility
- Register boxes blueprint in Flask app initialization