2.0 KiB
ro.status vs ro.workStatus — Field Confusion
Two repair order fields with similar names, completely different meanings. Confusing them causes silent bugs.
The Fields
| Field | Meaning | Values | Used For |
|---|---|---|---|
ro.status |
Customer service status | waiter, drop-off |
Red/blue badge on RO card |
ro.workStatus |
Work progress status | diagnosing, in-progress, waiting-for-approval, waiting-for-parts, waiting-for-pickup, completed |
Work progress badge, dashboard counters, overdue filters, completion logic |
Common Bug: Filtering by ro.status === 'completed'
Symptom: Dashboard shows "Completed: 0" despite having completed repair orders.
Root cause: Code filters by ro.status === 'completed' but status only stores waiter or drop-off. Completed orders have ro.status = waiter or drop-off, and ro.workStatus = completed.
Wrong:
const completed = orders.filter(ro => ro.status === 'completed');
Correct:
const completed = orders.filter(ro => ro.workStatus === 'completed');
Common Bug: Filtering by ro.status === 'picked-up'
There is NO picked-up status value. The correct check is ro.workStatus === 'waiting-for-pickup'.
Wrong:
ro.status !== 'completed' && ro.status !== 'picked-up'
Correct:
ro.workStatus !== 'completed' && ro.workStatus !== 'waiting-for-pickup'
Compound Bug: ro.status + Completed-Filtered Data Source
Symptom: Completed counter stays at 0 even after fixing status field checks.
Additional cause: loadRepairOrders() in dashboard.js filtered out ALL completed orders:
const activeOrders = allOrders.filter(ro => ro.workStatus !== 'completed');
dashboardData.repairOrders = activeOrders; // completed orders NEVER loaded
Fix: Remove the filter from the data source. Let dashboardData.repairOrders contain ALL orders. Each consumer filters as needed.