497 lines
13 KiB
Markdown
497 lines
13 KiB
Markdown
# Salesforce Product2 Setup - Complete Portal Structure
|
|
|
|
This document covers the simplified product structure for Internet, SIM, and VPN services.
|
|
|
|
## Core Custom Fields Required on Product2
|
|
|
|
```sql
|
|
-- Core Fields (All Products)
|
|
SKU__c (Text, 255) - Product identifier
|
|
Portal_Category__c (Picklist) - "Internet", "SIM", "VPN", "Other"
|
|
Portal_Visible__c (Checkbox) - Show in catalog
|
|
Item_Class__c (Picklist) - "Service", "Install", "Add-on", "Activation"
|
|
WHMCS_Product_Id__c (Number, 18, 0) - WHMCS Product ID (nullable for configured products)
|
|
|
|
-- Internet Fields
|
|
Internet_Plan_Tier__c (Picklist) - "Silver", "Gold", "Platinum"
|
|
Internet_Offering_Type__c (Picklist) - "Home 1G", "Home 10G", "Apartment 1G", "Apartment 100M"
|
|
Internet_Requires_Configuration__c (Checkbox) - true for Platinum/Gold, false for Silver
|
|
Internet_Monthly_Price__c (Currency) - Base monthly price
|
|
Internet_Display_Order__c (Number, 18, 0) - UI sorting
|
|
|
|
-- SIM Fields
|
|
SIM_Data_Size__c (Text, 50) - "5GB", "10GB", "25GB", "30GB", "50GB", "Voice-Only"
|
|
SIM_Plan_Type__c (Picklist) - "Data-only", "Data+SMS", "Data+Voice", "Voice-Only", "Add-on"
|
|
SIM_Has_Family_Discount__c (Checkbox) - true/false
|
|
SIM_Display_Order__c (Number, 18, 0) - for sorting in UI
|
|
|
|
-- VPN Fields (Optional)
|
|
VPN_Region__c (Text, 50) - "USA", "UK", "Global"
|
|
VPN_Display_Order__c (Number, 18, 0) - UI sorting
|
|
```
|
|
|
|
## Internet Products (Simplified Structure)
|
|
|
|
### Service Plans (Customer Selects Tier)
|
|
```
|
|
-- Silver Plan (Customer Configures Access Mode)
|
|
Name: "Internet Silver Plan"
|
|
SKU__c: "INTERNET-SILVER"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
Internet_Plan_Tier__c: "Silver"
|
|
Internet_Offering_Type__c: "Apartment 1G"
|
|
Internet_Requires_Configuration__c: false
|
|
Internet_Monthly_Price__c: 4800
|
|
Internet_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 184
|
|
|
|
-- Gold Plan (Salesforce Configures)
|
|
Name: "Internet Gold Plan"
|
|
SKU__c: "INTERNET-GOLD"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
Internet_Plan_Tier__c: "Gold"
|
|
Internet_Offering_Type__c: "Apartment 1G"
|
|
Internet_Requires_Configuration__c: true
|
|
Internet_Monthly_Price__c: 4900
|
|
Internet_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: null -- Salesforce will provide
|
|
|
|
-- Platinum Plan (Salesforce Configures)
|
|
Name: "Internet Platinum Plan"
|
|
SKU__c: "INTERNET-PLATINUM"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
Internet_Plan_Tier__c: "Platinum"
|
|
Internet_Offering_Type__c: "Apartment 1G"
|
|
Internet_Requires_Configuration__c: true
|
|
Internet_Monthly_Price__c: 5300
|
|
Internet_Display_Order__c: 3
|
|
WHMCS_Product_Id__c: null -- Salesforce will provide
|
|
```
|
|
|
|
### Installation Products (Hidden from Catalog)
|
|
```
|
|
-- Single Payment Installation
|
|
Name: "Internet Installation (Single Payment)"
|
|
SKU__c: "INTERNET-INSTALL-SINGLE"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Install"
|
|
Internet_Monthly_Price__c: 22800 -- One-time price
|
|
WHMCS_Product_Id__c: 242
|
|
|
|
-- 12-Month Installation
|
|
Name: "Internet Installation (12-Month)"
|
|
SKU__c: "INTERNET-INSTALL-12M"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Install"
|
|
Internet_Monthly_Price__c: 1900
|
|
WHMCS_Product_Id__c: 243
|
|
|
|
-- 24-Month Installation
|
|
Name: "Internet Installation (24-Month)"
|
|
SKU__c: "INTERNET-INSTALL-24M"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Install"
|
|
Internet_Monthly_Price__c: 950
|
|
WHMCS_Product_Id__c: 244
|
|
|
|
-- Weekend Installation Add-on
|
|
Name: "Internet Weekend Installation"
|
|
SKU__c: "INTERNET-INSTALL-WEEKEND"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
Internet_Monthly_Price__c: 3000 -- One-time price
|
|
WHMCS_Product_Id__c: 245
|
|
```
|
|
|
|
### Optional Add-ons
|
|
```
|
|
-- Home Phone Service
|
|
Name: "Hikari Denwa (Home Phone)"
|
|
SKU__c: "INTERNET-ADDON-HOME-PHONE"
|
|
Portal_Category__c: "Internet"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
Internet_Monthly_Price__c: 450
|
|
WHMCS_Product_Id__c: 246
|
|
```
|
|
|
|
## SIM Products
|
|
|
|
### Main Service Plans (Portal_Visible__c = true)
|
|
|
|
### Data-only Plans
|
|
```
|
|
Name: "SIM Data-only 5GB"
|
|
SKU__c: "SIM-DATA-ONLY-5GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "5GB"
|
|
SIM_Plan_Type__c: "Data-only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 97
|
|
|
|
Name: "SIM Data-only 10GB"
|
|
SKU__c: "SIM-DATA-ONLY-10GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "10GB"
|
|
SIM_Plan_Type__c: "Data-only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: 219
|
|
|
|
Name: "SIM Data-only 25GB"
|
|
SKU__c: "SIM-DATA-ONLY-25GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "25GB"
|
|
SIM_Plan_Type__c: "Data-only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 3
|
|
WHMCS_Product_Id__c: 248
|
|
|
|
Name: "SIM Data-only 30GB (3GB/3days)"
|
|
SKU__c: "SIM-DATA-ONLY-30GB-3DAY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "30GB"
|
|
SIM_Plan_Type__c: "Data-only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 4
|
|
WHMCS_Product_Id__c: 98
|
|
|
|
Name: "SIM Data-only 50GB"
|
|
SKU__c: "SIM-DATA-ONLY-50GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "50GB"
|
|
SIM_Plan_Type__c: "Data-only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 5
|
|
WHMCS_Product_Id__c: 252
|
|
```
|
|
|
|
### Data+SMS Plans
|
|
```
|
|
Name: "SIM Data+SMS 5GB"
|
|
SKU__c: "SIM-DATA-SMS-5GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "5GB"
|
|
SIM_Plan_Type__c: "Data+SMS"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 104
|
|
|
|
Name: "SIM Data+SMS 10GB"
|
|
SKU__c: "SIM-DATA-SMS-10GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "10GB"
|
|
SIM_Plan_Type__c: "Data+SMS"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: 218
|
|
|
|
Name: "SIM Data+SMS 30GB (3GB/3days)"
|
|
SKU__c: "SIM-DATA-SMS-30GB-3DAY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "30GB"
|
|
SIM_Plan_Type__c: "Data+SMS"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 4
|
|
WHMCS_Product_Id__c: 106
|
|
```
|
|
|
|
### Data+Voice Plans (Regular)
|
|
```
|
|
Name: "SIM Data+Voice 5GB"
|
|
SKU__c: "SIM-DATA-VOICE-5GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "5GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 105
|
|
|
|
Name: "SIM Data+Voice 10GB"
|
|
SKU__c: "SIM-DATA-VOICE-10GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "10GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: 216
|
|
|
|
Name: "SIM Data+Voice 25GB"
|
|
SKU__c: "SIM-DATA-VOICE-25GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "25GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 3
|
|
WHMCS_Product_Id__c: 247
|
|
|
|
Name: "SIM Data+Voice 30GB (3GB/3days)"
|
|
SKU__c: "SIM-DATA-VOICE-30GB-3DAY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "30GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 4
|
|
WHMCS_Product_Id__c: 107
|
|
|
|
Name: "SIM Data+Voice 50GB"
|
|
SKU__c: "SIM-DATA-VOICE-50GB"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "50GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 5
|
|
WHMCS_Product_Id__c: 250
|
|
```
|
|
|
|
### Voice-Only Plan
|
|
```
|
|
Name: "SIM Voice-Only"
|
|
SKU__c: "SIM-VOICE-ONLY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "Voice-Only"
|
|
SIM_Plan_Type__c: "Voice-Only"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 0
|
|
WHMCS_Product_Id__c: 142
|
|
```
|
|
|
|
## Family Discount Plans (Portal_Visible__c = false)
|
|
|
|
These are used automatically when customer has existing SIM:
|
|
|
|
### Data+Voice Family Discount Plans
|
|
```
|
|
Name: "SIM Data+Voice 5GB (Family Discount)"
|
|
SKU__c: "SIM-DATA-VOICE-5GB-FAMILY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "5GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: true
|
|
SIM_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 108
|
|
|
|
Name: "SIM Data+Voice 10GB (Family Discount)"
|
|
SKU__c: "SIM-DATA-VOICE-10GB-FAMILY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "10GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: true
|
|
SIM_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: 217
|
|
|
|
Name: "SIM Data+Voice 25GB (Family Discount)"
|
|
SKU__c: "SIM-DATA-VOICE-25GB-FAMILY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "25GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: true
|
|
SIM_Display_Order__c: 3
|
|
WHMCS_Product_Id__c: 249
|
|
|
|
Name: "SIM Data+Voice 30GB (3GB/3days) (Family Discount)"
|
|
SKU__c: "SIM-DATA-VOICE-30GB-3DAY-FAMILY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "30GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: true
|
|
SIM_Display_Order__c: 4
|
|
WHMCS_Product_Id__c: 109
|
|
|
|
Name: "SIM Data+Voice 50GB (Family Discount)"
|
|
SKU__c: "SIM-DATA-VOICE-50GB-FAMILY"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Service"
|
|
SIM_Data_Size__c: "50GB"
|
|
SIM_Plan_Type__c: "Data+Voice"
|
|
SIM_Has_Family_Discount__c: true
|
|
SIM_Display_Order__c: 5
|
|
WHMCS_Product_Id__c: 251
|
|
```
|
|
|
|
## Add-on Services (Portal_Visible__c = false)
|
|
|
|
These are shown as checkboxes for Data+Voice plans:
|
|
|
|
```
|
|
Name: "SIM Voice Mail Option"
|
|
SKU__c: "SIM-ADDON-VOICE-MAIL"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
SIM_Data_Size__c: ""
|
|
SIM_Plan_Type__c: "Add-on"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 119
|
|
|
|
Name: "SIM Call Waiting Option"
|
|
SKU__c: "SIM-ADDON-CALL-WAITING"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
SIM_Data_Size__c: ""
|
|
SIM_Plan_Type__c: "Add-on"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 2
|
|
WHMCS_Product_Id__c: 123
|
|
|
|
Name: "SIM Unlimited 15 (Domestic) Free Calling Option"
|
|
SKU__c: "SIM-ADDON-UNLIMITED-CALLING"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
SIM_Data_Size__c: ""
|
|
SIM_Plan_Type__c: "Add-on"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 3
|
|
WHMCS_Product_Id__c: 125
|
|
|
|
Name: "SIM Unlimited Calling Option"
|
|
SKU__c: "SIM-ADDON-UNLIMITED-CALLING-V2"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Add-on"
|
|
SIM_Data_Size__c: ""
|
|
SIM_Plan_Type__c: "Add-on"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 4
|
|
WHMCS_Product_Id__c: 259
|
|
```
|
|
|
|
## Activation Fee (Portal_Visible__c = false)
|
|
|
|
```
|
|
Name: "SIM Activation Fee"
|
|
SKU__c: "SIM-ACTIVATION-FEE"
|
|
Portal_Category__c: "SIM"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Activation"
|
|
SIM_Data_Size__c: ""
|
|
SIM_Plan_Type__c: "Activation"
|
|
SIM_Has_Family_Discount__c: false
|
|
SIM_Display_Order__c: 0
|
|
WHMCS_Product_Id__c: 99
|
|
```
|
|
|
|
## VPN Products (Simplified)
|
|
|
|
```
|
|
-- VPN Service (Region-agnostic)
|
|
Name: "VPN Premium Service"
|
|
SKU__c: "VPN-PREMIUM"
|
|
Portal_Category__c: "VPN"
|
|
Portal_Visible__c: true
|
|
Item_Class__c: "Service"
|
|
VPN_Region__c: "Global" -- Customer chooses region at order time
|
|
VPN_Display_Order__c: 1
|
|
WHMCS_Product_Id__c: 33
|
|
|
|
-- VPN Activation Fee
|
|
Name: "VPN Activation Fee"
|
|
SKU__c: "VPN-ACTIVATION"
|
|
Portal_Category__c: "VPN"
|
|
Portal_Visible__c: false
|
|
Item_Class__c: "Activation"
|
|
WHMCS_Product_Id__c: 37
|
|
```
|
|
|
|
## Salesforce Configuration Flow (Internet Gold/Platinum)
|
|
|
|
### Order Status Flow:
|
|
1. **Draft** → Customer selecting options
|
|
2. **Pending Configuration** → Sent to Salesforce for configuration
|
|
3. **Configured** → Salesforce determined products and WHMCS IDs
|
|
4. **Pending Review** → Ready for operator approval
|
|
5. **Approved** → Ready for provisioning
|
|
|
|
### Salesforce Flow Logic:
|
|
```apex
|
|
// When Order.Status = "Pending Configuration"
|
|
// AND Internet_Plan_Tier__c IN ("Gold", "Platinum")
|
|
|
|
1. Get Account.Internet_Eligibility__c
|
|
2. Check Account location/infrastructure
|
|
3. Determine configuration:
|
|
- Fiber + Gateway available → IPoE-HGW (WHMCS ID: 183)
|
|
- Fiber only → IPoE-BYOR (WHMCS ID: 185)
|
|
- Legacy → PPPoE (WHMCS ID: 187)
|
|
4. Call Portal: POST /orders/{orderId}/configure
|
|
```
|
|
|
|
### Configuration API Response:
|
|
```json
|
|
{
|
|
"configuredProducts": [
|
|
{
|
|
"sku": "INTERNET-PLATINUM-CONFIGURED",
|
|
"whmcsProductId": 183,
|
|
"accessMode": "IPoE-HGW",
|
|
"includesGateway": true,
|
|
"monthlyPrice": 5300
|
|
}
|
|
],
|
|
"configurationReason": "Location supports fiber with gateway"
|
|
}
|
|
```
|
|
|
|
## Family Discount Logic (SIM)
|
|
|
|
### Catalog-Driven Approach:
|
|
1. **GET /catalog/personalized** checks existing SIM services
|
|
2. **If customer has SIM** → Show family discount products
|
|
3. **If new customer** → Show regular products
|
|
4. **Frontend sends correct SKU** from catalog selection
|
|
|
|
### Example:
|
|
- **New Customer** sees: "SIM Data+Voice 50GB" (4,180 JPY) → SKU: "SIM-DATA-VOICE-50GB"
|
|
- **Existing Customer** sees: "SIM Data+Voice 50GB (Family Discount)" (3,680 JPY) → SKU: "SIM-DATA-VOICE-50GB-FAMILY"
|