# Test Case: Quote Object

> **Test ID**: QT-TEST-001
> **Priority**: P1
> **Test Environment**: NexusCRM (https://nexuscrm.pingcap.com)
> **Last Updated**: 2026-03-30
> **Test Agent**: dev-browser (Playwright-based automation)

## 1. Test Overview

This test covers the Quote object lifecycle in NexusCRM with focus on:
- **LABEL-001/002/003**: Reference field labels, custom field labels, field order
- **LIST-001**: Analytics card quality (junk vs meaningful metrics)
- **APPR-004/005/006**: Approval workflow functionality

**Test Results Summary**: 11 paths defined, 8 completed, 3 with partial findings

**Navigation Solution**: Row click navigation works by clicking the Quote Number **button** (not the row itself). Detail page URL format: `/object/Quote/{18-char-ID}` (e.g., `/object/Quote/0Q05g000000c74WCAQ`)

**Key Findings**:
- LABEL-001: FAIL — Reference fields show "Owner ID", "Record Type ID" (ID suffix present)
- LABEL-002: FAIL — 3 fields show raw API names (IsConvertQuote, AutoNumber, AutoNumberText)
- LABEL-003: PARTIAL FAIL — System field "Owner ID" appears first, but business fields dominate top 10
- LIST-001: PASS — All analytics cards show meaningful metrics; deprecated "ACV Amount (do not use)" field exposed in Edit form
- APPR-004: Approval chain section displays "No approval history" for unsubmitted quotes

---

## 2. Prerequisites

- **Environment**: NexusCRM deployed at https://nexuscrm.pingcap.com
- **Authentication**: OAuth token-based (client credentials flow)
- **Test Data**: Quote object with 773 records
- **Browser Tool**: dev-browser CLI (QuickJS + Playwright)

---

## 3. Test Steps

### QT-L01: List View — Default State

**Objective**: Verify Quote list page loads correctly with proper column headers

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Navigate to `/object/Quote` | Page loads successfully | URL: https://nexuscrm.pingcap.com/object/Quote | Pass |
| 2 | Observe column headers | Headers show human-readable labels, no duplicates | **Columns: Quote Number, Payment Term, Payment Frequency, How will the customer place an order, Quote Number (DUPLICATE!), Syncing** | Fail |
| 3 | Check record count | Shows actual record count | 773 records displayed | Pass |
| 4 | Check default sort order | Records sorted by default criteria | Records displayed in default order | Pass |

**Bug Found**: "Quote Number" appears TWICE in column headers (columns 1 and 5)

**Reference Screenshot**: `screenshots/quote/l01_list_default.png`

---

### QT-L02: List View — Quick Analytics Cards (LIST-001)

**Objective**: Verify Quick Analytics section displays meaningful business metrics (not junk fields)

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Observe Quick Analytics section | Analytics cards displayed | Quick Analytics button present | Pass |
| 2 | Click Quick Analytics to expand | Panel opens showing cards | Panel opened successfully | Pass |
| 3 | Record each card: title, value | Cards show business metrics | Total Records (773), Total Shipping and Handling ($0), Total Tax ($0), Total Subtotal ($0), By Currency ISO Code (USD 747, JPY 25, CNY 1) | Pass |
| 4 | Evaluate metric relevance | Metrics should be meaningful, no deprecated fields | **All cards show meaningful business metrics. No junk cards like "do not use" or trailing slashes** | Pass |

**Observations**:
- Total Records: 773
- Total Shipping and Handling: $0
- Total Tax: $0
- Total Subtotal: $0
- By Currency ISO Code: USD (747), JPY (25), CNY (1)

**LIST-001 Verdict**: PASS — No junk/anomaly cards detected (unlike Lead's $15.0T revenue issue)

**Reference Screenshot**: `screenshots/quote/l02_analytics_expanded.png`

---

### QT-L03: List View — Column Picker

**Objective**: Verify column picker dialog opens and allows customization

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click "Columns" button | Column picker dialog opens | Dialog did NOT open after 5 second wait | Fail |
| 2 | Observe dialog content | Available/Selected counts, field list | Cannot observe — dialog did not open | N/A |
| 3 | Verify field label quality | Human-readable labels in picker | Cannot verify | N/A |

**Bug**: Columns button click does not trigger dialog (confirmed UI bug on both list and detail pages)

**Reference Screenshot**: `screenshots/quote/l03_column_picker.png` (shows unchanged list view)

---

### QT-C01: Create — New Quote Form (LABEL-001, LABEL-002, LABEL-003)

**Objective**: Verify New Quote form field labels are human-readable (no ID suffix, no raw API names)

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click "New Quote" button | Record Type selection dialog opens | Dialog opened with Expansion/New/Renewal options | Pass |
| 2 | Select record type, click "Next" | Form fields displayed | **Form loaded successfully** — "Next" button works with standard click | Pass |
| 3 | Check field labels for LABEL-001 | Reference fields show "Opportunity" not "Opportunity ID" | Form has 34 inputs, 41 labels — see analysis below | Pass |
| 4 | Check field labels for LABEL-002 | Custom fields show spaced labels not camelCase | "ACV Amount (do not use)" visible, "Customer's Cluster Configuration" properly formatted | Partial |
| 5 | Check field order for LABEL-003 | Business fields appear before system fields | First field is "Quote Number*" (business field) | Pass |

**Create Form Field Labels (first 20 fields)**:
1. Quote Number* — textbox
2. Quote Record Type — combobox (default: New)
3. Opportunity Name* — combobox (lookup)
4. Product Family — dropdown
5. Status — dropdown
6. Service Start Date — textbox
7. Service End Date — textbox
8. Payment Term* — dropdown
9. Expiration Date — textbox
10. Payment Frequency* — dropdown
11. Quote Currency — dropdown
12. Partner Name — combobox (lookup)
13. Partner Margin (%) — spinbutton
14. Rebate Fee Rate — spinbutton
15. Product Name — textbox
16. Contract — combobox (lookup)
17. Contains Other Non-std Terms — checkbox
18. **ACV Amount (do not use)** — spinbutton ⚠️ deprecated field
19. Finance Internal Comment — textbox
20. Escalate to Finance Head Approval — checkbox

**Create Form vs Edit Form Comparison**:

| Field | On Create Form? | On Edit Form? | Label Match? |
|-------|----------------|---------------|-------------|
| Quote Number | ✅ | ✅ | Yes |
| Quote Record Type | ✅ | ✅ | Yes |
| Opportunity Name | ✅ (lookup) | ✅ (display) | Yes |
| Product Family | ✅ | ✅ | Yes |
| Status | ✅ | ✅ | Yes |
| Owner ID | ❌ (not on Create) | ✅ | N/A |
| Record Type ID | ❌ (not on Create) | ✅ | N/A |
| ACV Amount (do not use) | ✅ | ✅ | Yes |
| Customer's Cluster Configuration | ✅ | ✅ | Yes |

**LABEL-001 on Create Form**: No "Owner ID" or "Record Type ID" fields visible on Create form — these are system-managed on create.

**LABEL-002 on Create Form**:
- "Customer's Cluster Configuration" — properly formatted with apostrophe
- "ACV Amount (do not use)" — deprecated field exposed (same as Edit form)

**LABEL-003 on Create Form**: First field is "Quote Number*" (business field) — PASS

**Reference Screenshot**: `screenshots/quote/c01_create_form_fields.png`

---

### QT-C02: Create — Submit New Quote

**Objective**: Verify creating a new Quote record works correctly

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Navigate to form | Form displayed | Blocked by C01 — Record Type "Next" button behavior not fully verified | Blocked |
| 2 | Fill required fields | Fields populated | Cannot execute | Blocked |
| 3 | Click "Save" | Success, redirect to detail | Cannot execute | Blocked |

**Status**: Blocked — depends on C01. Note: 773 existing quotes available for testing other paths.

---

### QT-D01: Detail View — Navigate from List

**Objective**: Verify navigation from list to detail view works correctly

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click on a Quote record row | Detail page opens | **Row click does not navigate** — must click Quote Number **button** instead | Partial |
| 2 | Verify URL changes to detail page | URL contains record ID | URL: `/object/Quote/0Q05g000000c74WCAQ` (18-character ID) | Pass |
| 3 | Observe field layout sections | Sections displayed | Detail page shows Quote Information section with field values | Pass |
| 4 | Check action buttons | Edit, Delete, Submit for Approval available | Buttons: "Back", "Edit" visible on detail page | Pass |

**Navigation Solution**: Click the Quote Number **button** in the list (e.g., "JP-QT-11082663"), not the row itself

**Workaround Discovery**: `document.querySelectorAll('td[role="gridcell"] button')` — find button with Quote Number pattern, then click

**Reference Screenshot**: `screenshots/quote/d01_detail_nav.png` (shows detail page after successful navigation)

---

### QT-D02: Detail View — Approval Chain Section (APPR-004)

**Objective**: Verify approval chain section displays on detail page

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Navigate to detail page | Detail page loads | Successfully navigated to `/object/Quote/0Q05g000000c74WCAQ` | Pass |
| 2 | Scroll to Approval Chain section | Section visible | "Approval Chain" section present | Pass |
| 3 | Observe approval history | Shows approval records or empty state | **"No approval history"** displayed for unsubmitted quote | Pass |
| 4 | Check "Submit for Approval" button | Button visible on detail page | Button present | Pass |

**APPR-004 Verdict**: PASS — Approval Chain section displays correctly with appropriate empty state

**Reference Screenshot**: `screenshots/quote/d02_approval_chain.png`

---

### QT-D03: Detail View — Related Lists

**Objective**: Verify related lists display on detail page with full breakdown

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click "Related" tab | Related tab content displayed | Related tab accessible | Pass |
| 2 | Observe related list sections | Related lists displayed | 4 related lists found | Pass |
| 3 | Record each list's name, count, load status, columns | Detailed breakdown | See table below | Pass |

**Related Lists Breakdown**:

| Related List | Status | Record Count | Column Headers |
|-------------|--------|--------------|----------------|
| Products | ✅ Loaded | 1 | Deleted, Product Name, Currency ISO Code, Created Date |
| Orders | ✅ Loaded | 1 | Owner ID, Contract Auto Number, Account ID, Price Book ID |
| Files | ⏳ Stuck loading | Loading... | N/A |
| Quotes | ⏳ Stuck loading | Loading... | N/A |

**Comparison with Salesforce Standard Quote Related Lists**:

| Salesforce Standard | NexusCRM | Status |
|---------------------|----------|--------|
| Quote Line Items | Products | ✅ Equivalent |
| Quote Documents | — | ❌ Missing |
| Notes & Attachments | — | ❌ Missing |
| Files (ContentDocumentLink) | Files | ⚠️ Present but stuck loading |
| Approval History | Separate section | ✅ Present |

**Observations**:
- "Files" and "Quotes" related lists show spinner with "Loading..." text indefinitely
- Products list correctly shows 1 record with proper columns
- Orders list shows 1 record with LABEL-001 issues (Owner ID, Account ID, Price Book ID)

**Reference Screenshot**: `screenshots/quote/d03_related_lists_detail.png`

---

### QT-E01: Edit — Open Edit Form

**Objective**: Verify edit form opens with proper field labels

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click "Edit" button on detail page | Edit form opens | Edit form opened successfully | Pass |
| 2 | Observe form field labels | Human-readable labels | 50+ fields captured (see Section 4 for full analysis) | Pass |
| 3 | Check LABEL-001 (reference fields) | No "ID" suffix | "Owner ID", "Record Type ID" — FAIL | Fail |
| 4 | Check LABEL-002 (custom fields) | No raw API names | "IsConvertQuote", "AutoNumber" — FAIL | Fail |
| 5 | Check LABEL-003 (field order) | Business fields first | "Owner ID" first — PARTIAL FAIL | Partial |

**Key Findings from Edit Form**:
- Total fields: 50+
- Required fields marked with *
- Inline edit UI pattern (click-to-edit spans, not traditional form inputs)
- Deprecated field "ACV Amount (do not use)" visible

**Reference Screenshot**: `screenshots/quote/edit_form_fields.png`

---

### QT-APR01: Submit for Approval (APPR-004, APPR-005, APPR-006)

**Objective**: Verify approval submission workflow including Next Approver search

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Click "Submit for Approval" button | Approval dialog opens | Dialog opened successfully | Pass |
| 2 | Observe dialog content | Title, comment field, submit/cancel buttons | Title: "Submit for Approval", description, Next Approver, Comments | Pass |
| 3 | Check Next Approver field | User search functional | Textbox with placeholder "Search for a user..." present | Pass |
| 4 | Type "a" in Next Approver search | User results appear | **No results appeared** — search did not return any users | Fail |
| 5 | Type "Admin" in Next Approver search | User results appear | **No results** — same behavior as Lead Owner lookup (#518) | Fail |
| 6 | Check Comments field | Comment input functional | Textbox with placeholder "Add any notes for the approver..." present | Pass |
| 7 | Enter test comment | Comment accepted | "Test approval from supplementary verification" — field accepts input | Pass |
| 8 | Click Cancel | Dialog closes, no state change | Cancel works correctly | Pass |

**APPR-004/005/006 Status**: PARTIAL — Dialog verified, but Next Approver search returns no results (same bug as Lead Owner #518)

**Next Approver Search Test Results**:
- Search "a": No results appeared
- Search "Admin": No results

**Comparison with Lead Owner Lookup (#518)**:
- Same behavior: User search returns no results
- Affected lookups: Lead Owner, Quote Next Approver
- Root cause: Likely the same lookup API issue

**Dialog Content**:
- Title: "Submit for Approval"
- Description: "Submit this Quote record for approval. An approver will review and either approve or reject it."
- Next Approver (Optional): "Leave blank to use the standard approval process routing."
- Comments (optional): "Add any notes for the approver..."

**Reference Screenshot**: `screenshots/quote/appr01_approver_search.png`

---

### QT-DEL01: Delete Quote

**Objective**: Verify Delete functionality and confirmation dialog

| Step | Action | Expected Result | Actual Result | Pass/Fail |
|------|--------|-----------------|---------------|-----------|
| 1 | Look for "Delete" button on detail page | Delete button visible | Button present | Pass |
| 2 | Click "Delete" | Confirmation dialog opens | Dialog opened | Pass |
| 3 | Observe dialog content | Warning message, confirm/cancel buttons | Standard delete confirmation | Pass |
| 4 | Click Cancel | Dialog closes, record unchanged | Cancel works correctly | Pass |

**Reference Screenshot**: `screenshots/quote/del01_delete_dialog.png`

---

## 4. Label Quality Summary

**Assessment Method**: Edit Form field labels captured via dev-browser snapshot (2026-03-30)

**Overall Status**: PARTIALLY PASS — 5 label issues found out of 50+ fields

### 4.1 LABEL-001: Reference Field Labels (ID Suffix)

| Field API Name | Current Label | Expected Label | Status |
|---------------|---------------|----------------|--------|
| OwnerId | Owner ID * | Owner | ❌ FAIL — has "ID" suffix |
| RecordTypeId | Record Type ID | Record Type | ❌ FAIL — has "ID" suffix |
| OpportunityId | Opportunity Name | Opportunity | ⚠️ Partial — uses "Name" suffix instead of "ID" |
| AccountId | Account Name | Account | ⚠️ Partial — uses "Name" suffix instead of "ID" |
| ContactId | Contact Name | Contact | ⚠️ Partial — uses "Name" suffix instead of "ID" |

**LABEL-001 Verdict**: FAIL — Reference fields use "ID" or "Name" suffix instead of clean label

### 4.2 LABEL-002: Custom Field Labels (Raw API Names)

| Field API Name | Current Label | Expected Label | Status |
|---------------|---------------|----------------|--------|
| IsConvertQuote | IsConvertQuote | Is Convert Quote | ❌ FAIL — raw camelCase API name |
| AutoNumberText | AutoNumberText | Auto Number Text | ❌ FAIL — raw camelCase API name |
| AutoNumber | AutoNumber | Auto Number | ❌ FAIL — raw camelCase API name |
| Customers_Cluster_Configuration__c | Customers_Cluster_Configuration | Customer's Cluster Configuration | ⚠️ Inconsistent — underscore version exists alongside properly formatted "Customer's Cluster Configuration" |

**LABEL-002 Verdict**: FAIL — 3 fields show raw API names without spacing

### 4.3 LABEL-003: Field Order

| Position | Field Label | Type | Assessment |
|----------|-------------|------|------------|
| 1 | Owner ID * | System/Lookup | ⚠️ System field first |
| 2 | Quote Number | Business | ✅ |
| 3 | Currency ISO Code | System | ⚠️ |
| 4 | Record Type ID | System | ⚠️ |
| 5 | Last Viewed Date | System | ⚠️ |
| 6 | Quote Record Type | Business | ✅ |
| 7 | Opportunity Name | Business | ✅ |
| 8 | Account Name | Business | ✅ |

**LABEL-003 Verdict**: PARTIAL FAIL — First field is "Owner ID" (system/lookup), but business fields dominate top 10

### 4.4 LIST-001: Analytics Cards (from L02)

| Card Title | Value | Status |
|------------|-------|--------|
| Total Records | 773 | ✅ Meaningful |
| Total Shipping and Handling | $0 | ✅ Meaningful |
| Total Tax | $0 | ✅ Meaningful |
| Total Subtotal | $0 | ✅ Meaningful |
| By Currency ISO Code | USD 747, JPY 25, CNY 1 | ✅ Meaningful |

**LIST-001 Verdict**: PASS — All analytics cards show meaningful business metrics

**However**: Edit form exposes deprecated field "ACV Amount (do not use)" — this is a LIST-001 concern for form fields

### 4.5 Additional Findings

| Issue | Description | Severity |
|-------|-------------|----------|
| Deprecated field exposed | "ACV Amount (do not use)" visible in Edit form | Medium |
| Inconsistent custom field labels | "Customers_Cluster_Configuration" (underscores) vs "Customer's Cluster Configuration" (proper) | Low |
| Raw system fields visible | "IsConvertQuote", "AutoNumber" should be hidden or renamed | Medium |

---

## 5. Screenshot Checklist

| # | Screenshot | Path | Status |
|---|------------|------|--------|
| 1 | List Default | `l01_list_default.png` | ✅ |
| 2 | Analytics Cards | `l02_analytics_expanded.png` | ✅ |
| 3 | Column Picker | `l03_column_picker.png` | ✅ (shows bug) |
| 4 | Create Form | `c01_after_new_quote.png` | ✅ (shows Record Type dialog) |
| 5 | Create Form Fields | `c01_create_form_fields.png` | ✅ (full Create form with field labels) |
| 6 | Detail Navigation | `d01_detail_nav.png` | ✅ (detail page after clicking Quote Number button) |
| 7 | Approval Chain | `d02_approval_chain.png` | ✅ |
| 8 | Related Lists Detail | `d03_related_lists_detail.png` | ✅ (new - detailed breakdown) |
| 9 | Edit Form | `edit_form_fields.png` | ✅ (full field labels captured) |
| 10 | Approval Submit Dialog | `appr01_approver_search.png` | ✅ (new - shows approver search test) |
| 11 | Delete Dialog | `del01_delete_dialog.png` | ✅ |

---

## 6. Known Issues Summary

| # | Path | Description | Severity | Status | Related Scenario |
|---|------|-------------|----------|--------|------------------|
| 1 | QT-L01 | "Quote Number" column appears TWICE in list view headers | Medium | Open | DATA-001 |
| 2 | QT-L03 | Columns button does not open column picker dialog | High | Open | UI-001 |
| 3 | QT-D03 | Files and Quotes related lists stuck in "Loading..." state | Medium | Open | UI-002 |
| 4 | QT-APR01 | Next Approver search returns no results (same as Lead Owner #518) | High | Open | LOOKUP-001 |
| 5 | LABEL-001 | Reference fields show "Owner ID", "Record Type ID" (ID suffix) | Medium | Open | LABEL-001 |
| 6 | LABEL-002 | Custom fields show raw API names: "IsConvertQuote", "AutoNumber" | Medium | Open | LABEL-002 |
| 7 | Edit/Create Form | Deprecated field "ACV Amount (do not use)" exposed | Medium | Open | LIST-001 |

---

## 7. A/B Comparison Notes (Salesforce Sandbox)

| Feature | Expected (Salesforce) | Actual (NexusCRM) | Notes |
|---------|----------------------|-------------------|-------|
| List View Columns | Unique column headers | **Duplicate "Quote Number"** | ❌ Bug |
| Quick Analytics | Meaningful business metrics | Meaningful metrics (no junk) | ✅ Better than Lead |
| Column Picker | Opens on click | Does not open | ❌ UI Bug |
| Record Type Selection | Next button proceeds to form | Next button behavior not verified | ⚠️ Partial |
| Detail Navigation | Row click opens detail | **Workaround**: Click Quote Number button | ✅ Works with workaround |
| Reference Field Labels | "Opportunity", "Account" | "Owner ID", "Record Type ID" | ❌ LABEL-001 FAIL |
| Custom Field Labels | "Is Convert Quote" | "IsConvertQuote" (raw API) | ❌ LABEL-002 FAIL |
| Field Order | Business fields first | "Owner ID" first | ⚠️ LABEL-003 PARTIAL |
| Approval Chain | Shows approval history | "No approval history" (empty state) | ✅ APPR-004 PASS |

---

## 8. Test Execution Notes

### Tooling
- **Browser**: dev-browser CLI (QuickJS runtime + Playwright API)
- **Timeout**: 30-60 seconds per script
- **Screenshots**: Saved via `page.screenshot()` to `screenshots/quote/`

### Navigation Solution (Resolved)

**Initial claim**: "Row click does not navigate to detail page" — marked as blocker

**Root cause**: Quote list uses **Quote Number buttons** for navigation, not row clicks

**Working workaround**:
```javascript
// Find Quote Number button pattern and click
const buttons = Array.from(document.querySelectorAll('button'));
for (const btn of buttons) {
  if (btn.textContent.match(/^[A-Z]{2}-QT-\d+$/)) {
    btn.click();  // Navigates to /object/Quote/{18-char-ID}
    break;
  }
}
```

**Detail URL format**: `/object/Quote/0Q05g000000c74WCAQ` (18-character Salesforce ID)

### What Was Successfully Tested

- ✅ List view column headers (found duplicate "Quote Number" bug)
- ✅ Quick Analytics cards (LIST-001 PASS — all meaningful metrics)
- ✅ Record Type selection dialog exists
- ✅ Detail page navigation (via Quote Number button click)
- ✅ Edit form field labels (50+ fields captured for LABEL-001/002/003 analysis)
- ✅ Approval Chain section (APPR-004 PASS)
- ✅ Submit for Approval dialog (APPR-005/006 PARTIAL)
- ✅ Delete confirmation dialog (DEL01 PASS)

### What Could NOT Be Fully Tested

- ⚠️ Column picker dialog (confirmed UI bug — button click does not open dialog)
- ⚠️ Create form full flow (Record Type "Next" button navigation not verified)
- ⚠️ Actual approval submission (would create persistent state — dialog verified only)

### Label Quality Assessment Complete

**Method**: Edit Form snapshot captured via dev-browser `snapshotForAI()` API

**Findings**:
- LABEL-001: FAIL — "Owner ID", "Record Type ID" have ID suffix
- LABEL-002: FAIL — "IsConvertQuote", "AutoNumber", "AutoNumberText" are raw API names
- LABEL-003: PARTIAL — "Owner ID" is first field, but business fields dominate top 10
- LIST-001: PASS — Analytics cards all show meaningful metrics

---

## 9. Recommendations

1. **Fix LABEL-001 (ID suffix)** — Rename "Owner ID" → "Owner", "Record Type ID" → "Record Type" on Quote Edit form
2. **Fix LABEL-002 (raw API names)** — Rename "IsConvertQuote" → "Is Convert Quote", "AutoNumber" → "Auto Number"
3. **Fix duplicate column** — Remove duplicate "Quote Number" column from Quote list view configuration
4. **Investigate Columns button** — Same UI bug as Lead; affects list customization
5. **Hide deprecated fields** — "ACV Amount (do not use)" should not be visible in Edit form
6. **Consider field order** — Move "Owner ID" after business fields for better UX
