- Fixed 3 JavaScript syntax errors in fg_scan.html (lines 951, 840-950, 1175-1215) - Restored form field validation with proper null safety checks - Re-enabled auto-advance between form fields - Re-enabled CP code auto-complete with hyphen detection - Updated validation error messages with clear format specifications and examples - Added autocomplete='off' to all input fields - Removed auto-prefix correction feature - Updated warehouse routes and modules for box assignment workflow - Added/improved database initialization scripts - Updated requirements.txt dependencies Format specifications implemented: - Operator Code: OP + 2 digits (example: OP01, OP99) - CP Code: CP + 8 digits + hyphen + 4 digits (example: CP00000000-0001) - OC1/OC2 Codes: OC + 2 digits (example: OC01, OC99) - Defect Code: 3 digits only
4.8 KiB
location_id Field Presence Analysis
Query Date: January 28, 2026
📊 Summary
| File | scanfg_orders Table | location_id Field | box_id Field | Status |
|---|---|---|---|---|
| init_db.py | ❌ NOT DEFINED | ❌ NO | ❌ NO | ⚠️ Missing |
| initialize_db.py | ✅ DEFINED | ✅ YES | ✅ YES | ✅ Complete |
| Database | ✅ EXISTS | ✅ YES | ✅ YES | ✅ Deployed |
🔍 Detailed Analysis
❌ init_db.py
File Path: /srv/quality_app-v2/init_db.py
Status: Does NOT include scanfg_orders table at all
Tables Defined (9 total):
- users
- user_credentials
- quality_inspections
- application_settings
- roles
- user_modules
- user_permissions
- worker_manager_bindings
- (No scanfg_orders table)
Conclusion: ❌ Neither location_id nor box_id are present
✅ initialize_db.py
File Path: /srv/quality_app-v2/initialize_db.py (Lines 357-379)
Status: INCLUDES scanfg_orders table WITH location_id and box_id
scanfg_orders Table Definition:
CREATE TABLE IF NOT EXISTS scanfg_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
operator_code VARCHAR(50),
CP_full_code VARCHAR(50),
OC1_code VARCHAR(50),
OC2_code VARCHAR(50),
quality_code VARCHAR(10),
date DATE,
time TIME,
approved_quantity INT DEFAULT 0,
rejected_quantity INT DEFAULT 0,
box_id BIGINT, # ✅ NEW BOX FIELD
location_id BIGINT, # ✅ NEW LOCATION FIELD
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (box_id) REFERENCES boxes_crates(id) ON DELETE SET NULL,
FOREIGN KEY (location_id) REFERENCES warehouse_locations(id) ON DELETE SET NULL,
INDEX idx_cp_code (CP_full_code),
INDEX idx_operator (operator_code),
INDEX idx_date (date),
INDEX idx_box_id (box_id), # ✅ INDEX ON LOCATION
INDEX idx_location_id (location_id) # ✅ INDEX ON BOX
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Conclusion: ✅ Both location_id AND box_id are present with:
- Proper foreign key constraints
- Indexes for query performance
- NULL-safe delete behavior
✅ Actual Database
Database: quality_db
Table: scanfg_orders
Current Status: Both fields are deployed and active
Field Type Null Key Default
─────────────────────────────────────────────────────
id INT(11) NO PRI auto_increment
operator_code VARCHAR(50) YES MUL NULL
CP_full_code VARCHAR(50) YES MUL NULL
OC1_code VARCHAR(50) YES NULL
OC2_code VARCHAR(50) YES NULL
quality_code VARCHAR(10) YES NULL
date DATE YES MUL NULL
time TIME YES NULL
approved_quantity INT(11) YES 0
rejected_quantity INT(11) YES 0
box_id BIGINT(20) YES MUL NULL ✅
location_id BIGINT(20) YES MUL NULL ✅
created_at TIMESTAMP YES CURRENT_TIMESTAMP
🎯 Key Differences Between Files
| Feature | init_db.py | initialize_db.py | Database |
|---|---|---|---|
| Has scanfg_orders | ❌ NO | ✅ YES | ✅ YES |
| Has location_id | ❌ NO | ✅ YES | ✅ YES |
| Has box_id | ❌ NO | ✅ YES | ✅ YES |
| Foreign key constraints | - | ✅ YES | ✅ YES |
| Indexes | - | ✅ YES (5 indexes) | ✅ YES |
| Total tables created | 9 | 18+ | 19 |
| Warehouse support | ❌ Minimal | ✅ Full | ✅ Full |
| Box tracking | ❌ NO | ✅ YES | ✅ YES |
📝 Recommendation
USE: initialize_db.py ✅
- Contains complete scanfg_orders table
- Includes location_id field
- Includes box_id field
- Has all warehouse-related tables
- Proper foreign key constraints
AVOID: init_db.py ❌
- Missing scanfg_orders table entirely
- Missing location_id field
- Missing box_id field
- Only basic tables
- Not suitable for box tracking features
🔧 Action Items
If database was initialized with init_db.py, you need to:
-
Add scanfg_orders table using initialize_db.py definition
-
Or run this ALTER statement:
ALTER TABLE scanfg_orders ADD COLUMN location_id BIGINT AFTER box_id, ADD FOREIGN KEY (location_id) REFERENCES warehouse_locations(id) ON DELETE SET NULL, ADD INDEX idx_location_id (location_id); -
Verify with:
DESCRIBE scanfg_orders;
✅ Current Status
Your database ✅ ALREADY HAS location_id field (as verified on 2026-01-28)
Total Records: 0
Records with location_id: 0
The field is ready for data insertion as scans are performed.