# Ticket Number Display Fix

## Issue
The ticket heading was showing the ticket title/subject instead of the actual ticket number because the backend was incorrectly setting `ticket_number` to the ticket name for Odoo tickets.

## Root Cause
In the backend `SupportController.php`, Odoo tickets were being processed with:
```php
'ticket_number' => $ticket['name'] ?? 'ODOO-' . $ticket['id']
```
Where `$ticket['name']` is actually the ticket subject/title, not a proper ticket number.

## Files Fixed

### Backend Changes

#### 1. Support Controller (`app/Http/Controllers/API/SupportController.php`)
**Lines 86 & 184**: Fixed ticket number assignment for Odoo tickets
```php
// Before (incorrect)
'ticket_number' => $ticket['name'] ?? 'ODOO-' . $ticket['id']

// After (correct)
'ticket_number' => 'ODOO-' . $ticket['id']
```

### Frontend Changes

#### 2. HTML Utils (`src/utils/html-utils.js`)
**Added new utility function**:
```javascript
export function formatTicketNumber(ticket) {
  if (!ticket) return 'Unknown';
  
  // If ticket_number exists and is not the same as subject, use it
  if (ticket.ticket_number && ticket.ticket_number !== ticket.subject) {
    return ticket.ticket_number;
  }
  
  // Fallback to ID-based number
  return `ID-${ticket.id}`;
}
```

#### 3. Support List Page (`src/app/(portal)/support/page.js`)
- Updated ticket number display to use `formatTicketNumber(ticket)`
- Updated search functionality to search formatted ticket numbers
- Added proper import for the new utility function

#### 4. Individual Ticket Page (`src/app/(portal)/support/[id]/page.js`)
- Updated header to use `formatTicketNumber(ticket)`
- Added proper import for the new utility function

## Changes Made

### Before:
```jsx
// Backend - Incorrect ticket number assignment
'ticket_number' => $ticket['name'] ?? 'ODOO-' . $ticket['id']

// Frontend - Basic fallback
<h1>Ticket #{ticket.ticket_number || `ID-${ticket.id}`}</h1>
```

### After:
```jsx
// Backend - Correct ticket number assignment
'ticket_number' => 'ODOO-' . $ticket['id']

// Frontend - Smart formatting with utility function
<h1>Ticket #{formatTicketNumber(ticket)}</h1>
```

## Ticket Number Formats

The system now properly handles different ticket number formats:

1. **Portal Tickets**: `TICKET-XXXXXXXXXX` (generated by Laravel)
2. **Odoo Tickets**: `ODOO-123` (where 123 is the Odoo ticket ID)
3. **Fallback**: `ID-456` (where 456 is the local database ID)

## Benefits

1. **Correct Display**: Ticket numbers now show actual numbers, not subjects
2. **Consistent Format**: All ticket numbers follow a predictable pattern
3. **Better Search**: Users can search by the actual ticket number
4. **Fallback Safety**: System gracefully handles missing ticket numbers
5. **Future-Proof**: Easy to extend for other ticket sources

## Testing

- ✅ Portal tickets show correct `TICKET-XXXXXXXXXX` format
- ✅ Odoo tickets show correct `ODOO-123` format
- ✅ Ticket headers display proper numbers instead of subjects
- ✅ Search functionality works with formatted ticket numbers
- ✅ Fallback works for edge cases

## Example Results

**Before Fix:**
- Header: "Ticket #Internet connection problem"
- Search: Could search by subject but not proper number

**After Fix:**
- Header: "Ticket #ODOO-123"
- Search: Can search by "ODOO-123" or subject
- Subject still displayed below the ticket number