initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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:**
|
||||
```javascript
|
||||
const completed = orders.filter(ro => ro.status === 'completed');
|
||||
```
|
||||
|
||||
**Correct:**
|
||||
```javascript
|
||||
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:**
|
||||
```javascript
|
||||
ro.status !== 'completed' && ro.status !== 'picked-up'
|
||||
```
|
||||
|
||||
**Correct:**
|
||||
```javascript
|
||||
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:
|
||||
```javascript
|
||||
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.
|
||||
Reference in New Issue
Block a user