# Explore: Quote Object — All Operations

> **Goal**: Deep exploration of Quote — the primary object for LABEL-001~003, LIST-001, APPR-004~006 scenarios. Quote is central to approval workflows and has the most label quality issues.

## Status: COMPLETE (2026-03-30)

**Test Environment Note**: dev-browser QuickJS sandbox with logged-in browser session (nexuscrm2)

**Navigation Breakthrough**: Detail page navigation works by clicking the **Quote Number button** (not row click). URL format: `/object/Quote/{18-char-ID}`

---

## Results

| Path | Status | Screenshot | Observations |
|------|--------|------------|--------------|
| QT-L01 | ✅ Complete | `l01_list_default.png` | List has **773 records**. Columns: Quote Number, Payment Term, Payment Frequency, How will the customer place an order, **Quote Number (DUPLICATE)**, Syncing. **BUG**: "Quote Number" appears twice. |
| QT-L02 | ✅ Complete | `l02_analytics_expanded.png` | Analytics cards: 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: PASS** — all meaningful metrics. |
| QT-L03 | ⚠️ Confirmed Bug | `l03_column_picker.png` | **Columns button click does not open dialog** — confirmed on both list and detail pages. This is an actual UI bug, not test failure. |
| QT-C01 | ⚠️ Partial | `c01_after_new_quote.png` | Record Type selection dialog works (Expansion/New/Renewal). "Next" button navigation not fully verified. Label assessment done via E01 Edit form instead. |
| QT-C02 | ❌ Skipped | - | Not critical — 773 existing quotes available for testing. Create flow not needed for label assessment. |
| QT-D01 | ✅ Complete | `d01_detail_nav.png` | **Navigation works via Quote Number button click**. URL: `/object/Quote/0Q05g000000c74WCAQ`. Row click doesn't work, but button click does. |
| QT-D02 | ✅ Complete | `d02_approval_chain.png` | Approval Chain section shows "No approval history" for unsubmitted quote. **APPR-004: PASS** |
| QT-D03 | ✅ Complete | `d03_related_lists.png` | Related lists display correctly on detail page. |
| QT-E01 | ✅ Complete | `edit_form_fields.png` | Edit form captured with 50+ field labels. Full LABEL-001/002/003 assessment completed (see Label Quality Summary). |
| QT-APR01 | ✅ Partial | `appr01_submit_dialog.png` | Submit for Approval dialog opens correctly. Comment field works. Actual submission not executed (would create persistent state). |
| QT-DEL01 | ✅ Complete | `del01_delete_dialog.png` | Delete button opens confirmation dialog. Cancel works correctly. |

**Summary**: 8/11 Complete, 2/11 Partial, 1/11 Skipped (non-blocking)

---

## Label Quality Summary

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

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

| 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 |
| AccountId | Account Name | Account | ⚠️ Partial — uses "Name" suffix |

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

| Field API Name | Current Label | Expected Label | Status |
|---------------|---------------|----------------|--------|
| IsConvertQuote | IsConvertQuote | Is Convert Quote | ❌ FAIL — raw camelCase |
| AutoNumberText | AutoNumberText | Auto Number Text | ❌ FAIL — raw camelCase |
| AutoNumber | AutoNumber | Auto Number | ❌ FAIL — raw camelCase |

### LABEL-003: Field Order — PARTIAL FAIL

| 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 | ⚠️ |

### LIST-001: Analytics Cards — PASS

| 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 |

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

---

## Bugs Found

| # | Path | Description | Severity | Related Scenario |
|---|------|-------------|----------|------------------|
| 1 | QT-L01 | "Quote Number" column appears TWICE in list view headers | Medium | DATA-001 |
| 2 | QT-L03 | Columns button click does not open column picker dialog | High | UI-001 |
| 3 | QT-C01 | Record Type dialog "Next" button navigation not verified | Medium | UI-001 |
| 4 | QT-D01 | Row click does not navigate — Quote Number button workaround works | Low | Resolved |
| 5 | LABEL-001 | Reference fields show "Owner ID", "Record Type ID" (ID suffix) | Medium | LABEL-001 |
| 6 | LABEL-002 | Custom fields show raw API names: "IsConvertQuote", "AutoNumber" | Medium | LABEL-002 |
| 7 | Edit Form | Deprecated field "ACV Amount (do not use)" exposed | Medium | LIST-001 |

---

## Navigation Solution

**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)

---

## Operation Paths (Reference)

### QT-L01: List View — Default State
- **URL**: `/object/Quote`
- **Actions**: Observe list view
- **Capture**:
  - Columns: Quote Number, Payment Term, Payment Frequency, How will the customer place an order, Quote Number(dup!), Syncing
  - Record count: 773
- **[SCREENSHOT]** `quote/l01_list_default.png`

### QT-L02: List View — Quick Analytics Cards (LIST-001)
- **URL**: `/object/Quote`
- **Actions**: Click Quick Analytics, observe cards
- **Capture**:
  - Total Records (773)
  - Total Shipping and Handling ($0)
  - Total Tax ($0)
  - Total Subtotal ($0)
  - By Currency ISO Code (USD 747, JPY 25, CNY 1)
- **[SCREENSHOT]** `quote/l02_analytics_expanded.png`
- **Check**: LIST-001 — cards are GOOD (no junk metrics)

### QT-L03: List View — Column Picker
- **URL**: `/object/Quote`
- **Actions**: Click "Columns", observe dialog
- **[SCREENSHOT]** `quote/l03_column_picker.png`

### QT-C01: Create — New Quote Form (LABEL-001, LABEL-002, LABEL-003)
- **URL**: `/object/Quote` → "New Quote"
- **Actions**: Select record type, observe form fields
- **[SCREENSHOT]** `quote/c01_after_new_quote.png`

### QT-C02: Create — Fill and Submit
- **[SCREENSHOT]** Skipped — 773 existing records available

### QT-D01: Detail View — Field Layout
- **[SCREENSHOT]** `quote/d01_detail_nav.png`

### QT-D02: Detail View — Approval Chain Section (APPR-004)
- **[SCREENSHOT]** `quote/d02_approval_chain.png`

### QT-D03: Detail — Related Lists
- **[SCREENSHOT]** `quote/d03_related_lists.png`

### QT-E01: Edit Form
- **[SCREENSHOT]** `quote/edit_form_fields.png`

### QT-APR01: Submit for Approval
- **[SCREENSHOT]** `quote/appr01_submit_dialog.png`

### QT-DEL01: Delete Quote
- **[SCREENSHOT]** `quote/del01_delete_dialog.png`

---

## Summary: Test Coverage

**What WAS tested successfully**:
- ✅ List view column headers (found duplicate "Quote Number")
- ✅ Quick Analytics cards (LIST-001: PASS - all cards show 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
- 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
