# Order Display Changes

## Summary

Removed the restriction that was hiding Odoo draft orders in simulation mode. Now ALL orders from Odoo are displayed, regardless of their status.

## What Changed

### Before

The frontend was filtering out Odoo draft orders when `NEXT_PUBLIC_SIMULATE_PACKAGE_PRICING=true`:

```javascript
// OLD CODE - Filtered out draft orders
if (dashboardData?.orders?.length > 0) {
  const odooOrders = dashboardData.orders
    .filter(order => {
      const orderStatus = order.status || order.state || 'draft';
      // In simulation mode, skip draft orders from Odoo
      if (isSimulationMode && orderStatus.toLowerCase() === 'draft') {
        console.log('⏭️ Skipping Odoo draft order in simulation mode:', order.number || order.name);
        return false;
      }
      return true;
    })
    .map(order => { ... });
}
```

### After

Now all Odoo orders are shown:

```javascript
// NEW CODE - Shows all orders
if (dashboardData?.orders?.length > 0) {
  const odooOrders = dashboardData.orders
    .map(order => {
      const orderNumber = order.number || order.name || order.order_number || `Order #${order.id}`;
      seenOrderNumbers.add(orderNumber.toLowerCase().trim());
      
      console.log('✅ Adding Odoo order:', orderNumber);
      
      return {
        ...order,
        source: 'odoo',
        // ... rest of mapping
      };
    });
  allOrders.push(...odooOrders);
}
```

## Why This Change?

### 1. Unified Order System

With the new unified order system:
- Orders are ALWAYS created in Odoo first
- Then synced to the local database with `odoo_order_id`
- This means ALL orders should be visible, including drafts

### 2. No More Duplicates

The previous filtering was trying to prevent duplicates by hiding draft orders. Now:
- Duplicates are prevented at the database level (unique constraint on `odoo_order_id`)
- Portal orders with `odoo_order_id` are automatically skipped
- No need to filter by status

### 3. Better User Experience

Customers can now see:
- Draft orders they're working on
- Pending payment orders
- Completed orders
- All order statuses in one place

## Environment Variables

### NEXT_PUBLIC_SIMULATE_PACKAGE_PRICING

This variable now ONLY affects package pricing simulation, not order display:

```env
# Before: Affected both pricing AND order display
NEXT_PUBLIC_SIMULATE_PACKAGE_PRICING=true

# After: Only affects pricing simulation
NEXT_PUBLIC_SIMULATE_PACKAGE_PRICING=true
```

### NEXT_PUBLIC_SHOW_SYSTEM_NAMES

This variable still controls whether to show technical names like "Odoo":

```env
# Development: Show "Odoo"
NEXT_PUBLIC_SHOW_SYSTEM_NAMES=true

# Production: Show "System" instead
NEXT_PUBLIC_SHOW_SYSTEM_NAMES=false
```

## Order Deduplication Logic

The frontend still prevents duplicates using this logic:

```javascript
// 1. Add all Odoo orders first
const odooOrders = dashboardData.orders.map(order => {
  seenOrderNumbers.add(order.number.toLowerCase().trim());
  return { ...order, source: 'odoo' };
});

// 2. Add portal orders only if they don't exist in Odoo
const uniquePortalOrders = portalOrders.filter(order => {
  // Skip if order number already exists (from Odoo)
  if (seenOrderNumbers.has(order.order_number.toLowerCase().trim())) {
    return false;
  }
  // Skip if order has odoo_order_id (it's synced to Odoo)
  if (order.odoo_order_id) {
    return false;
  }
  return true;
});
```

## Testing

### Verify All Orders Are Shown

1. Create an order in the portal
2. Check that it appears in Odoo (with draft status)
3. Verify it shows on the Orders page
4. Verify no duplicates appear

### Verify Deduplication Works

1. Create an order that syncs to Odoo
2. Verify it only appears once (not twice)
3. Check the console logs for "Skipping duplicate portal order" messages

### Verify Status Filtering Works

1. Go to Orders page
2. Use the status filter dropdown
3. Verify you can filter by:
   - All orders
   - Draft
   - Pending Payment
   - Approved
   - In Progress
   - Completed
   - Cancelled

## Migration Notes

No database migration needed for this change. This is purely a frontend display change.

## Related Changes

This change works together with:
- Unified Order System (backend)
- Unique constraint on `odoo_order_id` (database)
- Order sync logic in `SalesOrderController`

See `UNIFIED_ORDER_SYSTEM.md` for more details.
