mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-07-30 03:09:50 +08:00
* Migrating Core Salesforce Skills * Updating pr comments * updat reference * Updating a skill * Migrating Datacloud skills * Migrating Industries cloud skills * Validating - skills fixing --------- Co-authored-by: Sandip Kumar Yadav <sandipkumar.yadav+sfemu@salesforce.com>
10 KiB
10 KiB
Quote & Order Data Model Template
Pre-built data model for Salesforce Quotes and Orders using flowchart LR format with color coding and relationship indicators.
Objects Included
| Object | Type | Description |
|---|---|---|
| Opportunity | STD | Sales deals |
| Quote | STD | Price quotes |
| QuoteLineItem | STD | Quote products |
| Order | STD | Customer orders |
| OrderItem | STD | Order products |
| Product2 | STD | Product catalog |
| PricebookEntry | STD | Product prices |
| Pricebook2 | STD | Price lists |
| Contract | STD | Customer contracts |
Query Org Metadata (Recommended)
Enrich diagram with live org data:
python3 ~/.claude/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py \
--objects Opportunity,Quote,QuoteLineItem,Order,OrderItem,Product2,Contract \
--target-org myorg
Mermaid Template (Preferred)
Left-to-right flowchart with color coding.
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
%% ═══════════════════════════════════════════════════════════════
%% QUOTE & ORDER DATA MODEL
%% LEGEND: LK = Lookup (-->), MD = Master-Detail (==>)
%% Colors: Blue = Standard, Orange = Custom, Green = External
%% ═══════════════════════════════════════════════════════════════
%% Product Catalog
Pricebook2["Pricebook2<br/>(count)"]
Product2["Product2<br/>(count)"]
PBE["PricebookEntry<br/>(count)"]
%% Quote Objects
Opportunity["Opportunity<br/>(count)"]
Quote["Quote<br/>(count)"]
QLI["QuoteLineItem<br/>(count)"]
%% Order Objects
Order["Order<br/>(count)"]
OrderItem["OrderItem<br/>(count)"]
Contract["Contract<br/>(count)"]
%% Account
Account["Account<br/>(count)"]
%% Product Catalog Relationships
Pricebook2 ==>|"MD"| PBE
Product2 -->|"LK"| PBE
%% Quote Relationships
Opportunity ==>|"MD"| Quote
Quote ==>|"MD"| QLI
PBE -->|"LK"| QLI
Product2 -->|"LK"| QLI
Pricebook2 -->|"LK"| Quote
%% Order Relationships
Account -->|"LK"| Order
Contract -->|"LK"| Order
Quote -->|"LK"| Order
Order ==>|"MD"| OrderItem
PBE -->|"LK"| OrderItem
Product2 -->|"LK"| OrderItem
Pricebook2 -->|"LK"| Order
%% Contract
Account -->|"LK"| Contract
%% Standard Objects - Sky Blue
style Pricebook2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Product2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
style PBE fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Opportunity fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Quote fill:#bae6fd,stroke:#0369a1,color:#1f2937
style QLI fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Order fill:#bae6fd,stroke:#0369a1,color:#1f2937
style OrderItem fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Contract fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
Key Concepts
Quote-to-Cash Flow
Opportunity → Quote → Order → Invoice → Payment
↓ ↓ ↓
OLI QLI OrderItem
Synced Quote
- One Quote per Opportunity can be marked as Synced
- Synced Quote copies line items to OpportunityLineItems
IsSyncing = trueon Synced Quote
Quote to Order Conversion
| Action | Result |
|---|---|
| Create Order from Quote | Creates Order + OrderItems |
| Quote.OrderId | Links Quote to created Order |
| Reduction Orders | Negative quantity adjustments |
Pricebook Structure
Pricebook2 (Standard + Custom)
↓
PricebookEntry (Product + Price per Pricebook)
↓
Product2 (Catalog)
Simplified Version (Core Flow)
For presentations focusing on Quote-to-Order flow:
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
Opportunity["Opportunity"]
Quote["Quote"]
Order["Order"]
Contract["Contract"]
Opportunity ==>|"MD"| Quote
Quote -->|"creates"| Order
Contract -->|"LK"| Order
style Opportunity fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Quote fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Order fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Contract fill:#bae6fd,stroke:#0369a1,color:#1f2937
Product Catalog Detail
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
Pricebook2["Pricebook2<br/>(Standard + Custom)"]
Product2["Product2<br/>(Catalog)"]
PBE["PricebookEntry<br/>(Price per Book)"]
Pricebook2 ==>|"MD"| PBE
Product2 -->|"LK"| PBE
style Pricebook2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Product2 fill:#bae6fd,stroke:#0369a1,color:#1f2937
style PBE fill:#bae6fd,stroke:#0369a1,color:#1f2937
ASCII Fallback
┌─────────────────────────────────────────────────────────────────────────────┐
│ QUOTE & ORDER DATA MODEL (L→R) │
│ Legend: LK = Lookup (-->), MD = Master-Detail (==>) │
└─────────────────────────────────────────────────────────────────────────────┘
PRODUCT CATALOG QUOTE FLOW
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ PRICEBOOK2 │═══ MD ═>│ PRICEBOOKENTRY │ │ OPPORTUNITY │
│ (count) │ │ (count) │ │ (count) │
└──────────────┘ └────────┬────────┘ └──────┬───────┘
│ │ MD
│ LK ▼
┌──────────────┐ │ ┌──────────────┐
│ PRODUCT2 │─────── LK ───────┤ │ QUOTE │
│ (count) │ │ │ (count) │
└──────────────┘ │ └──────┬───────┘
│ │ │ MD
│ │ ▼
│ │ ┌──────────────┐
└────────── LK ────────────┼─────────────────>│QUOTELINEITEM │
└─────── LK ──────>│ (count) │
└──────────────┘
ORDER FLOW
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ ACCOUNT │── LK ──>│ ORDER │═══ MD ═>│ ORDERITEM │
│ (count) │ │ (count) │ │ (count) │
└──────────────┘ └──────┬───────┘ └──────────────┘
│
┌──────────────┐ │
│ CONTRACT │────── LK ──────┘
│ (count) │
└──────────────┘
Key Relationships Summary
| Parent | Child | Type | Behavior |
|---|---|---|---|
| Opportunity | Quote | MD | Cascade delete |
| Quote | QuoteLineItem | MD | Cascade delete |
| Order | OrderItem | MD | Cascade delete |
| Pricebook2 | PricebookEntry | MD | Cascade delete |
| Product2 | PricebookEntry | LK | Product reference |
| PricebookEntry | QuoteLineItem | LK | Price reference |
| PricebookEntry | OrderItem | LK | Price reference |
| Account | Order | LK | Customer |
| Contract | Order | LK | Contract reference |
| Quote | Order | LK | Source quote |
Limits & Considerations
| Limit | Value |
|---|---|
| Quotes per Opportunity | Unlimited (1 synced) |
| QuoteLineItems per Quote | 200 (configurable) |
| Orders per Account | Unlimited |
| OrderItems per Order | 200 (configurable) |
| Custom Pricebooks | Unlimited |
| Products | 5 million (LDV) |
Contract-Based Orders
For orgs using Contracts with Orders:
%%{init: {"flowchart": {"nodeSpacing": 50, "rankSpacing": 80}} }%%
flowchart LR
Account["Account"]
Contract["Contract"]
Order["Order"]
ReductionOrder["Order<br/>(Reduction)"]
Account -->|"LK"| Contract
Contract -->|"LK"| Order
Order -.->|"reduces"| ReductionOrder
style Account fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Contract fill:#bae6fd,stroke:#0369a1,color:#1f2937
style Order fill:#bae6fd,stroke:#0369a1,color:#1f2937
style ReductionOrder fill:#bae6fd,stroke:#0369a1,color:#1f2937
Best Practices
- Use
flowchart LR- Left-to-right flow for readability - Keep objects simple - Name + record count only
- Replace
(count)placeholders - With actual counts from query - Add LDV indicator - For objects >2M records:
LDV[~4M] - Color code object types - Blue=Standard, Orange=Custom, Green=External